Files
lw/任务/高考志愿辅助填报系统-数据库设计报告.md
2026-02-05 01:22:52 +08:00

8.2 KiB
Raw Blame History

一、基于SpringBoot框架的高考志愿辅助填报系统-数据库设计报告

文件状态:
[ ] 草稿
[ ] 正式发布
[ ] 正在修改
文件标识:
当前版本:
作 者:
完成日期:

重庆工程学院
Chongqing Institute of Engineering

版本历史

版本/状态 作者 参与者 起止日期 备注
1.0

目录

  1. 文档介绍
  2. 数据库环境说明
  3. 数据库命名规则
  4. 概念及逻辑设计
  5. 物理设计
  6. 安全性设计
  7. 性能优化方法
  8. 数据库管理与维护说明

0. 文档介绍

0.1 文档目的

本份是基于SpringBoot框架的高考志愿辅助填报系统的数据库设计说明主要用于说明数据库环境、命名规则、逻辑、物理设计以及数据库的安全性设计和数据库管理和维护说明。

0.2 文档范围

包括数据库环境、命名规则、逻辑、物理设计以及数据库的安全性设计和数据库管理和维护说明。

0.3 读者对象

项目管理员、用户以及开发人员、测试人员。

0.4 参考文档

0.5 术语与缩写解释

缩写、术语 解 释

1. 数据库环境说明

1.1 数据库系统MySQL 8.0+

1.2 设计工具Enterprise Architect、Navicat Premium 15

2. 数据库命名规则

  • 避免使用常用的名称空间中类型名称如class。

  • 避免使用常用关键词有冲突的标识符如order。

  • 采取加前缀组合方式。

  • 属性用名词或名词短语命名属性。

3. 概念及逻辑设计

3.1. E-R图

erDiagram
    sys_user ||--o{ biz_volunteer_plan : "创建"
    biz_volunteer_plan ||--|{ biz_plan_item : "包含"
    base_university ||--|{ biz_admission_data : "关联"
    base_major ||--|{ biz_admission_data : "关联"
    
    sys_user {
        string username
        string password
        int score
        int rank
    }
    
    biz_volunteer_plan {
        bigint id
        bigint user_id
        string plan_name
        datetime create_time
    }
    
    biz_plan_item {
        bigint id
        bigint plan_id
        bigint uni_id
        string uni_name
        string major_name
        int sort_order
    }

3.2. 逻辑设计

本系统数据库设计遵循第三范式3NF确保数据结构合理减少冗余。 主要关系模式如下:

  1. 用户相关:用户(User)通过用户角色关联表(UserRole)与角色(Role)呈多对多关系。
  2. 志愿相关:用户(User)与志愿方案(Plan)呈一对多关系;志愿方案(Plan)与志愿明细(Item)呈一对多关系。
  3. 数据相关:院校(University)和专业(Major)通过录取数据表(AdmissionData)关联,形成不同年份的录取分数记录。

4. 物理设计

4.1. 表汇总

数据表 名称
sys_user 系统用户表
sys_role 系统角色表
sys_user_role 用户角色关联表
base_university 院校基础信息表
base_major 专业基础信息表
biz_admission_data 历年录取数据表
biz_score_segment 一分一段表
biz_volunteer_plan 用户志愿模拟方案表
biz_plan_item 志愿方案明细表

4.2. XXX表

4.2.1 sys_user (系统用户表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
username varchar 50 N N 用户名/学号
password varchar 100 N N 加密密码
real_name varchar 50 N Y 真实姓名
score int 11 N Y 高考分数
rank int 11 N Y 全省位次
province varchar 20 N Y 考生省份
subject_type varchar 10 N Y 科类(物理/历史)
create_time datetime N N 创建时间

4.2.2 base_university (院校基础信息表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
code varchar 20 N N 院校代码
name varchar 100 N N 院校名称
level varchar 20 N Y 办学层次(本科/专科)
tags varchar 200 N Y 标签985/211/双一流)
location varchar 50 N Y 所在地

4.2.3 biz_admission_data (录取数据表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
year int 4 N N 年份
uni_id bigint 20 N N 院校ID
major_name varchar 100 N N 专业名称
min_score int 11 N N 最低分
min_rank int 11 N N 最低位次

4.2.4 biz_volunteer_plan (用户志愿模拟方案表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
user_id bigint 20 N N 用户ID
plan_name varchar 50 N N 方案名称
risk_level int 2 N Y 总体风险等级
create_time datetime N N 创建时间

4.2.5 biz_plan_item (志愿方案明细表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
plan_id bigint 20 N N 方案ID
uni_id bigint 20 N N 院校ID
major_name varchar 100 N N 专业名称
prob_rate int 4 N Y 录取概率(%)
sort_order int 4 N N 志愿顺序

4.2.6 sys_role (系统角色表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
role_name varchar 50 N N 角色名称
role_code varchar 50 N N 角色编码
description varchar 200 N Y 描述

4.2.7 sys_user_role (用户角色关联表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
user_id bigint 20 N N 用户ID
role_id bigint 20 N N 角色ID

4.2.8 base_major (专业基础信息表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
code varchar 20 N N 专业代码
name varchar 100 N N 专业名称
category varchar 50 N Y 学科门类
degree varchar 20 N Y 授予学位

4.2.9 biz_score_segment (一分一段表)

字段名 类型 长度 是否主键 允许空 说明
id bigint 20 Y N 主键ID
year int 4 N N 年份
province varchar 20 N N 省份
score int 11 N N 分数
count int 11 N N 同分人数
ranking int 11 N N 累计位次

5. 安全性设计

5.1. 帐号与密码管理

  1. 账号唯一性sys_user 表中 username 字段设置唯一索引,防止重复注册。
  2. 密码复杂度:前端校验密码强度(长度、字符组合),后端再次校验。
  3. 敏感信息脱敏:用户身份证号(如有)、手机号在展示时进行掩码处理。

5.2. 密码加密方法

系统不存储明文密码。采用 BCrypt 算法对用户密码进行加盐哈希加密存储。验证时使用相同算法比对,确保即使数据库泄露,攻击者也难以破解密码。

5.3. 角色与权限

角色 可以访问的表 操作权限
系统管理员 所有表 增删改查 (ALL)
考生 sys_user (自己的记录) 查询、修改 (Own)
考生 base_, biz_admission_ 查询 (Read Only)
考生 biz_volunteer_* (自己的记录) 增删改查 (Own)

6. 性能优化方法

  1. 查询优化:避免使用不必要的连接和子查询,选择合适的数据类型和聚合函数,优化查询语句可以提高查询速度

  2. 缓存优化:将频繁使用的数据和查询结果缓存起来可以减少对数据库的访问次数,提高性能。

7. 数据库管理与维护说明

  1. 数据库设计:考虑数据模型、数据结构、数据类型等,以确保数据库的高效性和可靠性。

  2. 安装与配置:根据需求选择合适的版本,并进行必要的配置,如内存分配、磁盘空间等。

  3. 数据备份与恢复:定期备份数据库可以确保在发生数据丢失或损坏时能够及时恢复数据。

  4. 性能调整:对数据库进行性能调整可以提高数据库的响应速度和效率。

  5. 安全管理:采取适当的措施确保数据库的安全性,如访问控制、加密等。

  6. 更新和维护:及时更新数据库和相关软件,并对数据库进行维护和修复,以确保系统的稳定和可靠性。