University Course Planning & Allocation Platform
Full-stack database system modeling course scheduling, teacher allocation, and salary versioning — with a transactional Java CLI enforcing ACID semantics under concurrency.
Context
Individual course project for IV1351 Data Storage Paradigms at KTH. Spanned three progressive tasks from schema design through performance tuning to a full Java application layer.
Objective
Design and implement a relational system to model a university's course instances, planned teaching activities, teacher allocations, and salary structures — with versioning to track changes over time.
What I Built
- Designed a third normal form (3NF) relational model in PostgreSQL with versioned salary and course-layout tables, enabling the system to track historical changes to course hours and teacher pay.
- Automated derived activity-hour computation and enforced strict allocation constraints at the database level.
- Authored OLAP workload queries for reporting: planned hours per course, allocated hours per teacher, teachers with excessive loads, and variance detection (planned vs. allocated > 15%).
- Engineered query performance using EXPLAIN ANALYZE, strategic indexing, and materialized views.
- Implemented an ACID-compliant CLI in Java (strict MVC architecture) with pessimistic row-locking to prevent phantom reads and enforce business rules under concurrent usage.
Technologies
Ownership
Sole author — all 117 commits across three repositories. The main repository is explicitly labelled "Only Dajue Qiu has worked on this task."