Re: How to normalize this?
Date: Mon, 6 May 2013 08:19:36 -0700 (PDT)
Message-ID: <def8203c-dba6-4e42-89b4-a9a68027b351_at_googlegroups.com>
On Monday, May 6, 2013 12:52:44 AM UTC+2, Jan Hidders wrote:
> >>>> 1. Apply the 3NF normalization procedure we discussed earlier
> >>>> 2. Include with each component only the FDs that generated that component
>
> >>> It's not clear to me what you are describing or how it relates to>> >
> >>> arguing against stopping at 3nf.
>
> >> I've described to you a normalization algorithm that seems to produce
> >> a>> schema in BCNF that is also lossless-join and dependency
> >> preserving,>> but also has no inter-component dependencies. That's not
> >> supposed to be>> possible according to the usual normalization
> >> explanation. So what went>> wrong here?
>
> > That's simply not true is it ?
> > You are referring to the three-table decomposition, right ?
>
> No. I'm referring to the algorithm that is described by steps 1. and 2.
> above. It's an adapted variant of the usual algorithm that produced the
> three-table decomposition. That older algorithm does not always produce
> a schema in in BCNF. Mine seems to do so.
One exercise that I usually give to my students seems to fit exactly the above. First, I ask them to prove that the schema R(A,B,C,D,E) with FDs F = {AB -> C, C -> D, D -> B, E ->D} is not in 3NF (which they usually do easily). Then I ask them to decompose it in 3NF and they typically come out with:
R1(A,B,C), {AB -> C}
R2(C,D), {C -> D}
R3(D,B), {D -> B}
R4(D,E), {E -> D}
R5(A,E), {}