powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построить модель данных для системы прав доступа
11 сообщений из 11, страница 1 из 1
Построить модель данных для системы прав доступа
    #38140442
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Есть 3 сущности:
1. Роль.
2. Объект доступа.
3. Подгруппы доступа.

Каждой роли можно назначить маску прав (int-число) на объект доступа.
Каждой роли можно назначить маску прав на подгруппу доступа.
При этом нужно отразить, что объекты и подгруппы связаны отношением один-ко-многим (в одном объекте может быть несколько подгрупп).

Например:
Роль "Менеджер по продажам" имеет маску "RW" на объект "Товары".
Роль "Менеджер по продажам" имеет маску "RWU" на подобъект "Телевизоры" и маску "R" на подобъект "Кониционеры".
При этом объект "Товары" является родительским по-отношению к подобъектам "Телевизоры" и "Кондиционеры".

Как отразить в модели данных отношения объектов с подобъектами и, одновременно, назначение масок прав для роли на эти объекты и подгруппы?

Вот что у меня получилось:
[img=]

Есть ли способ оптимизировать эту схему, или все и так идеально?
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140445
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
* "подобъекты" = "подгруппы"
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140463
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad,

а еще есть группы юзеров - по интересам, по производственным функция, по уровню могущества...
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140472
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spsvnvlad,

а еще есть группы юзеров - по интересам, по производственным функция, по уровню могущества...
Это другое. Я присваиваю юзерам набор ролей, большего не требуется в данном случае.
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140487
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь вопрос в том, что Идентификатор объекта - это короткая строка, типа "Price", "Valutes" и т.д.
Если убрать description и совсем избавиться от таблицы object, а маску присваивать сразу в таблице role_object.
Аналогично избавиться от таблицы group, маску присваивать в таблице role_group. Тогда теряется взаимоотношение объектов и подгрупп, а нужно ли оно вообще...
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140517
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И получается вот такое малопонятное, но компактное безобразие )
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140532
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...и отношение объектов с подгруппами вроде не теряется.
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38140561
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы наверно сделал одну древовидную таблицу "обьекты прав", куда сложил бы все "товары" и "телевизоры", и 1 таблицу "права на обьекты прав" с ссылкой на "обьекты прав" и и маской. Тогда запрос "есть ли у юзера права записи на обьект телевизоры" получается довольно просто
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38141003
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с Кот Матроскин, запрос "а какие у меня права" будет довольно популярным, так что можно денормализовать.
В двух словах - с одной стороны имеем - объекты, подобъекты, группы объектов и т.п.
С другой пользователи, роли, роли для пользователей, права роли для объектов или групп объектов - насколько хватит фантазии.
И большую таблицу user_id, object_id, access_mask материализуя пересечение верхних двух групп. Если в эту таблицу руками не лазить и обновлять по триггерам, то запрос на права будет очень быстрым, хотя добавить пользователя, объект, назначить права будет медленно.
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38141130
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257,
планируется при входе пользователя в систему читать матрицу прав доступа, соответствующую данному пользователю и его роли, в массив в памяти, и в процессе работы права будут определяться мнговенно, так что время чтения из базы не так критично.
...
Рейтинг: 0 / 0
Построить модель данных для системы прав доступа
    #38142183
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То бишь, вы проводите фильтрацию невидимых(недоступных пользователю) данных на клиенте.
Тогда "в лоб"

Объекты
Группы объектов - как именно они формируются, что наследник от чего, не суть дела важно
Объекты в группах

Пользователи
Роли
РолиПользователей

ПраваРолейНаГруппы

Если пользователю (одному) нужны права на объект (один) то для него создается роль с одним членом (пользователем) и группа объектов (с одним объектом)
Как то так.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Построить модель данных для системы прав доступа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]