使用類別建模聯合型別


在資料庫管理系統中,超類/子類關係具有單個超類。共享子類可以在多個超類/子類關係中表示,其中每個關係都具有單個超類。

理解資料庫管理系統中的超類/子類關係

使用多個超類的單個超類/子類關係。每個超類都表示不同的實體型別。子類表示物件組,它是不同實體型別聯合的子集。此子類稱為聯合型別或類別。

示例

考慮以下場景:我們有三種不同的實體型別:PERSON、BANK 和 COMPANY。在機動車登記資料庫中,車輛所有者可以歸類為個人、持有車輛留置權的銀行或公司。要建立一個包含所有三種實體型別的類(即實體集合),我們需要構建一個表示這三個集合的並集的子類,我們將其稱為 OWNER。此子類是一個類別,也稱為聯合型別。

實體關係圖中的類別

為了在實體關係 (EER) 圖中直觀地表示此子類,我們使用帶“∪”符號的圓圈來表示集合聯合運算,該運算連線到超類 COMPANY、BANK 和 PERSON。帶子集符號的弧線將圓圈連線到 OWNER 類別,表明 OWNER 類別是這三種實體型別聯合的子類。如有必要,我們可以在從超類到適用謂詞的線的旁邊顯示定義謂詞。

在下圖中,我們可以看到 EER 圖中顯示的兩個類別:OWNER 和 REGISTERED_VEHICLE。OWNER 是 PERSON、BANK 和 COMPANY 聯合的子類,而 REGISTERED_VEHICLE 是 CAR 和 TRUCK 聯合的子類。

類別和共享子類的比較:OWNER 和 ENGINEERING_MANAGER

類別是一個子類。它有兩個或多個表示不同實體型別的超類。超類/子類關係僅具有單個超類。為了更好地理解類別與其他子類關係之間的區別,讓我們將上圖中的 OWNER 類別與共享子類 ENGINEERING_MANAGER 進行比較。

ENGINEERING_MANAGER 子類是以下每個超類的成員:ENGINEER、MANAGER 和 SALARIED_EMPLOYEE。屬於 ENGINEERING_MANAGER 的實體也必須存在於其所有三個超類中。因此,ENGINEERING_MANAGER 是這三個類的交集的子集。工程經理必須是工程師、經理和正式員工。

另一方面,像 OWNER 這樣的類別是其超類聯合的子集。屬於 OWNER 的實體必須存在於其超類之一中。在上圖中,OWNER 實體可能是 COMPANY、BANK 或 PERSON。

屬性繼承適用於類別的情況。在上圖中,每個 OWNER 實體都繼承了 COMPANY、PERSON 或 BANK 的屬性。它取決於實體所屬的超類。在像 ENGINEERING_MANAGER(上圖)這樣的共享子類中,子類繼承其超類 SALARIED_EMPLOYEE、ENGINEER 和 MANAGER 的所有屬性。

總類別和部分類別

類別可以是總類別或部分類別。類別和共享子類(例如 ENGINEERING_MANAGER)之間的區別。在於後者必須存在於所有三個超類中。類別是其超類聯合的子集。

類別可以是總類別。它包含其超類中所有實體的聯合。類別也可以是總類別。它可以包含聯合的子集。總類別由連線類別和圓圈的雙線表示。部分類別由單線表示。

類別的超類可能具有不同的關鍵屬性。這些可能具有相同的關鍵屬性。如果類別是總類別,則可以將其表示為總專業化或總泛化。使用哪種表示的選擇是主觀的。如果這兩個類表示相同型別的實體並共享大量屬性。它也具有相同的關鍵屬性,則首選專業化/泛化。否則,分類(聯合型別)更合適。

需要注意的是,並非所有建模方法都具有聯合型別。在這些模型中,必須間接表示聯合型別。

更新於:2023年5月17日

2K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.