首页 > 解决方案 > 与重复的多对多关系

问题描述

我想知道在以下情况下哪个更好,我有 tablePRODUCTS和我有 table ORDERS,这些表之间存在多对多关系,并且确实一个产品可以以相同的顺序出现多次。所以连接它们的表可能如下所示:

PRODUCTS_IN_ORDERS(ID, PRODUCT_ID, ORDER_ID)然后我将在这样的表格中有数据 (1, 2, 3) (2, 2, 3)来表示该产品ID=2按顺序出现两次ID=3

或者像这样PRODUCTS_IN_ORDERS(PRODUCT_ID, ORDER_ID, AMOUNT),然后我就会有这个记录(2, 3, 2)

我的问题是这两种方法中哪一种更好,为什么?

标签: database

解决方案


这取决于您的用例,第一个PRODUCTS_IN_ORDERS(ID, PRODUCT_ID, ORDER_ID)在相关表中的属性不会因任何关联而改变的情况下很有用。这样,无论它们有多少, AMOUNT(假设它是 中的一个字段PRODUCT)都PRODUCT保持不变。ORDER

另一个对相反的情况很有用,在这种情况下,您希望AMOUNT相同PRODUCT的 s 具有唯一性,因此AMOUNT存储在关系表中,仅对那个productorder关联的那个是唯一的。这将导致多个productsamount在同一个上具有不同的s order


推荐阅读