我一直在研究购物车的数据库结构,并注意到在存储订单详细信息时,产品信息会重复并再次存储在表格中。我想知道这背后的原因是什么?这是我的意思的一个小例子:
产品表
product_id name desc price
1 product 1 This is product 1 27.00
订单表
order_id customer id order_total
1 3 34.99
订单明细表
order_details_id product_id product name price qty
1 1 product 1 27.00 1
因此,您可以看到产品名称和价格再次存储在订单明细表中。为什么是这样?我能想到的唯一原因是因为产品细节可能会在下订单后发生变化,这可能会引起混淆。这是对的吗?
由于
保
答案 0 :(得分:1)
是的,这是唯一的原因
您的产品价格经常变化
因此您可以再创建一个表并存储产品的详细信息,如下所示
产品更新表
id product_id name desc price
1 1 product 1 This is product 1 27.00
和订单表将是
order_details_id product_Update_id qty
1 1 1
答案 1 :(得分:0)
它可能是出于性能原因,而不是必须进行JOIN,只需要一个直接的SELECT来获取订单细节。
答案 2 :(得分:0)
您可以根据
修改结构product_id name desc price
1 product 1 This is product 1 27.00
order_id product_id customer id order_total
1 1 3 34.99
order_details_id order_id qty
1 1 1
没有必要采取productname及其价格在orderdetail只需要订单ID 并在订单表中添加一个字段product_id