У меня есть требование построить "управление версиями" в приложении, и мне было интересно, как лучше всего подойти к нему.
У меня есть общий шаблон:
Модель A имеет множество B
При обновлении атрибуты A должны быть версиями и связанные с ним объекты (B) также должны быть версиями. Таким образом, приложение отобразит текущую версию A, но также должно быть возможно просмотреть предыдущие версии A и связанных с ним объектов.
Я хотел бы использовать хранилище документов, но это только часть приложения и наличие хранилища doc и базы данных отношений станут более сложными.
Я рассмотрел использование звездной схемы, но до того, как я прогрессировал, мне было интересно, существует ли шаблон проектирования, охватывающий эту проблему?
Этот вопрос склонен к решению проблемы хранения версий связанного объекта в реляционной базе данных. Там, где есть неотъемлемая потребность в возможности эффективно запрашивать данные (например, сериализация объекта будет недостаточной).
Обновление: что я думал/реализовал, но хочу узнать, является ли "лучшим способом"
,---------. 1 * ,--------.
| Model A |----------| Model B|
`---------' `--------'
|PK | | a_id |
|b_version| |version |
|version | `--------'
`---------'
Где бы я дублировал модель A и все связанные B и увеличивал атрибут версии. Затем сделайте выбор, чтобы присоединиться к B через b_version и b.version. Просто интересно, можно ли это сделать лучше.