Является ли ответственность за дизайн базы данных или авторизацию / разрешения - PullRequest
1 голос
/ 11 января 2011

Я думаю о системе разрешений для моего проекта и не могу принять решение о том, как организовать свою систему разрешений.В краткой абстрактной форме я бы описал свой вопрос следующим образом:
Должен ли я создавать общие сущности (строки) и применять разрешения или создавать отдельную копию сущности (строки) для каждого пользователя?

Моя ситуация: у меня есть 2 сущности

Company
{
   [PK]
   Id,
   Name, 
   Contacts, 
   OwnerUser
}, 
Contact
{
   [PK]
   Phone,
   ContactPerson
}

, которые имеют отношения многие ко многим.Пользователям разрешено изменять сущность Компании, которую они создали (свою).

Моя проблема: Контактная сущность (строка) может быть разделена между компаниями, которые принадлежат разным пользователям, и предположим, что оба пользователя хотят редактировать Contact.ContactPersonс другим значением (например, один пользователь утверждает, что телефон принадлежит Джону, а другой - номеру Тома), эту ситуацию можно разрешить, если я создам отдельную копию Контакта для каждой Компании (и, следовательно, пользователя), но мои бизнес-правилане допускает дублирования контактов с одним и тем же номером телефона, а также другими свойствами контактов, которые должны совместно использоваться (в соответствии с моими бизнес-правилами), кроме номера телефона.

Как разрешить эту ситуацию?

Ответы [ 2 ]

1 голос
/ 12 января 2011

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

и эту проблему можно решить, только напрямую спросив клиента, какую политику он хочет применить.

0 голосов
/ 11 января 2011

Похоже, ваша бизнес-логика там конфликтует. С одной стороны, вы говорите, что два пользователя могут не согласиться с тем, чей номер телефона является номером (что совершенно справедливо, если два человека используют один рабочий стол / телефон). С другой стороны, вы говорите, что ваша бизнес-логика не допускает дублирования телефонных номеров.

Почему ваша логика настаивает на уникальных телефонных номерах? Мне кажется, что вы создали ПК, который не гарантированно уникален и поэтому не подходит.

...