可以在一个表上有2个FK,它指向不同的表,其中一个只会被使用吗?

Sam*_*lly 0 sql sql-server sql-server-2008 sql-server-2008-r2

让我们假设我有2个表:

Order -< OrderItem
Run Code Online (Sandbox Code Playgroud)

我有另外一张桌子有2个FK:

Feature
 - Id
 - FkOrderId
 - FkOrderItemId
 - Text
Run Code Online (Sandbox Code Playgroud)

UPDATE


此表链接到另一个名为FeatureReason,它对两种类型的记录都是通用的,可以是OrderFeatures或OrderItem功能.

功能 - <FeatureReason

如果我有两个功能表来计算两种类型的记录,那么这需要2个FeatureReason表.同样的问题是FeatureReason表需要有2个FK,每个FK指向不同的主表.


Order可以具有Feature记录,OrderItem也可以.因此,将填充"FkOrderId"或FkOrderItemId.这样可以吗?

我还会认真考虑使用Views来插入/编辑和读取OrderFeatures或OrderItemFeatures.

思想赞赏.

Jan*_*nen 5

我建议使用以下结构,因为如果你有两个外键,其中任何一个都可以为null,你可以让两列的行为null或具有值.

还添加了FeatureReason表

表