Nếu điều này hoàn toàn dành cho mục đích 'lưu trữ' thì có lẽ một bảng riêng cho các bản sửa đổi sẽ tốt hơn.
Tuy nhiên, nếu bạn cần đối xử bình đẳng với các bản sửa đổi trước đó với các bản sửa đổi hiện tại (ví dụ:nếu bạn muốn cung cấp cho người dùng khả năng hoàn nguyên một sản phẩm về bản sửa đổi trước đó), thì tốt nhất bạn nên giữ một bảng sản phẩm duy nhất, thay vì sao chép dữ liệu giữa các bảng. Nếu bạn lo lắng về hiệu suất, đây là chỉ mục dành cho.
Bạn có thể tạo khóa chính ghép cho bảng sản phẩm, ví dụ:PRIMARY KEY (product_id, revision)
. Có thể là một proc được lưu trữ để tìm bản sửa đổi hiện tại — bằng cách chọn hàng có revision
cao nhất cho một product_id
cụ thể —Sẽ hữu ích.