2011-05-08 63 views
3

保存數據的變化是否有一種設計模式,構建數據模型的銀行應用程序需要的數據變化要經過權限等級時,需要考慮數據模型的設計模式?授權之前由其他用戶

例如,如果ADMIN1更改爲customer1表中的電話號碼,變化不應該直到Admin2的授予它是有效的。

我們計劃要實現的解決方案是一個臨時表來保存更改的記錄與改變的值,一旦授權批准的變化,那麼我們更新了主表。當你有很少的表時,這可以很好地工作,但是隨着表的增加,這會很麻煩。

回答

1

我不知道任何的設計模式,但我想我可能有另一個想法爲你 -
只有一個其他的表,稱爲'Pending_Changes'與列'Table_Identifier''Column_Identifier''Record_Identifier''New_Value'
每一行代表某個表的某個記錄的單列更改。
對於例 - 一排的('Customers', 'Phone_Number', '12345', '077-4453432')值將被用來代表客戶的電話號碼變更12345
這對夫婦這種方法的缺點是覺得─
1.所有的表必須有一個ID現場
2.更改單個記錄可以跨越在PendingChanges表多行,因爲它使一排每列改變值。

在都會顛倒這是很容易擴展的,很容易維護。

+0

我喜歡這樣一個事實,即您的設計基於單個表來跟蹤更改,並且缺點對於我的應用程序來說是可承受的。 – BuZain 2011-05-09 15:42:54

1

,當你有幾桌,但會很麻煩的表格增加

不一定能正常工作。如果你設計得當,它可以很好地處理大量的表格。您可以構建一個漂亮而小巧的數據模型來保存更改。它不要求您創建每個表的副本。

例如您可以擁有一個表,如:AuditTables,AuditColumns,AuditChanges,AuditChangesDetails等,您可以在該模型中存儲所需的所有更改,而不是創建與「實時」表對應的臨時表。

+0

如果我有你的權利,AuditTables將有表的名單進行審覈,掛AuditColumns具有每列表進行審覈,掛AuditChanges和AuditChangesDetails到跟蹤變化。我想這應該是充分的和可擴展的。我還喜歡下面的sJhonny的建議,它基於一張表。你的方法比較有什麼好處? – BuZain 2011-05-09 05:38:29

+0

我猜想它會更靈活。看看http://www.krell-software.com並下載審計工具。這不完全是你需要的,但你會有一個很好的想法你的模型應該看起來。 – Novitzky 2011-05-09 12:15:46

0

我設計了這樣的事情,這裏是它的主要內容;

  1. 我爲每個要創建行級版本控制的表創建鏡像表。假設你有CUSTOMER表。您的鏡像版本控制表將爲VER_CUSTOMER 我希望具有行級版本控制的每個表都有一個名爲RECORD_ID(GUID)的列
  2. 當插入到該表的記錄時,我生成新的GUID並填充該字段。新記錄也插入到VER_CUSTOMER表中,其中RECORD_ID添加到表的自然PK中。 當記錄更新時,我再次生成新的GUID。用這個新的GUID填充RECORD_ID。更新後的記錄也會發送到VER_CUSTOMER表。
  3. 刪除記錄時,我將CUSTOMER表中的記錄標記爲DELETED(不物理刪除記錄)。我在每張桌上都有IS_DELETED列。當試圖刪除記錄時,我將該列設置爲TRUE。再次刪除的記錄副本也會進入VER_CUSTOMER表。
  4. 因此,您在該表上的每個事務都有VER_CUSTOMER表中的相應記錄,其中RECORD_ID和表的自然PK爲PK。例如,如果CUSTOMER表的PK是CUST_ID。 VER_CUSTOMER的PK將是複合CUST_ID和RECORD_ID。

希望這有助於...

+0

有趣的設計,但更多的ver_tables行更新的版本控制模型;我想這是一個簡單的兩步製造商,檢查工作流程的延伸。你怎麼看? – BuZain 2011-05-09 15:39:06