繁体   English   中英

需要一些有关购物车数据库表设计的帮助

[英]Need some help with database table design with shopping cart

假设我有桌子

Products  -------product_id , name , price , size

shopping_cart------cart_id,item_id,user_id,quantity

order----order_id , user_id ,totalprice , date

orderHistory---------user_id , item_id,date,order_id

我很困惑应该如何存储购物历史记录,因为如果我存储了item_id,那么可能会删除某些产品,那么我应该在历史记录中显示什么。

该产品的价格,尺寸和其他尺寸可能会随时间而变化,但是历史上我不想改变

所以我应该如何设计数据库

对于产品删除问题,请尝试在产品表中包括类似“活动”(布尔)字段的内容。 这样,您无需实际删除产品,只需停用它们即可。 然后,您可以构建代码,以使不活动的产品不会显示在目录中,但是仍可在数据库中使用它们以在“订单历史记录”部分中显示。

我猜您正在尝试使用OrderHistory表创建类似“ OrderLine”表的内容。 您只需要将此链接到产品,您的订单抬头(Order)表就不需要链接到用户,因为订单抬头表已经与用户链接了。 如果您在OrderLine表中添加了诸如“数量”和“价格”之类的其他字段,则可以在下订单时创建快照,并将价格(在订购时)和订购数量插入到您的订购历史记录中表。 这样,如果产品价格随时间变化,OrderLine表中的信息将保持不变,并且您仍具有原始价格。

如果您想保留此实体以显示价格趋势,则仍可以建立一些实体来保存产品历史记录(价格等),但是就维护实际订单信息而言,这不是必需的。

这种方法意味着您的购物车表可以用作“工作进行中”存储库,您仅在其中存储当前的购物车,一旦完成订单,便清空购物车并将数据插入到订单标题和订单行表中。

这并不能涵盖所有内容,但是希望可以给您一些有关问题的解决方案的想法。

我现在面临着同样的问题,我基本上是通过将相关数据复制到辅助表中来解决该问题的,该历史表可以查看订单历史记录模型。 它们将永远不会改变,也永远不会被删除。

这样,如果价格改变或标题改变,您将在订购时获得快照。

另一种方法是创建版本产品,并存储特定的版本ID。 产品更改时,显示的版本将更新为最新的产品ID。

无论哪种方式,您都是重复历史记录。

我认为您应该在订单和产品之间有一个表格,可以在其中存储订单和产品的信息。 您可以为此使用订单历史记录表。 只需将购物时的信息存储在该表中即可。 我认为这应该是一个好习惯。

即使产品表中的实际值发生变化,您也无需更改订单历史记录表中的值。 仅在用户进行某种购物时才触摸该桌子,否则您无需这样做。

我还建议您创建一个客户表并将客户信息存储在该表中,并在订单历史表中也使用客户ID。 这将帮助您对历史进行分类,即使是针对客户

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM