Student Information System ER diagram and database schema

The Student Information System database schema is a DB Planner template with 28 tables, 175 columns and 46 relationships, free to use. Core tables include account_charges, account_payments, advisor_assignments, assessment_scores. It can be opened as an interactive ER diagram or exported as PostgreSQL, MySQL, or SQL Server DDL.

ER diagram of the Student Information System database schema, showing 28 tables and their relationships
FIG. 1: entity relationship diagram, 28 tables
Tables
28
Columns
175
Relationships
46
Category
Education
Exports
DBML, SQL, C#
Price
Free

What this schema models

A complete student information system (SIS) database design for a college or university: 28 tables, 18 enums and 46 relationships covering terms and rooms, degree programs and the course catalog, sections and meeting times, registration with waitlists, the gradebook and final grades, attendance, degrees, advising, registration holds, and student accounts with financial aid. THE FOUR DESIGN RULES 1. A COURSE is not a SECTION. courses is the catalog entry (what CS 101 is); sections are one run of it in one term, with their own instructors, rooms and capacity. Students enroll in sections. 2. Enrollment is a status, not a delete. Dropping or withdrawing changes the row's status; the row stays, which is what puts a W on the transcript. 3. Final grades are append-only. A grade change is a new row that supersedes the old one, with who changed it and why. GPA is computed from the latest grade per enrollment, never stored. 4. Requirements follow the catalog year. A student's program is pinned to the term they declared it, and degree requirements are versioned, so a curriculum change never moves the goalposts for students already in it. DETAILS WORTH STEALING - Term deadlines (add/drop, withdrawal) live on the term row, so enrollment rules read data rather than hard-coded dates. - The grading scale is a table, so pass/fail, incompletes and GPA policy are configuration. - Prerequisites carry a minimum grade and a corequisite flag. - Holds say exactly what they block, registration or transcripts, and are released rather than deleted. - Student accounts are a ledger of charges, payments and disbursed aid; the balance is a sum, not a column. - Preferred name is shown in class rosters, while the legal name stays on official documents. WHAT YOU GET Clean DBML that imports directly into DB Planner, and a laid-out board with zones color-coded and framed: institution, course catalog, scheduling and faculty, enrollment and gradebook, grades and degrees, students, and student accounts. Every table carries a note. Postgres-flavoured types that port cleanly to MySQL or SQL Server. Useful for developers building an SIS, LMS or registration system, and for students who need a realistic student management system ER diagram for a DBMS project. This is a schema design reference; validate it against your institution's policies and privacy obligations (such as FERPA) before production use.

Tables (28)

Tables in the Student Information System Database Schema schema and how many columns each has
TableColumns
account_charges8
account_payments6
advisor_assignments5
assessment_scores5
assessments6
attendance_records4
buildings3
course_prerequisites4
courses8
degree_conferrals5
departments3
emergency_contacts6
enrollments9
final_grades7
financial_aid_awards8
grade_points4
instructors8
program_requirements7
programs7
rooms5
section_instructors3
section_meetings6
sections8
staff_users4
student_holds9
student_programs7
students11
terms9

Relationships (46)

  • account_charges.posted_by references staff_users.id many to one
  • account_charges.student_id references students.id many to one
  • account_charges.term_id references terms.id many to one
  • account_payments.student_id references students.id many to one
  • advisor_assignments.instructor_id references instructors.id many to one
  • advisor_assignments.student_id references students.id many to one
  • assessment_scores.assessment_id references assessments.id many to one
  • assessment_scores.enrollment_id references enrollments.id many to one
  • assessments.section_id references sections.id many to one
  • attendance_records.enrollment_id references enrollments.id many to one
  • attendance_records.recorded_by references instructors.id many to one
  • course_prerequisites.course_id references courses.id many to one
  • course_prerequisites.minimum_grade references grade_points.code many to one
  • course_prerequisites.required_course_id references courses.id many to one
  • courses.department_id references departments.id many to one
  • degree_conferrals.student_program_id references student_programs.id many to one
  • degree_conferrals.term_id references terms.id many to one
  • emergency_contacts.student_id references students.id many to one
  • enrollments.section_id references sections.id many to one
  • enrollments.student_id references students.id many to one
  • final_grades.enrollment_id references enrollments.id many to one
  • final_grades.grade_code references grade_points.code many to one
  • final_grades.posted_by references instructors.id many to one
  • final_grades.supersedes_id references final_grades.id many to one
  • financial_aid_awards.student_id references students.id many to one
  • financial_aid_awards.term_id references terms.id many to one
  • instructors.department_id references departments.id many to one
  • program_requirements.course_id references courses.id many to one
  • program_requirements.effective_term_id references terms.id many to one
  • program_requirements.program_id references programs.id many to one
  • program_requirements.retired_term_id references terms.id many to one
  • programs.department_id references departments.id many to one
  • rooms.building_id references buildings.id many to one
  • section_instructors.instructor_id references instructors.id many to one
  • section_instructors.section_id references sections.id many to one
  • section_meetings.room_id references rooms.id many to one
  • section_meetings.section_id references sections.id many to one
  • sections.course_id references courses.id many to one
  • sections.term_id references terms.id many to one
  • student_holds.placed_by references staff_users.id many to one
  • student_holds.released_by references staff_users.id many to one
  • student_holds.student_id references students.id many to one
  • student_programs.catalog_term_id references terms.id many to one
  • student_programs.program_id references programs.id many to one
  • student_programs.student_id references students.id many to one
  • students.admitted_term_id references terms.id many to one

How to use this template

  1. Open the ER diagram to see the tables and how they relate.
  2. Copy it into your workspace. You get your own editable copy, in DBML.
  3. Export it as PostgreSQL, MySQL, or SQL Server DDL, or as C# models.

The copy opens in DB Planner’s ER diagram tool, with the schema as text in the DBML editor beside it. Have a database already? Turn its SQL into an ER diagram instead.

Frequently asked questions

What is in the Student Information System database schema?
28 tables and 46 relationships, across 175 columns. The table names and the full relationship list are shown on this page.
Can I export it to PostgreSQL or MySQL?
Yes. Every DB Planner template exports as DBML, as PostgreSQL, MySQL, or SQL Server DDL, and as C# models.
Is this template free?
Yes. You can open it in the browser without an account, and copy it into your own workspace with a free DB Planner account.
Can I change it after copying it?
Yes. A copy is yours: you can rename tables, add columns, and export it. Changes the author makes later do not affect your copy.