記事などのデータを mysql データベースに保存する必要があり、記事が変更された場合は、古いバージョンも保存して復元できるようにする必要があります。このトピックに関する同様の質問や投稿をいくつか見つけましたが、どのソリューションが問題を解決するのに最適かはわかりません。
理解を深めるための基本的なテーブル「記事」は次のとおりです。
記事 (id、名前、テキスト)
私にとって、これには2つの異なるアプローチがあります。
アプローチ1
記事のデータとすべてのバージョンをテーブル「articles」に保存し、列「version」と「status」を追加します。バージョンには、記事のインクリメントされたバージョン番号を保存します。アクティブな記事は「ステータス」1 を取得し、他の記事は「ステータス」2 を取得します。
プロの:
必要なテーブルは 1 つだけです
新しいバージョンは新しいデータの挿入であり、古いデータの「ステータス」列の更新のみです
短所
- 非常に大きなテーブル (クエリが遅くなる可能性があります???)
アプローチ 2
フィールド「version」を「articles」に追加し、アクティブなデータのみをテーブル「articles」に保存します。古いバージョンのデータは、新しいテーブル「articles_versioned」に保存/移動されます。
プロの:
- 実際の有効なデータのみがテーブル「articles」にあります
短所
- テーブルの複製
そう。良いアプローチを忘れましたか?他のテーブルの関連データ (画像など) を処理するにはどうすればよいですか?