Sql-Server
在廣義數據模型上實現外鍵
假設下面的 ASCII 樹是一個 UML 通用概念模型。為了在 UML 中表示這些實體/類,讓我們假設
$$ mammal $$一個超級班,和一級班,$$ wild $$和$$ domestic $$是 UML 中的子類。換句話說,類$$ wild $$繼承所有屬性$$ mammal $$, 和$$ domestic $$繼承所有屬性$$ mammal $$也是。此外,$$ raccoon $$和$$ white tail deer $$繼承所有屬性$$ wild $$. 我想將 UML 模型轉換為關係數據庫模型。
注意如何
$$ raccoon $$擴展兩者$$ wild $$和$$ domestic $$. 換句話說,它有兩個父母。我通常會使所有後代表的主鍵與其父主鍵相同。此外,我會讓後代表中的外鍵與其父表中的主鍵相同。因為$$ raccoon $$有兩個父母,我將如何建造那張桌子?
mammal | +- wild | | | +- raccoon | | | +- white tail deer | +- domestic | +- cat | | | +- siberian | +- dog | | | +- golden retriever | | | +- lab | +- raccoon
一個表中可以有兩個(或更多)外鍵。它們既可以涉及相同的屬性,也可以引用不同的表。所以你可以有 2 個外鍵
racoon(pk)
,一個引用wild(pk)
,另一個引用domestic(pk)
。就像是:CREATE TABLE raccon ( mammal_id INT PRIMARY KEY , FOREIGN KEY (mammal_id) REFERENCES domestic (mammal_id) , FOREIGN KEY (mammal_id) REFERENCES wild (mammal_id) ) ;
(假設所有表都
mammal_id
作為主鍵)