数据库中的购物车-订单行表或单独的购物车表


Shopping cart in db - order lines table or separate cart table?

我想将我的多租户应用程序的购物车数据存储在数据库中。

我想知道是否最好有一个单独的表(我工作的项目是这样做的,但我认为它们从会话迁移到了该解决方案),或者我是否应该把所有东西都放在订单行表中,并有一个订单状态来决定它是购物车的一部分还是订单的一部分。

每种解决方案的优缺点是什么?

如果在您的系统中,与购物车相关的数据与订单行完全相同,并且只因状态而异,那么您可以将所有数据都放在同一个表中,并根据状态表的外键值进行区分。

然而,与下订单和购物车产品相关的属性通常不同。与购物车相关的数据基本上为用户保持一种状态,以恢复她的活动,并可能呈现可能被消费的产品(有点不寻常)。另一方面,与订单行相关的数据很重要,它们与交易、财务信息、股票、历史、趋势等有关,这才是真正重要的数据。

因此,下订单是有价值的数据,可以进行分析和处理,而购物车只是为了方便用户而存储的。通常,为了灵活性和可扩展性,最好将它们分开