Tôi có yêu cầu xây dựng 'phiên bản' vào một ứng dụng và đang tự hỏi cách tốt nhất để tiếp cận nó.Mẫu thiết kế phiên bản nào bạn sẽ giới thiệu
Tôi có mô hình chung này:
Model A có nhiều B
ở đâu trên bản cập nhật các thuộc tính của A cần phải được phiên bản và các đối tượng liên quan của nó (B) cũng cần phải được phiên bản. Vì vậy, ứng dụng sẽ hiển thị phiên bản hiện tại của A, nhưng cũng phải có khả năng xem các phiên bản trước đó của A và các đối tượng liên quan của nó.
Tôi muốn sử dụng cửa hàng tài liệu tuy nhiên đây chỉ là một phần của ứng dụng và có cửa hàng doc và cơ sở dữ liệu quan hệ sẽ giới thiệu độ phức tạp hơn.
Tôi đã xem xét sử dụng lược đồ hình sao, nhưng trước khi tiến triển, tôi đã tự hỏi liệu có một mẫu thiết kế nổi xung quanh giải quyết vấn đề này không?
Câu hỏi này được nghiêng về phía giải quyết vấn đề lưu trữ các phiên bản của đối tượng được liên kết trong cơ sở dữ liệu quan hệ. Trường hợp có một nhu cầu vốn có để có thể có hiệu quả truy vấn dữ liệu (tức là đối tượng serializing sẽ không đủ).
Cập nhật: Những gì tôi đã suy nghĩ/đã thực hiện nhưng muốn xem nếu là "một cách tốt hơn"
,---------. 1 * ,--------.
| Model A |----------| Model B|
`---------' `--------'
|PK | | a_id |
|b_version| |version |
|version | `--------'
`---------'
đâu tôi sẽ được sao chép mô hình A và tất cả các liên quan đến B và incrementing thuộc tính phiên bản. Sau đó thực hiện lựa chọn để tham gia B bằng b_version và b.version. Chỉ cần tự hỏi nếu điều này có thể được thực hiện tốt hơn.
Việc triển khai này sẽ không giải quyết được vấn đề duy trì mối quan hệ giữa các phiên bản và các đối tượng liên quan của chúng – MatthewFord
deimos1986: tất nhiên là có, cập nhật với một ví dụ dbschema. bạn có thể thấy cửa sổ bật lên này trong triển khai wiki. Tôi đề nghị bạn xem xét MediaWiki hoặc các hệ thống wiki mã nguồn mở khác và xem xét các mô hình cơ sở dữ liệu của chúng để lấy cảm hứng – Spoike
Ồ bạn có nghĩa là bạn có một cấu hình toàn bộ các đối tượng cần được phiên bản ... – Spoike