0

我很难找到适合这种情况的最佳设计解决方案。我有两张有共同基础的桌子。目前我的设计是这样的:我有一个订单表(公共基础):

[order_table]
 order_id
 order_type
 company
 created

我有另一个参考订单表的表:

[product_order]
 order_id fk
 product_id
 quantity
 price

我有第二个参考订单表的表:

[special_order]
 order_id fk
 description
 price_estimate
 color
 size

两个表共享我喜欢的相同 order_id。我经常需要使用该表中可用的信息对 order_table 进行大型查询,比如“company = 200”。但是对于每个结果,我还需要 product_order 或 special_order 中的数据,具体取决于它的类型。因此,我看到的唯一最佳解决方案是将查询与 order_id 上的两个表连接起来,然后过滤信息。我看到的唯一其他选择是将公共列添加到每个表中,但是之后我将进行大量重组以使它们按正确的顺序排列。

有没有更好的方法来组织数据?

4

1 回答 1

0

那么这些额外的表是特定订单ID(1:1)的额外属性吗?

我会考虑将所有字段添加到公用表中,或者至少将最常用的子表中的字段添加到公共表中。

如果不合适,您可能希望将“类型”添加到公用表中,并让触发器管理相关记录的插入/删除,以避免与孤儿等混淆。

使用带有左连接的视图(不是更好吗?)来获取不同的类型。

于 2012-11-28T19:11:49.977 回答