我正在创建一个名为 finishProducts 的表,其中包含以下列:
每种成品可能由多种成分组成,这些成分也应该是成品之一。 所以它就像一对多的关系,其中一个成品可能有也可能没有多个组件(Finish Products)。
为这种情况创建表的最佳做法是什么?
我认为其中一个解决方案是为不同产品组件的同一成品添加多行。见附图。
但是这个解决方案可能不是最好的解决方案,因为将来我可能不得不为这个表添加另一个名为Color的列,我必须将相同的列应用于多个规则(一个产品可以有多种颜色)。
所以我正在寻找最佳解决方案。
答案 0 :(得分:1)
为什么不有两个表,一个用于产品,一个用于组件。然后将一对多的关系运送到组件。
product_id | product_name
--
12 | Epoxytile
Component_id | product_id | Component_name
--
1 | 12 | Expoxytile base
2 | 12 | Epoxytile grout
3 | 12 | Expsytile Silica
然后,您可以拥有许多组件。要查询它们,只需使用
SELECT product_id, p.prouduct_name, c.compoent_name
FROM product p
INNER JOIN compoent c ON p.product_id = c.product_id