SQL查询以从多关系,单关系和单关系到单关系中选择

时间:2019-05-22 13:15:00

标签: sql sql-server database

我正在尝试创建一个基于角色的访问权限,其中一个用户可以拥有一个或多个UserGroup,并映射到Roles。

I have the following tables:

UserRole

     CREATE TABLE [User_Role](
            [id] [int] NOT NULL,
            [name] [varchar](255) NOT NULL
        ) ON [PRIMARY]

UserGroup:

    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。由于用户具有userG1和userG3,因此查询应返回role1,role3和rol4。

  

我正在考虑以下解决方案:   映射表Role_UserGroup_Map-

 CREATE TABLE Role_UserGroup_Map(
            [roleId] [int] NOT NULL,
            [userGroups] [varchar](255) NOT NULL
        ) ON [PRIMARY]

映射将包含userGroup到Role的所有组合。我的SQL将使用AND检查“赞”,以返回Roleid

我不确定如何表示数据并查询数据以获取“合并到角色中的组”。如果有人可以提供有关表/数据放置以及查询的想法,那将是非常有帮助的!

目标是,如果我添加任何新的UserGroup,它将被映射到新的角色,并且如果用户有其他UserGroup访问,则可以将其映射到现有的Roles。

0 个答案:

没有答案
相关问题