0

假设我有 2 个表:

Order -< OrderItem

我有另一个有 2 个 FK 的表:

Feature
 - Id
 - FkOrderId
 - FkOrderItemId
 - Text

更新


此表链接到另一个称为 FeatureReason 的表,该表对两种类型的记录都是通用的,无论是 OrderFeatures 还是 OrderItem 特征。

特征 -< 特征原因

如果我有 2 个功能表来解释这两种类型的记录,那么这是否需要 2 个 FeatureReason 表。FeatureReason 表需要有 2 个 FK,每个都指向不同的主表。


Order 可以有 Feature 记录,OrderItem 也可以。因此将填充“FkOrderId”或 FkOrderItemId。这样做好吗?

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

想法赞赏。

4

4 回答 4

5

我建议使用以下结构,因为如果您有 2 个外键,其中任何一个都可以为空,那么您可以拥有两列都为空或具有值的行。

也添加了 FeatureReason 表

表

于 2013-10-10T09:22:13.100 回答
2

你可以这样做,但为什么呢?您将这两个不同的项目整理在一个表中的原因是什么?

我建议有两个单独的表,OrderFeatures并且OrderItemFeatures在您需要同时查询这两个表的情况下,将它们与union查询进行比较。

于 2013-10-10T08:50:46.783 回答
1

一个表中可以有 2 个外键。只要外键和另一张表的主键映射就可以了

于 2013-10-10T08:27:28.197 回答
1

通过不填充 FkOrderItemId 或 FkOrderId,您不会违反 FK 约束中的一个或其他吗?

您可以根据需要填充 FkOrderItemId 或 FkOrderId,我只是不确定是否要定义一个 FK,其中不强制提供 FK 值。

只是一个想法...

于 2013-10-10T09:14:15.700 回答