我应该如何保留订单数据,而不将其与可能发生变化的基础产品定价数据联系起来?

Ric*_*urt 0 ruby-on-rails archiving

我有一个处理和存储订单的应用程序.每个订单都由包含定价,大小调整,颜色等各种内容的订单项组成.我的问题是如何在不将其与可能发生变化的基础数据捆绑在一起的情况下持久保存该数据.

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

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

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

这是一个相当普遍的问题,我正在寻找最佳实践观点.

ajh*_*138 6

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

基本上是订单表和订单项之间的一对多关系.订单项会在订单时代表产品的价格等.