我有一張持有人(詳細)的表格。其中兩個字段,我們有要求存儲和顯示更改的歷史記錄。他們是'IsActive BIT'和'IsIdle BIT'。一張桌子持有兩個字段的變化歷史
目前,它們是Person表中的字段。
要求是能夠顯示人員何時處於活動狀態以及何時處於閒置狀態。以及誰設置了這些值。 (所有故事都有LastUpdatedBy和CreatedBy列)。
我的計劃是使用PersonHistory表,PersonID FK到Person,以及IsActive和IsIdle列以及CreatedBy和LastUpdatedBy列。和'EffectiveFrom'DATETIME。
所以當我們創建一個人時,我們用IsActive和IsIdle值,用戶和PersonID向歷史記錄添加一行。
要顯示一個人,我們必須對人員記錄進行(不整潔?)選擇,然後加入歷史記錄表中該人員的最後一條記錄。 INNER JOIN .. SELECT TOP 1 * FROM History,using ROW_NUMBER?可能會很慢。
編輯'IsActive'時,我們需要添加一個新的行,其中包含PersonID和新的IsActive(和/或IsIdle)值。實際上,我們需要存儲兩者。只有當這些值改變時纔會寫入一行。這意味着我們需要進行預保存檢查以查看值是否更改。
這似乎是一個標準的方式來處理這個要求 - 還是有更好的更常見的方法?
您可以將值保存在Person表中以及History表中,並且不需要連接。您還可能想查看[更改數據捕獲](https://msdn.microsoft.com/en-nz/library/cc645937.aspx)。 – Blorgbeard