Mysql
如何在使用版本化記錄的數據庫中保持參照完整性,同時保持數據同步?
我正在建構一個由幾個表組成的數據庫,這些表用作我們的應用程序生成的表單的數據源。
[form] [question] [responses] id id id name form_id question_id desc question response created created created modified modified modified
這是一個鬆散的範例,但是使用表格生成了一個 Web 表單
[form]
,然後使用[question]
表格生成了問題。響應記錄在[responses]
表中。我看到的問題是,如果響應被擷取,然後question
被修改,歷史數據將不同步(意味著response
將指向原始的 pre-modifiedquestion
)。這將是審計師的噩夢。解決這個問題的最佳方法是什麼?我覺得我需要保留某種版本資訊或某種影子記錄,但我不確定最好的方法。
我可以看到正在處理的三種方法是:
- 有一個審計表來跟踪對問題\表格表的任何更改。這將在更改之前儲存正在更新的記錄以及日期。
2)如果您預見到問題\表格經常更改,最好將實際問題儲存在響應表中,僅使用問題表生成表格。
- 根本不允許改變問題。對問題的任何修改都會生成一個全新的 question_id。這將確保數據完整性。