Re: Concurrency in an RDB - another question about recursive definitions
From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Sun, 21 Jan 2007 15:40:07 GMT
Message-ID: <rPLsh.3566$1x.61083_at_ursa-nb00s0.nbnet.nb.ca>
>
>
>
> Thanks, now I'm wondering if I wasn't clear enough before - what I had
> in mind was to take R out of the picture, so that A is a domain and B is
> a relation, twisting (I admit) your original definition like so:
>
> Assuming:
> A = { a1, a2, a3, a4, a5 }
>
> Given relation : B = { {a,b} | a in A and b in B } /* Using C-style
...
...
...
}
Date: Sun, 21 Jan 2007 15:40:07 GMT
Message-ID: <rPLsh.3566$1x.61083_at_ursa-nb00s0.nbnet.nb.ca>
paul c wrote:
> (Sorry for the hack snip job following)
>
> Bob Badour wrote:
>
>> paul c wrote: >> ... >> >>>>>>>> Bob Badour wrote: >>>>>>>> >>>>>>>>> ... >>>>>>>>> What I am saying is: When you project onto A, the data type of >>>>>>>>> B is mostly** irrelevant. Likewise, when you project onto B, >>>>>>>>> the data type of A is mostly irrelevant. >>>>>>>>> >>>>>>>>> The fact that you have a recursive data type definition has no >>>>>>>>> effect on project or join or restrict or union or intersect or >>>>>>>>> difference etc. The values identified as B are simply values. >>>>>>>>>
>
>>>>>>>>> ... >>>>>>> >>>>>>> B must be a relation type, in fact. >>>>>>> ... >>>>>>> Relations are sets and {} is one of them. Thus {} is a valid B >>>>>>> value; although, I omitted the headers for brevity. Joe Thurbon >>>>>>> introduced a ... >>>>>> >>>>>> ... >>>>>> Are you saying that >>>>>> >>>>>> B = { { a1, {a2, {a3, {} } } } } /* a=a1, b={ a2, { a3, {} } */ >>>>>> >>>>>> is possible, given the self-refencing definition? >>>> >>>> >>>> Yes, it is possible. In fact, the above describes it. >>>> >>>>> ... >>>>> (Whereas I was thinking that it would be impossible for B to have only >>>>> one such tuple.) >>>> >>>> ... >>>> How so? >>> >>> >>> I thought by those three words "b in B", part of the "B = { {a,b} | a >>> in A and b in B }" definition. In the "tuple" "/* a=a1, b={ a2, { a3, >>> {} } */" I took there to be several "nested" b values, eg., b={ a3, >>> {} } being one. Would it not need to be "in" B as a tuple in its own >>> right ("unnested", if you will)? ... >> >> >> >> {} is in B and has no tuples for b to be a part of >> { a3, {} } is in B and b is an empty set of tuples >> { a2, { a3, {} } } is in B and b is a relation containing a single tuple
>
>
> Thanks, now I'm wondering if I wasn't clear enough before - what I had
> in mind was to take R out of the picture, so that A is a domain and B is
> a relation, twisting (I admit) your original definition like so:
>
> Assuming:
> A = { a1, a2, a3, a4, a5 }
>
> Given relation : B = { {a,b} | a in A and b in B } /* Using C-style
^ | Relations are not domains -----------------------/One can describe the extent of a domain as a relation. The extent of domain B is infinite.
Extent(B) = { {{}}
, {{a1,{}}} , {{a2,{}}} , {{a3,{}}} , {{a4,{}}} , {{a5,{}}} , {{a1,{a1,{}}}} , {{a1,{a2,{}}}} , {{a1,{a3,{}}}} , {{a1,{a4,{}}}} , {{a1,{a5,{}}}} , {{a2,{a1,{}}}}, {{a2,{a2,{}}}}, {{a2,{a3,{}}}}...
, {{},{a1,{}}} , {{},{a2,{}}} , {{},{a3,{}}} , {{},{a4,{}}} , {{},{a5,{}}} , {{},{a1,{a1,{}}}} , {{},{a1,{a2,{}}}}
...
, {{a1,{}},{a2,{}}} , {{a1,{}},{a3,{}}} , {{a1,{}},{a4,{}}} , {{a1,{}},{a5,{}}} , {{a1,{}},{a1,{a1,{}}}}
...
, {{},{a1,{}},{a2,{}}} , {{},{a1,{}},{a3,{}}} , {{},{a1,{}},{a4,{}}} , {{},{a1,{}},{a5,{}}} , {{},{a1,{}},{a1,{a1,{}}}}
...
}
I would consider poor design a language that confuses domains with relations.
[snip] Received on Sun Jan 21 2007 - 16:40:07 CET