All templates

School Management Database Design

Design a school database schema — departments, teachers, courses, students, enrollments, and grades.

Use this template

What you get

  • Courses offered by departments and taught by teachers
  • Student-to-course many-to-many resolved via enrollment
  • Grades recorded against each enrollment, not the student

What this template is for

This school management database design gives you a ready-to-edit ER diagram for a school or university management system. It models the entities every academic system needs: departments, teachers belonging to departments, courses taught by teachers, students, enrollments that link a student to a course for a term, and grades recorded against each enrollment. The student-to-course relationship is many-to-many, resolved through the enrollment table. Use it to design a new school system, document an existing one, or explain how enrollments and grades relate before writing any SQL.

When to use this template

  • Design the database for a school or university management system.
  • Model the many-to-many relationship between students and courses via an enrollment table.
  • Plan how grades attach to a specific enrollment rather than directly to a student.
  • Decide how teachers and courses connect to departments.
  • Document an existing school database for a new developer.
  • Explain to stakeholders how a transcript is assembled from enrollments and grades.

How to use it

  1. 1Start with Department and link Teacher records to it.
  2. 2Add a Course table referencing both a department and the teacher who teaches it.
  3. 3Add a Student table for the people enrolling.
  4. 4Add an Enrollment table linking a student to a course for a given term.
  5. 5Add a Grade table recording the score and letter against each enrollment.
  6. 6Add cardinality: a student has many enrollments; a course has many enrollments.

Quick example

School enrollment schema

Department (id, name, code)
| 1 offers many |
Course (id, department_id, teacher_id, title, credits)
| 1 enrolled as many |
Enrollment (id, student_id, course_id, term, enrolled_at)
| 1 graded by 1 |
Grade (id, enrollment_id, score, letter)

Start editing online

Open the template in CodePic, replace the sample nodes, and turn it into your own study board in a few minutes.

See examples: /templates/school-management-database-design/examples

More templates you might like