Tôi phải lưu trữ dữ liệu như bài viết vào cơ sở dữ liệu mysql và nếu một bài viết được sửa đổi, tôi phải lưu phiên bản cũ để có thể khôi phục lại. Tôi đã tìm thấy một số câu hỏi và bài đăng tương tự về chủ đề này, nhưng tôi không chắc chắn, giải pháp nào là tốt nhất để giải quyết vấn đề.Thực hành tốt nhất cho hệ thống phiên bản dữ liệu mysql
Dưới đây là bảng "điều" cơ bản cho sự hiểu biết tốt hơn:
bài viết (id, tên, văn bản)
Đối với tôi, có hai cách tiếp cận khác nhau cho việc này:
Tiếp cận 1
Lưu trữ dữ liệu và mọi phiên bản của một bài viết trong bảng "bài viết" và thêm cột "phiên bản" và "trạng thái". Trong phiên bản tôi lưu trữ số phiên bản tăng dần của bài viết. Bài viết hoạt động được "trạng thái" 1 và những người khác "trạng thái" 2.
Pro:
Chỉ có một bảng là cần thiết
Một phiên bản mới là một chèn của dữ liệu mới và chỉ cập nhật trạng thái "trạng thái" của cột cũ
Con's
- bảng rất lớn (có thể truy vấn chậm ???)
Tiếp cận 2
Thêm "phiên bản" để "điều" và lưu trữ chỉ có các dữ liệu tích cực vào bảng " bài viết". Các phiên bản cũ của dữ liệu được lưu trữ/di chuyển đến bảng mới "articles_versioned".
Pro:
- Chỉ có dữ liệu hợp lệ thực tế là trong bảng "bài viết"
Con của
- Dublication bảng
So. Tôi đã quên một aproach tốt? Cách xử lý dữ liệu liên quan trong các bảng khác (như hình ảnh, v.v.)?
Điều này thường được gọi là "thay đổi dữ liệu chụp" (CDC). Google cho nó: http://www.google.com/search?aq = f & gcx = w & sourceid = chrome & ie = UTF-8 & q = mysql + change + data + capture & safe = active – duffymo
Bạn thậm chí không cần cập nhật trạng thái trước đó, chỉ cần chọn id cao nhất cho bài viết đó – Anigel
Trạng thái là nếu tôi muốn quay lại phiên bản trước – bernhardh