Re: looking for old Datamation poster on Normalizing

From: mrettig <mrettig_at_well.com>
Date: 3 Sep 2006 17:47:47 -0700
Message-ID: <1157330867.601134.162200_at_i42g2000cwa.googlegroups.com>


Hello,
I'm the author of the poster, and stumbled across this conversation thanks to server logs.

You know, in the years since that thing was written, this is the first time I've seen or heard actual discussion of the content. On Usenet in 2006. Whodathunkit?

Someone has already pointed to the link where you can download copies of the poster. In case you missed it, it's here:http:// www.marcrettig.com/poster.

So hey: now that it's digital and I'm printing copies a few at a time for people who want them, it's ** easy to change**. So let's fix the problem!

When I created the new reproduction of the old poster, I did find a few mistakes. But... I'm writing this in a jet-lagged state from Singapore, and it's the wrong time to ponder 4th normal form. If someone here cares to suggest how to create a better example of 4NF for the poster -- stating an appropriate situation and presenting an appropriate table design -- I'd love to hear it. If I use it, I'll credit you and send you a print.

Thanks much, and best to you all.
- Marc Rettig

Jan Hidders wrote:
> Jon Heggland wrote:
> > David Cressey wrote:
> > > PMFJI. I've allways been disturbed by the presentation of 4NF in the
> > > "puppies & tricks" poster. It seems to me that there's a misprint,
> > > somewhere, or that the key of one of the tables has undergone a shift
> > > between the 3NF example and the 4NF example. Am I the only one who sees a
> > > problem, or has this been discussed before?
> >
> > The keys (assuming /italics/ indicate keys) are wrong. It would make
> > more sense if the key for the initial allegedly non-4NF "Puppy Tricks"
> > were { Puppy Number, Trick ID, Costume }, and the the key for "Puppy
> > Costumes" were { Puppy Number, Costume }, but the explanation is still
> > bad. As presented, it looks more like an example of 2NF than 4NF.
>
> Indeed. I completely agree. But I think there is a real 4NF problem
> hidden in there, which probably is why the author made the mistake. I
> read the description as follows:
>
> PT(pnr, tid, twl, sl, cst)
> dependencies:
> - pnr, tid -> twl
> - pnr, tid -> sl
> - pnr ->> cst | tid, twl, sl
>
> So, there is only one CK and that is {pnr, tid, cst} so we are indeed
> not in 2NF. After splitting off twl and sl as usual together we get:
>
> PT2(pnr, tid, twl, sl) PC(pnr, tid, cst)
>
> PT2 has one CK {pnr, tid} and is in 5NF, PC however has CK {pnr, tid,
> cst} and is therefore in 3NF but not in 4NF.
>
> -- Jan Hidders
Received on Mon Sep 04 2006 - 02:47:47 CEST

Original text of this message