Tôi đang làm việc trên một dự án web liên quan đến nội dung có thể chỉnh sửa của người dùng và tôi muốn có thể theo dõi phiên bản của nội dung thực tế, nằm trong cơ sở dữ liệu. Về cơ bản, tôi muốn thực hiện lịch sử thay đổi theo kiểu wiki.
Thực hiện một số nghiên cứu cơ bản, tôi thấy rất nhiều tài liệu về cách phiên bản lược đồ cơ sở dữ liệu của bạn (thực tế tôi đã được kiểm soát), nhưng ít nhất bất kỳ chiến lược nào về cách theo dõi các thay đổi nội dung cơ sở dữ liệu của bạn đều bị mất trong các tìm kiếm của tôi.
Tôi có thể nghĩ ra một vài cách để thực hiện theo dõi thay đổi của riêng mình, nhưng tất cả đều có vẻ khá thô thiển:
- Lưu toàn bộ hàng trên mỗi thay đổi, liên kết hàng trở lại id nguồn bằng khóa Chính (hiện tại tôi đang nghiêng về phía trước, đây là cách đơn giản nhất). Mặc dù vậy, rất nhiều thay đổi nhỏ có thể tạo ra rất nhiều sự phình to.
- lưu trước / sau / người dùng / dấu thời gian cho mỗi thay đổi, với tên cột để liên kết thay đổi trở lại cột có liên quan.
- lưu trước / sau / người dùng / dấu thời gian với một bảng cho mỗi cột (sẽ dẫn đến quá nhiều bảng).
- lưu diffs / user / timestamp cho mỗi thay đổi bằng một cột (điều này có nghĩa là bạn phải đi bộ toàn bộ lịch sử thay đổi can thiệp để quay lại một ngày nhất định).
Cách tiếp cận tốt nhất ở đây là gì? Có vẻ như tôi có thể phát minh lại cơ sở mã (tốt hơn) của người khác.
Điểm thưởng cho PostgreSQL.