By "normalized" I assume you mean 3rd normal form. (There are higher levels.) As a general rule 3rd normal form is a very desireable thing to have because it reduces the amount of duplicate data. But this comes at the expense of additional tables and the joins to create the result sets of interest and maintenance of the additional tables.

As you might expect, opinions vary on 3nf's benefits. Typically, Data Administrators like it, Database Administrators don't. The reason for this is that Data Administrators want to model the "world" in a way that exposes all the underlying relationships in the data and don't care about performance (that's an implementation issue, not a model issue). The Database Administrator cares about presenting the data in the most "useful" way while giving acceptable performance (how the data will be used will affect this greatly). Clearly these two perspectives are in conflict.

My suggestion is to start with 3nf and denormalize as necessary for performance. If this application grows, inevitably other tables will need to be created and the closer to 3nf the original model is the easier the integration of these new tables will be.

Having said that, I don't think it is necessary to normalize things like addresses. eg. name, city, state and zip could be split into multiple tables because zip refers to the city and a city can have multiple zips.

For those who don't know, 3nf can be summarized as: the content of a row is about the key, the whole key and nothing but the key. (so help me Codd) The "key" of course is the primary key. Notice how that is violated in the address example.

disclosure: I'm a former DB2/VM DBA & system programmer.

Have fun,
Carl Forde


In reply to Re: Database Design Issues - OT by cforde
in thread Database Design Issues - OT by Ovid

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.