2010-04-06 64 views
1

我在這裏看到了跟蹤數據庫歷史的幾個問題,但似乎無法找到符合我們情況的問題。我們需要跟蹤幾個錶的歷史,其中一些表是多對多的鏈接表。例如說我們有這個模式:如何跟蹤包含多對多映射表的db錶的歷史記錄?

EntityA 
id 
name 

EntityB 
id 
name 

ABLink 
A_id 
B_id 

因此,跟蹤對EntityA或EntityB的更改似乎非常簡單。我們可以保留一個具有相同列的日誌表加上日期標記和用戶。但是鏈接呢?我們如何維護對給定版本的數據有效的鏈接集?我們需要能夠重新創建顯示按時間順序變化的數據歷史記錄。所以如果添加或刪除了一個鏈接,我們會指出這一點。等

回答

1

創建一個ABLink日誌表(帶有它自己的主鍵,如果需要的話),它具有到EntityA日誌表的外鍵鏈接。您可以在change_type列添加到您的日誌表以表明日誌條目是插入/更新/刪除 - 當然很多一對多日誌表不應包含任何更新 change_type條目:

ABLink_Log  EntityA_Log  EntityB_Log 
----------  -----------  ----------- 
id    id    id 
A_Log_id   name   name 
B_Log_id   change_type  change_type 
change_type  date_stamp  date_stamp 
date_stamp  user_id   user_id 
user_id