Originally Posted by
Dal Jeanis
The design's not bad. The proper level of normalization depends on usage. If you want your contacts to be able to have multiple email phones/extensions, then you might pull them out into a different table. Which usually means you'll create a phone-type table so you know what kind of phone it is. Ditto with email addresses. Ditto with Web Addresses.
But only do that change if it makes sense to you, based upon how you know the application and data will be used.
With regard to the companies table, decide whether you want the address to be in its own place, in which case you can leave it as is, or move to a PhysicalAddress table, or whether you want it merged in with the similar data in the Mailing Address table. I can't think of a good reason why it shouldn't be merged, but you might be able to.
Designer, know thy data.