Currently I am working on creating a new database schema as part of a major new product. Our previous customer address records (in a previous product) look something like this in our current schema (not all columns shown):
AddressID, AddressLine1, AddressLine2, City, State. Zip, Country, Etc.
I want to normalize this so that an address actually breaks down to:
- 1 address to many address lines
- 1 address to a zip/postal code
So I sent out a communication saying that zip code will now be in its own table and that each "address" corresponds to one zip/postal code. In addition, addresses would be broken out so that we could support more than 2 address lines with a 1 to many relationship.
Some people in my group are now saying that I am over-normalizing the database. Am I?
Note, I am not a DBA but I feel that this is more logical and more efficient than the previous schema.
Update
Thx to everyone for their input. I'm not going to break out the address or zips to their own tables. My original plan was to have a zip code lookup and re-use for the addresses so I would only have to have one set of zips, but I'll just drop everything on the record itself, and have a separate table for zip lookups.