Erd
共享一個表的多個實體
我有這種情況,我有兩個不同的實體,
Researcher
並且Lab Manager
我希望兩者都有個人資料。當使用者登錄時,他可能是兩個實體之一,並且在兩個表中搜尋使用者名可能效率低下,所以我認為共享一個名為 profile 的表的兩個主題都是可行的方法。
這是我的嘗試
但我意識到它有兩個問題
- 而不是研究人員或經理擁有個人資料,個人資料必須同時擁有研究人員和經理
- 當我查詢使用者時,如何在不添加類型屬性的情況下知道他的類型
任何想法,將不勝感激
允許
Field
為 NULL 並且每個沒有的使用者Field
都是研究人員。如果欄位不夠,還有 TeamId,對於 magaers 可以是 -1。
或兩者的結合
但老實說,Type 欄位與 Tinyint 一樣有意義,而且您對未來很敏感,因為必須有學生助手等等
在不了解整個背景或話語領域的情況下,很難談論建模的具體問題。
而不是研究人員或經理擁有個人資料,個人資料必須同時擁有研究人員和經理
您可以將關係標記為 0..1(零對一)而不是 1..1(一對一)。有關如何顯示基數和序數的資訊,請參閱此連結和 ER 圖符號部分。
當我查詢使用者時,如何在不添加類型屬性的情況下知道他的類型
通過將表配置文件加入每個相應的角色表,或檢查配置文件 ID 是否存在於 Manager 或 Researcher 表中。這取決於您的設計,並且需要確定是否最好在配置文件上具有類型屬性。