学校管理系统 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_user与sys_role: 多对多关系(一个用户可有多个角色,一个角色可有多个用户)sys_role与sys_menu: 多对多关系(一个角色可有多个菜单权限,一个菜单可分配给多个角色)sys_user与sys_dept: 多对多关系(一个用户可在多个部门)sys_user与edu_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图:
推荐工具:
- MySQL Workbench - 直接导入SQL生成ER图
- Navicat Data Modeler - 专业的数据库建模工具
- dbdiagram.io - 在线ER图绘制工具
- draw.io - 通用绘图工具
- PowerDesigner - 企业级数据库建模工具
绘制建议:
- 按模块分组绘制,每个模块一个子图
- 使用不同颜色区分模块
- 标明主键(PK)、外键(FK)
- 注明关系类型(1:1, 1:N, N:M)
- 添加关系说明标签
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_menusys_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多端访问。