Erd

ERD - 如何將屬性添加到遞歸關係的一側?

  • November 29, 2021

ERD 的簡化方案

  • 一家公司有員工(每個人都有唯一的 id emp_id
  • 每個員工都由另一名員工監督
  • 主管員工具有特殊屬性SID

這是我的場景和員工表的 ERD。但問題是每個不是主管的員工都會有一個不必要的SIDNULL。我覺得應該有另一張桌子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 通過可選模組提供),但自己組裝起來並不難。

引用自:https://dba.stackexchange.com/questions/303252