0

我有一个处理和存储订单的应用程序。每个订单都由具有定价、尺寸、颜色等各种内容的行项目组成。我的问题是如何在不将其与可能发生变化的基础数据绑定的情况下随着时间的推移保留这些数据。

例如,某人订购了由 5 件东西组成的东西,每件售价 1 美元,总共 5 美元。但是,在未来的某个时间点,单个事物的成本会变为 0.50 美元。现在,当我提出旧订单时,它的总成本是 2.50 美元而不是 5 美元。

最初,我想只是不允许更新子表,但这并不可行,因为定价是基于巨大的定价网格,客户只想更新而不是每次价格变化时都创建新的. 每个定价网格都需要几个小时来设置,并且定价每隔几天就会发生变化。

另一个想法是序列化整个订单并从中工作。但是,这使得更新系统和更改任何内容变得困难。旧订单将不再正确显示,甚至可能导致系统崩溃。

这是一个非常普遍的问题,我正在寻找最佳实践观点。

4

3 回答 3

6

切勿将您的订单总额基于产品的当前价格。在线目录等的典型数据结构是有一个 Order 表和一个 Line Item 表。订单表包含订单的所有相关信息(订单总额、用户 ID、日期/时间等),而订单项表包含产品 ID、商品放入购物车时的价格,以及税务信息等和订单 ID。

基本上是订单表和行项目之间的一对多关系。订单项在订购时成为产品价格等的代表。

于 2009-11-17T19:35:28.807 回答
1

您需要保存每个订单中的值,它们不应连接到价格网格,而是从中复制。

于 2009-11-17T19:31:00.060 回答
0

丹尼是正确的。出于审计目的,您创建的记录具有不随时间变化的值,而不是链接到可能随时间变化的值。

因此,您的订单项应该有一份所购商品的副本并对其进行描述。因此,如果您有需要保留的产品信息,请将其与价格、费用和总计一起保存在订单项记录中。

于 2009-11-17T19:35:20.400 回答