[英]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.