我正在尝试创建一个允许我处理生产项目的数据库,但我不确定这是最好的方法
表产品
PK:productid
其余的产品表不是很重要,所以省略了。
表product_components
PK:productid& ingredientIDproductID(fk)
IngredientID(fk to product)
数量
这是正确的解决方案,还是有更高效的方式来处理这个问题?
答案 0 :(得分:0)
多对多关系通常会按照您在此处的方式解决。之后,您可以通过简单的连接获得产品的一个级别的组件:
select prod.*, comp.*, pc.quantity
from product prod
join product_components pc on (prod.productid=pc.productid)
join product comp on (comp.productid= pc.IngredientID)
where prod.productId=?
;
该模型减少了冗余数据,因此只要组件用于越来越多的产品,该产品有很多组件,并且您有多个级别的产品,这个解决方案在空间方面的性能很好。产品...也没有冗余数据,可以减少数据库中的不一致。
速度方面的性能取决于数据以及您将要执行的查询,但此模型通常可以很好地使用正确的索引。