存储用户购物车的位置,我应该存储在会话中还是存储在数据库中

时间:2015-11-03 19:31:21

标签: storage cart shopping

我想存储用户的购物车 所以每当用户在购物车中添加一些产品然后从网站注销并再次登录网站时,他就应该可以访问他的购物车了

一种方法是通过会话,但当用户注销时,该购物车的问题将变为空白

我正在尝试存储在数据库中,因此创建了2个表

我的第一个表是UserTable 有3列(UserId,ProductId,ProductQuantity) 和第二个表是ProductTable 有3列(ProductId,ProductName,Price)

但是以这种方式,对于每一个条目,第一个表中都会有一个新行,并且要检索特定用户的购物车,所有条目都需要检查,这样会使流程变慢

1 个答案:

答案 0 :(得分:1)

使用数据库是处理此类信息的优先方法。如果您使用会话,则应该在用户注销时清除会话,以便在他们重新登录时数据为空。

理论上,您可以在用户登录时使用会话以更快地进行数据检索,然后在注销时提取会话信息。但是,如果您有2个用户和1个可用项目,User1添加到他们的购物车,那么该方法的缺点是什么? User2不知道User1的会话,并且该项目应该对User2不可用,因为它在购物车中。

您必须在您构成的任何场景中考虑边缘案例。

至于数据库架构,我建议有3个表。

  • 用户(user_id,名称)
  • 产品(product_id,成本,可用)
  • 购物车(user_id,product_id,数量)