🗄️Database Normalization Basics
Stop memorizing normal forms abstractly and start using them as design tools — see exactly why redundancy creates update anomalies, walk a messy table through 1NF, 2NF, and 3NF with real before/after schemas, then design a production-ready schema and defend every table you create.
Phase 1Why Redundancy Breaks Your Database
See why duplication breaks updates and corrupts data
Duplicate data is a time bomb, not a convenience
6 minDuplicate data is a time bomb, not a convenience
Every column either depends on the key, or it doesn't belong
6 minEvery column either depends on the key, or it doesn't belong
An UPDATE statement should change one row — not many
6 minAn UPDATE statement should change one row — not many
If you can't insert A without inventing B, your schema is wrong
7 minIf you can't insert A without inventing B, your schema is wrong
Phase 2Walking a Messy Table Through 1NF, 2NF, 3NF
Normalize a messy table through 1NF, 2NF, and 3NF
1NF: every cell holds one value, not a list
7 min1NF: every cell holds one value, not a list
2NF: no column should depend on only part of the key
7 min2NF: no column should depend on only part of the key
3NF: non-key columns should not depend on other non-key columns
7 min3NF: non-key columns should not depend on other non-key columns
BCNF: when 3NF still leaves room for trouble
7 minBCNF: when 3NF still leaves room for trouble
Take one ugly table and walk it through 1NF, 2NF, 3NF
8 minTake one ugly table and walk it through 1NF, 2NF, 3NF
Phase 3Normalization vs Denormalization in the Real World
Trade normalization for performance with eyes open
Five-table joins on every page load are a real problem
7 minFive-table joins on every page load are a real problem
Three legitimate ways to break the rules on purpose
8 minThree legitimate ways to break the rules on purpose
Some 'denormalization' isn't denormalization — it's a snapshot
7 minSome 'denormalization' isn't denormalization — it's a snapshot
JSONB, schema-on-read, and when to ignore the rules entirely
8 minJSONB, schema-on-read, and when to ignore the rules entirely
Phase 4Design a Schema and Defend Every Table
Design a real app schema and defend every table
Design a real app schema and defend every decision
8 minDesign a real app schema and defend every decision
Frequently asked questions
- What is database normalization in plain English?
- This is covered in the “Database Normalization Basics” learning path. Start with daily 5-minute micro-lessons that build from fundamentals to hands-on application.
- What is the difference between 1NF, 2NF, and 3NF?
- This is covered in the “Database Normalization Basics” learning path. Start with daily 5-minute micro-lessons that build from fundamentals to hands-on application.
- Why do update anomalies happen in unnormalized tables?
- This is covered in the “Database Normalization Basics” learning path. Start with daily 5-minute micro-lessons that build from fundamentals to hands-on application.
- When should I denormalize a database for performance?
- This is covered in the “Database Normalization Basics” learning path. Start with daily 5-minute micro-lessons that build from fundamentals to hands-on application.
- Do modern apps still need to normalize, or is denormalization fine?
- This is covered in the “Database Normalization Basics” learning path. Start with daily 5-minute micro-lessons that build from fundamentals to hands-on application.
Related paths
🐍Python Decorators Introduction
Build one mental model for Python decorators that covers closures, argument passing, functools.wraps, and stacking — then ship a working caching or logging decorator from scratch in under 30 lines.
🦀Rust Lifetimes Explained
Stop reading `'a` as line noise and start reading it as scope arithmetic — one failing snippet at a time — until you can thread lifetimes through a small parser or iterator adapter without fighting the borrow checker.
☸️Kubernetes Core Concepts
Stop drowning in 30+ resource types. Build the mental model one primitive at a time -- pods, deployments, services, ingress, config -- then deploy a real app with rolling updates and health checks.
📈Big O Intuition
Stop treating Big O as math you memorized for an interview — build the intuition to spot O(n²) disasters, pick the right data structure without thinking, and rewrite a slow function from O(n²) to O(n) in under five minutes.