database - 与重复的多对多关系
问题描述
我想知道在以下情况下哪个更好,我有 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)
。
我的问题是这两种方法中哪一种更好,为什么?
解决方案
这取决于您的用例,第一个PRODUCTS_IN_ORDERS(ID, PRODUCT_ID, ORDER_ID)
在相关表中的属性不会因任何关联而改变的情况下很有用。这样,无论它们有多少, AMOUNT
(假设它是 中的一个字段PRODUCT
)都PRODUCT
保持不变。ORDER
另一个对相反的情况很有用,在这种情况下,您希望AMOUNT
相同PRODUCT
的 s 具有唯一性,因此AMOUNT
存储在关系表中,仅对那个product
和order
关联的那个是唯一的。这将导致多个product
samount
在同一个上具有不同的s order
。