@runprogr

Как правильно организовать работу с сущностями в разных состояниях?

Такой кейс.
Есть таблица с данными, заполняемыми владельцем проекта (назовем "мастер данные")

В проект добавляются сторонние организации, каждая из которых может менять эти данные под свои нужды (удалять, редактировать, создавать).

Условия:
Если нет изменений, используются мастер данные в исходном виде
Если какая то новая сущность создана, то для этой организации она показывается. Для остальных нет.
Если какая то сущность отредактирована, то для этой организации она показывается в отредактированном виде. Для остальных в мастер виде.
Если какая то сущность удалена, то для этой организации она не показывается. Для остальных показывается.

Как организовать такое с точки зрения архитектуры ?
Чтобы удобно было хранить и запросами получать уникальные данные для каждой организации без каких то ужасных костылей ?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Для начала - забыть про "мастер данные" и считать то, что внес мастер, просто первой версией данных. Добавленные или исправленные - очередная версия. Хранятся все версии, у последней редакции - пометка "активная", по ней и выборка. При удалении ставится отметка об удалении, с активной удаленной активность переходит на предыдущую, при попытке удаления единственной неудаленной версии - отлуп.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы