SQL-запрос для выбора между множественным отношением к одному и одним к одному - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь создать доступ на основе ролей, в котором у пользователя может быть одна или несколько групп пользователей, и который сопоставляется с ролями.

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

Я не уверен, как представлять данные и запрашивать данные, чтобы получить «объединенную группу в роли». Если кто-то может помочь с идеей размещения таблиц / данных и запросом, это будет очень полезно!

Цель состоит в том, чтобы, если я добавлю какие-либо новые группы пользователей, они будут сопоставлены с новой ролью, и она может быть сопоставлена ​​с существующими ролями в сочетании с доступом других групп пользователей, если они есть у пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...