Undo-Redo を許可するように DB テーブルを設計する方法を見つけようとしています。
次の構造を持つタスクテーブルがあるとします。
id <int>
title <varchar>
memo <string>
date_added <datetime>
date_due <datetime>
ここで、数日にわたって複数のログインが行われ、複数の編集が行われたと仮定します。しかし、ユーザーはいずれかのバージョンに戻りたいと考えています。
- 変更を追跡する別のテーブルを用意しますか?それとも、タスクテーブル内に変更を保持しようとしますか(より適切な用語がないため、「ゴースト」行)。
- すべての列を追跡しますか、それとも毎回変更された列だけを追跡しますか?
問題があれば、MySQL を使用しています。また、問題があれば、履歴 (ala Photoshop) を表示して、ユーザーが任意のバージョンに切り替えられるようにしたいと考えています。
おまけの質問:memo
変更時にセル全体を保存しますか、それともデルタのみを保存しようとしますか? 私が尋ねる理由は、memo
セルが大きくなる可能性があり、リビジョンごとに 1 つの単語または文字のみが変更される可能性があるためです。確かに、デルタを保存するには解析が必要ですが、元に戻す操作がそれほど頻繁に行われないと予想される場合は、処理時間よりもスペースを節約する方がよいのではないでしょうか?
ご協力ありがとうございました。