First Normal Form (1NF)
Press Next → or use ← → arrow keys
The Story — The Comma-Separated Nightmare
A table is in 1NF when every cell holds a single, indivisible value and there are no repeating groups — no lists, arrays, or cloned columns.
What Is First Normal Form?
Normalization restructures tables to cut redundancy and prevent anomalies, progressing 1NF → 2NF → 3NF → BCNF. 1NF is the entry gate — every later form depends on it.
| Rule | Meaning |
|---|---|
| Atomic values | Each cell holds one indivisible value — no lists or sets |
| No repeating groups | No Phone1, Phone2, Phone3 style cloned columns |
| Single domain per column | Every value in a column shares the same type |
| Unique column names | No duplicate column identifiers |
| Order is irrelevant | Row and column sequence carries no meaning |
| Rows are unique | A primary key identifies each row |
A relation draws each attribute from an atomic domain; since relations are sets, tuples are unordered and non-duplicate. 1NF is what makes relational algebra and SQL apply cleanly.
Violation — Multivalued Attribute
Before: one row per student, PK = Roll. After: Roll 1 spans two rows, so Roll alone loses uniqueness — the key becomes the composite {Roll, Phone}.
Violation — Repeating Groups (Cloned Columns)
They waste space with NULLs, impose an artificial limit (only three courses ever), and make "find every student taking OS" scan three columns. The fix is more rows, not more columns.
After 1NF — What Becomes the Key?
Row expansion makes the old single-column key lose uniqueness, so the multivalued column joins it to form a composite key.
| Table | Before 1NF | After 1NF |
|---|---|---|
| STUDENT | PK = Roll | PK = {Roll, Phone} |
| ENROLL | PK = Roll | PK = {Roll, Course} |
Roll = 1 spans two rows after expansion, so Roll alone can no longer identify a row. The smallest unique column set is the pair {Roll, Phone} — both become prime attributes; Name stays non-prime.
With key {Roll, Phone}, Name depends on only half the key (Roll → Name) — a partial dependency. Removing it by splitting the table is the next stage, 2NF.
How to Convert a Table to 1NF
Row expansion duplicates other columns (Raj repeats on each phone row). Removing that redundancy by extracting a separate child table (STUDENT_PHONE keyed by Roll) is the next stage — 2NF, not 1NF. First normal form only needs atomic values in a single table.
Why 1NF Matters — Seen Through a Query
Find the student who owns phone 99112233.
Before 1NF — CSV blob
SELECT * FROM STUDENT
WHERE Phone LIKE '%99112233%';
Matches substrings by accident · ignores indexes · slow · fragile.
After 1NF — atomic
SELECT Roll FROM STUDENT
WHERE Phone = '99112233';
Exact match · index-friendly · fast and correct.
| Operation | Before 1NF (CSV) | After 1NF (atomic) |
|---|---|---|
| Search a value | LIKE scan, error-prone | exact match, indexed |
| Add a value | edit a text string | INSERT one row |
| Count values | parse the string | COUNT(*) rows |
| Enforce uniqueness | impossible | UNIQUE constraint |
Two Lenses on the Same Rule
"Raj Sharma" is atomic if you never query the surname — but becomes non-atomic the moment you do. Atomic means "indivisible for this design's purposes." Postgres arrays/JSONB and MongoDB relax 1NF on purpose — a deliberate trade-off, never an accidental CSV field.
The 1NF Verification Checklist
The foundation is established. Now you can move on to remove partial dependencies (2NF) and transitive dependencies (3NF).
Three Common Mistakes
The single most important habit: when a cell holds many values, spread them down into more rows — never sideways into more columns.
Golden Rules of First Normal Form
The Entry Gate to Normalization
1NF makes every cell atomic and every row uniquely keyed — the baseline that SQL, indexing and all higher normal forms assume. But row expansion left a redundancy behind (Raj repeats on every phone row). Removing that partial dependency is the next step: Second Normal Form (2NF).
1NF = one atomic value per cell, no repeating groups — fix violations by expanding rows (and expect a composite key), never by cloning columns.
📋 End of tutorial · Press ← to review, or click Restart