3

我已经看到了几种不同的购物车模式,其中包含用于订单状态类型/运输状态类型/付款状态类型的不同表。

我想在我的项目中第一次做到这一点,并想知道最好的方法是什么,希望有人有示例表供我使用。

当然,关键是无论我使用多少列——它们必须代表相互排斥的东西。

我在想一些事情:

OrderStatus - 摘要状态 PaymentStatus - 已付/未付/部分已付/错误 ShippingStatus - 未发货/部分发货/已发货/DeliveredByHand

什么是打破这一点的最佳方法 - 我是否应该有一个“摘要”状态也代表整体“人类可读”状态以及流程每个独立部分的个人状态?

4

2 回答 2

6

任何时候你有各种“互斥”的状态,这意味着有一个列,该列有多个可能的值。大多数情况下,这些值应该受到约束,最好和最常见的方法之一是通过“字典”或“查找”表的外键。所以,在最基本的情况下,你可能会有这样的事情:

  • 表订单(OrderID、OrderStatusID、...)
  • 表 OrderStatus(OrderStatusID、名称)

OrderStatus 将具有以下值:* 1、“已付款”* 2、“未付款”* 3、“已发货”* 4、“未发货”

重要的部分是确定哪些状态与其他状态真正相互排斥。例如,我上面的示例行可能不是很好,因为您可能有一个既是“已付款”又是“已发货”的订单。如果是这种情况,那么您可以将 OrderStatus 拆分为 PaymentStatus 和 ShippingStatus(正如您所提到的)。

确定是否拆分这些行实际上取决于您和您的特定需求。但是,无论您做出什么决定,都假设您不得不在某个时候对其进行更改。通常,唯一永远不会改变的应用程序/数据库是那些因缺乏使用而被放弃的失败的应用程序/数据库。“第一次做对”是一个令人钦佩的目标,提前进行研究是有必要的,但你几乎肯定不会实现它。相反,花精力使其余的设计/代码足够灵活和可变,以便您可以重新设计其中的一部分,而不必破坏整个应用程序。

于 2009-12-21T23:09:22.343 回答
1

这真的,真的取决于购物车本身的全部功能。我建议遵循 SDLC,这将使您更好地了解您需要从什么功能开始,从而更清楚地了解您需要在数据库中存储哪些数据(表/字段)。

这里有一些链接可以帮助您开始:

http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle

http://www.computerworld.com/s/article/71151/System_Development_Life_Cycle

一旦你开始了,你通常可以确定随着你的进步你需要哪些字段和值。

一旦确定需要在数据库中存储哪些数据,就可以使用数据库规范化指南来帮助构建表

http://en.wikipedia.org/wiki/Database_normalization

希望有帮助!

于 2009-11-17T20:51:46.687 回答