Я пытаюсь создать доступ на основе ролей, в котором у пользователя может быть одна или несколько групп пользователей, и который сопоставляется с ролями.
I have the following tables:
UserRole
CREATE TABLE [User_Role](
[id] [int] NOT NULL,
[name] [varchar](255) NOT NULL
) ON [PRIMARY]
Группа пользователей:
CREATE TABLE User_Group(
[id] [int] NOT NULL,
[name] [varchar](255) NOT NULL,
[roleId] [int] NOT NULL
) ON [PRIMARY]
Сценарий 1 ожидаемых результатов:
У пользователя есть userG1, userG2. Запрос возвращает role1, role2
"select * from Role where Role.id=UserGroup.roleId" should be ok.
Сценарий 2:
У пользователя есть userG1, userG3. Запрос должен вернуть, role1, role3 и rol4, поскольку у пользователя есть userG1 И userG3.
Я думаю о следующем решении:
Таблица сопоставления Role_UserGroup_Map -
CREATE TABLE Role_UserGroup_Map(
[roleId] [int] NOT NULL,
[userGroups] [varchar](255) NOT NULL
) ON [PRIMARY]
Отображение будет содержать все комбинации группы пользователей и роли. И мой SQL проверит на «как» с AND и вернет Roleid
Я не уверен, как представлять данные и запрашивать данные, чтобы получить «объединенную группу в роли». Если кто-то может помочь с идеей размещения таблиц / данных и запросом, это будет очень полезно!
Цель состоит в том, чтобы, если я добавлю какие-либо новые группы пользователей, они будут сопоставлены с новой ролью, и она может быть сопоставлена с существующими ролями в сочетании с доступом других групп пользователей, если они есть у пользователя.