在对这里的最佳实践有所了解之后。
我正在建立一个订单处理数据库,用于管理库存,订单和发票。
到目前为止,在我的设计中,发票和订单都有对产品表的外键引用。如果在创建订单/发票后要更新产品,则如果再次查看,则可以更改rder / invoice上的项目列表。
我打算通过创建一个“OrderItems”表来管理它,该表存储产品数据的不可变副本,就像创建订单/发票时一样,并且订单引用此表而不是可更改的产品表。
这是处理此问题的常用方法 - 还有另一种方法吗?
由于
答案 0 :(得分:9)
这与数据仓库中的“缓慢变化的维度”问题有关。有六种标准解决方案。
http://en.wikipedia.org/wiki/Slowly_changing_dimension
您的“冻结副本”类似于Type 4算法。
答案 1 :(得分:2)
需要明确区分产品的价格,可能是其默认价格(在产品表中)和实际销售的价格(在InvoiceLine表中保存)。