员工
客户
产品
订单
购物车商品
customer_id(客户的主键和外键参考)
product_id(产品的主键和外键引用)
order_id(订单的外键引用(可以为空!))
数量
在我的应用程序中,我为客户提供以下逻辑: 今天客户将一些产品添加到他的购物车(使用他的 UI),然后 如果他决定这样做,他就会向员工核对订单。 而且,如果他决定这样做,他今天就不会结账, 但明天他只想看看他的购物车并决定其他事情等等。
基本实现: 要查看某个客户的购物车,我们只需执行以下查询:
SELECT * FROM Cart_items WHERE customer_id = some AND order_id IS NULL;
要查看某个客户的订单历史记录,我们只需执行第二个:
SELECT * FROM Cart_items WHERE customer_id = some;
“Cart_items 的 order_id 中可以包含 NULL 值吗? 什么时候没有创建订单?” 我的意思是:
我看到了这个主题:外键可以为 NULL 和/或重复吗?。 但没有提到形成购物车结构。
设计或多或少还可以。然而现在,看起来
cart_items
依赖于 orders
,但这并不完全正确。如果需要扩展用例以包含运输信息,则在 shipping_id
中包含 cart_items
会显得很奇怪。
通常购物车是用户放置想要购买的物品的临时场所。一旦他决定继续购买,就会使用购物车中的商品创建订单,然后清空购物车。
在同一个表中混合订购的商品和购物车商品并不是一个好方法。购物车物品需要快速访问,因此桌子的尺寸不宜太大。从长远来看,存储订购的商品和购物车商品肯定会对性能产生不利影响。购物车商品也会受到删除操作,而订购的商品永远不会被删除,应用程序中的一个简单错误也可能会删除订购的商品。
更好的方法是有一个单独的表
order_items
来跟踪订单的项目。
订单商品
订单不能单独存在,在
customer_id
中包含 orders
才有意义。
订单
虽然表格
cart_items
只是用户购物车中的商品。
购物车商品