权限系统表结构设计

一:树形结构设计

1.树形结构三要素:
parentId:父节点id;
level:设计模式父节点的id+level。顶级节点的level默认值0;
seq:同一层级排序。
2.遍历:
主要思路:同一层级的节点保存在key为level的map结构中。这样就可以通过level拿到所有的子节点。
3.树形结构修改
1是root节点,1下有两个节点2,3。2下有一个节点4。4下有一个节点5.
那么修改规则如下:将4放到3下面。同时更新4的子节点的level。
思路:
(1)创建两个对象before,after来分别表示更新之前4的信息。
before:0.1.2 after 0.1.3
(2)通过before的id拿到ParentId为id的所有子节点。
(3)遍历自己点集合。
  将子节点的level的前缀删除了before的level剩下就是层次结构中不动的部分 childLevel。
 newLevel = after.getLevel()+childLevel;即最新的level。
 子节点5level 0.1.2.4。删除修改之前父节点level。剩下4;

 4结合修改之后的Level即0.1.3生成新的level:0.1.3.4即最新level.

二:部门表设计

1.表字段:
CREATE TABLE `sys_dept` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '部门id' ,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '部门名称' ,
`parent_id` int(11) NOT NULL DEFAULT 0 COMMENT '上级部门id' ,
`level` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '部门层级' ,
`seq` int(11) NOT NULL DEFAULT 0 COMMENT '部门在当前层级下的顺序,由小到大' ,
`remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' ,
`operator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次操作时间' ,
`operate_ip` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一次更新操作者的ip地址' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=13
ROW_FORMAT=COMPACT
;
 注意:(1)Sys开头以区别其他表,表示系统级别的表以区别业务表。
(2)not null在建立索引时存储空间小,null存储大。

(3)对于树形结构的对象表涉及注意三方面:parent_id父类id,level层级,seq即在同一层级下的排序。

三、用户表设计

1.表结构
CREATE TABLE `sys_user` (
`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id' ,
`username`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户名称' ,
`telephone`  varchar(13) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '手机号' ,
`mail`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '邮箱' ,
`password`  varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '加密后的密码' ,
`dept_id`  int(11) NOT NULL DEFAULT 0 COMMENT '用户所在部门的id' ,
`status`  int(11) NOT NULL DEFAULT 1 COMMENT '状态,1:正常,0:冻结状态,2:删除' ,
`remark`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' ,
`operator`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time`  datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间' ,
`operate_ip`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一次更新者的ip地址' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=6
ROW_FORMAT=COMPACT
;


 四、角色表设计

1.表结构
CREATE TABLE `sys_role` (
`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '角色id' ,
`name`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL ,
`type`  int(11) NOT NULL DEFAULT 1 COMMENT '角色的类型,1:管理员角色,2:其他' ,
`status`  int(11) NOT NULL DEFAULT 1 COMMENT '状态,1:可用,0:冻结' ,
`remark`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' ,
`operator`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time`  datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新的时间' ,
`operate_ip`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一次更新者的ip地址' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=6
ROW_FORMAT=COMPACT
;

 五、权限表设计

CREATE TABLE `sys_acl` (
`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id' ,
`code`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限码' ,
`name`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限名称' ,
`acl_module_id`  int(11) NOT NULL DEFAULT 0 COMMENT '权限所在的权限模块id' ,
`url`  varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '请求的url, 可以填正则表达式' ,
`type`  int(11) NOT NULL DEFAULT 3 COMMENT '类型,1:菜单,2:按钮,3:其他' ,
`status`  int(11) NOT NULL DEFAULT 1 COMMENT '状态,1:正常,0:冻结' ,
`seq`  int(11) NOT NULL DEFAULT 0 COMMENT '权限在当前模块下的顺序,由小到大' ,
`remark`  varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' ,
`operator`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time`  datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新时间' ,
`operate_ip`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一个更新者的ip地址' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=11
ROW_FORMAT=COMPACT

;

六、权限模块表设计

CREATE TABLE `sys_acl_module` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限模块id' ,
`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限模块名称' ,
`parent_id` int(11) NOT NULL DEFAULT 0 COMMENT '上级权限模块id' ,
`level` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '权限模块层级' ,
`seq` int(11) NOT NULL DEFAULT 0 COMMENT '权限模块在当前层级下的顺序,由小到大' ,
`status` int(11) NOT NULL DEFAULT 1 COMMENT '状态,1:正常,0:冻结' ,
`remark` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '备注' ,
`operator` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次操作时间' ,
`operate_ip` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一次更新操作者的ip地址' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=12
ROW_FORMAT=COMPACT
;

(1)同样树形结构需要保存parent_id父类id,level层级,seq即在同一层级下的排序。

七、系统日志表设计

CREATE TABLE `sys_log` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`type`  int(11) NOT NULL DEFAULT 0 COMMENT '权限更新的类型,1:部门,2:用户,3:权限模块,4:权限,5:角色,6:角色用户关系,7:角色权限关系' ,
`target_id`  int(11) NOT NULL COMMENT '基于type后指定的对象id,比如用户、权限、角色等表的主键' ,
`old_value`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '旧值' ,
`new_value`  text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '新值' ,
`operator`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '操作者' ,
`operate_time`  datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新的时间' ,
`operate_ip`  varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '最后一次更新者的ip地址' ,
`status`  int(11) NOT NULL DEFAULT 0 COMMENT '当前是否复原过,0:没有,1:复原过' ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8mb4 COLLATE=utf8mb4_general_ci
AUTO_INCREMENT=26
ROW_FORMAT=COMPACT
;



   


 
  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值