I'm working on putting together a new database schema. Basically we'll have a collection of companies, users, etc. All of these will have addresses/phone numbers. Instead of saving the addresses and phone numbers directly in the company or user tables we're thinking about pulling the addresses out and having one common table for address and then a linking table to link company/user to address -the reason for this is we're assuming each company or user could have multiple addresses or phone numbers.
Here is a diagram of my first attempt at a schema for this. With this one Im combining phone numbers with the address table. The pros of this schema is Im saving on extra tables for phone numbers. But in theory we could have multiple records if the address is the exact same but its a different main phone/ext/fax/alternate phone.
Here is a diagram of my second attempt. Here Im thinking I could pull out phone numbers into a separate table and then use type to define home, office, cell, fax etc. I'm thinking this one could be beneficial because then if 2 users work in the same office but have different phone numbers then we would only have 1 address record and 2 phone records.
I havent had a lot of luck finding any good resources about the best practices for this so any comments/suggestions would be greatly appreciated.
Also, as of right now I think most companies/users will have north american addresses or phone numbers but if I wanted to think ahead and prepare the tables for international addresses/phone numbers is there anything I should consider adding?