Я думаю о системе разрешений для моего проекта и не могу принять решение о том, как организовать свою систему разрешений.В краткой абстрактной форме я бы описал свой вопрос следующим образом:
Должен ли я создавать общие сущности (строки) и применять разрешения или создавать отдельную копию сущности (строки) для каждого пользователя?
Моя ситуация: у меня есть 2 сущности
Company
{
[PK]
Id,
Name,
Contacts,
OwnerUser
},
Contact
{
[PK]
Phone,
ContactPerson
}
, которые имеют отношения многие ко многим.Пользователям разрешено изменять сущность Компании, которую они создали (свою).
Моя проблема: Контактная сущность (строка) может быть разделена между компаниями, которые принадлежат разным пользователям, и предположим, что оба пользователя хотят редактировать Contact.ContactPersonс другим значением (например, один пользователь утверждает, что телефон принадлежит Джону, а другой - номеру Тома), эту ситуацию можно разрешить, если я создам отдельную копию Контакта для каждой Компании (и, следовательно, пользователя), но мои бизнес-правилане допускает дублирования контактов с одним и тем же номером телефона, а также другими свойствами контактов, которые должны совместно использоваться (в соответствии с моими бизнес-правилами), кроме номера телефона.
Как разрешить эту ситуацию?