Для клиентов мы разрабатываем большое приложение, в котором все открытые для всех пользователей, если хотите, все пользователи могут видеть данные друг друга.Каковы наилучшие методы для разделения данных от пользователей
Теперь заказчик говорит, что они хотят, чтобы пользователи, принадлежащие к одной организации, могли просматривать данные друг друга.
Таким образом, мы пришли к этой модели данных:
Так что теперь вопрос: Как это лучше, чтобы отделить данные?
Это единственная альтернатива я вижу:
- SQL JOIN на всех соответствующих таблиц (Все таблицы, содержащие данные не должны не всегда вступать в организации) - Все запросы должны теперь добавить дополнительный присоединиться к организации , и если соединение не существует, нам нужно создать новый внешний ключ.
Но я чувствую дополнительное соединение (у нас есть около 20 таблиц, для которых требуется дополнительное соединение) довольно дорого.
Надеюсь, есть некоторые другие рекомендации или решения, которые мы можем рассмотреть.
PS: Это веб-приложение разработано с использованием Java/JSF/Seam (но я не знаю, если это уместно)
UPDATE
Я хочу уточнить кое-что. Моя консервация - это не безопасность, а производительность. Мы добавили внешний ключ в организацию ко всем соответствующим таблицам, которые имеют общие данные, и мы используем зарегистрированную в организации пользователя для фильтрации данных.
Все, что я хочу знать, это хорошее архитектурное решение (внутреннее соединение) или если мы должны сделать что-то еще (то есть: загрузить все общие данные и фильтровать в памяти вместо sql-соединения).
Но если это одна и та же компания, разделенная на отдельные организации под капотом, а пользователь играет роль в одной организации, а также роль в другой (например, они работают в двух офисах). Эта модель не сработает для этого, возможно ли это? Надеюсь, я не пропустил вопрос :-) – WestDiscGolf
Нет, это не возможно. Пользователь может быть только частью одной организации, и нет «компании». Организация - это просто имя. Это действительно более демографический. Так что на самом деле может быть страна (имеет смысл) –