-- 注意:表创建顺序很重要,先创建被引用的表,再创建引用它们的表
-- 1. 首先创建学院表 (collage) - 被多个表引用
CREATE TABLE collage (
collage_id INT PRIMARY KEY AUTO_INCREMENT,
collage_name VARCHAR(100) NOT NULL COMMENT '学院名称',
status TINYINT DEFAULT 1 COMMENT '状态:1-启用 0-停用'
) COMMENT '学院表';
-- 2. 创建工作室管理员表 (workroom_admin)
CREATE TABLE workroom_admin (
admin_id INT PRIMARY KEY AUTO_INCREMENT,
admin_no VARCHAR(20) UNIQUE NOT NULL COMMENT '管理员编号',
name VARCHAR(50) NOT NULL COMMENT '姓名',
phone VARCHAR(20) COMMENT '联系电话'
) COMMENT '工作室管理员表';
-- 3. 创建工作室表 (workroom) - 引用学院表和管理员表
CREATE TABLE workroom (
workroom_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '工作室ID',
workroom_name VARCHAR(100) NOT NULL COMMENT '工作室名称',
collage_id INT NOT NULL COMMENT '所属学院ID',
manager_id INT COMMENT '管理员ID',
location VARCHAR(200) COMMENT '位置',
status TINYINT DEFAULT 1 COMMENT '状态:1-启用 0-停用',
INDEX idx_collage (collage_id),
FOREIGN KEY (collage_id) REFERENCES collage(collage_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (manager_id) REFERENCES workroom_admin(admin_id) ON DELETE SET NULL ON UPDATE CASCADE
) COMMENT '工作室表';
-- 4. 创建学生表 (student) - 引用学院表和工作室表
CREATE TABLE student (
student_id INT PRIMARY KEY AUTO_INCREMENT,
student_no VARCHAR(20) UNIQUE NOT NULL COMMENT '学号',
name VARCHAR(50) NOT NULL COMMENT '姓名',
collage_id INT NOT NULL COMMENT '学院ID',
workroom_id INT COMMENT '工作室ID',
contact_info VARCHAR(100) COMMENT '联系方式',
email VARCHAR(100) COMMENT '邮箱',
status TINYINT DEFAULT 1 COMMENT '状态:1-正常 2-禁用',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP,
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_student_no (student_no),
INDEX idx_workroom (workroom_id),
INDEX idx_collage (collage_id),
FOREIGN KEY (collage_id) REFERENCES collage(collage_id) ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (workroom_id) REFERENCES workroom(workroom_id)