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
