数据库设计最佳实践 - 订单处理数据库 - 产品更新可以有效地更改已关闭的发票

gb2*_*b2d 6 database-design

在对这里的最佳实践有所了解之后.

我正在建立一个订单处理数据库,管理库存,订单和发票.

到目前为止,在我的设计中,发票和订单都有对产品表的外键引用.如果在创建订单/发票后更新产品,则如果再次查看,则rder/invoice上的项目列表可能会更改.

我打算通过创建一个"OrderItems"表来管理它,该表存储产品数据的不可变副本,就像创建订单/发票时一样,并且订单引用此表而不是可更改产品表.

这是处理这个问题的常用方法 - 还有另一种方法吗?

谢谢

S.L*_*ott 9

这与数据仓库中的"缓慢变化的维度"问题有关.有六种标准解决方案.

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

您的"冻结副本"类似于Type 4算法.