2010-09-19 160 views
1

我有兩個表:公司和員工。計劃的數據庫模式設計

我還有一個關係表Employs,其中包含外鍵company_id,employee_id作爲複合主鍵。注意:員工可以在多家公司工作。

我想要另一個EmployeeSchedules表,它只包含在公司工作的員工的時間表(company_id:integer,employee_id:integer,start_time:datetime,end_time:datetime)。這將最終顯示在某種日曆小部件中。

但是,使用此設計,我必須在應用程序級別驗證員工在添加計劃之前實際在公司工作。

我想知道是否有更好的方式來表示這在數據庫級別或只是堅持在應用程序級驗證?例如,如果有辦法將EmployeeSchedules pkey(company_id,employee_id)與僱主pkey(company_id,employee_id)關聯起來。歡迎任何其他設計建議!

回答

3

我將重新定義架構,並添加另一個表:

Person(id, name) 
Company(id); 
Employee(id, companyId, personId); 
Schedules(id, employeeId, startTime, endTime); 

這意味着一個僱員記錄只能綁定到一個公司。但是,一個人可以擁有多個員工記錄。所有「id」列都是唯一的,並且是表格的主鍵。 「companyId」是指公司表的主鍵等等。

+0

啊,謝謝!正是我需要的。 – joelmats 2010-09-19 06:41:25