Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> comp.databases.theory -> Re: completeness of the relational lattice
(moving some of the discussion in "TRUE and FALSE values in the
relational lattice" to this thread)
On 22 jun, 06:52, Vadim Tropashko <vadimtro_inva..._at_yahoo.com> wrote:
> On 22 Jun 2007, at 03:20, Jan Hidders wrote:
>
>
>
> > On 22 Jun 2007, at 02:51, Vadim Tropashko wrote:
>
> >> Jan Hidders wrote:
>
> >>> On 22 Jun 2007, at 02:36, Vadim Tropashko wrote:
>
> >>>> I doubt a normal form for RL expressions exists. (If you insist otherwise, we can play a little game when I give you an example and you reduce it to a normal form).
>
> >>>> An example may be n-th iteration of transitive closure.
> > So you are telling me to normalize:
>
> > R(x,y) \/ ( ( (R(x,y)/\`y=z`) \/ [x,z] ) /\ ( (R(x,y)/\`x=z` ) \/ [z,y] ) ) \/ ...
>
> > Let me first give you a smaller example. Suppose you have:
>
> > R /\ ( S \/ 'z=y') with R(x,y) and S(y,z)
>
> Careful there! You probably don't want to union anything with equality
> relation. You must have meant:
>
> (R(x,y) /\ `x=z`) \/ [z,y]
>
> where [z,y] is subsequntly generalized to S(y,z).
No, I meant what I wrote. It doesn't do anything that seems meaningful, but that is besides the point.
> > We cannot distribute in general, but we have a specific distribution rule:
>
> > (1) r /\ ((s \/ [H]) \/ (t\/[H])) = r /\ (s \/ [H]) \/ r*(t \/ [H])
>
> Which is BTW a very limited case embraced by Spight criteria.
Indeed. But it is a simple equation, no premises.
> Once again, we are interested if union distributes over join, not if
> join distributes over union.
?? No, here I'm interested if join distributes over union, because I want a union normal form.
> BTW, why don't we define square brackets [R] as an unary operator,
> expressed in my notation as
>
> [R] = R /\ 00
What is R? In [R] it is a set of attributes. So a set of attributes is a valid expression in your syntax? I'm not sure what that means. Could you give a complete definition of your syntax just like I did?
> What is the (B=B) (e.g. in set builder notation)?
The unary relation with header {B} that contains all possible values: { (B:x} | x in Domain }. But as you see in my other posting, I'm ok with disallowing that.