LINUX.ORG.RU

Хранение пользователей и их ролей (прав доступа в БД)

 


0

1

Для одной программки нужно реализовать систему ролей пользователей. Есть Пользователь, Компания, Проект. Ну это для начала, потом будут ещё сущности. Вопрос, каким образом реализовать хранение в БД их ролей, чтобы потом на основе роли ПО могло распределять права доступа?

С первого взгляда, ничего сложного, казалось бы делаем таблицы:

USERS (id, name), COMPANY(id, name), COMPANIES_USERS(id, company_id, user_id), ROLE(id, title).

Но теперь, чтобы найти имена всех пользователей, имеющих роль «сотрудник» в компании «ООО Вектор» нужен запрос, включающий джойнами ВСЕ эти таблицы! А если будут ещё Проекты, Задания или ещё 10 сущностей, для каждой нужна будет таблица связей. Запрос, выдающий имена юзеров, которые имеют в компании права менеджеров и принадлежащих к определённому проекту меня пугает.

Или для SQL это нормально? Подпись: деверопер, привыкший к синтаксическому сахару ActiveRecord'a

★★★★★
[пользователь] <-[таблица связки многие-ко-многим]-> [роль]

Зачем привязывать пользователя к роли через компанию?
Разве у пользователя может быть только одна роль?

Ja-Ja-Hey-Ho ★★★★★
()

Ну и что страшного в трех джойнах, дверопер?

anonymous
()

users(id,name)
roles(id,title)
user_roles(id,user_id,role_id)

r0ck3r ★★★★★
()
Последнее исправление: r0ck3r (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.