Jauh lebih mudah untuk menyimpan setiap record secara keseluruhan daripada menyimpan perbedaannya. Kemudian jika Anda menginginkan perbedaan dua revisi, Anda dapat membuatnya sesuai kebutuhan menggunakan the PECL Text_Diff
perpustakaan
.
Saya suka menyimpan semua versi catatan dalam satu tabel dan mengambil yang terbaru dengan MAX(revision)
, atribut boolean "saat ini", atau yang serupa. Yang lain lebih suka melakukan denormalisasi dan memiliki tabel cermin yang menyimpan revisi yang tidak terkini.
Jika Anda menyimpan diff, skema dan algoritme Anda menjadi jauh lebih kompleks. Anda kemudian perlu menyimpan setidaknya satu revisi "penuh" dan beberapa versi "diff", dan merekonstruksi versi lengkap dari serangkaian perbedaan kapan pun Anda membutuhkan versi lengkap. (Beginilah cara SVN menyimpan sesuatu. Git menyimpan salinan lengkap dari setiap revisi, bukan diff.)
Waktu pemrogram mahal, tetapi ruang disk biasanya murah. Harap pertimbangkan apakah menyimpan setiap revisi secara penuh benar-benar menjadi masalah.