Database-Design

關於基數和參與的說明

  • August 9, 2018

我目前正在重新設計一個包含 20 個左右表的模式,我的第一個任務是從現有的表/約束/關係中創建一個 ERD。事實證明,這比我預期的要困難得多,因為雖然我擅長從業務規則創建 ERD,但從設計不佳的數據庫中提取相同的資訊一直具有挑戰性。

我的具體問題圍繞著將 DDL 中的約束和關係轉化為 ERD 的基數和參與。一個例子:

以下 DDL 用於兩個範例表(我僅包括相關屬性,即 FK 和 PK):

CREATE TABLE SCHEMA.SCHEDULE (
   SCHEDULE_ID NUMBER(22,0),
   CONSTRAINT SCHEDULE_PK PRIMARY KEY (SCHEDULE_ID)
) ;

CREATE TABLE SCHEMA.OBJECTS (
   OBJECT_ID NUMBER,
   SCHEDULE_ID NUMBER,
   CONSTRAINT OBJECT_PK PRIMARY KEY (OBJECT_ID),
   CONSTRAINT OBJECTS_SCHEDULE_FK FOREIGN KEY (SCHEDULE_ID) REFERENCES SCHEMA.SCHEDULE(SCHEDULE_ID)
) ;

從上面的 DDL 中,我了解到以下內容: - SCHEMA.SCHEDULE 是父級,SCHEMA.OBJECTS 是子級

然後我能夠製作以下ERD:

從 DDL 獲取的不完整 ERD

我想不通的是基數和參與度。我猜對於 SCHEDULE 它是(1,M)和 OBJECTS 它是(0,m)。它是否正確?

任何資源或帶有大量範例的出色清晰解釋也將受到讚賞。我正在使用最小/最大表示法創建 ERD。

謝謝你。

經過進一步的研究,以及未來的其他人,我想我會發布我所學到的關於這個主題的知識。主要歸功於 Narayan S. Umanath 和 Richard W. Scamell 的“數據建模和數據庫設計”(第 2 版)。

我想出了以下參與和基數: 最小/最大表示法中具有參與和基數約束的 ERD

參考上面的關係,我確定實體“對象”在“有”關係中的參與和基數是可選的 (0),基數為 many (m)。原因是“Objects”表中的外鍵“schedule_ID”是可選屬性,意味著“Objects”沒有強制參與關係。此外,業務邏輯規定“Objects”表中的每個元組只能對應“schedule”表中的一個元組。

對於定義“有”關係中“計劃”實體的參與和基數的 (0,m),關係中的父實體很少是完全參與的,這意味著在大多數情況下(除非特定業務邏輯需要)它們具有部分分區(用“0”表示)。對於基數,“schedule”表中的每個元組可以與許多對象相關。

此外,我在研究可能對這些類型的情況(為現有數據庫創建 ERD)有幫助的同時編寫了以下註釋: - 預設情況下,父母和孩子之間的關係是 (0,m)(0,1)。- 不能在不使用觸發器的情況下強製家長參與。- 為了參與子實體,在外鍵欄位上放置一個 NOT NULL 約束。- 要指定替代鍵(候選鍵),您可以放置​​一個 UNIQUE 約束。

我邀請其他人提供意見和批評。希望這對某人有幫助!

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