Entity modelling, keys, normalisation to third normal form, constraints, indexing, and the judgement calls that come after the rules run out.
A schema is the one part of a system that is expensive to change and cheap to get right at the start. Get the entities and the keys wrong and every feature built on top is built on sand; get them right and features become local edits. This course works in that order. You start by finding the entities and, more importantly, fixing the grain — what one row actually means, because most modelling mistakes are grain mistakes wearing a disguise. Then relationships and keys, including why a natural key that looks perfect is usually a trap. Normalisation gets the honest treatment: what each normal form forbids, why, and the one legitimate reason to break it. Constraints and NULL semantics follow, because a constraint the database does not enforce is a comment. Then indexing, where the trade-off flips from correctness to cost, and finally the modelling decisions that no rule settles for you. The exercises run in a real SQL engine in your browser, so you can test every claim rather than take it on trust. The engine is SQLite, and where SQLite differs from PostgreSQL or MySQL the course says so — including the fact that SQLite does not enforce foreign keys unless you ask it to.