Database design 我应该在我的电子商务应用程序中有购物车表,还是只有未结订单状态?

Database design 我应该在我的电子商务应用程序中有购物车表,还是只有未结订单状态?,database-design,schema,e-commerce,cart,shopping-cart,Database Design,Schema,E Commerce,Cart,Shopping Cart,我正在开发一个电子商务应用程序,在设计数据库模式时,我偶然发现了两个有关存储购物车数据的问题 首先,是否有任何理由同时拥有购物车和购物车列表? 我明白为什么要用命令之类的东西来做这件事。显然,它可以通过将数据替换为orderID的单个外键来防止跨多个订单行(订单号、订单日期、用户/帐户、状态等)的重复数据 但这样的数据只有用户才能跨购物车线共享(我预见到这一点)。 因此,与其在cart行中存储对cartID的引用,为什么不存储userID并完全删除cart表呢 我是否忽视了拥有专用购物车桌的另一

我正在开发一个电子商务应用程序,在设计数据库模式时,我偶然发现了两个有关存储购物车数据的问题

首先,是否有任何理由同时拥有购物车和购物车列表? 我明白为什么要用命令之类的东西来做这件事。显然,它可以通过将数据替换为orderID的单个外键来防止跨多个订单行(订单号、订单日期、用户/帐户、状态等)的重复数据

但这样的数据只有用户才能跨购物车线共享(我预见到这一点)。 因此,与其在cart行中存储对cartID的引用,为什么不存储userID并完全删除cart表呢

我是否忽视了拥有专用购物车桌的另一个好处

然后第二,思考这个问题让我怀疑我是否需要一张购物车的桌子。 如果订单有一个状态,为什么不只是有一个“打开”状态,并为用户购物车使用打开的订单

我意识到这意味着搜索(更大的)订单行表而不是购物车行表来检索用户的购物车。我只是想知道这会有多大的不同。如果使用orders表存储购物车数据可能是正常的做法


如有任何反馈或讨论,将不胜感激。:)

这样做的一个常见原因是允许一个用户拥有“多个购物车”。有时用户确实需要“停放”一个未完成的订单,并在返回未完成的订单以完成或丢弃它之前放置另一个

因此,用户和购物车之间存在一对多关系,购物车和它包含的项目之间存在一对多关系


现在。。。我还强烈建议您花时间用您选择的语言查看现有的电子商务框架。不要不必要地重新发明轮子。

感谢您的投入!这绝对是反对我第一个问题的一个有效论点。单靠购物车行表是不够的。但是,使用订单状态方法不可能实现这一点吗?引发这些想法的部分原因是希望让用户能够保存订单以备日后使用,并存储整个订单。我认为这可以通过“保存”订单状态轻松实现。通过这种方式,用户可以保存多个订单,因为它们可以通过订单号进行标识。但购物车页面/抽屉将填充“未结”订单行。