基于角色得后台权限管理系统设计(一、表设计)

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

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

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;

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值