Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Data & Analytics

University Records Database with Roles, Audit Trail and Reports

A relational database for a university department's student, course, enrolment and grade records, with enforced business rules, least-privilege roles, an audit trail of grade changes and a library of reporting queries. A beginner database final year project that replaces fragile spreadsheets and shows the full SQL skill set.

Difficulty

Beginner

Achievable by one student in a semester with familiar tools.
Effort

1 semester · 1 to 2 students

Deliverables

7 to ship

3 optional extras

Suggested stack

PostgreSQL (or MySQL or SQL Server)SQL and PL/pgSQLFlyway or another migration toolPython or Node.js thin front endDocker
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • An ER diagram and a design note covering keys, normal forms and every deliberate denormalisation
  • Migration scripts that create the schema with all constraints, plus a synthetic seed data generator for several thousand students
  • Transactional enrolment and grade-change procedures, tested with two concurrent sessions competing for the last seat
  • An audit trail of grade and enrolment changes recording old value, new value, user and time
  • Three database roles (registrar, lecturer, reporting) with least-privilege grants and views that limit lecturers to their own sections
  • At least 20 reporting queries, each with the question it answers, using joins, grouping, CTEs and window functions
  • A documented backup and restore drill with verification queries

If you have time left

  • Row-level security so lecturers see only their own students without any application checks
  • A performance section: generate a large dataset and index the slowest reports, with before and after timings
  • Export anonymised reports to a dashboard tool for the department head

The problem departments have with spreadsheet records

Many university departments and colleges still keep a lot of records in spreadsheets passed between coordinators and lecturers: who is enrolled in which section, who has cleared prerequisites, which grades were changed after the result was announced. The same student appears twice with a different spelling, a section is enrolled beyond capacity, a grade is changed and nobody can say by whom. When an audit or an accreditation visit arrives, someone spends a week reconciling files.

A well-designed relational database solves most of this, but only if the design, constraints and permissions are done properly. It is also exactly what database courses teach on paper and rarely make students build end to end.

What already exists and the gap

  • Ellucian Banner and Oracle PeopleSoft Campus Solutions are full student information systems used by large universities.
  • OpenEduCat is an open source education management system built on Odoo.
  • Fedena and similar school ERPs cover admissions, fees and grades for schools and colleges.

These systems are large, expensive to customise and usually owned by the central IT office. Departments and small colleges often work around them in spreadsheets. The gap this project fills is twofold: a lean, well-documented departmental records database that enforces the rules at the database level, and a reference design that shows how integrity, security and auditing should work, useful for teaching as much as for use.

What you build

  • Schema: students, programmes, courses, prerequisites, sections, lecturers, enrolments and grades, normalised to third normal form, with documented decisions about where you denormalise and why.
  • Constraints for every rule you can express: unique enrolments, valid grade values, section capacity, credit limits per term, foreign keys with deliberate ON DELETE behaviour.
  • Transactions: enrolment with capacity and prerequisite checks, and grade corrections, as procedures that are safe under concurrency.
  • Audit trail: a table filled by triggers recording old and new values, the database user and the time.
  • Roles: registrar (full write), lecturer (own sections only, through views) and read-only reporting.
  • Reports: 20 or more queries with the question each answers, from "students at risk of exceeding the credit limit" to "grade distribution per section compared with the course average".
  • Operations: versioned migrations, seed data and a backup and restore drill.
  • A thin front end for the registrar and lecturers, only enough to demonstrate the flows.

The technically interesting part

The interesting problem is putting the rules in the database instead of the app. Show your supervisor what happens when two registrar sessions try to enrol different students into the last seat at the same moment: without the right isolation level or row lock, both succeed and the section is over capacity. Demonstrate the bug, then the fix. Do the same for grade changes: the audit trigger must record every change even if someone connects directly with a SQL client, which an application-level log cannot guarantee.

How to evaluate it

  • Constraint tests: a script of at least 30 invalid operations (duplicate enrolment, grade out of range, lecturer editing another section) that must all fail with a clear error.
  • Concurrency test: 100 simulated simultaneous enrolments into a 40-seat section always end with exactly 40.
  • Permissions: a test that logs in as each role and confirms what it can and cannot read or change.
  • Recovery: time to restore from backup and verification that row counts and checksums match.
  • Usability: a department coordinator tries the 5 most common tasks and reports what was confusing.

Suggested plan

  1. Weeks 1 to 2: interview a department coordinator, list the rules, draw the ER diagram.
  2. Weeks 3 to 5: schema, constraints, migrations, seed data.
  3. Weeks 6 to 8: transactions, concurrency tests, audit trail.
  4. Weeks 9 to 11: roles, views, reporting queries.
  5. Weeks 12 to 15: thin front end, backup drill, evaluation and report.

Path to a product

The first user is your own department's coordinator. Small private colleges and training institutes that cannot afford a full student information system could use a hosted version at a modest per-institution fee, with setup and data migration as paid services. The schema and tests also make a good open source teaching resource that database lecturers can adopt.

Scope warning

Use synthetic data only, never real student records. Do not build fee collection, timetabling, admissions or a learning management system. Keep the front end minimal. Choose one database and use its features properly rather than aiming for lowest-common-denominator SQL.

Learn what you need on Sefism

Get help with this idea

A database-only project is marked on the quality of its design and tests. Tauseef can help you choose which rules to enforce, how to demonstrate concurrency bugs, and how to present the evaluation. If you are new here, create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.