Re: Concurrency in an RDB

From: paul c <toledobythesea_at_oohay.ac>
Date: Sat, 23 Dec 2006 14:48:12 GMT
Message-ID: <Mkbjh.513878$5R2.80909_at_pd7urf3no>


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, {} } */
> }
>
>
> Project R onto R1=R{A}:
>
> R1 = { { a1 }, { a4 }, { a5 } }
>
> Project R onto R2=R{B}:
>
> R2 = { { a2, { a3, {} } }, { a3, {} } }
>
>
> ** I say "mostly" irrelevant because the predicate for the projected
> relation still makes reference to B in the sense of "A where exists some
> B".

Suppose (as in the example):

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

   , { a4, { a3, {} } } /* a=a4, b={ a3, {} } */    , { a5, { a2, { a3, {} } } } /* a=a5, b={ a2, { a3, {} } */ }

and that we are able to insert { a3, {} } (somehow) giving:

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

   , { a4, { a3, {} } }            /* a=a4, b={ a3, {} } */
   , { a5, { a2, { a3, {} } } }    /* a=a5, b={ a2, { a3, {} } */
   , { a3, { } }

}

Does this state anything useful? Or is it redundant? One way I look at this is to imagine that the value a3 stands in the same relation to {} as a2 stands to { a3, {} } or put another way a3 has the same relation to {} as a2 has to { a3, {} }. But in the tuple

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

is it not already implicit that a3 stands in that same relation to {}?

Eg., why bother with the fourth tuple? If I go without the inserted (fourth) tuple, then by itself, it must be false, ie., it must be true in the logical complement of R. So the first tuple implies that a3 has relation R to {} but the complement of R says it doesn't, which looks like a contradiction to me!

Maybe this is nonsense, but I'd like to know why!

p Received on Sat Dec 23 2006 - 15:48:12 CET

Original text of this message