Re: Plea for help - Normalisation Problem

From: David Cressey <david_at_dcressey.com>
Date: Tue, 03 Dec 2002 14:13:42 GMT
Message-ID: <q_2H9.306$0I3.33975_at_petpeeve.ziplink.net>


> It's a basic CD library application that I'm using as a learning project
> (i've also removed some attibutes like address1, 2, forename etc to save
> space here).

As an aside, the very first piece of what I now know as "shareware" that I ever saw
was a database application for music albums... 33 rpm LPs. This was back in 1962,
and the application ran on a PDP-1 computer.

>
> Un-normalised:
>
> LoanNo. Surname, Telephone, E-mail, DateOut, DueBack
> Artist, Title, Label, DateBought (repeating groups)
>
> 1NF First Method:
>
> Loans(#LoanNo, Surname, Telephone, E-mail, DateOut, DueBack)
> CDs Borrowed(#LoanNo, #cdID, Artist, Title, Label, DateBought)
>
> We were taught to remove the repeating groups, create an attribute (in
> this case cdID) to replace the muliple values (Artist, Title,
> DateBought) that make up the qualifying value to the LoanNo.
>
> 1NF Second Method:
>
> Loans(#LoanNo, #cdID, Surname, Telephone, E-mail, DateOut,
> DueBack, Artist, Title, Label, DateBought)
>
> Where cdID is again the qualifying attribute.
>

I was taught according to the first method you outline. As you point out, by the time you move to 2NF,
the difference comes out in the wash.

There is yet another way to change the unnormalised database to 1NF. The two relations would be

> Loans(#LoanNo, #cdID, Surname, Telephone, E-mail, DateOut, DueBack)
> CDs( #cdID, Artist, Title, Label, DateBought)

Here the repetition is that one CD may be borrowed multiple times. In your example, the repetition is that multiple CDs may be taken out in a single loan. Both are true.

I don't know if this helps. Received on Tue Dec 03 2002 - 15:13:42 CET

Original text of this message