权限管理数据表的设计
需要五张表,分别为(此处以MySQL为例)
| 用户表 | t_user |
| 角色表 | t_role |
| 权限表 | t_permission |
| 用户角色表 | t_user_rolet |
| 角色权限表 | t_role_permission |
用户拥有什么角色,这个角色拥有什么权限
用户表(t_user)
CREATE TABLE `t_user` (`uid` int(11) NOT NULL AUTO_INCREMENT,`uname` varchar(10) NOT NULL,`uage` tinyint(4) DEFAULT NULL,`uphone` int(11) DEFAULT NULL,`uaddress` varchar(20) DEFAULT NULL,`upwd` varchar(100) DEFAULT NULL,PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8;
两个用户,user5为超级管理员拥有p1,p2权限,user6为普通账号,仅拥有p2权限

角色表(t_role)
CREATE TABLE `t_role` (`id` int(11) NOT NULL COMMENT '角色id',`role_name` varchar(255) NOT NULL COMMENT '角色名',`status` varchar(255) DEFAULT NULL COMMENT '角色状态',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

权限表(t_permission)
CREATE TABLE `t_permission` (`id` int(11) NOT NULL COMMENT '权限id',`permission` varchar(255) NOT NULL COMMENT '权限',`description` varchar(255) DEFAULT NULL COMMENT '权限描述',`url` varchar(255) DEFAULT NULL COMMENT 'url',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

用户角色表(t_user_rolet)
CREATE TABLE `t_user_role` (`user_id` int(11) NOT NULL COMMENT '用户id',`role_id` int(11) NOT NULL COMMENT '角色id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

角色权限表(t_role_permission)
CREATE TABLE `t_role_permission` (`role_id` int(11) NOT NULL COMMENT '角色id',`permission_id` int(11) NOT NULL COMMENT '权限id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

查询这个用户拥有的权限(查询用户id为5的用户的权限)
SELECTu.uid 用户id ,p.permission 权限,p.description 权限描述
FROMt_user u,t_permission p,t_user_role ur,t_role_permission rp
WHEREu.uid = ur.user_id ANDur.role_id = rp.role_id ANDrp.permission_id = p.id ANDu.uid = 5
u.uid = ur.user_id AND 用户表的uid 要等于 用户角色表的user_id
ur.role_id = rp.role_id AND 用户角色表的role_id 要等于 角色权限表中的role_id
rp.permission_id = p.id AND 角色权限表中的permission_id 要等于 权限表的 id
因为是从四张表中查询数据,所以表之间要有个关联条件
用户表和用户角色表关联, 用户角色表和角色权限表关联,角色权限表和权限表关联
查询出uid为5的权限,有p1,p2权限

查询出user6的权限,仅有一个p2权限

















