我为购物车创建了一个简单的数据库模型,现在就考虑订单,产品和购物车
我的问题是购物车与产品有M:N关系吗?如果是,则需要创建第三个表。 我创造了第三张桌子,但对我来说没有意义。我很可能 T_SHOPPING_CART表并将id,product_id,quantity作为复合主键,并将产品值存储在其中,而不是创建另一个表来存储这些详细信息。哪一个更好地接近第三个表或复合主键。
答案 0 :(得分:0)
我认为答案在于基本面。您已经说T_SHOPPING_CART
和T_PRODUCT
有m:n的关系。因此,当您分解任意多对多关系时,始终会创建关联表(或动名词)。
让我们看看为什么你的方法不起作用。您只想在T_SHOPPING_CART表中使用复合ID
T_SHOPPING_CART_ID(ID, Product_Id, quantity)
如果您在每次用户时都在主键中包含数量 更改数量,您的主键将更改。那不是一件好事 设计方法。
您可能需要的其他属性如何?你打算加他们吗?
每次都是主键吗?例如。您需要设计与每个购物车相关联的折扣。你将如何储存它?你能和表Discount
建立简单的m:1关系吗?由于您有一个复合键,因此效率非常低。
或者,如果将折扣作为属性存储在T_SHOPPING_CART表中,则会导致严重的缺陷,冗余。数据冗余会导致各种异常。
T_SHOPPING_CART
ID PRODUCT_ID QUANTITY DISCOUNT
1 101 33 2.3
1 102 20 2.3
此处,id = 1的购物车折扣为2.3。它是多余的,即出现在2个地方,这会导致更新,删除,异常。
我的基本论点是,如果您阅读了多对多关系的基本原理,您将找到所有答案。许多人应该总是与第三个表联系起来。
希望它有所帮助。