返回模板页

学校管理数据库设计示例

以下学校 schema 示例展示了同样的学生-课程-选课核心如何适配 K-12 班级、大学教学班、在线学习和详细成绩册。

学校管理数据库设计示例

真实案例

K-12 班级制(基线方案)

使用场景: 构建首个学校管理系统的开发者

Student (id, name, grade_level)
Class (id, teacher_id, subject, room)——固定群体
Enrollment (id, student_id, class_id, year)
Teacher (id, department_id, name)
学生整学年归属一个班级

这样组织的原因: K-12 学校把学生整学年分到固定班级,因此选课相对静态——这里 schema 最简单,因为不像大学,学生的班级很少在学期中变动。

带教学班的大学

使用场景: 构建高校选课系统的团队

Course (id, department_id, code, credits)——课程目录条目
Section (id, course_id, teacher_id, term, schedule, capacity)
Enrollment 关联学生到具体的 Section,而非 Course
先修课用 Course 到 Course 的自关联建模
按教学班强制容量上限

这样组织的原因: 大学把 Course(目录)与 Section(本学期具体开课)分开——选课指向一个教学班,这正是让同一课程以不同教师、时间和容量多次开设的关键。

在线课程

使用场景: 构建 LMS 或 MOOC 平台的团队

Course (id, title, self_paced),含 Lesson 和 Module 子项
Enrollment (id, student_id, course_id, progress, completed_at)
进度按课时追踪,而非仅按课程
无固定学期——选课开放式
完成后颁发证书

这样组织的原因: 在线学习用进度追踪取代学期和教学班模型——图表增加课时和进度字段,因为关键数据是每个学生学到了哪里,而非他们身处哪个实体班级。

详细成绩册

使用场景: 需要作业级评分的团队

Assignment (id, course_id, name, weight, max_score)
Submission (id, enrollment_id, assignment_id, score, submitted_at)
最终成绩由加权提交计算得出
迟交扣分记录在提交上
保留成绩历史以便申诉

这样组织的原因: 真实的成绩册记录每次作业提交,而非仅最终成绩——图表增加 Assignment 和 Submission,于是最终成绩由加权部分派生,可审计、可申诉。

使用技巧

  • 始终通过 Enrollment 表解决学生到课程的关系;直接的多对多关联无法承载学期或状态。
  • 把成绩挂到 Enrollment 而非 Student 上——同一学生可在不同学期修读同一课程。
  • 一旦教师或时间按学期变化,就把 Course(目录)与 Section/Class(具体开课)分离。
  • 把学分存在 Course 上,让成绩单能从选课汇总学分。

在线开始编辑

回到模板页,直接替换成你的课程主题、章节和复习重点,就可以继续使用这套结构。

使用这个模板: /editor/new?template=school-management-database-design

编辑此学校 schema 模板