I have a company table. A company can have any number of phone numbers. I also have a contact table. A contact can also have any number of phone numbers (cell, home, pager ...). Contacts are related to companies in that a company can have one or more contacts.
My design right now is as follows:
company contact table
At this point, I thought of using one phone table to store both company and contact phone numbers, but I can't figure out how to link them ... A company can have zero, one or many phone numbers. A contact can also have zero, one or many phone numbers. A company doesn't necessarily have to have a contact, but a contact has to be related to a company.
Then only way I can think of doing it is by having two phone tables:
Yes, that's perfectly reasonable. I imagine you're a bit concerned about the duplication in the 2 table definitions; if there was a lot more to a contact phone than the 3 or 4 attributes you have, then there could be a case for introducing a phone table like this: