2016-11-10 79 views
-1

只是好奇,如果我可以在3個不同的表中有相同的主鍵?我將創建一個Employee,FullTime和PartTime表。我想將EmployeeID作爲所有主鍵3.任何想法?三個表中的主鍵

+0

爲什麼要創建3個不同的表?創建1並有一個員工類型,表明他們是否全職/兼職?對我來說,你會捕獲相同的數據。或僱員類型表,如果有關於全部/部分時間您需要捕獲的特定屬性.. – xQbert

回答

3

您可以將主鍵EmployeeId放在名爲Employees的表中。這將有共同的信息,例如聘用日期等。

然後,每個子表可以有一個EmployeeId既在表主鍵和一個外鍵引用Employees.EmployeeId。這是使用關係表實現一對一關係的一種方法。

不幸的是,除非你使用觸發器,這種機制並不妨礙一個員工在另外兩個表中,但這不是你問題的一部分。

+0

然後我將作爲僱員的主要關鍵? – LindaS

+0

現在對我更有意義。我是新來的sql,只是不知道如何實現這些密鑰。謝謝! – LindaS

+0

不需要觸發器,只需對每個表及其鍵(pk/fk)使用emp類型, –

0

這聽起來像你的設計是錯誤的。

實體是僱員

僱員的屬性是他們[當前^]就業狀況。

因此,最簡單的形式是,您需要一個員工表,其中有一列表明他們的狀態。

爲了進一步改善這一點,員工狀態列應該與另一個存儲可能的員工狀態的表具有外鍵關係。

^當前狀態是1:1的關係。如果你想要改變歷史,這是一個1:M,需要不同的建模。