博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于角色得后台权限管理系统设计(一、表设计)
阅读量:2216 次
发布时间:2019-05-07

本文共 3007 字,大约阅读时间需要 10 分钟。

本系统基于角色,细粒度控制到按钮权限,用户属于某个部门,用户扮演什么角色,可以一对多,权限分配给相关角色就赋予用户相关角色权限。以下是表设计。下一期会写具体代码实现。

部门表:根据公司组织架构,部门是分层次得。顶层部门、一级主管部门,二级部门。(举个栗子:业务部:业务一部,业务二部)

CREATE TABLE `t_department`(  `department_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '部门ID',  `department_name` VARCHAR(56) DEFAULT NULL COMMENT '部门名称',  `parent_id` INT(11) DEFAULT NULL COMMENT '上级部门id',  `level` INT(2) DEFAULT 1 COMMENT '部门等级',  PRIMARY KEY (`department_id`))ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

用户表:用户属于某个部门

CREATE TABLE `t_user` (  `user_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',  `login_time` DATETIME DEFAULT NULL COMMENT '登录时间',  `name` VARCHAR(56) DEFAULT NULL COMMENT '用户名称',  `login_name` VARCHAR(56) DEFAULT NULL COMMENT '登录名称',  `password` VARCHAR(255) DEFAULT NULL COMMENT '登录密码',  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',  `user_status` INT(2) DEFAULT 1 COMMENT '用户状态(0禁用,1启用)',  `department_id` INT(11) DEFAULT NULL COMMENT '部门id',  `create_time` DATETIME DEFAULT NULL COMMENT '创建时间',  `create_user` DATETIME DEFAULT NULL COMMENT '创建人',  `update_time` DATETIME DEFAULT NULL COMMENT '更新时间',  `update_user` DATETIME DEFAULT NULL COMMENT '更新人员',    PRIMARY KEY (`user_id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

角色表:

CREATE TABLE `t_role` (  `role_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '角色id',  `role_name` VARCHAR(56) DEFAULT NULL COMMENT '角色名称',  `remark` VARCHAR(255) DEFAULT NULL COMMENT '备注',  PRIMARY KEY (`role_id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

用户与角色关系表:

CREATE TABLE `t_user_role` (  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',  `role_id` INT(11) NOT NULL COMMENT '角色id',  `user_id` INT(11) NOT NULL COMMENT '用户id',  PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

菜单表:

CREATE TABLE `t_menu` (  `menu_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '菜单id',  `menu_name` VARCHAR(56) DEFAULT NULL COMMENT '菜单名称',  `menu_url` VARCHAR(255) DEFAULT NULL COMMENT '菜单url',  `parent_id` INT(11) DEFAULT NULL COMMENT '父菜单id',  `level` INT(2) DEFAULT 1 COMMENT '菜单级别(一级菜单,二级菜单,三级菜单)',  `menu_status` INT(1) DEFAULT 0 COMMENT '菜单状态(1启用,0禁用)',  PRIMARY KEY (`menu_id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

按钮表:按钮可能属于某个菜单,也可能不属于某个菜单

CREATE TABLE `t_operation` (  `btn_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '按钮id',  `btn_code` VARCHAR(56) DEFAULT NULL COMMENT '按钮编号',  `btn_name` VARCHAR(56) DEFAULT NULL COMMENT '按钮名称',  `btn_title` VARCHAR(56) DEFAULT NULL COMMENT '按钮标题',  `menu_id` INT(11) DEFAULT NULL COMMENT '菜单id',  PRIMARY KEY (`btn_id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

授权表:将菜单和按钮分配给相关角色,某个角色可能有某个菜单得权限不一定有某个菜单下按钮得角色,如果某用户没有菜单权限,那么该用户就没有该菜单下得按钮得权限。

CREATE TABLE `t_author` (  `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',  `role_id` INT(11) DEFAULT NULL COMMENT '角色id',  `resource_id` INT(11) DEFAULT NULL COMMENT '资源id(根据资源类型判断是按钮还是菜单)',  `resource_type` INT(2) DEFAULT 0 COMMENT '资源类型(0菜单,1按钮)',  PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 

 

 

 

 

 

转载地址:http://axkfb.baihongyu.com/

你可能感兴趣的文章
梯度消失问题与如何选择激活函数
查看>>
为什么需要 Mini-batch 梯度下降,及 TensorFlow 应用举例
查看>>
为什么在优化算法中使用指数加权平均
查看>>
什么是 Q-learning
查看>>
用一个小游戏入门深度强化学习
查看>>
5 分钟入门 Google 最强NLP模型:BERT
查看>>
初探Java设计模式4:一文带你掌握JDK中的设计模式
查看>>
初探Java设计模式5:一文了解Spring涉及到的9种设计模式
查看>>
Java集合详解1:一文读懂ArrayList,Vector与Stack使用方法和实现原理
查看>>
Java集合详解2:一文读懂Queue和LinkedList
查看>>
Java集合详解3:一文读懂Iterator,fail-fast机制与比较器
查看>>
Java集合详解4:一文读懂HashMap和HashTable的区别以及常见面试题
查看>>
Java集合详解5:深入理解LinkedHashMap和LRU缓存
查看>>
Java集合详解6:这次,从头到尾带你解读Java中的红黑树
查看>>
Java集合详解8:Java集合类细节精讲,细节决定成败
查看>>
Java并发指南1:并发基础与Java多线程
查看>>
Java并发指南2:深入理解Java内存模型JMM
查看>>
Java并发指南5:JMM中的final关键字解析
查看>>
Java并发指南6:Java内存模型JMM总结
查看>>
Java并发指南7:JUC的核心类AQS详解
查看>>