68 lines
3.1 KiB
SQL
68 lines
3.1 KiB
SQL
-- 角色表
|
||
CREATE TABLE `roles` (
|
||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||
`role_name` VARCHAR(32) NOT NULL UNIQUE,
|
||
`description` VARCHAR(128)
|
||
);
|
||
|
||
-- 用户表
|
||
CREATE TABLE `users` (
|
||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||
`username` VARCHAR(64) NOT NULL UNIQUE,
|
||
`password` VARCHAR(255) NOT NULL,
|
||
`email` VARCHAR(128) UNIQUE,
|
||
`phone` VARCHAR(20) UNIQUE,
|
||
`nickname` VARCHAR(64),
|
||
`status` TINYINT DEFAULT 1,
|
||
`role_id` INT NOT NULL DEFAULT 2,
|
||
`created_at` DATETIME NOT NULL,
|
||
`updated_at` DATETIME NOT NULL,
|
||
FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`)
|
||
);
|
||
|
||
-- ----------------------------
|
||
-- Table structure for permissions
|
||
-- ----------------------------
|
||
-- 这是权限表,用于存储系统中所有可分配的权限
|
||
-- id: 权限的唯一标识符,自增主键
|
||
-- code: 权限的唯一代码,用于程序中进行权限验证,如'manage_books'、'view_users'等
|
||
-- name: 权限的显示名称,便于管理员理解,如'管理图书'、'查看用户'等
|
||
-- description: 权限的详细描述,解释该权限允许用户执行什么操作
|
||
DROP TABLE IF EXISTS `permissions`;
|
||
CREATE TABLE `permissions` (
|
||
`id` int NOT NULL AUTO_INCREMENT,
|
||
`code` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限代码,用于系统识别',
|
||
`name` varchar(64) COLLATE utf8mb4_general_ci NOT NULL COMMENT '权限名称,用于界面显示',
|
||
`description` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '权限描述,说明权限用途',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `code` (`code`) COMMENT '权限代码必须唯一'
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='系统权限表';
|
||
|
||
-- ----------------------------
|
||
-- Table structure for role_permissions
|
||
-- ----------------------------
|
||
-- 这是角色-权限关联表,用于建立角色和权限之间的多对多关系
|
||
-- role_id: 角色ID,外键关联到roles表
|
||
-- permission_id: 权限ID,外键关联到permissions表
|
||
-- created_at: 记录权限分配给角色的时间
|
||
-- 该表使用role_id和permission_id的组合作为复合主键,确保一个角色不会重复分配同一权限
|
||
DROP TABLE IF EXISTS `role_permissions`;
|
||
CREATE TABLE `role_permissions` (
|
||
`role_id` int NOT NULL COMMENT '角色ID,关联roles表的id字段',
|
||
`permission_id` int NOT NULL COMMENT '权限ID,关联permissions表的id字段',
|
||
`created_at` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '权限分配时间',
|
||
PRIMARY KEY (`role_id`,`permission_id`), -- 复合主键,确保一个角色不会重复分配同一权限
|
||
KEY `permission_id` (`permission_id`), -- 权限ID索引,提高查询效率
|
||
CONSTRAINT `role_permissions_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON DELETE CASCADE,
|
||
CONSTRAINT `role_permissions_ibfk_2` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='角色-权限关联表';
|
||
|
||
|
||
|
||
-- (可选)初始化角色数据
|
||
INSERT INTO `roles` (`role_name`, `description`) VALUES
|
||
('admin', '管理员'),
|
||
('user', '普通用户');
|
||
|
||
|