Course Overview
Course in Brief
This course teaches the foundations of databases through a combination of conceptual study and practical implementation. You will learn why databases exist, how relational databases are structured, how to retrieve and modify data with SQL, how to design schemas, and how to use a relational database from an application.
The course is currently only available for credit at Aalto University, but the materials are freely available for anyone to study. The course is designed to be self-contained and does not require prior database experience.
Workload
This is a 5 ECTS course. A workload of 5 ECTS corresponds roughly to 135 study hours. The actual time varies between learners depending on earlier background, study habits, and target depth of understanding.
High-Level Learning Objectives
After completing the course, you should be able to:
- explain why databases are used and what problems relational databases help solve,
- read database structure from tables, keys, and diagrams,
- write SQL queries for retrieving, filtering, joining, grouping, and modifying data,
- design a relational database schema from requirements using subject analysis and ER modeling,
- implement schemas, constraints, and migrations,
- use transactions for multi-step operations and reason about basic concurrency issues,
- recognize common design and query-performance problems and apply practical fixes,
- build and explain a small database-backed web application.
The more detailed learning objectives are listed separately in the chapters.
Prerequisites
The course assumes basic programming skills and a willingness to work with a local development environment. It is helpful if you are already comfortable with:
- reading and modifying small programs,
- using a terminal,
- and installing or running software tools locally.
You do not need prior database experience. The course starts from the basics and builds gradually toward more advanced topics.
Course Structure
The course is divided into nine parts (tentative structure).
- Part 1 builds the foundation: data, databases, DBMSs, the relational model, and the first project walking skeleton.
- Part 2 introduces single-table SQL.
- Parts 3 and 4 move from isolated queries to application code and multi-table relational questions.
- Parts 5 and 6 focus on database design, ER modeling, schemas, constraints, and migrations.
- Part 7 introduces summaries, grouped queries, and reporting-style SQL.
- Part 8 looks at correctness, normalization, and performance.
- Part 9 completes the application and reflects on testing, debugging, reproducibility, and broader directions.
There is a practical hands-on project that grows gradually across the parts.
How to Approach the Materials
This course works best when you treat it as something to study actively rather than only read through. When studying:
- complete the course exercises in order, whenever they appear in the materials,
- run the example queries when possible,
- sketch schemas and join paths on paper when the structure feels confusing,
- compare the recurring teaching schema to the project schema instead of mixing them together,
- and verify what SQL does by checking table state before and after changes.
The project checkpoints are especially important. They are where the database ideas of the surrounding chapters become part of one working application.
Practicalities Pages
This practicalities section collects the main support pages for the course:
- Working Practices explains how to study the course, work responsibly, and use tools such as generative AI appropriately.
- Registration and Grading explains how progress is stored and where to look for grading information in active course offerings.
- Tools and Environments lists the main tools used in the course project and the local workflow around them.
- Project Roadmap summarizes how the study tracker project grows from Part 1 to Part 9, what the main scaffold files do, and how a request flows through the project.
- Glossary collects the main database and SQL terms used in the course.
- SQL Quick Reference summarizes the most common SQL statement shapes and safe working habits.