23/09/2026
You normalized it all.
Nothing repeats.
The one query that matters joins five tables.
NORMALIZED: each fact stored once
- The name lives in exactly one row
- A foreign key refuses an orphan row; the database enforces it, not your code
- Every read reassembles what you split
DENORMALIZED: the fact copied where it is read
- The name is copied onto every order, so the read stops touching customers
- One row answers, no join to plan
- A copy is a snapshot, not a mirror — nothing updates it unless you write that code
Normalizing makes writes correct.
Denormalizing makes reads fast, and makes you responsible for keeping the copies in sync.
One puts the cost in every read.
The other puts it in every write.
Learn backend and AI skills at masteringbackend.com