@runprogr

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 22:03
10000 руб./за проект
03 мая 2024, в 21:57
1000 руб./за проект
03 мая 2024, в 21:47
500 руб./за проект