所以我有一张表,其中有一个名为parentKey
的列。此列实际上有许多其他表(至少为4个)的键(根据定义是外键)。甚至创建这样的列对我来说似乎很奇怪。我还没有看到有这样的桌子的构造。因为您不能添加外键约束,因为列不链接到一个表。所以我不知道这是否允许存在。我的意思是它在那里被创造但是我不确定我是否应该这样做。
我的想法是为每个可能的表创建一个列,并将其命名为:MyTable1Key,MyTable2Key,并将它们作为外键。但问题是,如果分配了一个外键,那么其他外键将为空(并且它永远不会被分配,因此它将始终保持为空)。
所以我必须让这个parentKey列像它一样,或者我应该将它拆分到通过外键链接到表的不同列,所以对于某些列有空值?
答案 0 :(得分:1)
除非您有充分的理由,否则请勿将多个外键组合到一个列中。正如您已经注意到的那样,它会删除外键的引用完整性。
您可能会冒险使用可能属于两个表的键,或者您有一个主表用于作为外键引用。可以将主键作为外键。
听起来你可能正在查看超类型 - 子类型模式,在这种情况下,这个问题可能会给你一些好主意。 How do I apply subtypes into an SQL Server database?