学校管理系统 ER图

学校管理系统 ER图

一、核心实体关系

复制代码
┌─────────────────────────────────────────────────────────────────────────────────┐
│                              学校管理系统ER图                                    │
├─────────────────────────────────────────────────────────────────────────────────┤
└─────────────────────────────────────────────────────────────────────────────────┘

二、主要实体及其关系

1. 用户权限模块

复制代码
sys_user (用户表)
    ├── N:M ─── sys_role (角色表) ─── N:M ─── sys_menu (菜单权限表)
    ├── N:M ─── sys_dept (部门组织架构表)
    │
    ├── 1:1 ─── edu_student (学生信息表)
    ├── 1:1 ─── edu_teacher (教师信息表)
    ├── 1:1 ─── edu_staff (教职工信息表)
    │
    ├── 1:N ─── edu_parent (家长信息表)
    │
    ├── 1:N ─── miniprogram_user (小程序用户表)
    ├── 1:N ─── app_user (App用户表)
    │
    ├── 1:N ─── sys_oper_log (操作日志表)
    ├── 1:N ─── sys_login_log (登录日志表)
    └── 1:N ─── sys_internal_msg (站内信表 - 发送人)

关系说明:

  • sys_usersys_role: 多对多关系(一个用户可有多个角色,一个角色可有多个用户)
  • sys_rolesys_menu: 多对多关系(一个角色可有多个菜单权限,一个菜单可分配给多个角色)
  • sys_usersys_dept: 多对多关系(一个用户可在多个部门)
  • sys_useredu_student/edu_teacher/edu_staff: 一对一关系(通过user_type区分)

2. 学生教师教职工模块

复制代码
edu_student (学生信息表)
    ├── N:1 ─── edu_college (院系表)
    ├── N:1 ─── edu_major (专业表)
    ├── N:1 ─── edu_class (班级表)
    │
    ├── 1:1 ─── dormitory_bed (宿舍床位表)
    │
    ├── 1:N ─── edu_attendance (考勤表)
    ├── 1:N ─── edu_leave_application (请假申请表)
    ├── 1:N ─── cafeteria_order (食堂消费记录表)
    ├── 1:N ─── meal_card (饭卡表)
    ├── 1:N ─── festival_participant (活动参与人员表)
    └── 1:N ─── edu_parent (家长信息表)

edu_teacher (教师信息表)
    ├── N:1 ─── edu_college (院系表)
    ├── N:1 ─── sys_dept (部门表)
    │
    ├── 1:N ─── edu_class_schedule (上课安排表)
    ├── 1:N ─── edu_attendance (考勤表 - 教师记录)
    └── 1:N ─── edu_leave_application (请假申请表)

edu_staff (教职工信息表)
    ├── N:1 ─── sys_dept (部门表)
    ├── 1:N ─── edu_leave_application (请假申请表)
    └── 1:N ─── cafeteria_order (食堂消费记录表)

3. 教学管理模块

复制代码
edu_college (院系表)
    ├── 1:N ─── edu_major (专业表)
    ├── 1:N ─── edu_teacher (教师信息表)
    └── 1:N ─── edu_course (课程表)

edu_major (专业表)
    ├── N:1 ─── edu_college (院系表)
    ├── 1:N ─── edu_class (班级表)
    ├── 1:N ─── edu_course (课程表)
    └── 1:N ─── edu_teaching_plan (教学计划表)

edu_class (班级表)
    ├── N:1 ─── edu_college (院系表)
    ├── N:1 ─── edu_major (专业表)
    │
    ├── 1:N ─── edu_student (学生信息表)
    ├── 1:N ─── edu_class_schedule (上课安排表)
    └── 1:N ─── dormitory_application (宿舍申请表)

edu_course (课程表)
    ├── N:1 ─── edu_college (院系表)
    ├── N:1 ─── edu_major (专业表)
    │
    └── N:M ─── edu_teaching_plan (教学计划表)

edu_teaching_plan (教学计划表)
    ├── N:1 ─── edu_major (专业表)
    └── N:M ─── edu_course (课程表)

edu_class_schedule (上课安排表 - 核心表)
    ├── N:1 ─── edu_class (班级表)
    ├── N:1 ─── edu_course (课程表)
    ├── N:1 ─── edu_teacher (教师信息表)
    ├── N:1 ─── edu_classroom (教室表)
    │
    ├── 1:N ─── edu_attendance (考勤表)
    └── 1:N ─── edu_schedule_adjust (课表调整记录表)

edu_classroom (教室表)
    └── 1:N ─── edu_class_schedule (上课安排表)

核心关系链:

复制代码
edu_class ──> edu_class_schedule <─── edu_teacher
    │                │                │
    │                └──> edu_course <──┘
    │
    └──> edu_student ──> edu_attendance ──> edu_class_schedule

4. 请假考勤模块

复制代码
edu_leave_application (请假申请表)
    ├── N:1 ─── sys_user (用户表)
    ├── N:1 ─── edu_class (班级表 - 学生)
    ├── N:1 ─── sys_dept (部门表 - 教师/教职工)
    │
    ├── 1:N ─── edu_leave_approve_log (请假审批记录表)
    └── N:1 ─── sys_file (文件资源表 - 附件)

edu_leave_approve_log (请假审批记录表)
    └── N:1 ─── edu_leave_application (请假申请表)

edu_attendance (考勤表)
    ├── N:1 ─── edu_class_schedule (上课安排表)
    ├── N:1 ─── edu_student (学生信息表)
    ├── N:1 ─── edu_class (班级表)
    ├── N:1 ─── edu_course (课程表)
    └── N:1 ─── edu_teacher (教师信息表)

5. 食堂管理模块

复制代码
cafeteria (食堂表)
    └── 1:N ─── cafeteria_window (食堂窗口表)

cafeteria_window (食堂窗口表)
    ├── N:1 ─── cafeteria (食堂表)
    └── 1:N ─── dish (菜品表)

dish (菜品表)
    ├── N:1 ─── cafeteria_window (食堂窗口表)
    │
    ├── 1:N ─── dish_review (菜品评价表)
    └── 1:N ─── cafeteria_order_item (食堂订单明细表)

cafeteria_order (食堂消费记录表)
    ├── N:1 ─── cafeteria (食堂表)
    ├── N:1 ─── cafeteria_window (食堂窗口表)
    ├── N:1 ─── sys_user (用户表)
    │
    ├── 1:N ─── cafeteria_order_item (食堂订单明细表)
    └── N:1 ─── sys_file (文件资源表 - 附件)

cafeteria_order_item (食堂订单明细表)
    ├── N:1 ─── cafeteria_order (消费记录表)
    └── N:1 ─── dish (菜品表)

meal_card (饭卡表)
    ├── N:1 ─── sys_user (用户表)
    │
    ├── 1:N ─── meal_card_recharge (饭卡充值记录表)
    └── 1:N ─── meal_card_consume (饭卡消费记录表)

meal_card_recharge (饭卡充值记录表)
    └── N:1 ─── meal_card (饭卡表)

meal_card_consume (饭卡消费记录表)
    └── N:1 ─── meal_card (饭卡表)

交易流程:

复制代码
sys_user ──> meal_card ──> meal_card_recharge (充值)
                      └──> meal_card_consume (消费)

sys_user ──> cafeteria_order ──> cafeteria_order_item <─── dish
                │                        │
                └── cafeteria ──> cafeteria_window

6. 宿舍管理模块

复制代码
dormitory_building (宿舍楼表)
    └── 1:N ─── dormitory_room (宿舍房间表)

dormitory_room (宿舍房间表)
    ├── N:1 ─── dormitory_building (宿舍楼表)
    └── 1:N ─── dormitory_bed (宿舍床位表)

dormitory_bed (宿舍床位表)
    ├── N:1 ─── dormitory_room (宿舍房间表)
    └── N:1 ─── edu_student (学生信息表)

dormitory_application (宿舍申请表)
    ├── N:1 ─── edu_student (学生信息表)
    ├── N:1 ─── edu_class (班级表)
    └── N:1 ─── dormitory_building (宿舍楼表)

dormitory_hygiene (宿舍卫生检查表)
    └── N:1 ─── dormitory_room (宿舍房间表)

分配关系:

复制代码
dormitory_building ──> dormitory_room ──> dormitory_bed ──> edu_student

7. 官网CMS模块

复制代码
cms_news (官网新闻表)
    ├── N:1 ─── cms_news_category (新闻分类表)
    └── N:1 ─── sys_file (文件资源表 - 封面图)

cms_news_category (新闻分类表)
    └── 1:N ─── cms_news (官网新闻表)

cms_banner (官网轮播图表)
    └── N:1 ─── sys_file (文件资源表 - 图片)

cms_page (官网页面表)
    └── N:1 ─── sys_file (文件资源表 - 内容图片)

school_profile (学校概况表)
    └── N:1 ─── sys_file (文件资源表 - 校徽)

school_scenery (校园风光表)
    └── N:1 ─── sys_file (文件资源表 - 图片)

school_culture (软文化表)
    └── N:1 ─── sys_file (文件资源表 - 图片/音频)

school_strength (硬实力表)
    └── N:1 ─── sys_file (文件资源表 - 图片)

8. 活动节日模块

复制代码
festival_activity (节日/活动表)
    ├── N:1 ─── sys_user (用户表 - 主办方)
    │
    ├── 1:N ─── festival_participant (活动参与人员表)
    ├── 1:N ─── festival_vote (活动投票表)
    └── N:1 ─── sys_file (文件资源表 - 图片)

festival_participant (活动参与人员表)
    ├── N:1 ─── festival_activity (节日/活动表)
    ├── N:1 ─── sys_user (用户表)
    ├── N:1 ─── edu_class (班级表)
    └── N:1 ─── sys_dept (部门表)

festival_vote (活动投票表)
    ├── N:1 ─── festival_activity (节日/活动表)
    └── 1:N ─── festival_vote_option (投票选项表)

festival_vote_option (投票选项表)
    ├── N:1 ─── festival_vote (活动投票表)
    ├── N:1 ─── sys_user (用户表 - 参与人)
    └── 1:N ─── festival_vote_record (投票记录表)

festival_vote_record (投票记录表)
    ├── N:1 ─── festival_vote (活动投票表)
    ├── N:1 ─── festival_vote_option (投票选项表)
    └── N:1 ─── sys_user (用户表)

活动关系链:

复制代码
festival_activity ──> festival_participant <─── sys_user
        │
        └──> festival_vote ──> festival_vote_option ──> festival_vote_record

9. 消息平台模块

复制代码
sys_msg_platform_config (消息平台配置表)
    └── 1:N ─── sys_msg_template (消息模板表)

sys_msg_template (消息模板表)
    ├── N:1 ─── sys_msg_platform_config (消息平台配置表)
    └── 1:N ─── sys_msg_send_log (消息发送记录表)

sys_msg_send_log (消息发送记录表)
    ├── N:1 ─── sys_msg_template (消息模板表)
    ├── N:1 ─── sys_user (用户表 - 接收人)
    └── N:1 ─── sys_file (文件资源表 - 附件)

sys_internal_msg (站内信表)
    ├── N:1 ─── sys_user (用户表 - 发送人)
    ├── N:1 ─── sys_file (文件资源表 - 附件)
    └── 1:N ─── sys_internal_msg_receiver (站内信接收人关联表)

sys_internal_msg_receiver (站内信接收人关联表)
    ├── N:1 ─── sys_internal_msg (站内信表)
    └── N:1 ─── sys_user (用户表 - 接收人)

消息发送流程:

复制代码
sys_msg_template ──> sys_msg_send_log ──> sys_user (接收人)
sys_user (发送人) ──> sys_internal_msg ──> sys_internal_msg_receiver ──> sys_user (接收人)

10. 文件资源模块

复制代码
sys_file (文件资源表)
    ├── 上传关联 ─── sys_user (上传人)
    ├── 业务关联 ─── 多种业务表
    │   ├── edu_leave_application (请假附件)
    │   ├── cafeteria_order (食堂订单附件)
    │   ├── cms_news (新闻图片)
    │   ├── festival_activity (活动图片)
    │   └── ...
    │
    └── 引用 ─── 30+ 张表

sys_file 关联的业务类型:

  • business_type: 标识业务类型(如 'leave', 'order', 'news'等)
  • business_id: 关联业务ID

11. 定时任务模块

复制代码
sys_job (定时任务表)
    ├── 1:N ─── sys_job_log (定时任务执行日志表)
    └── 触发 ─── 各种业务(如: 考勤统计、消息推送、数据备份等)

12. 系统管理模块

复制代码
sys_dict_type (字典类型表)
    └── 1:N ─── sys_dict_data (字典数据表)

sys_config (参数配置表)
    └── 全局配置项

三、核心业务流程关系

1. 学生入学流程

复制代码
sys_user (创建用户)
    ↓
edu_student (创建学生信息)
    ├── 关联 edu_college (院系)
    ├── 关联 edu_major (专业)
    ├── 关联 edu_class (班级)
    └── 关联 dormitory_bed (宿舍床位)

2. 排课流程

复制代码
edu_course (创建课程)
    ↓
edu_teaching_plan (制定教学计划)
    ├── 关联 edu_class (班级)
    └── 关联 edu_course (课程)
        ↓
edu_class_schedule (排课)
    ├── 关联 edu_class (班级)
    ├── 关联 edu_course (课程)
    ├── 关联 edu_teacher (教师)
    └── 关联 edu_classroom (教室)

3. 考勤流程

复制代码
edu_class_schedule (课表)
    ↓
edu_attendance (考勤记录)
    ├── 关联 edu_student (学生)
    ├── 关联 edu_class (班级)
    ├── 关联 edu_course (课程)
    └── 关联 edu_teacher (教师)

4. 请假流程

复制代码
sys_user (申请人)
    ↓
edu_leave_application (请假申请)
    ├── 关联 edu_class (班级)
    ├── 关联 sys_dept (部门)
    ├── 关联 sys_file (附件)
    └── 审批流:
        ↓
edu_leave_approve_log (审批记录)
    └── 关系: 1:N (一个申请多次审批)

5. 食堂消费流程

复制代码
sys_user (用户)
    ├── 关联 meal_card (饭卡)
    │   ├── meal_card_recharge (充值)
    │   └── meal_card_consume (消费)
    │
    └── 直接消费:
        ↓
    cafeteria_order (订单)
        ├── 关联 cafeteria (食堂)
        ├── 关联 cafeteria_window (窗口)
        └── 1:N:
            ↓
        cafeteria_order_item (订单明细)
            └── 关联 dish (菜品)

6. 消息发送流程

复制代码
sys_msg_template (消息模板)
    ↓
sys_msg_send_log (发送记录)
    ├── 关联 sys_msg_platform_config (平台配置)
    ├── 关联 sys_msg_template (模板)
    └── 关联 sys_user (接收人)

四、表关系汇总表

表名 关联表 关系类型 关键字段 说明
用户模块
sys_user sys_role N:M user_id, role_id 用户-角色关联表
sys_role sys_menu N:M role_id, menu_id 角色-菜单关联表
sys_user sys_dept N:M user_id, dept_id 用户-部门关联表
sys_user edu_student 1:1 user_id 用户信息
sys_user edu_teacher 1:1 user_id 用户信息
sys_user edu_staff 1:1 user_id 用户信息
教学模块
edu_student edu_college N:1 college_id 所属院系
edu_student edu_major N:1 major_id 所在专业
edu_student edu_class N:1 class_id 所在班级
edu_class edu_college N:1 college_id 所属院系
edu_class edu_major N:1 major_id 所属专业
edu_class_schedule edu_class N:1 class_id 班级课表
edu_class_schedule edu_course N:1 course_id 课程
edu_class_schedule edu_teacher N:1 teacher_id 授课教师
edu_class_schedule edu_classroom N:1 classroom_id 教室
食堂模块
cafeteria_window cafeteria N:1 cafeteria_id 所属食堂
dish cafeteria_window N:1 window_id 所在窗口
cafeteria_order cafeteria N:1 cafeteria_id 食堂
cafeteria_order sys_user N:1 user_id 消费者
cafeteria_order_item cafeteria_order N:1 order_id 订单明细
cafeteria_order_item dish N:1 dish_id 菜品
meal_card sys_user N:1 user_id 饭卡归属
宿舍模块
dormitory_room dormitory_building N:1 building_id 所属宿舍楼
dormitory_bed dormitory_room N:1 room_id 所在房间
dormitory_bed edu_student N:1 student_id 住宿学生
活动模块
festival_participant festival_activity N:1 activity_id 参与活动
festival_participant sys_user N:1 user_id 参与人
festival_vote festival_activity N:1 activity_id 活动投票
festival_vote_option festival_vote N:1 vote_id 投票选项
festival_vote_record festival_vote N:1 vote_id 投票记录

五、ER图绘制建议

使用以下工具绘制可视化ER图:

推荐工具:

  1. MySQL Workbench - 直接导入SQL生成ER图
  2. Navicat Data Modeler - 专业的数据库建模工具
  3. dbdiagram.io - 在线ER图绘制工具
  4. draw.io - 通用绘图工具
  5. PowerDesigner - 企业级数据库建模工具

绘制建议:

  1. 按模块分组绘制,每个模块一个子图
  2. 使用不同颜色区分模块
  3. 标明主键(PK)、外键(FK)
  4. 注明关系类型(1:1, 1:N, N:M)
  5. 添加关系说明标签

Mermaid语法示例:

1:1
1:1
N:M
N:M
N:M
N:1
N:1
N:1
N:1
N:1
N:1
N:1
sys_user
edu_student
edu_teacher
sys_role
sys_menu
sys_dept
edu_class
edu_major
edu_college
edu_class_schedule
edu_course
edu_classroom


六、重要说明

1. 多对多关系处理

  • 使用中间表拆分成两个一对多关系
  • 例如: sys_user - sys_role - sys_menu
    • sys_user_role (中间表)
    • sys_role_menu (中间表)

2. 外键命名规范

  • 单数形式: user_id, class_id, role_id
  • 关联主表主键
  • 避免使用复合外键

3. 数据库设计原则

  • 遵循第三范式(3NF)
  • 适当冗余以提高查询性能(如: 关联表的名称字段)
  • 建立合理索引
  • 使用统一的时间字段: create_time, update_time

4. 软删除设计

  • 使用 status 字段标识状态
  • 0-禁用/删除, 1-启用/正常
  • 不物理删除数据,保留历史记录

5. 审计字段

每个表包含标准审计字段:

  • id - 主键
  • create_time - 创建时间
  • update_time - 更新时间
  • remark - 备注

七、数据流向图

复制代码
                    ┌─────────────────┐
                    │   sys_user      │
                    │   (用户中心)     │
                    └────────┬────────┘
                             │
         ┌───────────────────┼───────────────────┐
         │                   │                   │
         ▼                   ▼                   ▼
  ┌──────────────┐   ┌──────────────┐   ┌──────────────┐
  │ 教学管理模块  │   │ 生活管理模块  │   │ 系统管理模块  │
  │              │   │              │   │              │
  │ 学生/教师    │   │ 食堂/宿舍    │   │ 权限/消息    │
  │ 课程/课表    │   │ 饭卡/消费    │   │ 日志/配置    │
  │ 考勤/请假    │   │              │   │ 文件/字典    │
  └──────────────┘   └──────────────┘   └──────────────┘
         │                   │                   │
         └───────────────────┼───────────────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │   sys_file      │
                    │   (文件中心)     │
                    └─────────────────┘

总结 : 该系统共65张表,通过外键关联形成一个完整的学校管理网络,核心是以sys_user为中心,辐射教学、生活、系统三大模块,各模块之间通过业务表进行数据交互,支持小程序和App多端访问。

相关推荐
a程序小傲1 小时前
中国电网Java面试被问:Kafka Consumer的Rebalance机制和分区分配策略
java·服务器·开发语言·面试·职场和发展·kafka·github
lbb 小魔仙1 小时前
从零搭建 Spring Cloud 微服务项目:注册中心 + 网关 + 配置中心全流程
java·python·spring cloud·微服务
Gobysec1 小时前
Goby 漏洞安全通告|Apache Struts XWork 组件 XML外部实体注入漏洞(CVE-2025-68493)
struts·安全·apache
BHXDML1 小时前
Java 常用中间件体系化解析——从单体到分布式,从“能跑”到“可控、可扩展、可演进”
java·分布式·中间件
宇钶宇夕1 小时前
CoDeSys入门实战一起学习(七):CoDeSys任务配置与应用对象详解——程序运行的核心控制
运维·自动化·软件工程
咕噜企业分发小米2 小时前
如何用云服务器搭建使命召唤手游服务器?
运维·服务器
尽兴-2 小时前
深入理解MySQL EXPLAIN工具与索引优化最佳实践
mysql·adb·dba·索引·explain·索引优化
weixin199701080162 小时前
安家 GO item_area - 获取地区类列表数据接口对接全攻略:从入门到精通
java·数据库·golang
Linux运维技术栈2 小时前
JumpServer跨网段访问内网服务器——跳板机配置方案
运维·服务器
我送炭你添花2 小时前
Pelco KBD300A 模拟器:08.模板库 + 一键场景加载
运维·开发语言·python·自动化