本文共 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/