具有共同基础的关系数据库设计表

时间:2012-11-28 18:57:02

标签: database relational

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

[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上的两个表连接起来,然后过滤信息。我看到的唯一其他选项是将公共列添加到每个表中,但之后我会进行大量重组以使它们按正确的顺序排列。

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

1 个答案:

答案 0 :(得分:0)

那么这些额外的表是特定order-id(1:1)的额外属性?

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

如果不合适,您可能需要在公共表中添加“类型”,并让触发器管理相关记录的插入/删除,以避免孤儿等模糊。

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

相关问题