Database-Design

sublass 可以有兩個父級(與其相關的兩個實體類型嗎?)

  • September 12, 2018

我對 ERD 和其他東西有點陌生,只是想知道當我的(概念)實體關係圖有兩個實體類型連接到一個子類時我是否正確(因此子類從這兩個子類繼承數據)。

截屏

我的問題是:對於連接到這個子類的每個實體類型,它是否**有它自己的實例?**那麼:我的房間實體類型是否會記錄它是標準房還是行政房,預訂實體類型是否能夠記錄該特定預訂是否有裝飾?

抱歉,我很難說出這個問題,我敢肯定有些人會感到困惑,但我感謝您對此事的任何幫助。

“一個子類可以有 2 個父類(連接到它的 2 個實體嗎?)”。是的。但是:避免 ERD 中的冗餘關係。對於您的特定場景:如果 BOOKING 實體通過 ROOM 連接到 STANDARD/EXECUTIVE,那麼您稍後將能夠編寫一個查詢,其輸出會告訴使用者已預訂了哪種類型的房間。

關於您的問題:“對於連接到此子類的每個實體,它是否有自己的實例?所以:我的房間實體是否會記錄它是標準房間還是行政房間,並且預訂實體是否能夠記錄該特定預訂是否有裝飾? ” 答:是的,ROOM 可以具有決定它是“標準”還是“行政”的屬性(參見下面的模型)。預訂不會改變房間的“裝飾”。 在此處輸入圖像描述

對 ROOM -< BOOKING 建模就足夠了(每個房間可能有一個或多個預訂,與您所做的相同)。至於“房間類型”,我會使用 ARC,即異或(XOR)。其背後的原因:每個房間要麼配備為標準房間(具有所有必要的屬性),要麼具有執行“包”(包括您需要的所有屬性)。

STANDARD/EXECUTIVE 和 BOOKING 之間無需繪製 (a) 關係。一個房間被預訂(每個房間要麼是標準的,要麼是執行的,但這會記錄在相應的屬性/列中 -> 參見圖表(上面的 ERD,下面的關係模型)。

在此處輸入圖像描述

如果單個(唯一)預訂 ID 可以用於預訂多個房間,那麼 ROOM 和 BOOKING 之間將存在 M:M 關係。(這需要一個交叉點。)

(至於 XOR 的實現——這要晚得多:您可以在 ROOMS 表中使用 CHECK 約束,以強制房間成為“標準”或“執行”。)

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