获取特定数据快照的最佳方法

时间:2013-07-01 09:11:26

标签: php mysql database-design

我有一个包含订单的数据库表,我需要在某些条件下拍摄快照。其背后的想法如下: 订单被打开 - >所有商品都分配到订单 - >订单已完成并生成发票 - >在订单取消订单保持打开但其最后状态的“快照”保存在数据库中(这可能会无限次,所以我需要任何快照可用,而不是覆盖最后一个) - >如果同一订单(同一客户,同一货物)的请求事件,整个周期再次重复..

所以我的问题是:

如何实现它(我不要求代码,但是方法和操作理论)?这种方法会出现什么问题?

PS: 我知道这个问题与我自己的问题紧密相关,而且不是那个问题,但我迫切需要帮助因为我真的被困了。 遗憾!

1 个答案:

答案 0 :(得分:1)

您需要正确建模订单流程,您可以拥有100个表格模型或优雅的1个单一表格模型......

此数据库架构应该出售您的问题(跟踪订单更改的单个表)

create table orderProcessFact
(order_id,
opened_date datetime,
goods_colected_date datetime,
payment_date datetime,
invoice_date datetime,
shipped_date datetime,
canceled_date datetime
);

create table order_items
(
order_id int
item_id int,
quantity int,
price numeric(5,3),
discount ...
)