Sim*_*ver 3 shopping-cart database-design
我已经看到了几种不同的购物车架构,它们具有不同的表,分别用于订单状态类型/运输状态类型/付款状态类型。
我想在我的项目中第一次做到这一点,并想知道什么是最好的方法,并希望有人为我提供示例表。
关键当然是无论我使用多少列,它们都必须表示互斥的事物。
我在想一些类似的事情:
OrderStatus-摘要状态PaymentStatus-已付款/未付款/部分已付款/错误发货状态-未发货/已部分发货/已发货/已交付
打破这种状况的最佳方法是什么?我是否也应具有“摘要”状态,该状态也代表整个“人类可读”状态以及流程每个独立部分的单独状态?
每当您具有“相互排斥”的各种状态时,就意味着只有一个列,该列具有多个可能的值。在大多数情况下,应该限制这些值,而最好的和最常见的方法之一是通过“字典”或“查找”表的外键。因此,最基本的说,您可能会遇到以下情况:
OrderStatus的值如下:* 1,“已付费” * 2,“未付费” * 3,“已发货” * 4,“未发货”
重要的部分是确定哪些状态确实与其他状态互斥。例如,上面的示例行可能不是很好,因为您的订单可能同时为“已付费”和“已发货”。如果是这种情况,那么您可以将OrderStatus分为PaymentStatus和ShippingStatus(如您所暗示)。
确定是否拆分这些行实际上取决于您和您的特定需求。但是,无论你决定,假设你将拥有在某个时候去改变它。通常,永不更改的唯一应用程序/数据库是因缺乏使用而放弃的失败应用程序/数据库。“第一时间做到正确”是一个令人钦佩的目标,提前进行研究是必要的,但您几乎肯定不会实现。取而代之的是,将精力花在使其余的设计/代码足够灵活和可更改上,以便您可以对部分设计/代码进行重新处理,而不必拆除整个应用程序。