2011-09-06 74 views
2

我有一個jobs表一中projectmanageridprojectdirectorid加入2分主鍵列1分外鍵列在同一個表

jobs 
---------------- 
pk jobid 
pk projectmanagerid 
pk projectdirectorid 

這兩個ID列需要使用employeeid鏈接到一個僱員表pk作爲鏈接。這是好的做法還是有更好的方法?

employees 
------------------ 
pk employeeid 
    other stuff 

回答

4

這似乎很好,只要你只有兩種類型:經理和主任。但請考慮將來是否需要添加其他員工類型,例如協調員。如果這是一種可能性,那麼您在jobsemployees之間有多對多的關係,您應該使用中間聯結表來解決問題,也許還需要添加第三個表來描述員工在工作中的角色(經理,總監, ...)。

enter image description here

0

它沒有錯,它是完全可以接受的。字段名稱是描述性的,因此表示您確實需要有兩個不同的FK指向用戶表。如果它是xy,那麼它看起來很奇怪。

0

似乎很合理 - 並且在很多姐妹中很常見 - 與同一張桌子有兩種關係。與所有外鍵一樣,但在這種情況下可能更加如此,請謹慎使用級聯。我猜想,刪除經理或董事不應導致刪除工作記錄。

0

有是狀態的錶款實體/類或實體/班,但不是兩者之間的關係經驗法則。因此,考慮創建兩個關係表來對兩個關係,項目經理和項目負責人分別進行建模。我不推薦Joe Stefanelli的employee_role_id方法。我認爲你會發現每個角色的屬性(是的,關係的確具有屬性)將會使通用表的方法增加價值太大了。