用户角色权限数据库设计

Posted 绿色的草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户角色权限数据库设计相关的知识,希望对你有一定的参考价值。

权限管理

权限管理,主要是人员和权限之间的关系,但是如果让人员直接和权限打交道,那么权限的赋值、权限的撤销以及权限的变动会非常的麻烦,这样引入了,角色,给角色赋权限,然后给用户分配角色。

这个设计主要涉及6张表,

用户表(用于存储用户的所有信息)

权限表(用于存储所有的权限)

角色表(用于存储所有的角色)

用户和角色的关联表(用户和角色的关联)

角色和权限的关联表(角色和权限的关联)

菜单表(里面关联了权限,主要是现实用的)

用户表

CREATE TABLE [dbo].[Users](
    [UserID] [int] IDENTITY(1,1) NOT NULL,
    [UserName] [nvarchar](50) primary key,--帐号
    [Password] [nvarchar](50) ,
    [UserDspName] [nvarchar](50) ,
    [Sex] [char](1),
    [Birthday] [datetime],
    [Phone] [nvarchar](20)  ,
    [Email] [nvarchar](100),
    [EmployeeID] [nvarchar](20) ,
    [Activity] [bit],--是否可用
    [UserType] [char](2) ,
    [Style] [nvarchar](50)
)

权限表:

CREATE TABLE [dbo].[Permission](
    [PermissionID] int identity,
    [Description] [nvarchar](50) --权限名称
)

角色表:

 

CREATE TABLE [dbo].[Roles](
    [RoleID] [int] IDENTITY,
    [Description] [nvarchar](200)--角色名称
)

 

 

用户和角色的关联表:

CREATE TABLE [dbo].[UserRoles](
    [UserID] [int] NOT NULL,--用户ID
    [RoleID] [int] not null ,--权限ID
 CONSTRAINT [PK_UserRoles] PRIMARY KEY CLUSTERED 
(
    [UserID] ASC,
    [RoleID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

角色和权限的关联表:

 

CREATE TABLE [dbo].[RolePermissions](
    [RoleID] int  NOT NULL,--角色ID
    [PermissionID]int NOT NULL,--权限ID
 CONSTRAINT [PK_RolePermissions] PRIMARY KEY CLUSTERED 
(
    [RoleID] ASC,
    [PermissionID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

 

菜单表:

CREATE TABLE [dbo].[menu](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TextCH] [nvarchar](100)  NULL,--菜单的中文显示
    [TextEN] [nvarchar](200)  NULL,--菜单的英文名称
    [ParentID] [int] NULL,--父节点
    [orderID] [int] NULL,--同一个父节点下面的排序
    [Url] [nvarchar](200) ,--菜单对于的权限
    [PermissionID] [int] NULL,--权限ID
    [ImageUrl] [nvarchar](50) NULL--菜单图片链接
) ON [PRIMARY]

以上是关于用户角色权限数据库设计的主要内容,如果未能解决你的问题,请参考以下文章

用户角色权限数据库设计

用户角色权限数据库设计

深度解析RBAC用户-角色-权限设计方案,以及核心逻辑代码的讲解

用户权限管理数据库设计(RBAC)

权限设计的总结

RBAC用户权限管理数据库设计