Shiro权限框架数据库表设计

表设计

   权限管理需要的基本表有5个 如下:

  • sys_users用户表
  • sys_roles角色表
  • sys_permissions权限表(或资源表)
  • sys_users_roles用户-角色关联表
  • sys_roles_permissions角色-权限关联表(或角色-资源关联表)

用户表:

角色表:

权限表:

用户角色表:

角色权限表:

最后上完整代码:

##用户表
CREATE TABLE sys_users(
   id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
   username VARCHAR(100) COMMENT '用户名',
   phone VARCHAR(20) COMMENT '手机号',
   PASSWORD VARCHAR(100) COMMENT '密码',
   salt VARCHAR(100) COMMENT '盐值',
   icon VARCHAR(400) COMMENT '头像',
   address VARCHAR(120) COMMENT '住址',
   locaed VARCHAR(8) DEFAULT '开启' COMMENT '状态'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户表';

##角色表
CREATE TABLE sys_roles(
 id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色编号',
 rolename VARCHAR(100) COMMENT '角色名称',
 description VARCHAR(100) COMMENT '角色描述',
 available VARCHAR(8) DEFAULT '开启' COMMENT '状态'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='角色表';


##权限表
CREATE TABLE sys_permissions(
 id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '编号',
 NAME VARCHAR(100) COMMENT '权限名称',
 url VARCHAR(100) COMMENT '权限路径',
 TYPE VARCHAR(100) COMMENT '权限类型',
 pid INT COMMENT '父节点',
 available VARCHAR(8) DEFAULT '开启' COMMENT '状态'
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='权限表'


##用户角色关系表
CREATE TABLE sys_user_role(
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  user_id BIGINT,
  role_id BIGINT
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='用户角色表'

##角色权限关系表
CREATE TABLE sys_role_permission(
 id INT(11) PRIMARY KEY AUTO_INCREMENT,
 role_id BIGINT,
 permission_id BIGINT
)ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT='角色权限表'

插入数据语句:

##用户表
INSERT INTO sys_users(username,phone,PASSWORD,salt,icon,address,locaed)
VALUES
('admin','15271700712','47401c60d14382166631feae98511a18','lq','my.jpg','湖北省武汉市','开启'),
('user','13085238807','47401c60d14382166631feae98511a18','lq','my.jpg','湖南省长沙市','开启'),
('guest','1784545751','fe00294a99ced9aa2477fcdb231cb316','lq','my.jpg','广东省深圳市','关闭')

##角色表
INSERT INTO sys_roles(rolename,description,available)
VALUES
('普通用户','拥有查询,添加权限','开启'),
('超级管理','拥有查询,添加,删除,修改权限','开启'),
('匿名游客','拥有观赏权限','开启')


##权限表
INSERT INTO sys_permissions(NAME,url,TYPE,pid,available)
VALUES
('系统设置','null','menu',0,'开启'),
('销售管理','null','menu',0,'开启'),
('用户管理','user/list','menu',1,'开启'),
('角色管理','role/list','menu',1,'开启'),
('角色添加','role/add','button','4','开启'),
('角色删除','role/delete','button','4','开启'),
('角色修改','role/update','button','4','开启'),
('角色查询','role/find','button','4','开启'),
('用户添加','user/add','button','3','开启'),
('用户删除','user/delete','button','3','开启'),
('用户修改','user/update','button','3','开启'),
('用户查询','user/find','button','3','开启')


##用户角色表关系表
INSERT INTO sys_user_role(user_id,role_id)VALUES(1,1),(1,2),(1,3),(2,1),(2,3),(3,3)


##角色权限表关系表
INSERT INTO sys_role_permission(role_id,permission_id)VALUES(1,1),(1,8),(1,12),(2,1),(2,2),(2,3),(2,4),(2,12),(3,0)

 

最后感言


          如果使用外键关联,在对表进行数据操作时就考虑另一张关联的表,相当于两张表就绑在一起了,操作这张表就必须考虑另一张关联表。我们开发时候不想立即就修改或更新关联表的数据,可能一会再去更新另一张关联表的数据,那么就产生了这种方式:通过单独建立一张关联来实现两张表的数据关联。so,在设计表时尽量减少表与表直接的外键约束,避免麻烦,表关联关系清晰

 

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值