關於歷史數據的單記錄變更:常見數據庫設計(2)——歷史數據問題之單記錄變更
1.概述
在保存客戶操作歷史數據時,有一種數據,如標書的標書流水+標書清單、細化方案的細化方案流水+細化方案清單、商品價格的價格變動流水+變動清單等等。這樣的歷史數據,它們都有一個控制流水版本的主流水表,還有一個與某個版本對應的清單表。
2. 多記錄變更、無儲存未來歷史記錄的需求,儲存於單表中
業務:在做付款計划時,需要保存計划的歷史版本數據,同時也要記錄每一計划針對哪些物資進行付款的。
表結構
說明:如單記錄一樣,版本的控制在付款計划表中。主體如何實現版本控制請參見單記錄變更
3. 多記錄變更、無儲存未來歷史記錄的需求,儲存於多表中
業務:業務如2中的業務一樣,不過當每一次的付款清單都是很多時,並且每一個的付款計划有很多版本時,此時的付款計划清單的數據量就會很大。在正常訪問時,我們只需要的是當前可用的清單是什么,不會關注歷史的版本,而當清單表中的數據量達到一定量時,會嚴重影響查詢效率。
結構:
付款計划、付款計划清單表與上面的一樣,此時再加入一個付款計划清單變更表
4,多記錄變更、有儲存未來歷史記錄的需求
業務:在管理供應商時,會有一個商品價格變動的需求,並且是多個商品價格一起變動,並且可以提前通知在下一個月價格將產生變動。此時就需要有一個流水表來控制多個商品一起變動價格,並且這個流水要支持儲存未來歷史數據的功能。
表結構:
說明:即在清單表中,加入生效日期。在這里,變動流水為SupplierGoodsPriceVar表,變動清單為SupplierGoodsPriceVarDetails表,可用的清單為SupplierGoods,體現存儲未來歷史數據的地方在變動清單中加入價格生效日期的字段。