Re: 4NF is Where It Is At! [WAS Re: 1:1 relationships]
Date: 15 Feb 2001 21:59:45 GMT
Message-ID: <96hjgh$ilp$1_at_news.tue.nl>
Vadim Tropashko wrote:
> Jan Hidders wrote:
> >
> >I think the 'or' should be an 'and'. Otherwise this is not a sufficient
> >condition. Note that your condition is equivalent with saying that
> >
> > ~(R[CT]) JN R[X] <= ~R or ~(R[CX]) JN R[T]) <= ~R
>
> 'or' is always a union, isn't it?
Not always, (A1 <= B or A2 <= B) is not the same as (A1 + A2 <= B). But you are right, and I was wrong, it should indeed be an 'or' and not an 'and'. In my rendition of your condition the 'or' should indeed be an 'and' but my rendition is not correct. It should have been like this:
For every t in ~R :
{t}[CT] JN R[X] <= ~R
or
{t}[CX] JN R[T] <= ~R
which is indeed equivalent with
~R = (~R[CT] JN R[X]) + (~R[CX] JN R[T])
and also with
R = R[CT] JN R[CX]
> > ~R = (~R[CT] JN R[X]) + (~R[CX] JN R[T])
>
> I write mine rather as
>
> ~R = (~R[CT] CP X) + (~R[CX] CP T)
>
> without joins.
De gustibus non disputandum est :-) In the most straightforward definition of the join without artificial limitations the JN is equivalent to CP if there are no common attributes, which is a precondition for the CP anyway. So it is more elegant to have only a JN and no CP in your algebra; instead of two operators with preconditions you get one operator with no preconditions.
-- Jan HiddersReceived on Thu Feb 15 2001 - 22:59:45 CET
