CMD Guide
HomeDatabasesNormalization

First Normal Form (1NF)

A relation is in First Normal Form when every cell holds exactly one value from its column's domain, because the relational algebra that SQL is built on only knows how to compare, join, and index single scalar values — the moment a cell holds "Math, Science" the engine treats it as one opaque string, so WHERE Courses = 'Math' silently misses it, an index over the column is useless, and there is no row the database can point at to delete just one enrollment. 1NF is the structural precondition that makes the rest of relational querying actually work.

What 1NF actually requires

The rule is narrow and it is purely about the shape of a cell, not about uniqueness of values:

  1. Each cell contains a single, atomic value — no comma-lists, arrays, nested tuples, or JSON blobs you intend to query into.
  2. Each column draws from one domain (one type), so all values in Contact_Number are phone numbers, not a mix of phones and emails.
  3. There are no repeating groups — you cannot model "up to three phones" as columns Phone1, Phone2, Phone3.

That is the whole list. 1NF does not say column values must be unique across rows; after you fix a multivalued cell, the same name or ID will legitimately repeat down a column.

Why the naive "each column value must be unique" rule is wrong. An earlier version of this page listed "all entries in a column should be unique for each row." That is a misstatement — it contradicts its own worked example, where Alice Smith appears in two rows once her two phone numbers are split out. Uniqueness is a property of keys (a candidate key identifies a row), not of every column. 1NF only governs whether a single cell is atomic.

Worked example 1: comma-separated phone numbers

Here is a Student table that violates 1NF. Contact_Number packs two phones into one cell as a comma list:

Student_IDNameContact_Number
101Alice Smith123-456-7890, 098-765-4321
102Bob Johnson234-567-8901
103Carol White345-678-9012, 543-210-6789

Trace the transformation cell by cell: row 101 carries two phones, so it becomes two rows that share the same student data; row 102 has one phone and stays a single row; row 103 splits into two. The atomic result:

Student_IDNameContact_Number
101Alice Smith123-456-7890
101Alice Smith098-765-4321
102Bob Johnson234-567-8901
103Carol White345-678-9012
103Carol White543-210-6789

Notice Alice Smith now appears twice — that is correct and expected, not a 1NF violation. But look at what happened to the key: Student_ID alone no longer identifies a row (101 maps to two rows). The new candidate key is the composite (Student_ID, Contact_Number). Splitting a multivalued column always pushes the key wider, and that widened key is exactly what the next step, 2NF, scrutinizes.

diagram
diagram

Worked example 2: multi-value Courses

A Student_Course table where one student's enrollments are crammed into a single Courses cell:

Student_IDNameCourses
101Alice SmithMath, Science
102Bob JohnsonHistory
103Carol WhiteMath, History, Science

Decompose each cell into its members — Alice's two courses become two rows, Carol's three become three — keeping the rest of the row identical:

Student_IDNameCourse
101Alice SmithMath
101Alice SmithScience
102Bob JohnsonHistory
103Carol WhiteMath
103Carol WhiteHistory
103Carol WhiteScience

Now WHERE Course = 'Math' returns Alice and Carol correctly, an index on Course is meaningful, and dropping Carol from History is one targeted DELETE instead of a fragile string edit. The candidate key is the composite (Student_ID, Course): it takes both columns together to pin down a single enrollment. (Name now repeats and in fact depends only on Student_ID, not the full key — a partial dependency. 1NF tolerates it; 2NF is the form that removes it by splitting Name back into its own Student table.)

Where this sheet goes next: the 2NF and 3NF pages continue with the same three students in a fresh, already-1NF enrollment sheet — courses recorded as catalog IDs (C101, C102, C103) rather than this page's subject names and the department columns (Department_ID, Department_Name, Department_Location) added to the sheet — and carry the one messy table through both remaining splits, ending as a fully normalized Student / Department / Enrollment schema.

Pitfalls

Takeaways


Sources: E. F. Codd, "A Relational Model of Data for Large Shared Data Banks" (CACM, 1970); C. J. Date, An Introduction to Database Systems (8th ed.), on the use-dependent meaning of atomicity and the myth of absolute first normal form; Silberschatz, Korth & Sudarshan, Database System Concepts (7th ed.), Ch. 7 on normal forms and keys. Re-authored and deepened for this guide — corrected the false "each column value must be unique" requirement, added two fully traced before/after decompositions, the key-widening point, and a diagram.

🤖 Don't fully get this? Learn it with Claude

Stuck on First Normal Form (1NF)? Open Claude, copy a block below, and it'll teach you this exact concept — visually and interactively.

🎨 Explain it visually

Build the mental picture, not memorization.

I just read a lesson on **First Normal Form (1NF)** (Databases) and want to truly understand it. Explain First Normal Form (1NF) from first principles using ONE vivid real-world analogy and a visual mental model — draw it as ASCII art or a clear step-by-step diagram — with a concrete example using real numbers. Then ask me one question to check I got the mental picture, and wait for my reply. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🤔 Walk me through it (interactive)

Socratic — adapts to where you're stuck.

Teach me **First Normal Form (1NF)** interactively. Ask me ONE guiding question at a time, wait for my answer, and adapt to my confusion — build the idea with me step by step instead of explaining it all at once. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧪 Quiz me & fix my gaps

Active recall exposes what you missed.

Quiz me on **First Normal Form (1NF)** with 5 questions, easy to tricky, ONE at a time. Tell me if each answer is right; at the end, explain clearly what I got wrong and why. If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.
🧠 Make it stick

Intuition + hook + flashcards for long-term memory.

Help me remember **First Normal Form (1NF)** for the long term: give the one-sentence intuition, a memorable hook/mnemonic, a tiny worked example, and 3 active-recall flashcards (Q -> A). If you're unsure or a claim isn't standard, say so and reason from first principles instead of guessing.

📝 My notes