在mysql中创建自我引用一对多关系

时间:2015-03-18 13:47:28

标签: mysql database

我正在创建一个名为 finishProducts 的表,其中包含以下列:

  • product_id
  • PRODUCT_NAME
  • product_unit
  • product_components_count

每种成品可能由多种成分组成,这些成分也应该是成品之一。 所以它就像一对多的关系,其中一个成品可能有也可能没有多个组件(Finish Products)。

为这种情况创建表的最佳做法是什么?

我认为其中一个解决方案是为不同产品组件的同一成品添加多行。见附图。

Solution 1

但是这个解决方案可能不是最好的解决方案,因为将来我可能不得不为这个表添加另一个名为Color的列,我必须将相同的列应用于多个规则(一个产品可以有多种颜色)。

所以我正在寻找最佳解决方案。

1 个答案:

答案 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