Re: Concurrency in an RDB - another question about recursive definitions

From: paul c <toledobythesea_at_oohay.ac>
Date: Sat, 20 Jan 2007 18:54:04 GMT
Message-ID: <gztsh.739721$R63.188613_at_pd7urf1no>


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.
>>>
>>> Assuming:
>>>
>>> A = { a1, a2, a3, a4, a5 }
>>> B = { {a,b} | a in A and b in B }
>>>
>>> Given relation R{a in A,b in B}: /* Using C-style comments */
>>>
>>> R = { { a1, { a2, { a3, {} } } } /* a=a1, b={ a2, { a3, {} } */
>>> , { a4, { a3, {} } } /* a=a4, b={ a3, {} } */
>>> , { a5, { a2, { a3, {} } } } /* a=a5, b={ a2, { a3, {} } */
>>> }
>>> ...
>>
>>
>>
>> Bob, now I remember a parallel question that struck me about your
>> subtle definition of B, B = { {a,b} | a in A and b in B }. I take it
>> that you meant B to be a type that is used by the R relation. But is
>> it somehow plausible to see B as a relation?
> 
> 
> B must be a relation type, in fact.
> 
> 

>> If so, I would think that a value for relation B that has one tuple:
>>
>> B = { { a1, {a2, {a3, {} } } } } /* a=a1, b={ a2, { a3, {} } */
>>
>> is not possible because by definition (B "referencing" itself), there
>> would need to be two additional tuples to make it stick to the
>> definition, namely
>>
>> { a2, { a3, {} }
>>
>> and
>>
>> { a3, {} }.
>>
>> Thanks for any comments,
>> p
> 
> 
> 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 
> ...

Thanks but if this is answering my question, it may be too terse for me to see it!

Are you saying that

B = { { a1, {a2, {a3, {} } } } } /* a=a1, b={ a2, { a3, {} } */

is possible, given the self-refencing definition?

(Whereas I was thinking that it would be impossible for B to have only one tuple.)

p Received on Sat Jan 20 2007 - 19:54:04 CET

Original text of this message