7.1. Normalization 201
I want to start off by saying that there are six normal forms (plus or minus one or two depending on which academician you listen to). You'll leave several of those to the academicians though. Those in the real world usually deal with only three normal forms. Indeed, a fully normalized database is one that is generally considered to be one that is normalized to the third normal form.
The concept of normalization has to be one of most over-referenced yet misunderstood concepts in programming. Everyone thinks they understand it, and many do in at least its academic form. Unfortunately, it also tends to be one of those things that many database designers wear like a cross — it is somehow their symbol that they are "real" database architects. What it really is, however, is a symbol that they know what the normal forms are — and that's all. Normalization is reallyjust one piece of a larger database design picture. Sometimes you need to normalize your data — then again, sometimes you need to deliberately de-normalize your data. Even within the normalization process, there are often many ways to achieve what is technically a normalized database.
My point in this latest soapbox diatribe is that normalization is a theory, and that's all it is. Once you choose to either implement a normalized strategy or not, what you have is a database — hopefully the best one you could possibly design. Don't get stuck on what the books (including this one) say you're supposed to ...