feat(db): 新增Kingbase数据库V2迁移与回滚脚本
This commit is contained in:
1 parent
277c9e210e
commit
c791e23f3e
17 files changed
+3386
No files matched your search
@@ -0,0 +1,356 @@
|
||||
-- ==============================================================================
|
||||
-- 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();
|
||||
Reference in new issue
Block a user