mysql - 规范在线购物车表

标签 mysql database rdbms

目前我有 3 张 table 。客户表、产品表和购物车表。 customer 表以 cid 作为主键。 产品表以 pid 作为主键。

现在我想将产品添加到购物车表。 我还想知道哪个客户正在添加该产品。

如果我将 cid 和 pid 放入购物车表中,而客户订购了不止一种产品,则会出现冗余。

我如何创建一个关联所有这些信息的表格? 即谁在订购、订购哪种产品以及数量。

我的表格

产品表( 产品 ID, 年级, 属性(property), 状态, 包装, 包装重量, 成本, 描述, );

客户表( 客户 ID, 姓名, 公司, 地址, 电话, 电子邮件, 国家, 城市, );

购物车表( 购物车 ID, 产品 ID, 客户 ID, 数量, 总成本, );

最佳答案

为了避免冗余,您应该添加另一个表 Cart_Positions,其中包含所有订购的产品,而购物车仅包含客户 ID。

Cart_Table( Cart_id, Cust_id, ... );
Cart_Positions_Table( Cart_Positons_id, Cart_id, Prod_id, 数量, ...);

(主键粗体,外键斜体)

编辑: 当试图避免裁员时,您还应该考虑已有的“总成本” - 这可以通过使用产品价格和数量轻松计算出来。另一方面,如果您允许折扣但不将其存储在订单中(这不是一个好主意),则总成本列将是必要的。

关于mysql - 规范在线购物车表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38873770/

相关文章:

MYSQL查询查找薪水第n高的所有员工

php - 映射下拉列表 2 中的值取决于通过 php mysql 在下拉列表 1 中选择的值

java - 为什么建议避免外键上的单向一对多关联?

php - Mysql Where Column A = X and Column B = Y and or Column B = Z

php - mysql 值按日期排序,但此列类型不是日期类型

mysql - 有没有可以返回不同数量产品的功能?

c++ - 寻找具有顺序访问功能的独立内存数据服务器

php - 打开和关闭与数据库的连接或保留它

mysql - 如何定义top-3评级?

database - 有没有办法让数据库查询以 O(1) 的速度执行