The 3 rules of normalization
The first step in normalization is to make a huge table with all the columns I think I'll need. It might also be wise to fill in some rows, to get a sense of what the table will look like.
With some routine it's okay to "cheat" a little, and add a step to the normalization: try dividing the big table into smaller tables, to avoid redundancy, and add primary/foreign keys. But as said, this implies routine, and if we cut the tables too much in this step, there's no step to glue them back together.
And then there's the 3 "normal" rules of normalization.
1. Every table should have:
1a. A primary key.
1b. Rows of equal length.
1c. Only columns where the content is the same all the way down, and no empty fields along the way. (Not a field for a phone number, that's empty if the guy doesn' have a phone.)
1d. No two columns with the same kind of data. (Not two fields for phones, in case he has two phone numbers.)
In reality, this is the kind of table you soon make automatically, so this is a lot of words to describe something banal.
2. Every table should have: No columns, only depending on some of the primary key. (This only applies, if the primary key is composite, and there's columns not in the primary key.)
3. Every table should have: No columns not depending on the primary key at all.
Concept last updated: 06/05 2004.