各レコードの差分を保存するよりも、各レコード全体を保存する方がはるかに簡単です。次に、2つのリビジョンの差分が必要な場合は、PECLText_Diff
ライブラリ
。
レコードのすべてのバージョンを1つのテーブルに保存し、MAX(revision)
を使用して最新のレコードを取得するのが好きです。 、「現在の」ブール属性、または同様のもの。非正規化して、最新ではないリビジョンを保持するミラーテーブルを使用することを好む人もいます。
代わりにdiffを保存すると、スキーマとアルゴリズムがはるかに複雑になります。次に、少なくとも1つの「フル」リビジョンと複数の「diff」バージョンを保存し、フルバージョンが必要な場合はいつでもdiffのセットからフルバージョンを再構築する必要があります。 (これはSVNが物事を保存する方法です。Gitは差分ではなく、各リビジョンの完全なコピーを保存します。)
プログラマーの時間は高くつきますが、ディスク容量は通常安価です。各リビジョンを完全に保存することが本当に問題になるかどうかを検討してください。