Book_system/sql/module1_user.sql
2025-05-14 15:08:06 +08:00

68 lines
3.1 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 角色表
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', '普通用户');