The review checklist is excellent
We added it to our pull request template. Schema reviews are faster and catch more problems.
Browse
Turn requirements into entities and relationships, normalise sensibly, choose keys and constraints, and evolve schemas without downtime
Created by Irina Sokolova
A database schema outlives most of the code written against it. Good design makes features easy to build and data easy to trust. Poor design leads to duplicated data, contradictory records and painful migrations years later. This course teaches the thinking behind solid relational design, with practical patterns for situations real applications face.
We design the database for a clinic booking platform: clinics, practitioners, services, patients, appointments, payments and reviews. Requirements arrive in stages, as they do in real projects, so you practise adapting a design without breaking it.
Examples use PostgreSQL syntax, but the design principles apply to any relational database, including MySQL, SQL Server and SQLite. For diagrams you can use any tool; free options such as dbdiagram.io or draw.io work well.
Developers who can write SQL and want to design schemas with confidence, technical leads reviewing data models and analysts who build their own databases. You should be comfortable with basic SQL, including creating tables and writing joins.
Database engineer teaching PostgreSQL, data modelling and query performance
I work as a database engineer, mostly with PostgreSQL. My job covers schema design, migrations, indexing, query tuning, backups and helping application developers understand why their queries are slow.
I teach databases as a practical engineering skill. We model real domains, write SQL by hand, read EXPLAIN output together and break things on purpose so you can see how constraints and transactions protect your data. I explain the theory, such as normal forms and isolation levels, only as far as it changes what you do.
All examples run on a local PostgreSQL install or a Docker container, and every course includes the scripts so you can reproduce each step.
We added it to our pull request template. Schema reviews are faster and catch more problems.
Writing relationships as sentences and finding hidden entities saved our team from a bad design last month.
I had memorised normal forms for an exam without understanding them. The messy spreadsheet example made it click.
Requirements arriving in stages felt like a real project, and showed how good designs adapt.
History tables and multi tenant options were exactly what I needed. Would love even more on reporting schemas.
Expand and contract is now how we ship every column change. The lock warnings were very useful.
Principles are general, but some solutions rely on PostgreSQL features. Fine for us, less so for MySQL users.