ユーザーが入力した変更を特定のテーブルに保存する必要がありますが、管理ユーザーによって表示および承認されるまで、それらの変更は表示されません。これらの変更がまだ保留状態にある間、古いバージョンのデータを表示します。承認待ちのこれらの変更を保存する最良の方法は何でしょうか?
いくつかの方法を考えましたが、どの方法が最適かわかりません。これは非常に小さな Web アプリです。1 つの方法は、他のテーブルのスキーマを模倣する PendingChanges テーブルを用意し、変更が承認されたら、実際のテーブルを情報で更新することです。もう 1 つのアプローチは、テーブルにデータの複数のバージョンを保存し、承認済みとマークされた最も高いバージョン番号を持つレコードを常にプルする、ある種のレコード バージョン管理を行うことです。これにより、余分なテーブルの数が制限されます (複数のテーブルに対してこれを行う必要があります) が、適切なレコードを確実に取得するために、一連のレコードを引き出すたびに追加の処理を行う必要があります。
これらの方法やその他の良い方法に関する個人的な経験はありますか?
更新: 明確にするために、この特定の状況では、過去のデータにはあまり興味がありません。ユーザーが行った変更をサイトに公開する前に承認する何らかの方法が必要なだけです。そのため、ユーザーは自分の「プロファイル」を編集し、管理者はその変更を確認して承認します。承認されると、それが表示される値になり、古いバージョンを保持する必要はありません。
特別な PendingChanges テーブルで XML として追跡する必要があるテーブルからの保留中の変更を格納する以下のソリューションを試した人はいますか? 各レコードには、変更が行われたテーブルを示す列、変更されるレコードの ID (新しいレコードの場合は null) を格納する列、変更が行われたときに格納する日時列、および変更されたレコードの xml を格納する列 (おそらくデータ オブジェクトをシリアル化できます)。履歴は必要ないので、変更が承認された後、実際のテーブルが更新され、PendingChange レコードが削除される可能性があります。
その方法について何か考えはありますか?