Re: Sixth normal form
Date: Mon, 20 Aug 2007 22:10:09 -0000
Message-ID: <1187647809.393912.318860_at_57g2000hsv.googlegroups.com>
On 20 aug, 16:32, "Brian Selzer" <br..._at_selzer-software.com> wrote:
>
>
> For this particular case, you're right, but it doesn't hurt to look at the
> FDs, and in the general case, it is necessary. Here are some simple
> decompositions.
>
> (1) R(A,B,C) such that A --> B and A --> C into R1(A,B) and R2(A,C):
> Since A --> C, there can't be a value for A without a value for C, so the
> IND R1[A] in R2[A] is needed. Since A --> B, there can't be a value for A
> without a value for C so the IND R2[A] in R1[A] is needed.
The conclusion is correct, but your argumentation is false. It is not because of A --> C that there cannot be an A value without a C value. Also if that FD did not hold then there would have to be for every A value at least one C value. All that the FD says is that in addition there can be at most one.
> (2) R(A,B,C) such that A --> B and B --> C into R1(A,B) and R2(B,C):
> Since A --> C is implied by the cover for R, there can't be a value for A
> without a value for C, so the IND R1[B] in R2[B] is needed.
But in R there cannot be a B value without a value for A, so the IND R2[B] -> R1[B] is needed.
> (3) R(A,B,C) such that AB --> C and C --> B into R1(A,C) and R2(B,C):
> Since C --> B, there can't be a value for C without a value for B, so the
> IND R1[C] in R2[C] is needed.
In R there cannot be a C value with at least one associated A value, so you also need IND R2[C] -> R1[C].
>
> (4) R(A,B,C) such that A --> B and B --> A into R1(A,B) and R2(A,C):
> Since A --> B, there can't be a value for A without a value for B, so the
> IND R2[A] in R1[A] is needed.
In R there cannot be a B value without at least one associated C value, so you also need IND R1[A] -> R2[A].
So you see that in all cases both INDs are required. Which FDs exactly hold is in fact completely immaterial.
- Jan Hidders