zoukankan      html  css  js  c++  java
  • 五表联合工作实现菜单权限管理

    E-R(Entry-Relationship 实体关系图)

    /*用户表*/

    create table users(
    id varchar(32) primary key,
    name varchar(30),
    pwd varchar(32)
    );
    /*创建角色表*/
    create table roles(
    id varchar(32) primary key,
    name varchar(30),
    des varchar(100)
    );

    /*通过一个中间表映射多对多的关系,多对多就是多个一对多,联合主键的特点是:两个列不能同时重复*/
    create table roleuser(
    uid varchar(32),
    rid varchar(32),
    constraint ru_pk primary key(uid,rid),
    constraint ru_fk1 foreign key(uid) references users(id),
    constraint ru_fk2 foreign key(rid) references roles(id)
    );

    /*创建菜单表*/
    create table menus(
    id varchar(32) primary key,
    name varchar(50),
    url varchar(100)
    );

    /*关联角色到菜单*/
    create table rolemenu(
    mid varchar(32),
    rid varchar(32),
    constraint rm_pk primary key(mid,rid),
    constraint rm_fk1 foreign key(mid) references menus(id),
    constraint rm_fk2 foreign key(rid) references roles(id)
    );

    /*添加测试数据*/

    insert into users values('U001','Jack','1234');
    insert into users values('U002','张三','4321');
    insert into users values('U003','Tom','1111');

    insert into roles values('R001','管理员','');
    insert into roles values('R002','教师','');

    insert into roleuser values('U001','R001');
    insert into roleuser values('U002','R002');

    insert into menus values('M001','系统管理','/sys.jsp');
    insert into menus values('M002','用户管理','/user.jsp');
    insert into menus values('M003','角色管理','/role.jsp');

    insert into rolemenu values('M001','R001');
    insert into rolemenu values('M002','R001');
    insert into rolemenu values('M003','R001');
    insert into rolemenu values('M003','R002');

    /*查询某个拥有某个角色*/
    select u.name,r.name
    from users u inner join roleuser ru on u.id=ru.uid
    inner join roles r on ru.rid=r.id;

    /*某角色拥有某菜单*/
    select r.name,m.name
    from roles r inner join rolemenu rm on r.id=rm.rid
    inner join menus m on rm.mid=m.id;


    /*查询某人拥有某个菜单*/
    select m.*
    from users u inner join roleuser ru on u.id=ru.uid
    inner join roles r on ru.rid=r.id
    inner join rolemenu rm on r.id=rm.rid
    inner join menus m on rm.mid=m.id;

  • 相关阅读:
    【PS技巧】常用概念和功能操作
    【存储】RAID磁盘阵列选择
    【Python 01】Python一种面向对象、解释型计算机程序设计语言
    【PS技巧】如何校正倾斜的图片
    【阿里巴巴大数据实践笔记】第14章:存储和成本管理
    【阿里巴巴大数据实践笔记】第13章:计算管理
    【阿里巴巴大数据实践笔记】第9章:阿里巴巴数据整合及管理体系
    今晚直播丨抢鲜体验-openGauss入门
    详述一则数据库死锁故障的分析过程
    前端学习笔记(一)HTML入门
  • 原文地址:https://www.cnblogs.com/bingoogol/p/auth01.html
Copyright © 2011-2022 走看看