You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
11 KiB
177 lines
11 KiB
CREATE DATABASE IF NOT EXISTS zhiyuantong
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_0900_ai_ci;
|
|
|
|
USE zhiyuantong;
|
|
|
|
CREATE TABLE IF NOT EXISTS data_sources (
|
|
source_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '数据来源记录自增主键',
|
|
source_type VARCHAR(32) NOT NULL COMMENT '来源类型,如官方XLS、官方网页、官方PDF或人工核验',
|
|
publisher VARCHAR(128) NOT NULL COMMENT '数据发布机构名称',
|
|
title VARCHAR(255) NOT NULL COMMENT '来源文件或网页标题',
|
|
landing_page_url VARCHAR(1024) NULL COMMENT '来源发布页网址',
|
|
file_url VARCHAR(1024) NULL COMMENT '原始附件或数据文件下载网址',
|
|
published_on DATE NULL COMMENT '来源资料发布日期或数据截止日期',
|
|
retrieved_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '本系统获取来源资料的时间',
|
|
sha256 CHAR(64) NOT NULL COMMENT '原始文件SHA-256摘要,用于去重和完整性校验',
|
|
raw_file_path VARCHAR(1024) NULL COMMENT '原始文件在本地数据目录中的保存路径',
|
|
notes TEXT NULL COMMENT '来源范围、授权限制或其他补充说明',
|
|
PRIMARY KEY (source_id),
|
|
UNIQUE KEY uk_data_sources_sha256 (sha256)
|
|
) ENGINE=InnoDB COMMENT='数据来源与原始资料存档信息';
|
|
|
|
CREATE TABLE IF NOT EXISTS ingestion_runs (
|
|
ingestion_run_id CHAR(36) NOT NULL COMMENT '本次导入任务UUID',
|
|
source_id BIGINT UNSIGNED NOT NULL COMMENT '本次导入使用的数据来源ID',
|
|
dataset_name VARCHAR(128) NOT NULL COMMENT '导入的数据集名称',
|
|
dataset_year SMALLINT UNSIGNED NOT NULL COMMENT '数据所属年度',
|
|
started_at DATETIME NOT NULL COMMENT '导入开始时间',
|
|
finished_at DATETIME NULL COMMENT '导入完成或失败时间',
|
|
status VARCHAR(20) NOT NULL COMMENT '导入状态,如running、success或failed',
|
|
rows_read INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '从来源读取的总行数',
|
|
rows_inserted INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '本次新增的记录数',
|
|
rows_updated INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '本次更新的记录数',
|
|
rows_rejected INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '因校验失败被拒绝的记录数',
|
|
message TEXT NULL COMMENT '导入结果、错误信息或校验摘要',
|
|
PRIMARY KEY (ingestion_run_id),
|
|
KEY idx_ingestion_runs_source (source_id),
|
|
CONSTRAINT fk_ingestion_runs_source
|
|
FOREIGN KEY (source_id) REFERENCES data_sources(source_id)
|
|
) ENGINE=InnoDB COMMENT='数据采集和导入任务审计记录';
|
|
|
|
CREATE TABLE IF NOT EXISTS schools (
|
|
school_id CHAR(36) NOT NULL COMMENT '系统内部稳定学校UUID,不随名称和招生代码变化',
|
|
moe_school_code CHAR(10) NULL COMMENT '教育部学校标识码;未纳入教育部公开普通高校名单的军队或港澳院校为空',
|
|
official_name VARCHAR(255) NOT NULL COMMENT '教育部当前公布的学校正式名称',
|
|
province_name VARCHAR(64) NOT NULL COMMENT '学校所属省级行政区名称',
|
|
city_name VARCHAR(128) NOT NULL COMMENT '教育部名单公布的学校所在地城市',
|
|
authority_name VARCHAR(255) NOT NULL COMMENT '学校主管部门',
|
|
education_level VARCHAR(32) NOT NULL COMMENT '办学或招生培养层次,如本科、专科或成人高等教育',
|
|
source_remark VARCHAR(255) NULL COMMENT '教育部原始名单中的备注内容',
|
|
ownership_type VARCHAR(32) NOT NULL DEFAULT '待核验' COMMENT '办学性质,如公办、民办、合作办学或境外办学',
|
|
school_status VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT '学校当前状态,如active或inactive',
|
|
official_website VARCHAR(1024) NULL COMMENT '经核验的学校官方网站',
|
|
admission_website VARCHAR(1024) NULL COMMENT '经核验的学校招生官方网站',
|
|
first_seen_year SMALLINT UNSIGNED NOT NULL COMMENT '该学校首次进入本系统年度名单的年份',
|
|
last_seen_year SMALLINT UNSIGNED NOT NULL COMMENT '该学校最近一次出现在教育部年度名单中的年份',
|
|
source_id BIGINT UNSIGNED NOT NULL COMMENT '当前学校基础信息对应的数据来源ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录最近更新时间',
|
|
PRIMARY KEY (school_id),
|
|
UNIQUE KEY uk_schools_moe_code (moe_school_code),
|
|
KEY idx_schools_name (official_name),
|
|
KEY idx_schools_province_level (province_name, education_level),
|
|
CONSTRAINT fk_schools_source
|
|
FOREIGN KEY (source_id) REFERENCES data_sources(source_id)
|
|
) ENGINE=InnoDB COMMENT='全国招生院校主体当前基础信息表(含普通高校、军队院校、港澳院校及招生引用成人高校)';
|
|
|
|
CREATE TABLE IF NOT EXISTS school_names (
|
|
school_name_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学校名称记录自增主键',
|
|
school_id CHAR(36) NOT NULL COMMENT '关联schools表的学校UUID',
|
|
school_name VARCHAR(255) NOT NULL COMMENT '学校正式名称、曾用名、简称或英文名',
|
|
name_type VARCHAR(32) NOT NULL COMMENT '名称类型,如official、former、alias或english',
|
|
valid_from_year SMALLINT UNSIGNED NULL COMMENT '该名称开始适用的年份',
|
|
valid_to_year SMALLINT UNSIGNED NULL COMMENT '该名称停止适用的年份,空值表示当前仍适用',
|
|
source_id BIGINT UNSIGNED NOT NULL COMMENT '证明该名称及有效期的数据来源ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '名称记录创建时间',
|
|
PRIMARY KEY (school_name_id),
|
|
UNIQUE KEY uk_school_names (school_id, school_name, name_type),
|
|
KEY idx_school_names_lookup (school_name),
|
|
CONSTRAINT fk_school_names_school
|
|
FOREIGN KEY (school_id) REFERENCES schools(school_id),
|
|
CONSTRAINT fk_school_names_source
|
|
FOREIGN KEY (source_id) REFERENCES data_sources(source_id)
|
|
) ENGINE=InnoDB COMMENT='学校正式名称、曾用名和别名历史';
|
|
|
|
CREATE TABLE IF NOT EXISTS school_external_codes (
|
|
external_code_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '外部代码映射记录自增主键',
|
|
school_id CHAR(36) NOT NULL COMMENT '关联schools表的学校UUID',
|
|
code_system VARCHAR(64) NOT NULL COMMENT '代码所属体系,如甘肃招生院校代码或阳光高考内部代码',
|
|
external_code VARCHAR(64) NOT NULL COMMENT '外部系统使用的院校代码',
|
|
province_name VARCHAR(64) NOT NULL DEFAULT '' COMMENT '该代码适用的招生省份,空字符串表示全国通用',
|
|
admission_year SMALLINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '该代码适用的招生年度,0表示不限定年度',
|
|
admission_batch VARCHAR(64) NOT NULL DEFAULT '' COMMENT '该代码适用的录取批次,空字符串表示不限定批次',
|
|
admission_type VARCHAR(128) NOT NULL DEFAULT '' COMMENT '该代码适用的招生类型,如普通类、中外合作或专项计划',
|
|
campus_name VARCHAR(255) NULL COMMENT '代码对应的特定校区或办学地点',
|
|
source_id BIGINT UNSIGNED NOT NULL COMMENT '外部代码的数据来源ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '映射记录创建时间',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '映射记录最近更新时间',
|
|
PRIMARY KEY (external_code_id),
|
|
UNIQUE KEY uk_school_external_code (
|
|
code_system, external_code, province_name, admission_year,
|
|
admission_batch, admission_type
|
|
),
|
|
KEY idx_school_external_codes_school (school_id),
|
|
CONSTRAINT fk_school_external_codes_school
|
|
FOREIGN KEY (school_id) REFERENCES schools(school_id),
|
|
CONSTRAINT fk_school_external_codes_source
|
|
FOREIGN KEY (source_id) REFERENCES data_sources(source_id)
|
|
) ENGINE=InnoDB COMMENT='学校在省级招生等外部系统中的年度代码映射';
|
|
|
|
CREATE TABLE IF NOT EXISTS school_campuses (
|
|
campus_id CHAR(36) NOT NULL COMMENT '系统内部稳定校区UUID',
|
|
school_id CHAR(36) NOT NULL COMMENT '关联schools表的学校UUID',
|
|
campus_name VARCHAR(255) NOT NULL COMMENT '校区正式名称或常用名称',
|
|
province_name VARCHAR(64) NULL COMMENT '校区所在省级行政区名称',
|
|
city_name VARCHAR(128) NULL COMMENT '校区所在城市名称',
|
|
district_name VARCHAR(128) NULL COMMENT '校区所在区县名称',
|
|
address_text VARCHAR(512) NULL COMMENT '经官方来源核验的校区详细地址',
|
|
longitude DECIMAL(10, 7) NULL COMMENT '校区经度,采用WGS84或约定坐标系并在来源中说明',
|
|
latitude DECIMAL(10, 7) NULL COMMENT '校区纬度,采用WGS84或约定坐标系并在来源中说明',
|
|
is_main_campus BOOLEAN NOT NULL DEFAULT FALSE COMMENT '是否为学校主校区,1是、0否',
|
|
verification_status VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT '校区信息核验状态,如pending、verified或rejected',
|
|
source_id BIGINT UNSIGNED NOT NULL COMMENT '校区名称、地址和坐标的数据来源ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '校区记录创建时间',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '校区记录最近更新时间',
|
|
PRIMARY KEY (campus_id),
|
|
UNIQUE KEY uk_school_campus_name (school_id, campus_name),
|
|
CONSTRAINT fk_school_campuses_school
|
|
FOREIGN KEY (school_id) REFERENCES schools(school_id),
|
|
CONSTRAINT fk_school_campuses_source
|
|
FOREIGN KEY (source_id) REFERENCES data_sources(source_id)
|
|
) ENGINE=InnoDB COMMENT='学校校区、地址及地理位置基础信息';
|
|
|
|
CREATE TABLE IF NOT EXISTS stg_moe_schools (
|
|
ingestion_run_id CHAR(36) NOT NULL COMMENT '关联本次导入任务UUID',
|
|
source_row_number INT UNSIGNED NOT NULL COMMENT '记录在教育部原始文件中的行号',
|
|
moe_school_code CHAR(10) NOT NULL COMMENT '原始文件中的教育部十位学校标识码',
|
|
official_name VARCHAR(255) NOT NULL COMMENT '原始文件中的学校正式名称',
|
|
province_name VARCHAR(64) NOT NULL COMMENT '从原始文件省份分组标题解析出的省级行政区',
|
|
city_name VARCHAR(128) NOT NULL COMMENT '原始文件中的学校所在地',
|
|
authority_name VARCHAR(255) NOT NULL COMMENT '原始文件中的学校主管部门',
|
|
education_level VARCHAR(32) NOT NULL COMMENT '原始文件中的办学层次',
|
|
source_remark VARCHAR(255) NULL COMMENT '原始文件中的备注内容',
|
|
PRIMARY KEY (ingestion_run_id, source_row_number),
|
|
UNIQUE KEY uk_stg_moe_run_code (ingestion_run_id, moe_school_code)
|
|
) ENGINE=InnoDB COMMENT='教育部全国高校名单导入暂存表';
|
|
|
|
CREATE OR REPLACE VIEW v_school_basic AS
|
|
SELECT
|
|
s.school_id,
|
|
s.moe_school_code,
|
|
s.official_name,
|
|
s.province_name,
|
|
s.city_name,
|
|
s.authority_name,
|
|
s.education_level,
|
|
s.ownership_type,
|
|
s.source_remark,
|
|
s.school_status,
|
|
s.first_seen_year,
|
|
s.last_seen_year,
|
|
ds.publisher AS source_publisher,
|
|
ds.title AS source_title,
|
|
ds.landing_page_url AS source_url,
|
|
ds.published_on AS source_published_on,
|
|
s.updated_at
|
|
FROM schools s
|
|
JOIN data_sources ds ON ds.source_id=s.source_id;
|
|
|
|
-- 从项目根目录通过 MySQL 客户端执行本文件时,继续创建甘肃招录业务表。
|
|
SOURCE database/migrations/003_create_gansu_admission_tables.sql;
|
|
SOURCE database/migrations/005_create_review_tables.sql;
|
|
SOURCE database/migrations/006_create_collection_scopes.sql;
|
|
SOURCE database/migrations/007_add_gaokao_compass_2025_tables.sql;
|
|
SOURCE database/migrations/008_create_publication_and_dimension_tables.sql;
|
|
SOURCE database/migrations/011_create_versioned_public_read_models.sql;
|
|
SOURCE database/migrations/012_create_automated_review_runs.sql;
|
|
|