2016-03-28 59 views
0

所以我的目的是使「Employee」包含2個引用在「EmployeeContactInformation」表相同的主鍵。原因是,我希望我的員工包含同一張表的兩個不同副本。例如。 1爲work contact info,另一個爲home contact info2的外鍵引用在這裏1個主鍵

我將如何實現這一點以及我將使用哪種關係?
我假設1到許多?

當前數據庫截圖

Current database screenshot

回答

0

讓我們更改您的數據庫設計:

  • 創建一個名爲ContactInfoTypes的表。它將保存你想要的每個ContactInfoTypes的定義(在你的情況下:workContactInfo和homeContactInfo)。它將有兩列(contactTypeId,contactTypeName)
  • 在EmployeeContactInfo TABLE中添加一個額外的列,以命名爲ContactInfoType(DATATYPE編號)。列ContactInfoType將持有上述表ContactInfoTypes

當您插入表聯繫人的Foreign-Key值:EmployeeContactInfo,你就必須Insert兩行(一個存儲對workContactInfo和一個與homeContactInfo的數值)。

0
  1. 員工可以有多個聯繫人的相關信息(家庭和工作像你提到)。因此,這種關係應該是一對多的關係
  2. 要建立這個模型,你應該把關係一邊的外鍵添加到多邊。因此,您應該在EmployeeContact表中添加一個employee_id列。這樣,每個員工接觸排將被連接到僱員
  3. 「工作擴展名」僱員表列可以被移動到EmployeeContact表,並更名爲「擴展」,因爲它是一個電話號碼的擴展,可能是家庭電話或工作電話
  4. EmployeeContact表中的「家庭電話號碼」列應重命名爲「電話號碼」,因爲該表適用於家庭和工作
  5. 應在EmployeeContact表中保存另一列以保存工作信息/ home
+0

我已經實施了你的評論,他們很好。但是,我的系統將通過訪問該員工來工作,然後您將能夠選擇聯繫信息的類型。隨你提供的答案。這可能嗎? –

+0

如果您有員工編號,您可以使用這樣的查詢訪問員工聯繫信息Select * From employee_contact_info where employee_id = ?如果您正在尋找別的東西,您應該傳遞員工編號爲 – abhaybhatia

+0

的員工編號 – abhaybhatia