-- 切换到test01_db数据库 USE stu01_db; -- 1. 用户表(sys_user):存储登录账号、密码、权限类型 DROP TABLE IF EXISTS sys_user; CREATE TABLE sys_user ( id BIGINT AUTO_INCREMENT COMMENT '用户ID(主键)' PRIMARY KEY, username VARCHAR(50) NOT NULL COMMENT '登录账号(唯一)', password VARCHAR(50) NOT NULL COMMENT '登录密码(无需加密,测试用)', user_type TINYINT NOT NULL COMMENT '权限类型:1-学生 2-教师 3-管理员', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', real_name VARCHAR(50) NOT NULL COMMENT '真实姓名' ) COMMENT '用户表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 添加账号唯一索引 CREATE UNIQUE INDEX idx_sys_user_username ON sys_user(username); -- 插入测试数据(管理员账号:admin/123456;学生账号:stu001/123456;教师账号:tea001/123456) INSERT INTO sys_user (username, password, user_type) VALUES ('admin', '123456', 3), ('stu001', '123456', 1), ('tea001', '123456', 2); -- 2. 学生表(student):存储学生基础信息 DROP TABLE IF EXISTS student; CREATE TABLE student ( id BIGINT AUTO_INCREMENT COMMENT '学生ID(主键)' PRIMARY KEY, stu_no VARCHAR(8) NOT NULL COMMENT '学号(8位纯数字,唯一)', name VARCHAR(20) NOT NULL COMMENT '学生姓名', major VARCHAR(30) NOT NULL COMMENT '专业(仅允许:计算机/数学/英语)', user_id BIGINT NOT NULL COMMENT '关联用户ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 外键关联用户表 CONSTRAINT fk_student_user_id FOREIGN KEY (user_id) REFERENCES sys_user(id) ) COMMENT '学生表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 添加学号唯一索引 CREATE UNIQUE INDEX idx_student_stu_no ON student(stu_no); -- 插入测试数据(关联学生账号stu001的user_id,需先查询sys_user中stu001的id再替换,示例中假设id=2) INSERT INTO student (stu_no, name, major, user_id) VALUES ('20250001', '张三', '计算机', 2); -- 3. 教师表(teacher):存储教师基础信息 DROP TABLE IF EXISTS teacher; CREATE TABLE teacher ( id BIGINT AUTO_INCREMENT COMMENT '教师ID(主键)' PRIMARY KEY, tea_no VARCHAR(8) NOT NULL COMMENT '教师编号(8位纯数字,唯一)', name VARCHAR(20) NOT NULL COMMENT '教师姓名', user_id BIGINT NOT NULL COMMENT '关联用户ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 外键关联用户表 CONSTRAINT fk_teacher_user_id FOREIGN KEY (user_id) REFERENCES sys_user(id) ) COMMENT '教师表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 添加教师编号唯一索引 CREATE UNIQUE INDEX idx_teacher_tea_no ON teacher(tea_no); -- 插入测试数据(关联教师账号tea001的user_id,示例中假设id=3) INSERT INTO teacher (tea_no, name, user_id) VALUES ('20250001', '李老师', 3); -- 4. 课程表(course):存储课程信息,关联授课教师 DROP TABLE IF EXISTS course; CREATE TABLE course ( id BIGINT AUTO_INCREMENT COMMENT '课程ID(主键)' PRIMARY KEY, course_name VARCHAR(50) NOT NULL COMMENT '课程名称(仅允许中文/数字/字母,长度2-20)', tea_id BIGINT NOT NULL COMMENT '关联教师ID', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 外键关联教师表(用于教师删除时的关联拦截) CONSTRAINT fk_course_tea_id FOREIGN KEY (tea_id) REFERENCES teacher(id) ) COMMENT '课程表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 插入测试数据(关联李老师的teacher_id,示例中假设id=1) INSERT INTO course (course_name, tea_id) VALUES ('Java编程', 1); -- 5. 学分表(score):存储学生课程成绩,关联学生和课程 DROP TABLE IF EXISTS score; CREATE TABLE score ( id BIGINT AUTO_INCREMENT COMMENT '学分ID(主键)' PRIMARY KEY, stu_id BIGINT NOT NULL COMMENT '关联学生ID', course_id BIGINT NOT NULL COMMENT '关联课程ID', score INT NOT NULL COMMENT '分数(0-100)', create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', -- 外键关联学生表和课程表 CONSTRAINT fk_score_stu_id FOREIGN KEY (stu_id) REFERENCES student(id), CONSTRAINT fk_score_course_id FOREIGN KEY (course_id) REFERENCES course(id) ) COMMENT '学分表' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 插入测试数据(关联张三的student_id=1,Java编程的course_id=1) INSERT INTO score (stu_id, course_id, score) VALUES (1, 1, 90);