What does a table need to be in First Normal Form, and what breaks it?
A table is in 1NF when every column holds a single atomic value, there are no repeating groups, and each row is unique. Storing a comma-separated list of values in one cell breaks 1NF.
Explain it simply
A cell should hold one thing, like a single phone number, not a bundle. If a student has two phone numbers and you write "98100, 97000" in one cell, you cannot search or count the numbers cleanly. It is like putting two items in one locker.
Example
Violates 1NF:
| roll_no | name | phones |
|---|---|---|
| 1 | Asha | 98100, 97000 |
| 2 | Ravi | 96500 |
Problems: finding who owns 97000 needs string matching, and adding a third phone means rewriting the cell.
1NF fix, one row per phone:
| roll_no | phone |
|---|---|
| 1 | 98100 |
| 1 | 97000 |
| 2 | 96500 |
CREATE TABLE student_phones (
roll_no INT REFERENCES students(roll_no),
phone VARCHAR(15),
PRIMARY KEY (roll_no, phone)
);Repeating columns like phone1, phone2, phone3 also break 1NF in spirit, because adding a fourth phone changes the table design.
What to say in the interview
"1NF means atomic values, no repeating groups or arrays in a cell, and a way to identify each row. I split multi-valued attributes into a child table with a foreign key."
Common mistakes
- Thinking
phone1, phone2columns satisfy 1NF.