Mysql

如何在使用版本化記錄的數據庫中保持參照完整性,同時保持數據同步?

  • November 18, 2019

我正在建構一個由幾個表組成的數據庫,這些表用作我們的應用程序生成的表單的數據源。

[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-modified question)。這將是審計師的噩夢。

解決這個問題的最佳方法是什麼?我覺得我需要保留某種版本資訊或某種影子記錄,但我不確定最好的方法。

我可以看到正在處理的三種方法是:

  1. 有一個審計表來跟踪對問題\表格表的任何更改。這將在更改之前儲存正在更新的記錄以及日期。

2)如果您預見到問題\表格經常更改,最好將實際問題儲存在響應表中,僅使用問題表生成表格。

  1. 根本不允許改變問題。對問題的任何修改都會生成一個全新的 question_id。這將確保數據完整性。

引用自:https://dba.stackexchange.com/questions/253458