Tôi làm điều gì đó giống như cách tiếp cận thứ hai của bạn:có bảng với bộ làm việc thực tế và lịch sử có các thay đổi (dấu thời gian, record_id, property_id, property_value). Điều này bao gồm việc tạo ra các bản ghi. Bảng thứ ba mô tả các thuộc tính (id, property_name, property_type), giúp chuyển đổi dữ liệu lên cao hơn trong ứng dụng. Vì vậy, bạn cũng có thể theo dõi rất dễ dàng các thay đổi của các thuộc tính đơn lẻ.
Thay vì dấu thời gian, bạn cũng có thể có một dấu thời gian tương tự, bạn có thể tăng cho mỗi thay đổi trên mỗi record_id, vì vậy bạn có một phiên bản thực tế .