权限功能怎么设计?几张表? sql怎么写
时间: 2023-11-28 07:04:21 浏览: 137
权限功能的设计通常需要考虑以下几个方面:
1. 用户表:存储用户基本信息及登录信息,如用户名、密码、邮箱、手机号等。
2. 角色表:定义系统中的角色类型,如管理员、普通用户等。
3. 权限表:定义系统中的权限类型,如查看、修改、删除等。
4. 用户角色关系表:记录用户与角色之间的关系。
5. 角色权限关系表:记录角色与权限之间的关系。
6. 操作日志表:记录用户的操作历史,包括操作时间、操作类型、操作对象等。
下面是一个简单的 SQL 设计示例:
```
-- 用户表
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`email` VARCHAR(50) NOT NULL,
`mobile` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
-- 角色表
CREATE TABLE `role` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);
-- 权限表
CREATE TABLE `permission` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`url` VARCHAR(200) NOT NULL,
PRIMARY KEY (`id`)
);
-- 用户角色关系表
CREATE TABLE `user_role` (
`user_id` INT(11) NOT NULL,
`role_id` INT(11) NOT NULL,
PRIMARY KEY (`user_id`, `role_id`)
);
-- 角色权限关系表
CREATE TABLE `role_permission` (
`role_id` INT(11) NOT NULL,
`permission_id` INT(11) NOT NULL,
PRIMARY KEY (`role_id`, `permission_id`)
);
-- 操作日志表
CREATE TABLE `operation_log` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`operation_type` VARCHAR(50) NOT NULL,
`operation_time` DATETIME NOT NULL,
`operation_object` VARCHAR(200) NOT NULL,
PRIMARY KEY (`id`)
);
```
在实际应用中,可能还需要增加一些其他的字段和表,根据具体需求进行设计。