2011-05-26 38 views
2

我正在致力於此Extranet旅遊網站,該網站允許用戶更新有關其屬性的信息。該網站不是太複雜,但是造成這個問題非常困難的一件事情如下:在SQL中跟蹤更改和處理待批准

客戶希望用戶更新他們的信息,但這些信息應該保留狀態「等待批准」,單位外部網管理員實際上會批准更改。如果獲得批准,這個請求應該在某種歷史中得到證實。

我試圖找出一個解決方案,並與可能的解決方案 結束 - 保持新表的變化的記錄(請求ID,requestDate,請求類型,請求(店asp.net數據表作爲XML)) - 重複記錄作爲CURRENT_ROW new_row並在此表中添加requestID列(這可能會大大增加此原始表的大小) - 複製原始表的結構,其中我們只保存待定請求(這也可能導致大量表,這取決於在不同的請求類型和原始表的數量)

希望對我的想法有任何意見。

回答

0
  1. 您應該通過在新表格中分隔來存檔數據,通過這樣做可以提高查詢性能。從性能角度來看,如果它將是過時的數據(它意味着在接受用戶請求並保留其歷史記錄之後)永遠不會或很少使用,那麼查詢執行可能非常耗時。這是因爲查詢還會掃描這些過時的數據。 所以你應該有單獨的表來保持歷史。所以我會用「保留新表中的記錄」

  2. 分區執行。 Have a look at this article for more information about Partitioning

+0

1.使用新表可能會有問題,因爲我可能想要在請求信息中保留舊/值。選擇新的表格選項會帶來很多不必要的工作。可能的原始表格結構變化呢? 2.分區實施? – mko 2011-05-26 18:24:23

+0

如果你有你存檔的歷史。那麼你應該堅持這個迴應。它將減少同一個表中列+記錄的數量。如果仍然不滿意,你可以去分區 – Pankaj 2011-05-27 04:56:55

+0

什麼是分區實現? – mko 2011-05-28 17:05:42

0

除了添加狀態列以待處理/批准值之外,您還需要什麼?

+0

我需要一次更新多行(我正在使用openXML),我需要將更改存檔以供審閱(每個更改請求應單獨查看)。一個更改/請求可能包含多行。 – mko 2011-05-26 18:20:49