导语
在上篇文章中,介绍了关于RBAC权限管理机制的演进过程,并且了解了RBAC权限控制模型的几种建设方案。那么下面我们就来详细通过数据库设计来说明一下RABC数据权限管理系统建设。
文章目录
简介
首先简单的介绍一下在我们设计的RBAC权限管理系统中有那些实体类。既然要完成权限管理系统,那么必不可少的就是用户信息表。在RBAC权限系统中提到的两个关键表,角色表、菜单权限表。由于要对人员用户进行管理,所以还有部门表和职位表。一共是五个实体表。在系统中需要管理用户与角色的关系、用户与岗位的关系、角色与部门的关系、角色与菜单权限的关系。所以又建立了四个关系表,如下图所示。
建立数据表
下面就来分别看一下这九张表示如何建立?
用户信息表(sys_user)
用户信息表,主要记录了用户登录账号、登录密码、用户名,所属部门等信息。
建表语句
CREATE TABLE sys_user(
user_id BIGINT NOT NULL COMMENT '用户ID' ,
dept_id BIGINT COMMENT '部门ID' ,
login_name VARCHAR(32) COMMENT '登录账号' ,
user_name VARCHAR(32) COMMENT '用户名' ,
user_type CHAR(1) COMMENT '用户类型' ,
email VARCHAR(32) COMMENT '用户邮箱' ,
phonenumber VARCHAR(32) COMMENT '手机号码' ,
sex CHAR(1) COMMENT '用户性别' ,
avatar VARCHAR(32) COMMENT '用户头像' ,
password VARCHAR(32) COMMENT '用户密码' ,
salt VARCHAR(32) COMMENT '加密盐' ,
state CHAR(1) COMMENT '账号状态' ,
del_flag CHAR(1) COMMENT '删除标识' ,
login_ip VARCHAR(32) COMMENT '最后登录IP' ,
login_date DATETIME COMMENT '最后登录时间' ,
pwd_update_date DATETIME COMMENT '密码更新时间' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_time DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_time DATETIME COMMENT '更新时间' ,
remark VARCHAR(32) COMMENT '备注' ,
PRIMARY KEY (user_id)
) COMMENT = '用户信息表 ';
角色信息表(sys_role)
建表语句
CREATE TABLE sys_role(
role_id BIGINT NOT NULL COMMENT '角色ID' ,
role_name VARCHAR(32) COMMENT '角色名称' ,
role_key VARCHAR(32) COMMENT '角色权限字符串' ,
role_sort INT COMMENT '显示顺序' ,
data_scope VARCHAR(32) COMMENT '数据范围' ,
state VARCHAR(32) COMMENT '状态' ,
del_flag CHAR(1) COMMENT '删除标识' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_time DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_time DATETIME COMMENT '更新时间' ,
remark VARCHAR(32) COMMENT '备注' ,
PRIMARY KEY (role_id)
) COMMENT = '角色信息表 ';
岗位信息表(sys_post)
建表语句
CREATE TABLE sys_post(
post_id BIGINT NOT NULL COMMENT '岗位ID' ,
post_code VARCHAR(32) COMMENT '岗位编码' ,
post_name VARCHAR(32) COMMENT '岗位名称' ,
post_sort INT COMMENT '岗位顺序' ,
state CHAR(1) COMMENT '岗位状态' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_time DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_time DATETIME COMMENT '更新时间' ,
remark VARCHAR(32) COMMENT '备注' ,
PRIMARY KEY (post_id)
) COMMENT = '岗位信息表 ';
部门信息表(sys_dept)
建表语句
CREATE TABLE sys_dept(
dept_id BIGINT NOT NULL COMMENT '部门ID' ,
parent_id BIGINT COMMENT '父部门ID' ,
ancestors VARCHAR(32) COMMENT '祖级列表' ,
dept_name VARCHAR(32) COMMENT '部门名称' ,
order_num INT COMMENT '显示顺序' ,
leader VARCHAR(32) COMMENT '部门负责人' ,
phone VARCHAR(32) COMMENT '联系电话' ,
email VARCHAR(32) COMMENT '邮箱' ,
state CHAR(1) COMMENT '部门状态' ,
del_flag CHAR(1) COMMENT '删除标识' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_time DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_time DATETIME COMMENT '更新时间' ,
remark VARCHAR(32) COMMENT '备注' ,
PRIMARY KEY (dept_id)
) COMMENT = '部门信息表 ';
菜单权限表(sys_menu)
建表语句
CREATE TABLE sys_menu(
menu_id BIGINT NOT NULL COMMENT '菜单ID' ,
menu_name VARCHAR(32) COMMENT '菜单名称' ,
parent_id BIGINT COMMENT '父菜单ID' ,
order_num INT COMMENT '显示顺序' ,
url VARCHAR(32) COMMENT '请求地址' ,
target VARCHAR(32) COMMENT '打开方式' ,
menu_type VARCHAR(32) COMMENT '菜单类型' ,
visible CHAR(1) COMMENT '菜单状态' ,
is_refresh CHAR(1) COMMENT '是否刷新' ,
perms VARCHAR(32) COMMENT '权限标识' ,
icon VARCHAR(32) COMMENT '菜单图标' ,
create_by VARCHAR(32) COMMENT '创建人' ,
create_time DATETIME COMMENT '创建时间' ,
update_by VARCHAR(32) COMMENT '更新人' ,
update_time DATETIME COMMENT '更新时间' ,
remark VARCHAR(32) COMMENT '备注' ,
PRIMARY KEY (menu_id)
) COMMENT = '菜单权限表 ';
用户和角色关联表(sys_user_role)
CREATE TABLE sys_user_role(
user_id BIGINT NOT NULL COMMENT '用户ID' ,
role_id BIGINT NOT NULL COMMENT '角色ID' ,
PRIMARY KEY (user_id,role_id)
) COMMENT = '用户和角色关联表 ';
用户和岗位关联表(sys_user_post)
CREATE TABLE sys_user_post(
user_id BIGINT NOT NULL COMMENT '用户ID' ,
post_id BIGINT NOT NULL COMMENT '岗位ID' ,
PRIMARY KEY (user_id,post_id)
) COMMENT = '用户和岗位关联表 ';
角色和部门关联表(sys_role_dept)
CREATE TABLE sys_role_dept(
role_id BIGINT NOT NULL COMMENT '角色ID' ,
dept_id BIGINT NOT NULL COMMENT '部门ID' ,
PRIMARY KEY (role_id,dept_id)
) COMMENT = '角色和部门关联表 ';
角色和菜单关联表(sys_role_menu)
CREATE TABLE sys_role_menu(
role_id BIGINT NOT NULL COMMENT '角色ID' ,
menu_id BIGINT NOT NULL COMMENT '菜单ID' ,
PRIMARY KEY (role_id,menu_id)
) COMMENT = '角色和菜单关联表 ';
总结
以上就是基础的建表语句,通过上面的建表语句系统开发使用的基础RBAC的权限控制表。