2
當使用幾個互斥排列的子類型建立超類型/子類型關係時,應該如何通過約束強制執行這種相互排斥?數據建模子類型超類型關係時使用什麼約束?
我的第一個猜測是:
SuperType
(PK) super_id
(PK) type_id
Constraint: type_id in (1,2)
SubType1
(FK) super_id
(FK) type_id
Constraint: type_id = 1
SubType2
(FK) super_id
(FK) type_id
Constraint: type_id = 2
是的,就是這樣做的。您還可以將'SuperType(type_id)'作爲FK指向'Types'參考表(僅有2行)。 –
另一個類似的問題:[數據庫設計問題](http://stackoverflow.com/questions/4969133/database-design-problem) –
我同意ypercube。你有正確的想法。這是限制條件最多的。正如布蘭科指出的那樣,這並不涉及寡居的超類型,但由於它們可能導致的複雜性,限制(甚至是對等的FK)對於這部分問題並不是一個好的答案。只需使用一些應用程序邏輯來解決喪偶超類型問題。 –