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)对于这部分问题并不是一个好的答案。只需使用一些应用程序逻辑来解决丧偶超类型问题。 –