我正在本地服务器上建立一个购物车系统进行练习。
现在,我正在使用会话将产品插入MySQL数据库,但我正在为每个会话创建一个表。我知道这不是理想的做事方式。
我的问题:
我应该在会话表中定义多少行,以便将最大数量的项目添加到购物车中?
因此,如果我重新设计表格,那将是
User INT NULL,
product_1 INT NULL,
product_2 INT NULL,
...
....
我知道为每个订单创建一个表只会在将来导致问题
答案 0 :(得分:4)
不,这种设计难以维护。相反,有一个表将保存所有购物车数据;类似的东西:
User Product Quantity
2 5 1
2 3 3
2 7 1
3 5 2
3 6 2
其中“user”列是用户表(或购物车表中的任意一个)上的外键,“product”列是product表上的外键。这样一来,购物车中的独特产品数量就没有限制。
答案 1 :(得分:2)
在向数据库添加新项目之前检查购物车中的商品数量可能会更好。如果购物车商品的数量等于最大数量,则不允许添加其他商品或将行添加到数据库。我认为不可能在SQL表中设置最大行数,如果可能的话,这可能不是一个好习惯。
为什么不拥有一个包含所有购物车项目的表(适用于所有用户),并在Session变量中存储唯一的客户ID,该变量引用SQL购物车表中的行。
像这样......
列: CustomerID | ProductID | QTY 强>
第1行:1293993933 | 393939399 | 3
第2行:1293993933 | 339933992 | 4
将客户ID存储在会话变量中(如果您使用PHP,则为$ _SESSION ['CustomerID'])
每次将产品添加到购物车时,都会选择计数SQL查询。如果它等于允许的最大购物车项目,则不允许用户将插入运行到SQL命令中。
希望这有帮助