表设计-权限管理

  • 权限管理需要设计三张主表和两张关系表
  • 主表包括:用户表, 角色表,权限表
  • 关系表: 用户-角色关系表, 角色权限关系表

 剖析视图

 1.创建表

创建三张主表: 用户表, 角色表,权限表

create table user(id int primary key auto_increment, name varchar(20));

create table role(id int primary key auto_increment, name varchar(20));

create table module(id int primary key auto_increment, name varchar(20));

创建两张关系表: 用户角色关系表 角色权限关系表

create table u_r(uid int, rid int);

create table r_m(rid int,mid int);

2.准备数据

insert into user values(null,'刘德华'),(null,'杨幂'),(null,'张学友');

insert into role values(null,'男游客'),(null,'男管理员'),(null,'女游客');

insert into module values(null,'男浏览'),(null,'男发帖'),(null,'男评论'),(null,'男删帖'),(null,'女浏览');

刘德华(男游客,女游客) 杨幂(女游客) 张学友(男管理员)

insert into u_r values(1,1),(1,3),(2,3),(3,2);

insert into r_m values(1,1),(2,1),(2,2),(2,3),(2,4),(3,5);

3.关联查询练习题

1.查询刘德华拥有哪些角色

select r.name

from user u join u_r ur on u.id=ur.uid

join role r on r.id=ur.rid where u.name='刘德华';

2.查询女游客对应的用户都有谁

select u.name

from user u join u_r ur on u.id=ur.uid

join role r on r.id=ur.rid where r.name='女游客';

3.查询男管理员对应哪些权限

select m.name

from role r join r_m rm on r.id=rm.rid

join module m on m.id=rm.mid where r.name='男管理员';

 4.查询刘德华拥有哪些权限

select m.name

from user u join u_r ur on u.id=ur.uid

join r_m rm on rm.rid=ur.rid

join module m on m.id=rm.mid

where u.name='刘德华';

5.查询有女浏览权限的用户都有谁

select u.name

from user u join u_r ur on u.id=ur.uid

join r_m rm on rm.rid=ur.rid

join module m on m.id=rm.mid

where m.name='女浏览';

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值