我正在用 PHP/MySQL 开发一个股票订购系统。产品可以有多个供应商。通过指定所需数量和供应商将产品添加到购物篮中。这是当前的数据库结构:
Products
=========
id (PK)
name
etc...
Suppliers
==========
id (PK)
name
etc...
Product_Suppliers
=================
id (PK)
product_id (PK)
supplier_id (PK)
price
Basket
=======
product_id (PK)
quantity
product_suppliers_id
Product_Suppliers 表存储不同的供应商及其每种产品的价格。
将产品添加到购物篮时,它首先检查产品 ID 是否已存在于购物篮表中 - 如果存在,则会覆盖记录。如果不存在,则会创建一条新记录。
购物篮表中的product_suppliers_id 字段指定为该特定产品选择了哪个供应商。
我想知道我的方法是否正确,或者我是否需要进行任何更改以消除任何冗余。
最佳答案
在购物篮
中,您应该有:
basket_id (PK)
product_id
supplier_id
quantity
price
Product_Suppliers
只是一个配置表。它具有供应商提供的产品的唯一当前配置。您的购物篮
应该“更了解”然后指向Product_Suppliers
,因为:
- 产品可以更改价格。
- 供应商也可以在特定时间停止提供产品。
您的设计应该允许您正确查询历史数据,即使产品价格发生变化或供应商不再提供该产品。
因此,您不应在其中包含 product_suppliers_id
。
此外,我在您的设计中没有看到谁的购物篮,这意味着您还应该为客户或用户(或两者,如果用户可以输入自己的订单和商店)提供一个表格内部用户可以输入客户端的订单)和相应的 key (client_id,user_id)。
关于php - MySQL数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181580/