Q:

Person -> Details database structure

I have a Domain model: 
Employee: Id, FirstName, LastName, Sex, BirthDate. 
Office: Employee, WorkStation, OfficeName, etc.. 
Contacts: Employee, MobilePhone, EMail, etc... 
But I`m not sure about my current database structure. How is right: Employees table has a PK EmployeeID, and the Offices and Contacts tables has their own IDs and reference to Employees table, OR Employees table has its EmployeeID and also keeps references to Offices and Contscts by having OfficeID and ContactID?

A:

To be in a reasonable normal form, your employees should refer to the office.
Assuming the relationship of contacts is employees have a set of contacts and no other employee shares those contacts, the proper relationship should be contacts refer to the employee.
Employee: empid, officeid
Office: officeid
Contacts: empid, contactid

