我对MySQL中的订单表设计有疑问。 我有像
这样的ORDERS表Order_id | Customer_id | Total_Price |
--------------------------------------
另一方面,我有表PRODUCT
Product_id | Product_name | available_amount
------------------------------------------
订单可以包含多种不同的产品。 那么,我如何更改或更新我的数据库设计,就像我可以使用其所有产品高效访问任何订单? 我应该创建单独的表名Order_details吗?你能帮我吗?
答案 0 :(得分:4)
是的。您将需要创建一个单独的表,如您所提到的,将订单及其所有产品汇总在一起,如下所示:
Order_Product_id | Order_id | Product_id
----------------------------------------
1 | 1 | 1
2 | 1 | 3
3 | 1 | 5
4 | 2 | 3
5 | 3 | 1
6 | 3 | 2
然后您可以获得订单中的所有产品:
Select op.Order_id, p.Product_id, p.Product_name
FROM Product p
JOIN Order_Product op ON op.Product_id = p.Product_id
WHERE op.Order_id = 1
答案 1 :(得分:1)
你可以看到this
您的订单中包含多种产品,而产品可能只有一个或多个订单,那么您就拥有多对多的关系。
您只需要使用此架构添加新表 order_products(id,order_id,product_id)
答案 2 :(得分:0)
是的,订单和产品之间的关系是多对多的,所以你必须通过做第三个名为order_products或order_details的表来打破这种关系,这个表有order_id,product_id作为外键。 您还应该为此表添加数量字段和sales_price字段。 此外,您不应将total_price放在订单表中,但您可以通过第三个表中的总和(数量* sales_price)字段计算总数。