智能志愿辅助填报系统数据库设计

项目地址:https://gitee.com/Sosdnnd/xlswk

一、项目背景与数据库需求

随着高考志愿填报的个性化需求日益增强,我们开发了一款面向全国考生的智能志愿辅助填报系统,目标是基于用户成绩、兴趣、职业倾向、地域偏好等因素,借助 AI 模型与数据分析,为考生提供个性化的志愿推荐方案。

数据库作为系统核心,需要满足以下特性:
1. 结构清晰,模块对应
2. 支持大数据分析、智能推荐、实时导出
3. 易扩展,可对接 NLP、AI 模型、政策数据源等

二、数据库设计总体思路

对应模块拆解如下:

用户管理:users, user_profile, user_preferences
院校与专业数据采集:colleges, majors, admissions, policies
智能推荐与优化:recommendations, simulate_warnings
用户倾向分析(NLP):user_tendency
导出与历史记录:export_history
辅助查询与统计:search_logs, chart_cache
 

三、核心表结构说明

1. 用户数据表(基本信息与偏好)

用户信息与志愿倾向分表设计,方便灵活扩展(如新增偏好权重、职业目标等字段)。

2. 院校与招生数据

支持多省份、多年份信息,支持与推荐模块联动分析。

3. 推荐结果与优化

推荐结果以 JSON 存储,便于前端灵活渲染、后续支持 AI 接口返回结构。

4. 用户意图分析(倾向建模)

使用 DeepSeek 或大语言模型从关键词中识别“偏就业”“偏研究”等倾向,辅助个性推荐。

5. 历史记录与导出功能

导出文件记录路径、类型,可结合 OSS/CDN 管理;chart_cache 支持热门图表快速加载。

-- 创建数据库

DROP DATABASE IF EXISTS volunteer_system;

CREATE DATABASE volunteer_system DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;

USE volunteer_system;

-- 用户模块

CREATE TABLE users (

    user_id INT AUTO_INCREMENT PRIMARY KEY,

    username VARCHAR(50) NOT NULL UNIQUE,

    password_hash VARCHAR(255) NOT NULL,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

CREATE TABLE user_profile (

    user_id INT PRIMARY KEY,

    real_name VARCHAR(50),

    province VARCHAR(50),

    subject_type ENUM('物理', '历史'),

    total_score INT,

    rank INT,

    email VARCHAR(100),

    phone VARCHAR(20),

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

CREATE TABLE user_preferences (

    user_id INT PRIMARY KEY,

    prefer_abroad BOOLEAN,

    prefer_postgrad BOOLEAN,

    prefer_employment BOOLEAN,

    adjust_accept BOOLEAN,

    prefer_big_city BOOLEAN,

    prefer_type ENUM('冲稳保', '求稳', '尽力冲刺'),

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

-- 院校、专业、政策数据

CREATE TABLE colleges (

    college_id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(100),

    province VARCHAR(50),

    level ENUM('双一流', '985', '211', '普通'),

    qs_rank INT,

    usnews_rank INT

);

CREATE TABLE majors (

    major_id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(100),

    category VARCHAR(50),

    required_subjects VARCHAR(100)

);

CREATE TABLE admissions (

    admission_id INT AUTO_INCREMENT PRIMARY KEY,

    college_id INT,

    major_id INT,

    year INT,

    min_score INT,

    min_rank INT,

    num_enrolled INT,

    FOREIGN KEY (college_id) REFERENCES colleges(college_id),

    FOREIGN KEY (major_id) REFERENCES majors(major_id)

);

CREATE TABLE policies (

    policy_id INT AUTO_INCREMENT PRIMARY KEY,

    title VARCHAR(100),

    content TEXT,

    region VARCHAR(50),

    effective_year INT,

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP

);

-- 推荐与志愿优化模块

CREATE TABLE recommendations (

    rec_id INT AUTO_INCREMENT PRIMARY KEY,

    user_id INT,

    generated_at DATETIME DEFAULT CURRENT_TIMESTAMP,

    method ENUM('本地打分', 'DeepSeek', '混合') DEFAULT '混合',

    result_json JSON,

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

CREATE TABLE simulate_warnings (

    warn_id INT AUTO_INCREMENT PRIMARY KEY,

    rec_id INT,

    message TEXT,

    severity ENUM('高', '中', '低'),

    FOREIGN KEY (rec_id) REFERENCES recommendations(rec_id)

);

-- 用户倾向分析

CREATE TABLE user_tendency (

    user_id INT PRIMARY KEY,

    tendency_json JSON,

    nlp_keywords TEXT,

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

-- 导出历史

CREATE TABLE export_history (

    export_id INT AUTO_INCREMENT PRIMARY KEY,

    user_id INT,

    file_type ENUM('PDF', 'Excel'),

    generated_at DATETIME DEFAULT CURRENT_TIMESTAMP,

    file_path VARCHAR(255),

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

-- 辅助查询日志

CREATE TABLE search_logs (

    log_id INT AUTO_INCREMENT PRIMARY KEY,

    user_id INT,

    query_type ENUM('学校', '专业', '分数线', '政策'),

    query_content VARCHAR(255),

    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

-- 可视化图表缓存

CREATE TABLE chart_cache (

    cache_id INT AUTO_INCREMENT PRIMARY KEY,

    user_id INT,

    chart_type VARCHAR(50),

    chart_data JSON,

    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP,

    FOREIGN KEY (user_id) REFERENCES users(user_id)

);

你可能感兴趣的:(python)