一组外键,其中除了一个之外都是 NULL
Posted
技术标签:
【中文标题】一组外键,其中除了一个之外都是 NULL【英文标题】:Set of Foreign Keys Where All But One Are NULL 【发布时间】:2010-01-22 13:50:47 【问题描述】:在表中使用一组外键的技术的名称是什么,除了一个外键对于给定的行都是 NULL?
换句话说,每一行都需要一个外键来指向 n 个不同的可能表中的一个(并且只有一个),因此您实际上拥有所有必需的外键,但除了一个之外,所有外键都是 NULL。
(Django 的用户可能会认为这是使用通用外键的替代方法)
【问题讨论】:
【参考方案1】:您所描述的设计术语是Exclusive Arc。
相反,我更喜欢创建一个外键来引用您的 n 个不同父表的公共超级表。
有关多态关联,请参阅我的其他答案:
Possible to do a mysql foreign key to one of two possible tables? Referencing foreign keys in the same column Why can you not have a foreign key in a polymorphic association? In a *** clone, what relationship should a Comments table have to Questions and Answers? How to handle an “OR” relationship in an ERD (table) design?【讨论】:
【参考方案2】:如果有一个例子会更容易,但解决这个问题的一种常见方法是简单地为这些表找到一个通用的超类型。假设我们有表Book, Article, Magazine
,现在一个表必须有这些表的外键。使用常见的超类型Publication
解决了这个问题。 See here for the model 和类似的问题/答案。
【讨论】:
以上是关于一组外键,其中除了一个之外都是 NULL的主要内容,如果未能解决你的问题,请参考以下文章