Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Giữ lịch sử thay đổi trang. Một chút giống như SO làm cho các bản sửa đổi

Xin chào, hiện tôi đang tìm giải pháp cho vấn đề tương tự, tôi đang giải quyết nó bằng cách chia các bảng của mình thành hai bảng, một bảng điều khiển và một bảng dữ liệu. Bảng điều khiển sẽ chứa khóa chính và tham chiếu vào bảng dữ liệu, bảng dữ liệu sẽ chứa khóa sửa đổi tăng tự động và khóa chính của bảng điều khiển là khóa ngoại.

lấy bảng mục nhập của bạn làm ví dụ

Entries Table
+----+-------+------+--------+--------+
| id | title | text | index1 | index2 |
+----+-------+------+--------+--------+

trở thành

entries             entries_data
+----+----------+   +----------+----+--------+------+--------+--------+
| id | revision |   | revision | id |  title | text | index1 | index2 |
+----+----------+   +----------+----+--------+------+--------+--------+

để truy vấn

select * from entries join entries_data on entries.revision = entries_data.revision;

thay vì cập nhật bảng entry_data, bạn sử dụng câu lệnh chèn và sau đó cập nhật bản sửa đổi của bảng mục bằng bản sửa đổi mới của bảng mục.

Ưu điểm của hệ thống này là bạn có thể chuyển sang các bản sửa đổi khác nhau chỉ đơn giản bằng cách thay đổi thuộc tính sửa đổi trong bảng mục nhập. Điểm bất lợi là bạn cần phải cập nhật các truy vấn của mình. Tôi hiện đang tích hợp nó vào một lớp ORM để các nhà phát triển không phải lo lắng về việc viết SQL. Một ý tưởng khác mà tôi đang thử thách là có một bảng sửa đổi tập trung mà tất cả các bảng dữ liệu đều sử dụng. Điều này sẽ cho phép bạn mô tả trạng thái của cơ sở dữ liệu với một số sửa đổi duy nhất, tương tự như cách hoạt động của số sửa đổi subversion.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy MySQL INSERT Query nhiều lần (chèn giá trị vào nhiều bảng)

  2. sao chép dữ liệu từ cơ sở dữ liệu mysql sang cơ sở dữ liệu mysql khác bằng java

  3. Lưu trữ Apache, MySQL và PHP với Docker

  4. Cách bật nhật ký truy vấn chậm MySQL trong MySQL

  5. Tạo nhiều trang từ một truy vấn mysql