Normal forms, primary keys, foreign key constraints, and when JSON earns its place in an otherwise relational schema.
The schema is the foundation everything else stands on. These lessons cover the relational model in practice: why normalization exists, how constraints give the planner information it can use, and when denormalized types like JSONB are the right tool.
Paired course
Data Modeling for PerformanceGo deeper with structured exercises, datasets, and production patterns.
A foreign key is not just validation — it is a declaration that tells the query planner something is guaranteed, enabling optimizations it cannot safely make without that guarantee.
PostgreSQL's JSONB and array types let you store semi-structured data without leaving the relational model — and without sacrificing indexability or query power.
PostgreSQL range types represent intervals with operators for overlap, containment, and adjacency — and pair with GiST exclusion constraints to enforce non-overlap at write time.
Go deeper
These lessons are the foundation. The book gives you the complete treatment, with real datasets you can run and the production patterns that turn thousands of lines of code into simple queries.
Get the Book — $89