5

在表中使用一组外键的技术的名称是什么,除了一个外键对于给定的行都是 NULL?

换句话说,每一行都需要一个外键来指向 n 个不同的可能表中的一个(并且只有一个),因此您实际上拥有所有必需的外键,但除了一个之外,所有外键都是 NULL。

(Django 的用户可能会认为这是使用通用外键的替代方法)

4

2 回答 2

6

您所描述的设计术语是Exclusive Arc

相反,我更喜欢创建一个外键来引用您的 n 个不同父表的公共超级表。

有关多态关联,请参阅我的其他答案:

于 2010-01-23T00:43:41.550 回答
2

举个例子会更容易,但解决这个问题的一种常见方法是简单地为这些表找到一个通用的超类型。假设我们有表Book, Article, Magazine,现在一个表必须有这些表的外键。使用一个通用的超类型Publication可以解决这个问题。有关模型和类似的问题/答案,请参见此处。

于 2010-01-23T14:03:28.843 回答