Saya sedang mengerjakan proyek web yang melibatkan konten yang dapat diedit pengguna, dan saya ingin dapat melakukan pelacakan versi dari konten aktual, yang hidup dalam database. Pada dasarnya, saya ingin mengimplementasikan histori perubahan gaya wiki.
Melakukan riset latar belakang, saya melihat banyak dokumentasi tentang bagaimana versi skema database Anda (saya sebenarnya sudah dikendalikan), tetapi setiap strategi yang ada tentang bagaimana melacak perubahan konten database Anda hilang dalam longsoran barang skema versi, setidaknya dalam pencarian saya.
Saya bisa memikirkan beberapa cara untuk menerapkan pelacakan perubahan saya sendiri, tetapi semuanya tampak agak kasar:
- Simpan seluruh baris pada setiap perubahan, hubungkan kembali baris ke sumber id dengan kunci Primer (apa yang saya condong ke arah saat ini, itu yang paling sederhana). Namun, banyak perubahan kecil dapat menghasilkan banyak mengasapi meja.
- simpan sebelum / sesudah / pengguna / cap waktu untuk setiap perubahan, dengan nama kolom untuk menghubungkan perubahan kembali ke kolom yang relevan.
- simpan sebelum / sesudah / pengguna / cap waktu dengan tabel untuk setiap kolom (akan menghasilkan terlalu banyak tabel).
- simpan diffs / user / timestamp untuk setiap perubahan dengan sebuah kolom (ini berarti Anda harus mengikuti seluruh sejarah perubahan yang terkait untuk kembali ke tanggal tertentu).
Apa pendekatan terbaik di sini? Menggulirkan sendiri sepertinya saya mungkin menemukan kembali basis kode (lebih baik) orang lain.
Poin bonus untuk PostgreSQL.