Erd
ERD - 如何將屬性添加到遞歸關係的一側?
ERD 的簡化方案
- 一家公司有員工(每個人都有唯一的 id
emp_id
)- 每個員工都由另一名員工監督
- 主管員工具有特殊屬性
SID
這是我的場景和員工表的 ERD。但問題是每個不是主管的員工都會有一個不必要的
SID
列NULL
。我覺得應該有另一張桌子emp_id
和他/她SID
來解決這個問題。為此,我該如何修改 ERD?
對於像這樣的簡單情況,對於非主管,我只會將列保留為 NULL。
對於更複雜的實體,請查看遵循以下模式的單表繼承:
Entity SubType1 =========== ================ Id (PK) <---- Id (PK,FK) SharedProp1 | ST1SpecificProp1 SharedProp2 | ST1SpecificProp2 SharedProp3 | ... ... | | SubType2 | ================ `-- Id (PK,FK) ST2SpecificProp1 ...
所有常見的屬性都放在基表中,特定於子類型的屬性(在您的範例中,主要類型是人員,子類型是主管和其他)。
共享表中也可能有一個鑑別器屬性,它說明目前記錄的子類型。
許多 ORM 使用此模型來管理子類型。一些數據庫系統具有內置支持(IIRC postgres 通過可選模組提供),但自己組裝起來並不難。