I've been getting a lot of help from this site from just searching the forums, but it's my first post in here, and here we go:
I have a few questions regarding the basic design of a database I'm working on at the moment. A few of the tables looks something like this at the moment (I will only list the relevant-ish columns):
... not sure if we'll use the column prefixes, but that doesn't matter atm.
(table) location
location_name
location_contact_first_name
location_contact_email
location_address_street
location_address_zip
location_phone
city_id
...
(table) organizer
organizer_name
organizer_contact_first_name
organizer_contact_email
organizer_address_street
organizer_address_zip
organizer_phone
city_id
...
I suppose we'll have the same columns for users/members on the site as well. This doesn't go very well along with the basic (?!) normalization principles, right?
But I was talking to a guy at work with a lot of (My)SQL experience (he's more of a database-administrator than a designer/developer though) and his opinion was that it could be "over-normalization" (for our project, we have no intention of really keeping track of/organizing zip-codes etc., and we would definitely not (pre)-populate a zip_code table) to put the email addresses, and the physical addresses, and zip-codes in separate tables.
Before I talked to him, I was just about to create two, or three tables: email_address, address and possibly zip_codes. I suppose each row in the organizer, location and member/user tables would get an email_id, the address would get a zip_code_id and the zip_codes would get a city_id.
Which option makes most sense to you, for our project?
Cheers/skål