You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
6.8 KiB
MySQL

CREATE DATABASE if not exists yxs_sms;
USE yxs_sms;
-- 用户表
CREATE TABLE IF NOT EXISTS users (
id varchar(64) NOT NULL COMMENT '用户ID雪花算法生成',
username varchar(50) NOT NULL UNIQUE COMMENT '用户名',
password varchar(255) NOT NULL COMMENT '密码(加密存储)',
email varchar(100) COMMENT '邮箱',
role int NOT NULL COMMENT '用户角色1=超级管理员2=普通管理员3=教师4=学生',
status int NOT NULL DEFAULT 1 COMMENT '用户状态0=禁用1=正常2=已删除',
created_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_username (username),
INDEX idx_role (role),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
-- 初始化超级管理员账号密码admin123
INSERT INTO users (id, username, password, email, role, status)
VALUES ('1', 'admin', '$2a$10$hD.BTeMvHjwopHom7wyNsOD4zgFbQuF5ZYRflikt9ee.UrlzrqToi', 'admin@yuxingshi.com', 1, 1)
ON DUPLICATE KEY UPDATE id = id;
-- 专业表(需要在班级表之前创建,因为班级表引用专业表)
CREATE TABLE IF NOT EXISTS majors (
`id` varchar(64) NOT NULL COMMENT '专业ID雪花算法生成',
`major_code` varchar(32) NOT NULL COMMENT '专业编码(唯一标识)',
`major_name` varchar(64) NOT NULL COMMENT '专业名称',
`description` varchar(512) DEFAULT '' COMMENT '专业描述',
`status` tinyint NOT NULL DEFAULT 1 COMMENT '状态1-启用0-禁用',
`created_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_major_code` (`major_code`),
KEY `idx_major_name` (`major_name`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='专业表';
-- 班级表
CREATE TABLE IF NOT EXISTS classes (
id varchar(64) NOT NULL COMMENT '班级ID雪花算法生成',
class_code varchar(30) NOT NULL UNIQUE COMMENT '班级代码',
major_id varchar(64) NOT NULL COMMENT '专业ID关联majors表',
description varchar(255) COMMENT '班级描述',
status int NOT NULL DEFAULT 1 COMMENT '班级状态0=禁用1=正常',
created_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_class_code (class_code),
INDEX idx_status (status),
INDEX idx_major_id (major_id),
CONSTRAINT fk_classes_major FOREIGN KEY (major_id) REFERENCES majors(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='班级表';
-- 学生表
CREATE TABLE IF NOT EXISTS students (
id varchar(64) NOT NULL COMMENT '学生ID雪花算法生成',
user_id varchar(64) NOT NULL COMMENT '用户ID关联users表',
class_id varchar(64) NOT NULL COMMENT '班级ID关联classes表',
student_no varchar(30) NOT NULL UNIQUE COMMENT '学号',
real_name varchar(50) NOT NULL COMMENT '真实姓名',
gender int COMMENT '性别0=女1=男',
phone varchar(20) COMMENT '电话号码',
status int NOT NULL DEFAULT 1 COMMENT '学生状态0=禁用1=正常2=已毕业',
created_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_user_id (user_id),
UNIQUE KEY uk_student_no (student_no),
INDEX idx_class_id (class_id),
CONSTRAINT fk_students_class FOREIGN KEY (class_id) REFERENCES classes(id),
CONSTRAINT fk_students_user FOREIGN KEY (user_id) REFERENCES users(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='学生表';
-- 教师表
CREATE TABLE IF NOT EXISTS teachers (
id varchar(64) NOT NULL COMMENT '教师ID雪花算法生成',
user_id varchar(64) UNIQUE COMMENT '关联的用户ID',
teacher_no VARCHAR(50) UNIQUE NOT NULL COMMENT '教师工号',
real_name VARCHAR(100) NOT NULL COMMENT '教师真实姓名',
department VARCHAR(100) COMMENT '所属部门',
phone VARCHAR(20) COMMENT '电话号码',
status INT DEFAULT 1 COMMENT '状态1=启用0=禁用',
created_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师表';