Don't Always Normalize Your Database
Normalizing a database isn't always the right way to go. Basically, normalization guarantees certain kinds of data integrity. But all the JOINS you'll end up using are performance suicide. For read-heavy applications you de-normalize. That's something to keep in mind for sets of tables we use that are very large and mostly used for reporting (read only). For most of our financial data we need the data integrity so we normalize and deal with the penalty hit of using JOINS. One financial app I maintain is a good example. Just to get a Billing Summary Sheet there are 7, count 'em 7 INNER JOINS taking place.