权限管理数据表设计

权限管理数据表的设计

需要五张表,分别为(此处以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的用户的权限)

SELECT
	u.uid 用户id ,
	p.permission 权限,
	p.description 权限描述
FROM
	t_user u,
	t_permission p,
	t_user_role ur,
	t_role_permission rp
WHERE
	u.uid = ur.user_id AND
	ur.role_id = rp.role_id AND
	rp.permission_id = p.id AND
	u.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权限

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
权限管理角色表设计需要考虑以下几个方面: 1. 角色名称:角色名称应该简明扼要地描述该角色的职责和权限,例如“管理员”、“普通用户”等。 2. 角色描述:对该角色的职责和权限进行详细描述,包括该角色可以执行的操作、可以访问的资源、可以修改的数据等。 3. 角色权限:列出该角色具有的权限,例如可以访问哪些功能、可以修改哪些数据、可以创建、更新或删除哪些资源等。 4. 角色状态:标识该角色是否启用或禁用。 5. 创建时间和修改时间:记录该角色的创建时间和最近一次修改时间。 下面是一个简单的权限管理角色表设计: 角色表(role) | 列名 | 数据类型 | 说明 | | ------------- | ------------ | ------------------------------------------------------------ | | id | int | 角色ID,主键 | | name | varchar(50) | 角色名称,唯一 | | description | varchar(255) | 角色描述 | | permissions | varchar(255) | 角色权限,以逗号分隔,例如:read_user,create_user,update_user,delete_user | | status | tinyint | 角色状态,0表示禁用,1表示启用 | | create_time | datetime | 角色创建时间 | | update_time | datetime | 最近一次修改时间 | 在这个设计中,角色表包含了角色的基本信息和权限,可以根据需要扩展其他属性。通过角色表,可以方便地进行权限管理,例如为不同的用户分配不同的角色,控制其可以访问的功能和资源。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值