23 KiB
23 KiB
招生迎新系统数据库设计
📋 文档信息
| 项目 | 信息 |
|---|---|
| 项目名称 | 校园管理系统 - 招生迎新模块 |
| 数据库设计 | 招生信息填报与录取管理 |
| 文档版本 | V1.0.0 |
| 创建时间 | 2025-01-15 |
| 设计人员 | 技术团队 |
🎯 设计概述
设计原则
- 严格遵循项目数据库建设规范(
mysql-database-standard.md) - 使用雪花ID作为主键,支持多租户和逻辑删除
- 完整的审计字段和中文注释
- 合理的索引设计,优化查询性能
核心表结构
- zsjy_enrollment_info - 报名信息主表(48个字段)
- zsjy_enrollment_process - 录取流程状态表
- zsjy_enrollment_audit - 审核记录表
- zsjy_major_info - 专业信息表
- zsjy_enrollment_statistics - 统计数据表
📊 数据表设计
1. 报名信息主表 (zsjy_enrollment_info)
-- ----------------------------
-- Table structure for zsjy_enrollment_info
-- ----------------------------
DROP TABLE IF EXISTS `zsjy_enrollment_info`;
CREATE TABLE `zsjy_enrollment_info` (
-- 基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 基本信息
`name` varchar(50) NOT NULL COMMENT '姓名',
`id_card` varchar(18) NOT NULL COMMENT '身份证号',
`gender` char(1) NOT NULL COMMENT '性别(0-男 1-女)',
`is_boarding` tinyint(1) DEFAULT 0 COMMENT '是否住校(0-否 1-是)',
`birth_date` date DEFAULT NULL COMMENT '出生年月',
`phone1` varchar(20) NOT NULL COMMENT '联系手机号码1',
`phone2` varchar(20) DEFAULT NULL COMMENT '联系手机号码2',
`nation` varchar(20) DEFAULT '汉族' COMMENT '民族',
`home_address` varchar(200) DEFAULT NULL COMMENT '家庭地址',
-- 学业信息
`middle_school` varchar(100) DEFAULT NULL COMMENT '初中毕业学校',
`exam_number` varchar(50) DEFAULT NULL COMMENT '准考证号码',
`exam_region` varchar(50) DEFAULT NULL COMMENT '参加中考地区',
`total_score_full` int(11) DEFAULT NULL COMMENT '当地中考满分',
`total_score` int(11) DEFAULT NULL COMMENT '考生中考成绩(含体育)',
-- 中考单科成绩
`chinese_score` decimal(5,2) DEFAULT NULL COMMENT '语文成绩',
`math_score` decimal(5,2) DEFAULT NULL COMMENT '数学成绩',
`english_score` decimal(5,2) DEFAULT NULL COMMENT '英语成绩',
`science_score` decimal(5,2) DEFAULT NULL COMMENT '科学成绩',
`social_score` decimal(5,2) DEFAULT NULL COMMENT '社会成绩',
`pe_score` decimal(5,2) DEFAULT NULL COMMENT '体育成绩',
-- 报考信息
`applied_major` varchar(100) NOT NULL COMMENT '报考专业',
`major_code` varchar(20) DEFAULT NULL COMMENT '专业代码',
-- 个人信息
`uniform_size` varchar(20) DEFAULT NULL COMMENT '校服尺码',
`health_status` text DEFAULT NULL COMMENT '健康情况',
`specialties` text DEFAULT NULL COMMENT '特长',
`awards` text DEFAULT NULL COMMENT '奖惩情况',
-- 报名状态
`enrollment_status` char(1) DEFAULT '0' COMMENT '报名状态(0-待审核 1-信息审核中 2-录取处理中 3-待最终确认 4-录取完成 9-已驳回)',
`application_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间',
`qr_code_source` varchar(100) DEFAULT NULL COMMENT '二维码来源标识',
-- 备注信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_id_card` (`tenant_id`, `id_card`, `deleted`),
UNIQUE KEY `uk_exam_number` (`tenant_id`, `exam_number`, `deleted`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_enrollment_status` (`enrollment_status`),
KEY `idx_application_time` (`application_time`),
KEY `idx_name` (`name`),
KEY `idx_applied_major` (`applied_major`),
KEY `idx_phone1` (`phone1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生报名信息表';
2. 录取流程状态表 (zsjy_enrollment_process)
-- ----------------------------
-- Table structure for zsjy_enrollment_process
-- ----------------------------
DROP TABLE IF EXISTS `zsjy_enrollment_process`;
CREATE TABLE `zsjy_enrollment_process` (
-- 基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`enrollment_id` bigint(20) NOT NULL COMMENT '报名信息ID,关联zsjy_enrollment_info.id',
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
`id_card` varchar(18) NOT NULL COMMENT '身份证号',
-- 流程状态
`current_status` char(1) DEFAULT '0' COMMENT '当前状态(0-待审核 1-信息审核中 2-录取处理中 3-待最终确认 4-录取完成 9-已驳回)',
`current_handler` bigint(20) DEFAULT NULL COMMENT '当前处理人ID',
`current_handler_name` varchar(50) DEFAULT NULL COMMENT '当前处理人姓名',
-- A老师信息审核
`info_audit_status` char(1) DEFAULT '0' COMMENT '信息审核状态(0-待审核 1-审核通过 9-审核驳回)',
`info_audit_user` bigint(20) DEFAULT NULL COMMENT '信息审核人ID',
`info_audit_user_name` varchar(50) DEFAULT NULL COMMENT '信息审核人姓名',
`info_audit_time` datetime DEFAULT NULL COMMENT '信息审核时间',
`info_audit_opinion` varchar(500) DEFAULT NULL COMMENT '信息审核意见',
-- B老师录取处理
`admission_status` char(1) DEFAULT '0' COMMENT '录取处理状态(0-待处理 1-处理完成 9-处理驳回)',
`admission_user` bigint(20) DEFAULT NULL COMMENT '录取处理人ID',
`admission_user_name` varchar(50) DEFAULT NULL COMMENT '录取处理人姓名',
`admission_time` datetime DEFAULT NULL COMMENT '录取处理时间',
`payment_status` char(1) DEFAULT '0' COMMENT '缴费状态(0-未缴费 1-已缴费)',
`payment_confirm_time` datetime DEFAULT NULL COMMENT '缴费确认时间',
`notice_number` varchar(50) DEFAULT NULL COMMENT '录取通知书号码',
`admission_opinion` varchar(500) DEFAULT NULL COMMENT '录取处理意见',
-- 部门领导最终确认
`final_audit_status` char(1) DEFAULT '0' COMMENT '最终审核状态(0-待确认 1-确认通过 9-确认驳回)',
`final_audit_user` bigint(20) DEFAULT NULL COMMENT '最终审核人ID',
`final_audit_user_name` varchar(50) DEFAULT NULL COMMENT '最终审核人姓名',
`final_audit_time` datetime DEFAULT NULL COMMENT '最终审核时间',
`final_audit_opinion` varchar(500) DEFAULT NULL COMMENT '最终审核意见',
-- 完成信息
`is_completed` tinyint(1) DEFAULT 0 COMMENT '是否完成录取(0-未完成 1-已完成)',
`completion_time` datetime DEFAULT NULL COMMENT '录取完成时间',
-- 备注信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_enrollment_id` (`tenant_id`, `enrollment_id`, `deleted`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_current_status` (`current_status`),
KEY `idx_current_handler` (`current_handler`),
KEY `idx_info_audit_status` (`info_audit_status`),
KEY `idx_admission_status` (`admission_status`),
KEY `idx_final_audit_status` (`final_audit_status`),
KEY `idx_is_completed` (`is_completed`),
KEY `idx_student_name` (`student_name`),
KEY `idx_id_card` (`id_card`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生录取流程状态表';
3. 审核记录表 (zsjy_enrollment_audit)
-- ----------------------------
-- Table structure for zsjy_enrollment_audit
-- ----------------------------
DROP TABLE IF EXISTS `zsjy_enrollment_audit`;
CREATE TABLE `zsjy_enrollment_audit` (
-- 基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 关联信息
`enrollment_id` bigint(20) NOT NULL COMMENT '报名信息ID,关联zsjy_enrollment_info.id',
`student_name` varchar(50) NOT NULL COMMENT '学生姓名',
`id_card` varchar(18) NOT NULL COMMENT '身份证号',
-- 审核信息
`audit_type` char(1) NOT NULL COMMENT '审核类型(1-信息审核 2-录取处理 3-最终确认)',
`audit_result` char(1) NOT NULL COMMENT '审核结果(1-通过 9-驳回)',
`audit_user` bigint(20) NOT NULL COMMENT '审核人ID',
`audit_user_name` varchar(50) NOT NULL COMMENT '审核人姓名',
`audit_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '审核时间',
`audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见',
-- 状态变更
`old_status` char(1) DEFAULT NULL COMMENT '变更前状态',
`new_status` char(1) DEFAULT NULL COMMENT '变更后状态',
-- 操作信息
`operation_type` varchar(20) DEFAULT NULL COMMENT '操作类型(审核、修改、驳回等)',
`operation_detail` text DEFAULT NULL COMMENT '操作详情(JSON格式记录修改内容)',
-- 备注信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_enrollment_id` (`enrollment_id`),
KEY `idx_audit_type` (`audit_type`),
KEY `idx_audit_result` (`audit_result`),
KEY `idx_audit_user` (`audit_user`),
KEY `idx_audit_time` (`audit_time`),
KEY `idx_student_name` (`student_name`),
KEY `idx_id_card` (`id_card`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生审核记录表';
4. 专业信息表 (zsjy_major_info)
-- ----------------------------
-- Table structure for zsjy_major_info
-- ----------------------------
DROP TABLE IF EXISTS `zsjy_major_info`;
CREATE TABLE `zsjy_major_info` (
-- 基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 专业信息
`major_code` varchar(20) NOT NULL COMMENT '专业代码',
`major_name` varchar(100) NOT NULL COMMENT '专业名称',
`major_type` varchar(50) DEFAULT NULL COMMENT '专业类型(预备技师、高级工等)',
`department` varchar(100) DEFAULT NULL COMMENT '所属院系',
`education_level` varchar(20) DEFAULT NULL COMMENT '学历层次',
`school_system` int(11) DEFAULT 3 COMMENT '学制(年)',
-- 招生信息
`enrollment_year` int(11) NOT NULL COMMENT '招生年度',
`planned_count` int(11) DEFAULT 0 COMMENT '计划招生人数',
`current_count` int(11) DEFAULT 0 COMMENT '当前报名人数',
`admission_count` int(11) DEFAULT 0 COMMENT '已录取人数',
-- 状态信息
`status` char(1) DEFAULT '1' COMMENT '状态(0-停用 1-启用)',
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
`is_popular` tinyint(1) DEFAULT 0 COMMENT '是否热门专业(0-否 1-是)',
-- 专业描述
`description` text DEFAULT NULL COMMENT '专业描述',
`requirements` text DEFAULT NULL COMMENT '报考要求',
-- 备注信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_major_code` (`tenant_id`, `major_code`, `enrollment_year`, `deleted`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_enrollment_year` (`enrollment_year`),
KEY `idx_status` (`status`),
KEY `idx_major_name` (`major_name`),
KEY `idx_sort_order` (`sort_order`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专业信息表';
5. 统计数据表 (zsjy_enrollment_statistics)
-- ----------------------------
-- Table structure for zsjy_enrollment_statistics
-- ----------------------------
DROP TABLE IF EXISTS `zsjy_enrollment_statistics`;
CREATE TABLE `zsjy_enrollment_statistics` (
-- 基础字段(必须)
`id` bigint(20) NOT NULL COMMENT '主键ID',
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
-- 统计维度
`stat_date` date NOT NULL COMMENT '统计日期',
`stat_type` varchar(20) NOT NULL COMMENT '统计类型(daily-日统计 monthly-月统计 yearly-年统计)',
`dimension_type` varchar(20) NOT NULL COMMENT '维度类型(major-专业 region-地域 school-学校 score-分数段 gender-性别)',
`dimension_value` varchar(100) NOT NULL COMMENT '维度值',
-- 统计数据
`application_count` int(11) DEFAULT 0 COMMENT '报名人数',
`male_count` int(11) DEFAULT 0 COMMENT '男生人数',
`female_count` int(11) DEFAULT 0 COMMENT '女生人数',
`admission_count` int(11) DEFAULT 0 COMMENT '录取人数',
`payment_count` int(11) DEFAULT 0 COMMENT '缴费人数',
`completion_count` int(11) DEFAULT 0 COMMENT '完成录取人数',
-- 成绩统计
`avg_total_score` decimal(8,2) DEFAULT NULL COMMENT '平均总分',
`max_total_score` decimal(8,2) DEFAULT NULL COMMENT '最高总分',
`min_total_score` decimal(8,2) DEFAULT NULL COMMENT '最低总分',
-- 比率统计
`admission_rate` decimal(5,2) DEFAULT NULL COMMENT '录取率(%)',
`payment_rate` decimal(5,2) DEFAULT NULL COMMENT '缴费率(%)',
`completion_rate` decimal(5,2) DEFAULT NULL COMMENT '完成率(%)',
-- 备注信息
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
-- 主键和索引
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `uk_stat_dimension` (`tenant_id`, `stat_date`, `stat_type`, `dimension_type`, `dimension_value`, `deleted`),
KEY `idx_tenant_id` (`tenant_id`),
KEY `idx_deleted` (`deleted`),
KEY `idx_stat_date` (`stat_date`),
KEY `idx_stat_type` (`stat_type`),
KEY `idx_dimension_type` (`dimension_type`),
KEY `idx_dimension_value` (`dimension_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招生统计数据表';
📝 初始数据脚本
专业信息初始数据
-- 插入26个专业信息
INSERT INTO `zsjy_major_info` (
`id`, `tenant_id`, `major_code`, `major_name`, `major_type`, `department`,
`education_level`, `school_system`, `enrollment_year`, `planned_count`,
`status`, `sort_order`, `create_by`, `create_time`
) VALUES
-- 机械工程类
(1, '000000', 'DQZD001', '电气自动化设备安装与维修', '高级工', '机械工程系', '中职', 3, 2025, 50, '1', 1, 1, NOW()),
(2, '000000', 'GYJQR001', '工业机器人应用与维护', '高级工', '机械工程系', '中职', 3, 2025, 40, '1', 2, 1, NOW()),
(3, '000000', 'WRJYY001', '无人机应用技术', '高级工', '机械工程系', '中职', 3, 2025, 30, '1', 3, 1, NOW()),
(4, '000000', 'GYHW001', '工业互联网与大数据应用', '高级工', '信息技术系', '中职', 3, 2025, 35, '1', 4, 1, NOW()),
(5, '000000', 'SZHSJ001', '数字化设计与制造', '高级工', '机械工程系', '中职', 3, 2025, 40, '1', 5, 1, NOW()),
(6, '000000', 'ZNZZ001', '智能制作技术应用', '高级工', '机械工程系', '中职', 3, 2025, 35, '1', 6, 1, NOW()),
-- 汽车工程类
(7, '000000', 'QCWX001', '汽车维修', '高级工', '汽车工程系', '中职', 3, 2025, 45, '1', 7, 1, NOW()),
(8, '000000', 'CPJC001', '产品检测与质量控制', '高级工', '机械工程系', '中职', 3, 2025, 30, '1', 8, 1, NOW()),
-- 医药化工类
(9, '000000', 'ZY001', '中药', '高级工', '医药化工系', '中职', 3, 2025, 40, '1', 9, 1, NOW()),
(10, '000000', 'YWZJ001', '药物制剂', '预备技师', '医药化工系', '高技', 4, 2025, 35, '1', 10, 1, NOW()),
(11, '000000', 'YWZJ002', '药物制剂', '高级工', '医药化工系', '中职', 3, 2025, 40, '1', 11, 1, NOW()),
(12, '000000', 'YPYX001', '药品营销', '高级工', '医药化工系', '中职', 3, 2025, 30, '1', 12, 1, NOW()),
(13, '000000', 'JKFW001', '健康服务与管理', '高级工', '医药化工系', '中职', 3, 2025, 35, '1', 13, 1, NOW()),
-- 园林建筑类
(14, '000000', 'YLJS001', '园林技术', '预备技师', '园林建筑系', '高技', 4, 2025, 30, '1', 14, 1, NOW()),
(15, '000000', 'YLJS002', '园林技术', '高级工', '园林建筑系', '中职', 3, 2025, 35, '1', 15, 1, NOW()),
(16, '000000', 'YLJS003', '园林技术(园林景观与工程施工)', '高级工', '园林建筑系', '中职', 3, 2025, 30, '1', 16, 1, NOW()),
(17, '000000', 'HJYS001', '环境艺术设计', '高级工', '园林建筑系', '中职', 3, 2025, 35, '1', 17, 1, NOW()),
-- 酒店管理类
(18, '000000', 'JDGL001', '酒店管理', '预备技师', '服务管理系', '高技', 4, 2025, 25, '1', 18, 1, NOW()),
(19, '000000', 'JDGL002', '酒店管理', '高级工', '服务管理系', '中职', 3, 2025, 30, '1', 19, 1, NOW()),
(20, '000000', 'PR001', '烹饪(中式烹调)', '高级工', '服务管理系', '中职', 3, 2025, 40, '1', 20, 1, NOW()),
(21, '000000', 'PR002', '烹饪(中西式面点)', '高级工', '服务管理系', '中职', 3, 2025, 35, '1', 21, 1, NOW()),
-- 信息技术类
(22, '000000', 'DZWS001', '电子商务', '高级工', '信息技术系', '中职', 3, 2025, 45, '1', 22, 1, NOW()),
(23, '000000', 'SZMT001', '数字媒体技术应用', '高级工', '信息技术系', '中职', 3, 2025, 40, '1', 23, 1, NOW()),
(24, '000000', 'RGZN001', '人工智能技术应用', '高级工', '信息技术系', '中职', 3, 2025, 35, '1', 24, 1, NOW()),
(25, '000000', 'WLXX001', '网络与信息安全', '高级工', '信息技术系', '中职', 3, 2025, 30, '1', 25, 1, NOW()),
(26, '000000', 'MSSJ001', '美术设计与制作', '高级工', '艺术设计系', '中职', 3, 2025, 35, '1', 26, 1, NOW());
🔍 索引优化说明
查询优化策略
1. 主要查询场景
- 按状态查询报名信息(enrollment_status)
- 按专业统计报名人数(applied_major)
- 按时间范围查询(application_time)
- 按审核人查询待处理任务(current_handler)
2. 组合索引设计
-- 报名信息表的组合索引
ALTER TABLE `zsjy_enrollment_info` ADD INDEX `idx_status_major` (`enrollment_status`, `applied_major`);
ALTER TABLE `zsjy_enrollment_info` ADD INDEX `idx_time_status` (`application_time`, `enrollment_status`);
-- 流程状态表的组合索引
ALTER TABLE `zsjy_enrollment_process` ADD INDEX `idx_handler_status` (`current_handler`, `current_status`);
ALTER TABLE `zsjy_enrollment_process` ADD INDEX `idx_audit_time` (`info_audit_time`, `admission_time`, `final_audit_time`);
3. 分区表建议
对于大数据量的统计表,建议按日期分区:
-- 统计表分区(按年分区)
ALTER TABLE `zsjy_enrollment_statistics`
PARTITION BY RANGE (YEAR(stat_date)) (
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION p2025 VALUES LESS THAN (2026),
PARTITION p2026 VALUES LESS THAN (2027),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
🎯 数据字典
状态码说明
报名状态 (enrollment_status)
0- 待审核1- 信息审核中2- 录取处理中3- 待最终确认4- 录取完成9- 已驳回
性别 (gender)
M- 男F- 女
审核类型 (audit_type)
1- 信息审核(A老师)2- 录取处理(B老师)3- 最终确认(部门领导)
审核结果 (audit_result)
1- 通过9- 驳回
缴费状态 (payment_status)
0- 未缴费1- 已缴费
校服尺码选项
- 150/84A, 155/86A, 160/88A, 165/90A, 170/92A, 175/94A, 180/96A, 185/98A, 190/100A
📋 数据完整性约束
业务规则约束
1. 数据唯一性
- 身份证号在同一租户下唯一
- 准考证号在同一租户下唯一
- 专业代码在同一年度同一租户下唯一
2. 状态流转约束
- 报名状态只能按序流转:0→1→2→3→4
- 驳回状态(9)可以从任何状态流转
- 审核记录必须与流程状态保持一致
3. 数据关联约束
- enrollment_process.enrollment_id 必须关联有效的 enrollment_info.id
- audit 记录必须关联有效的 enrollment_info.id
- 统计数据的维度值必须在有效范围内
触发器建议
-- 报名信息变更时自动更新流程状态
DELIMITER $$
CREATE TRIGGER `tr_enrollment_info_update`
AFTER UPDATE ON `zsjy_enrollment_info`
FOR EACH ROW
BEGIN
IF OLD.enrollment_status != NEW.enrollment_status THEN
UPDATE `zsjy_enrollment_process`
SET `current_status` = NEW.enrollment_status,
`update_time` = NOW()
WHERE `enrollment_id` = NEW.id;
END IF;
END$$
DELIMITER ;
🔄 数据迁移和维护
定期维护任务
1. 统计数据更新
-- 每日统计数据更新脚本
INSERT INTO zsjy_enrollment_statistics
SELECT ... FROM zsjy_enrollment_info
WHERE DATE(application_time) = CURDATE();
2. 数据清理
-- 清理30天前的临时数据
DELETE FROM zsjy_enrollment_audit
WHERE deleted = 1 AND create_time < DATE_SUB(NOW(), INTERVAL 30 DAY);
3. 性能监控
-- 监控慢查询
SELECT * FROM information_schema.processlist
WHERE time > 10 AND command != 'Sleep';
📝 备注说明
- 数据库设计严格遵循项目规范,所有表都包含标准基础字段
- 支持多租户架构,通过tenant_id实现数据隔离
- 使用逻辑删除,保证数据安全和可追溯性
- 完整的审计字段,记录所有数据变更操作
- 合理的索引设计,优化常用查询场景的性能
- 预留扩展空间,支持后续功能需求的扩展