357 lines
16 KiB
SQL
357 lines
16 KiB
SQL
-- ==============================================================================
|
|
-- RailwaySystem 数据库 V2 回滚基线: 000_phase05_exact_schema.sql
|
|
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
|
|
-- 执行目标: 精确定义 Phase 0.5 历史基线 14 张培训业务表的完整物理 DDL
|
|
-- 依据来源: codebase-audit 13_live_database_snapshot.md 真实元数据基线
|
|
-- 包含内容:
|
|
-- 1. 14 张表物理字段定义、NOT NULL、DEFAULT
|
|
-- 2. 14 个 PRIMARY KEY (8 个 varchar(32), 6 个 bigint GENERATED BY DEFAULT AS IDENTITY)
|
|
-- 3. 7 组历史业务 UNIQUE 约束
|
|
-- 4. 24 组历史业务 FOREIGN KEY 约束
|
|
-- 5. 9 个 update_time 触发器 (绑定 func_train_update_modifytime)
|
|
-- 说明: 本文件为 Phase 0.5 原始结构标准,作为回滚操作的唯一结构依据,杜绝 CTAS 推断结构
|
|
-- ==============================================================================
|
|
|
|
-- 1. train_teacher 教师主档
|
|
CREATE TABLE train_teacher (
|
|
t_id VARCHAR(32) NOT NULL,
|
|
t_name VARCHAR(30) NOT NULL,
|
|
t_gender CHAR(2),
|
|
t_birth DATE,
|
|
t_department VARCHAR(50) NOT NULL,
|
|
t_title VARCHAR(30),
|
|
t_phone VARCHAR(20),
|
|
t_email VARCHAR(50),
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_teacher PRIMARY KEY (t_id)
|
|
);
|
|
|
|
-- 2. train_student 学员表
|
|
CREATE TABLE train_student (
|
|
s_id VARCHAR(32) NOT NULL,
|
|
s_name VARCHAR(30) NOT NULL,
|
|
s_gender CHAR(2),
|
|
s_birth DATE,
|
|
s_department VARCHAR(50) NOT NULL,
|
|
s_major VARCHAR(50) NOT NULL,
|
|
s_class VARCHAR(30),
|
|
s_phone VARCHAR(20),
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_student PRIMARY KEY (s_id)
|
|
);
|
|
|
|
-- 3. train_course 课程表
|
|
CREATE TABLE train_course (
|
|
c_id VARCHAR(32) NOT NULL,
|
|
c_name VARCHAR(100) NOT NULL,
|
|
c_type VARCHAR(30),
|
|
c_duration INTEGER,
|
|
teaching_objective TEXT,
|
|
course_content TEXT,
|
|
attach_doc TEXT,
|
|
attach_video TEXT,
|
|
attach_model_link TEXT,
|
|
model_resource_ids TEXT,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_course PRIMARY KEY (c_id)
|
|
);
|
|
|
|
-- 4. train_class_plan 开班计划表
|
|
CREATE TABLE train_class_plan (
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
plan_name VARCHAR(100) NOT NULL,
|
|
c_id VARCHAR(32) NOT NULL,
|
|
start_time TIMESTAMP NOT NULL,
|
|
end_time TIMESTAMP NOT NULL,
|
|
train_address VARCHAR(100),
|
|
t_id VARCHAR(32) NOT NULL,
|
|
recruit_num INTEGER,
|
|
apply_condition TEXT,
|
|
plan_status SMALLINT DEFAULT 0,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_class_plan PRIMARY KEY (plan_id)
|
|
);
|
|
|
|
-- 5. train_dormitory_info 宿舍信息表
|
|
CREATE TABLE train_dormitory_info (
|
|
dorm_id VARCHAR(32) NOT NULL,
|
|
dorm_building VARCHAR(50),
|
|
dorm_room VARCHAR(30) NOT NULL,
|
|
bed_total INTEGER,
|
|
bed_used INTEGER DEFAULT 0,
|
|
lock_device_sn VARCHAR(64),
|
|
dorm_status SMALLINT DEFAULT 1,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_dormitory_info PRIMARY KEY (dorm_id),
|
|
CONSTRAINT uq_dorm_building_room UNIQUE (dorm_building, dorm_room)
|
|
);
|
|
|
|
-- 6. train_dorm_auth 宿舍门禁表
|
|
CREATE TABLE train_dorm_auth (
|
|
auth_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
student_id VARCHAR(32) NOT NULL,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
dorm_id VARCHAR(32) NOT NULL,
|
|
bed_no VARCHAR(20),
|
|
face_sync_status SMALLINT DEFAULT 0,
|
|
auth_start TIMESTAMP,
|
|
auth_end TIMESTAMP,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_dorm_auth PRIMARY KEY (auth_id),
|
|
CONSTRAINT uq_dormauth_stu_plan UNIQUE (student_id, plan_id)
|
|
);
|
|
|
|
-- 7. train_classroom_info 教室信息表
|
|
CREATE TABLE train_classroom_info (
|
|
class_room_id VARCHAR(32) NOT NULL,
|
|
room_name VARCHAR(60) NOT NULL,
|
|
room_location VARCHAR(100),
|
|
capacity INTEGER,
|
|
room_status SMALLINT DEFAULT 1,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_classroom_info PRIMARY KEY (class_room_id)
|
|
);
|
|
|
|
-- 8. train_training_site 实训场地表
|
|
CREATE TABLE train_training_site (
|
|
site_id VARCHAR(32) NOT NULL,
|
|
site_name VARCHAR(80) NOT NULL,
|
|
site_location VARCHAR(100),
|
|
capacity INTEGER,
|
|
site_device TEXT,
|
|
site_status SMALLINT DEFAULT 1,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_training_site PRIMARY KEY (site_id)
|
|
);
|
|
|
|
-- 9. train_class_report 报到记录表
|
|
CREATE TABLE train_class_report (
|
|
report_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
student_id VARCHAR(32) NOT NULL,
|
|
report_way SMALLINT,
|
|
report_device_sn VARCHAR(64),
|
|
report_time TIMESTAMP,
|
|
report_status SMALLINT DEFAULT 0,
|
|
alloc_dorm_id VARCHAR(32),
|
|
alloc_classroom_id VARCHAR(32),
|
|
alloc_site_id VARCHAR(32),
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT pk_train_class_report PRIMARY KEY (report_id),
|
|
CONSTRAINT uq_classreport_plan_stu UNIQUE (plan_id, student_id)
|
|
);
|
|
|
|
-- 10. train_electronic_board 电子班牌表
|
|
CREATE TABLE train_electronic_board (
|
|
board_id VARCHAR(32) NOT NULL,
|
|
board_sn VARCHAR(64) NOT NULL,
|
|
bind_classroom_id VARCHAR(32),
|
|
bind_plan_id VARCHAR(32),
|
|
board_ip VARCHAR(50),
|
|
board_content VARCHAR(500),
|
|
board_playmode SMALLINT DEFAULT 1,
|
|
support_checkin_type VARCHAR(30),
|
|
board_status SMALLINT DEFAULT 1,
|
|
last_heartbeat TIMESTAMP,
|
|
create_user VARCHAR(32) NOT NULL,
|
|
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
remark VARCHAR(200),
|
|
CONSTRAINT pk_train_electronic_board PRIMARY KEY (board_id),
|
|
CONSTRAINT uq_board_sn UNIQUE (board_sn)
|
|
);
|
|
|
|
-- 11. train_student_checkin 考勤签到表
|
|
CREATE TABLE train_student_checkin (
|
|
checkin_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
c_id VARCHAR(32) NOT NULL,
|
|
student_id VARCHAR(32) NOT NULL,
|
|
board_id VARCHAR(32),
|
|
checkin_way SMALLINT,
|
|
checkin_time TIMESTAMP,
|
|
checkin_status SMALLINT,
|
|
lesson_start_time TIMESTAMP,
|
|
lesson_end_time TIMESTAMP,
|
|
CONSTRAINT pk_train_student_checkin PRIMARY KEY (checkin_id),
|
|
CONSTRAINT uq_checkin_lesson_stu UNIQUE (plan_id, c_id, student_id, lesson_start_time)
|
|
);
|
|
|
|
-- 12. train_score_info 成绩信息表 (历史旧表)
|
|
CREATE TABLE train_score_info (
|
|
score_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
plan_id VARCHAR(32),
|
|
c_id VARCHAR(32),
|
|
student_id VARCHAR(32),
|
|
course_score NUMERIC(5,2),
|
|
train_score NUMERIC(5,2),
|
|
exam_score NUMERIC(5,2),
|
|
source_type SMALLINT,
|
|
source_system VARCHAR(50),
|
|
import_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT pk_train_score_info PRIMARY KEY (score_id),
|
|
CONSTRAINT uq_scoreinfo_plan_c_stu UNIQUE (plan_id, c_id, student_id)
|
|
);
|
|
|
|
-- 13. train_study_duration 学习时长表
|
|
CREATE TABLE train_study_duration (
|
|
dur_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
student_id VARCHAR(32),
|
|
plan_id VARCHAR(32),
|
|
c_id VARCHAR(32),
|
|
device_type VARCHAR(50),
|
|
start_time TIMESTAMP,
|
|
end_time TIMESTAMP,
|
|
study_seconds INTEGER,
|
|
sync_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT pk_train_study_duration PRIMARY KEY (dur_id)
|
|
);
|
|
|
|
-- 14. train_student_portrait 学员画像表
|
|
CREATE TABLE train_student_portrait (
|
|
portrait_id BIGINT GENERATED BY DEFAULT AS IDENTITY,
|
|
student_id VARCHAR(32) NOT NULL,
|
|
plan_id VARCHAR(32) NOT NULL,
|
|
total_study_hour NUMERIC(8,2),
|
|
avg_score NUMERIC(5,2),
|
|
checkin_rate NUMERIC(5,2),
|
|
label_tag TEXT,
|
|
portrait_content TEXT,
|
|
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT pk_train_student_portrait PRIMARY KEY (portrait_id),
|
|
CONSTRAINT uq_portrait_stu_plan UNIQUE (student_id, plan_id)
|
|
);
|
|
|
|
|
|
-- ==============================================================================
|
|
-- 历史 24 个外键约束 (FOREIGN KEY CONSTRAINTS - 全部 ON DELETE NO ACTION)
|
|
-- ==============================================================================
|
|
|
|
-- train_class_plan (2 FK)
|
|
ALTER TABLE train_class_plan ADD CONSTRAINT fk_classplan_course
|
|
FOREIGN KEY (c_id) REFERENCES train_course (c_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_class_plan ADD CONSTRAINT fk_classplan_teacher
|
|
FOREIGN KEY (t_id) REFERENCES train_teacher (t_id) ON DELETE NO ACTION;
|
|
|
|
-- train_dorm_auth (3 FK)
|
|
ALTER TABLE train_dorm_auth ADD CONSTRAINT fk_dormauth_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_dorm_auth ADD CONSTRAINT fk_dormauth_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_dorm_auth ADD CONSTRAINT fk_dormauth_dorm
|
|
FOREIGN KEY (dorm_id) REFERENCES train_dormitory_info (dorm_id) ON DELETE NO ACTION;
|
|
|
|
-- train_class_report (5 FK)
|
|
ALTER TABLE train_class_report ADD CONSTRAINT fk_classreport_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_class_report ADD CONSTRAINT fk_classreport_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_class_report ADD CONSTRAINT fk_classreport_dorm
|
|
FOREIGN KEY (alloc_dorm_id) REFERENCES train_dormitory_info (dorm_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_class_report ADD CONSTRAINT fk_classreport_classroom
|
|
FOREIGN KEY (alloc_classroom_id) REFERENCES train_classroom_info (class_room_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_class_report ADD CONSTRAINT fk_classreport_site
|
|
FOREIGN KEY (alloc_site_id) REFERENCES train_training_site (site_id) ON DELETE NO ACTION;
|
|
|
|
-- train_electronic_board (2 FK)
|
|
ALTER TABLE train_electronic_board ADD CONSTRAINT fk_board_classroom
|
|
FOREIGN KEY (bind_classroom_id) REFERENCES train_classroom_info (class_room_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_electronic_board ADD CONSTRAINT fk_board_plan
|
|
FOREIGN KEY (bind_plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
|
|
-- train_student_checkin (4 FK)
|
|
ALTER TABLE train_student_checkin ADD CONSTRAINT fk_checkin_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_student_checkin ADD CONSTRAINT fk_checkin_course
|
|
FOREIGN KEY (c_id) REFERENCES train_course (c_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_student_checkin ADD CONSTRAINT fk_checkin_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_student_checkin ADD CONSTRAINT fk_checkin_board
|
|
FOREIGN KEY (board_id) REFERENCES train_electronic_board (board_id) ON DELETE NO ACTION;
|
|
|
|
-- train_score_info (3 FK)
|
|
ALTER TABLE train_score_info ADD CONSTRAINT fk_scoreinfo_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_score_info ADD CONSTRAINT fk_scoreinfo_course
|
|
FOREIGN KEY (c_id) REFERENCES train_course (c_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_score_info ADD CONSTRAINT fk_scoreinfo_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
|
|
-- train_study_duration (3 FK)
|
|
ALTER TABLE train_study_duration ADD CONSTRAINT fk_studydur_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_study_duration ADD CONSTRAINT fk_studydur_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_study_duration ADD CONSTRAINT fk_studydur_course
|
|
FOREIGN KEY (c_id) REFERENCES train_course (c_id) ON DELETE NO ACTION;
|
|
|
|
-- train_student_portrait (2 FK)
|
|
ALTER TABLE train_student_portrait ADD CONSTRAINT fk_portrait_stu
|
|
FOREIGN KEY (student_id) REFERENCES train_student (s_id) ON DELETE NO ACTION;
|
|
ALTER TABLE train_student_portrait ADD CONSTRAINT fk_portrait_plan
|
|
FOREIGN KEY (plan_id) REFERENCES train_class_plan (plan_id) ON DELETE NO ACTION;
|
|
|
|
|
|
-- ==============================================================================
|
|
-- 历史 9 个 update_time 触发器
|
|
-- ==============================================================================
|
|
CREATE OR REPLACE TRIGGER trig_train_teacher_modify
|
|
BEFORE UPDATE ON train_teacher
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_student_modify
|
|
BEFORE UPDATE ON train_student
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_course_modify
|
|
BEFORE UPDATE ON train_course
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_classroom_modify
|
|
BEFORE UPDATE ON train_classroom_info
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_trainsite_modify
|
|
BEFORE UPDATE ON train_training_site
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_board_modify
|
|
BEFORE UPDATE ON train_electronic_board
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_dorminfo_modify
|
|
BEFORE UPDATE ON train_dormitory_info
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_classplan_modify
|
|
BEFORE UPDATE ON train_class_plan
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|
|
|
|
CREATE OR REPLACE TRIGGER trig_train_dormauth_modify
|
|
BEFORE UPDATE ON train_dorm_auth
|
|
FOR EACH ROW EXECUTE FUNCTION func_train_update_modifytime();
|