ฉันกำลังทำงานในโครงการเว็บที่เกี่ยวข้องกับเนื้อหาที่ผู้ใช้สามารถแก้ไขได้และฉันต้องการที่จะสามารถติดตามเวอร์ชันของเนื้อหาจริงที่อยู่ในฐานข้อมูล โดยพื้นฐานแล้วฉันต้องการที่จะใช้ประวัติความเปลี่ยนแปลงของวิกิ
ในการทำวิจัยพื้นหลังฉันเห็นเอกสารจำนวนมากเกี่ยวกับวิธีการทำคีมาฐานข้อมูลของคุณ(จริง ๆ แล้วฉันควบคุมอยู่แล้ว) แต่กลยุทธ์ใด ๆ ที่มีอยู่เกี่ยวกับวิธีการติดตามการเปลี่ยนแปลงเนื้อหาของฐานข้อมูลของคุณจะสูญหายไป ในการค้นหาของฉัน
ฉันสามารถคิดถึงวิธีการติดตามการเปลี่ยนแปลงของตัวเองได้บ้าง แต่พวกเขาทั้งหมดดูค่อนข้างหยาบ:
- บันทึกทั้งแถวในการเปลี่ยนแปลงแต่ละรายการเชื่อมโยงแถวกลับไปยังรหัสแหล่งที่มาด้วยคีย์หลัก การเปลี่ยนแปลงเล็ก ๆ น้อย ๆ จำนวนมากอาจทำให้โต๊ะโตมาก
- บันทึกก่อน / หลัง / ผู้ใช้ / การประทับเวลาสำหรับการเปลี่ยนแปลงแต่ละรายการด้วยชื่อคอลัมน์เพื่อเชื่อมโยงการเปลี่ยนแปลงกลับไปยังคอลัมน์ที่เกี่ยวข้อง
- บันทึกก่อน / หลัง / user / timestamp ด้วยตารางสำหรับแต่ละคอลัมน์ (อาจส่งผลให้มีตารางมากเกินไป)
- บันทึก diffs / user / timestamp สำหรับการเปลี่ยนแปลงแต่ละรายการด้วยคอลัมน์ (ซึ่งหมายความว่าคุณต้องเดินผ่านประวัติการเปลี่ยนแปลงทั้งหมดเพื่อย้อนกลับไปยังวันที่แน่นอน)
อะไรคือวิธีที่ดีที่สุดที่นี่? ดูเหมือนว่าฉันจะพลิกโฉมฐานข้อมูลโค้ดของคนอื่น (ดีกว่า)
คะแนนโบนัสสำหรับ PostgreSQL