This repository is a student learning portfolio for database systems and SQL. It contains clean examples of schema design, relationships, constraints, joins, aggregation, and basic normalization ideas.
I am building this as part of my GitHub student portfolio for bursaries, internships, graduate programmes, and future Honours opportunities.
Database systems are important in software engineering, full-stack development, data-driven applications, and academic computer science. I created this repository to practise designing relational databases and writing SQL queries in a clear, explainable way.
This foundation repo uses a Student Course Registration System as the main mini-project.
It demonstrates:
- Tables and columns
- Primary keys
- Foreign keys
NOT NULLconstraintsUNIQUEconstraints- One-to-many relationships
- Many-to-many relationships
- Joins
- Filtering
- Sorting
- Aggregation with
COUNTandAVG - Introductory normalization thinking
database-systems-sql/
|-- README.md
|-- notes/
| |-- database-fundamentals.md
| |-- normalization.md
| `-- sql-query-notes.md
`-- student-course-registration/
|-- README.md
|-- schema.sql
|-- seed.sql
`-- queries.sql
Use a SQL database tool such as MySQL Workbench, DBeaver, pgAdmin, SQLite tools, or another database environment that supports standard SQL-style scripts.
Run the scripts in this order:
1. student-course-registration/schema.sql
2. student-course-registration/seed.sql
3. student-course-registration/queries.sql
The SQL is written to stay close to standard SQL concepts, but small syntax adjustments may be needed depending on the database system you use.
- How to plan tables around real relationships.
- How primary keys uniquely identify rows.
- How foreign keys connect related tables.
- How a junction table models a many-to-many relationship.
- How joins combine data from multiple tables.
- How grouping and aggregation can answer useful questions.
- Why normalization helps reduce duplicated and inconsistent data.
This repository currently focuses on database foundations. Future improvements may include:
- Cinema booking database mini-project
- Clinic appointment database mini-project
- More advanced joins
- Views
- Transactions
- Stored procedures
- Indexing basics
- Database design case studies from CineBook and CASS