【发布时间】:2016-03-09 22:25:41
【问题描述】:
这是一个关于良好架构设计的一般问题。就我而言,我使用的是 Rails 4 和 PostgreSQL。
假设我有一个storefront,有很多products。店里还有很多orders,每个都有很多products。
周一,客户支付了order 的费用。所以现在,我们有一个属于storefront 和order 的product。
周二,商店决定更改products 之一的价格。
显然,我不想更改客户周一购买商品的记录,因此这让我相信我应该存储 两份 product - 一份商店现在(即星期二)正在销售,这是客户在星期一购买的商品的另一份副本。
但是,我知道通常要避免重复这样的数据。
是否有处理此类情况的最佳实践?
【问题讨论】:
-
无论如何,您可能不得不复制记录。您必须保留“旧”产品的历史记录,例如旧价格,旧版本,所以您的销售记录可以正常查看。要么在店面表中维护历史记录,要么将所有内容复制到销售表中。否则,您将查找客户 X 在日期 Z 购买的产品 Y,并获得 Y 的“现在”规格,而不是“当时”。
标签: ruby-on-rails postgresql schema