USE zhiyuantong; CREATE TABLE IF NOT EXISTS admission_batches ( admission_batch_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '招生批次段次自增主键', province_name VARCHAR(64) NOT NULL COMMENT '招生省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '招生年度', admission_category VARCHAR(32) NOT NULL COMMENT '招生类别,如普通类、艺术类或体育类', education_level VARCHAR(32) NOT NULL COMMENT '培养层次,如本科或高职专科', segment_code VARCHAR(8) NOT NULL COMMENT '甘肃录取段次代码,如A至I', batch_name VARCHAR(128) NOT NULL COMMENT '批次段次完整名称', volunteer_mode VARCHAR(32) NOT NULL COMMENT '志愿投档模式,如顺序志愿、单志愿或平行志愿', max_group_volunteers SMALLINT UNSIGNED NULL COMMENT '一次最多可填院校专业组志愿数,空值表示不适用或待核验', max_majors_per_group SMALLINT UNSIGNED NULL COMMENT '每个院校专业组最多可填专业数', solicitation_count TINYINT UNSIGNED NOT NULL DEFAULT 0 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 (admission_batch_id), UNIQUE KEY uk_admission_batches (province_name, admission_year, admission_category, segment_code), CONSTRAINT fk_admission_batches_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='省级高考招生批次、段次及志愿规则'; CREATE TABLE IF NOT EXISTS admission_plan_releases ( plan_release_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '招生计划发布批次自增主键', province_name VARCHAR(64) NOT NULL COMMENT '招生省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '招生年度', release_title VARCHAR(255) NOT NULL COMMENT '官方招生计划或剩余计划发布标题', plan_round VARCHAR(32) NOT NULL COMMENT '计划轮次,如初始、第一次征集或第六号公告', coverage_scope VARCHAR(32) NOT NULL COMMENT '数据覆盖范围,如full_initial或remaining_only', published_on DATE NULL COMMENT '计划发布日期', source_id BIGINT UNSIGNED NOT NULL COMMENT '计划发布对应的数据来源ID', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (plan_release_id), UNIQUE KEY uk_plan_releases_source (source_id), CONSTRAINT fk_plan_releases_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='省级招生计划及征集剩余计划发布批次'; CREATE TABLE IF NOT EXISTS admission_groups ( admission_group_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '院校专业组自增主键', plan_release_id BIGINT UNSIGNED NULL COMMENT '首次采集自招生计划时关联的发布批次ID;仅见于投档表时为空', province_name VARCHAR(64) NOT NULL COMMENT '招生省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '招生年度', admission_category VARCHAR(32) NOT NULL COMMENT '招生类别,如普通类、艺术类、体育类或中职升学', subject_category VARCHAR(32) NOT NULL COMMENT '科类或首选科目类别,如物理类、历史类、艺术类', segment_code VARCHAR(8) NOT NULL COMMENT '甘肃录取段次代码', school_id CHAR(36) NULL COMMENT '匹配到全国院校基础库的稳定学校UUID,未匹配时为空', source_school_code VARCHAR(16) NOT NULL COMMENT '甘肃当年发布的院校代号原值', school_name_raw VARCHAR(255) NOT NULL COMMENT '来源表中的院校名称原值', group_code VARCHAR(16) NOT NULL COMMENT '甘肃当年发布的院校专业组代码', group_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 (admission_group_id), UNIQUE KEY uk_admission_groups_natural (province_name, admission_year, admission_category, subject_category, segment_code, source_school_code, group_code), KEY idx_admission_groups_school (school_id), KEY idx_admission_groups_lookup (admission_year, subject_category, segment_code, source_school_code), CONSTRAINT fk_admission_groups_release FOREIGN KEY (plan_release_id) REFERENCES admission_plan_releases(plan_release_id), CONSTRAINT fk_admission_groups_school FOREIGN KEY (school_id) REFERENCES schools(school_id), CONSTRAINT fk_admission_groups_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='按年度、省份和段次版本化的院校专业组'; CREATE TABLE IF NOT EXISTS admission_major_plans ( major_plan_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '专业招生计划自增主键', admission_group_id BIGINT UNSIGNED NOT NULL COMMENT '关联院校专业组ID', plan_release_id BIGINT UNSIGNED NOT NULL COMMENT '关联招生计划发布批次ID,便于按快照查询', major_code VARCHAR(32) NOT NULL COMMENT '来源表中的专业代号', major_name VARCHAR(255) NOT NULL COMMENT '来源表中的专业或专业类名称', subject_requirements VARCHAR(255) NULL COMMENT '来源表中的考试科目或选考科目要求', plan_count INT UNSIGNED NOT NULL COMMENT '计划人数;征集表中表示剩余或缺额人数', tuition_yuan_per_year DECIMAL(10,2) NULL COMMENT '每学年学费,公开来源未提供时为空', study_years DECIMAL(3,1) NULL COMMENT '学制年数,公开来源未提供时为空', campus_name VARCHAR(255) NULL COMMENT '就读校区或办学地点,公开来源未提供时为空', notes TEXT NULL COMMENT '来源表中的专业备注及限制条件', source_row_number INT UNSIGNED NOT NULL COMMENT '记录在原始表格中的行号', source_id BIGINT UNSIGNED NOT NULL COMMENT '该专业计划对应的数据来源ID', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (major_plan_id), UNIQUE KEY uk_major_plans_source_row (source_id, source_row_number), KEY idx_major_plans_group (admission_group_id), KEY idx_major_plans_name (major_name), CONSTRAINT fk_major_plans_group FOREIGN KEY (admission_group_id) REFERENCES admission_groups(admission_group_id), CONSTRAINT fk_major_plans_release FOREIGN KEY (plan_release_id) REFERENCES admission_plan_releases(plan_release_id), CONSTRAINT fk_major_plans_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='院校专业组内的专业招生人数及征集缺额计划'; CREATE TABLE IF NOT EXISTS score_rank_points ( score_rank_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '一分一段记录自增主键', province_name VARCHAR(64) NOT NULL COMMENT '考试省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '高考年度', admission_category VARCHAR(32) NOT NULL COMMENT '招生类别,如普通类', subject_category VARCHAR(32) NOT NULL COMMENT '首选科目类别,如物理类或历史类', score DECIMAL(7,2) NOT NULL COMMENT '高考分数或综合排序分', same_score_count INT UNSIGNED NOT NULL COMMENT '取得该分数的考生人数,由相邻累计人数计算', cumulative_count INT UNSIGNED NOT NULL COMMENT '达到该分数及以上的累计考生人数', rank_from INT UNSIGNED NOT NULL COMMENT '该分数对应的最佳名次', rank_to INT UNSIGNED NOT NULL COMMENT '该分数对应的最末名次', source_sequence INT UNSIGNED NULL COMMENT '来源分段表中的序号', source_id BIGINT UNSIGNED NOT NULL COMMENT '一分一段表对应的数据来源ID', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (score_rank_id), UNIQUE KEY uk_score_rank_points (province_name, admission_year, admission_category, subject_category, score), KEY idx_score_rank_lookup (admission_year, subject_category, score), CONSTRAINT fk_score_rank_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='高考一分一段累计人数及位次区间'; CREATE TABLE IF NOT EXISTS control_score_lines ( control_line_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '省级录取控制线自增主键', province_name VARCHAR(64) NOT NULL COMMENT '招生省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '招生年度', admission_category VARCHAR(32) NOT NULL COMMENT '招生类别,如普通类、艺术类或体育类', subject_category VARCHAR(32) NOT NULL COMMENT '科类或首选科目类别', education_level VARCHAR(32) NOT NULL COMMENT '控制线层次,如特殊类型、本科或高职专科', culture_score DECIMAL(7,2) NOT NULL COMMENT '文化课录取最低控制分数', professional_score DECIMAL(7,2) NULL COMMENT '专业课录取最低控制分数,普通类为空', notes TEXT NULL COMMENT '控制线适用范围或计算口径说明', source_id BIGINT UNSIGNED NOT NULL COMMENT '控制线对应的数据来源ID', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (control_line_id), UNIQUE KEY uk_control_score_lines (province_name, admission_year, admission_category, subject_category, education_level), CONSTRAINT fk_control_lines_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='省级各类别各层次录取最低控制分数线'; CREATE TABLE IF NOT EXISTS admission_cutoff_lines ( cutoff_line_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '院校专业组投档线自增主键', province_name VARCHAR(64) NOT NULL COMMENT '招生省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '招生年度', admission_category VARCHAR(32) NOT NULL COMMENT '招生类别,如普通类', subject_category VARCHAR(32) NOT NULL COMMENT '首选科目类别,如物理类或历史类', education_level VARCHAR(32) NOT NULL COMMENT '培养层次,如本科或高职专科', segment_code VARCHAR(8) NOT NULL COMMENT '甘肃录取段次代码,如C或F', school_id CHAR(36) NULL COMMENT '匹配到全国院校基础库的稳定学校UUID,未匹配时为空', source_school_code VARCHAR(16) NOT NULL COMMENT '甘肃当年发布的院校代号原值', school_name_raw VARCHAR(255) NOT NULL COMMENT '来源表中的院校名称原值', group_code VARCHAR(16) NOT NULL COMMENT '甘肃当年发布的院校专业组代码', group_name VARCHAR(255) NOT NULL COMMENT '来源表中的院校专业组名称或类型', cutoff_score DECIMAL(7,2) NOT NULL COMMENT '该院校专业组平行志愿投档最低分', raw_total_score DECIMAL(7,2) NULL COMMENT '投档末位考生不含政策性照顾加分的总分', chinese_math_sum DECIMAL(7,2) NULL COMMENT '投档末位考生语文与数学成绩之和', chinese_or_math_max DECIMAL(7,2) NULL COMMENT '投档末位考生语文或数学单科最高成绩', foreign_language_score DECIMAL(7,2) NULL COMMENT '投档末位考生外语单科成绩', first_choice_subject_score DECIMAL(7,2) NULL COMMENT '投档末位考生首选科目单科成绩', second_choice_subject_max DECIMAL(7,2) NULL COMMENT '投档末位考生再选科目单科最高成绩', second_choice_subject_second DECIMAL(7,2) NULL COMMENT '投档末位考生再选科目单科次高成绩', volunteer_number SMALLINT UNSIGNED NULL COMMENT '投档末位考生被检索到的志愿序号', source_row_number INT UNSIGNED NOT NULL COMMENT '记录在原始表格中的行号', source_id BIGINT UNSIGNED NOT NULL COMMENT '投档线表对应的数据来源ID', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间', PRIMARY KEY (cutoff_line_id), UNIQUE KEY uk_cutoff_source_row (source_id, source_row_number), KEY idx_cutoff_lookup (admission_year, subject_category, education_level, segment_code, cutoff_score), KEY idx_cutoff_school (school_id), CONSTRAINT fk_cutoff_school FOREIGN KEY (school_id) REFERENCES schools(school_id), CONSTRAINT fk_cutoff_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='院校专业组平行志愿投档最低分及同分排序项'; CREATE TABLE IF NOT EXISTS dataset_coverage ( coverage_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '数据覆盖说明自增主键', dataset_name VARCHAR(128) NOT NULL COMMENT '数据集业务名称', province_name VARCHAR(64) NOT NULL COMMENT '数据适用省份名称', admission_year SMALLINT UNSIGNED NOT NULL COMMENT '数据所属招生年度', admission_category VARCHAR(32) NOT NULL DEFAULT '' COMMENT '招生类别,空字符串表示多类别或不区分', subject_category VARCHAR(32) NOT NULL DEFAULT '' COMMENT '科类,空字符串表示多科类或不区分', segment_code VARCHAR(8) NOT NULL DEFAULT '' COMMENT '录取段次,空字符串表示多段次或不区分', coverage_status VARCHAR(32) NOT NULL COMMENT '覆盖状态,如complete_public_snapshot、partial_public_snapshot或unavailable_publicly', record_count INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '本次已入库的业务记录数', notes TEXT NULL COMMENT '数据缺口、统计口径和不可公开原因说明', source_id BIGINT UNSIGNED NULL COMMENT '覆盖说明对应的数据来源ID,无单一来源时为空', updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '覆盖说明最近更新时间', PRIMARY KEY (coverage_id), UNIQUE KEY uk_dataset_coverage (dataset_name, province_name, admission_year, admission_category, subject_category, segment_code), CONSTRAINT fk_dataset_coverage_source FOREIGN KEY (source_id) REFERENCES data_sources(source_id) ) ENGINE=InnoDB COMMENT='各年度公开数据的覆盖范围、完整度及缺口说明'; CREATE OR REPLACE VIEW v_gansu_2024_cutoff_lines AS SELECT c.*, s.moe_school_code, s.official_name FROM admission_cutoff_lines c LEFT JOIN schools s ON s.school_id=c.school_id WHERE c.province_name='甘肃省' AND c.admission_year=2024;