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>


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

Original text of this message