2013-05-20 274 views
2

我將如何去跟蹤數據庫的歷史?我將幾乎完全用於統計目的。例如,查詢數據庫很容易找出我們目前有多少客戶端,但如果我想比較我們上個月有多少客戶端與現在有多少客戶端相比,該怎麼辦?數據庫歷史數據

我會假設我需要另一個表來跟蹤這個信息,並想知道是否有一些標準的方式來做到這一點?

什麼我想到的是這樣的:

id table_name column row_id value valid_from valid_to 

在當插入數據和失效日期將是數據再也無法在數據庫中找到的日期VALID_FROM會。

因此,例如我有一個名爲老師列表狀態的表。在狀態欄中,教師可以「應用」,「僱用」,「主動」等。從上述表格中將valid_to保存在上表中,保存教師停止狀態爲「申請「,併爲」僱用「創建一個新行。對於統計數據來說,查詢該表似乎相當容易。

但是我真的不知道這是否是一種好方法。這正是我想出來的,並且可能是一種可怕的方式來做到這一點。任何幫助/建議,將不勝感激!

如果它很重要,我使用MySQL和CakePHP。

回答

2

這將做你想要的。

您可以通過關閉淘汰舊id(設置valid_to爲日期),並開始另一個具有相同table_namecolumnrow_id和新value跟蹤更新的那場。

另一種方式來做到這一點是這樣的:

id entry_time table_name row_id column_name value 

特定table_namerow_idcolumn_name第一個記錄是記錄的創建。後續記錄可以是更新(非空value)或刪除(空value)。