有一张商品表(Goods
)。每个项目都有一个价格。创建订单 ( Order
) 时,使用附加表将商品附加到订单上Goods__Order
。同时,下单后,订单中商品的价格不应发生变化,即使在Goods表中发生了变化。
一种选择是将价格存储在表中Goods__Order
。但是不应该改变的字段数量可能会变大,所以你不想把它们都转移到这个表+这个选项不是很通用。
在我看来,第二个选项是将表中的更改记录Goods
到一个Goods_audit
包含字段更改+修订号的表中。这可以通过 Hibernate Envers 获得。Goods_Order
但是你需要在表中输入产品 ID + 版本号 + 我没有找到他们这样做的例子。
哪个选项会更好?考虑到在线商店的数量庞大,可能已经或多或少地有一个众所周知的解决方案。是的,在 php 选项中没有 Hibernate Envers。
应该如此,但它是否在特定的 eComm 中实施以及如何实施取决于平台。如果您自己编写平台 - 请咨询销售部门 :-)
笨拙的选项在订单(order)表中写下订单时的价格,添加字段价格(price)。
创建一个 price_history 表 [product id, revision number, price, date, etc. if necessary] 并在那里进行每次价格更改。只有价格修订 ID 存储在 Goods 表中。