有关志愿通的代码仓库
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

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;