我很难找到针对这种情况的最佳设计解决方案。我有两个共同基础的桌子。目前我的设计是这样的:我有一个订单表(共同基础):
[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上的两个表连接起来,然后过滤信息。我看到的唯一其他选项是将公共列添加到每个表中,但之后我会进行大量重组以使它们按正确的顺序排列。
有更好的方法来组织数据吗?
答案 0 :(得分:0)
那么这些额外的表是特定order-id(1:1)的额外属性?
我会考虑将所有字段添加到公用表中,或者至少添加最常用子表中的字段。
如果不合适,您可能需要在公共表中添加“类型”,并让触发器管理相关记录的插入/删除,以避免孤儿等模糊。
使用左连接的视图(不会更好吗?)来获取不同的类型。