

Fundamentals of Relational Database Design - dskhatri
http://r937.com/relational.html

======
smiffy
This is interesting because the exact example they provide of an order table,
when released in a production environment, will more than likely _not_ be 3NF.

If you have an order table, with order details line items linked to products,
you need to keep an audit log of the state of the database at the time of an
order being inserted.

Putting it simply, the line must 1) reference the product and 2) duplicate the
product details ( price + tax definitely). In case the price of the product
changes later, we need to know how much we charged the customer at that point
in time.

I've worked with a lot of large databases and with the greatest will in the
world to keep them normalised, sometimes certain tables will require
duplication.

