Normalization is where a lot of database courses lose people, because it is taught as a wall of rules with names like "third normal form". Underneath the names is a single, sensible idea: every fact should live in one place, so there is never a second copy to disagree with it.
Get that idea and the three forms stop being rules to memorise and start being obvious.
The problem normalization solves
Imagine one wide table where each row is a visit, and each row also repeats the patient's name, address and phone number. The patient moves house. Now their new address is correct in some rows and wrong in others, because the data lived in many places and only some got updated. That disagreement is the whole disease. Normalization is the cure.
First normal form: one value per box
A table is in first normal form when every cell holds a single value, not a list. No "allergies" column stuffed with three allergies separated by commas. No repeating columns like phone1, phone2, phone3.
If a box holds a list, you cannot search or count it cleanly, and you have capped how many items a row can hold. The fix is to move the repeating thing into its own table with one row per item.
Second normal form: no half-dependent facts
Second normal form matters when a table's identity is made of two columns together, say a visit that is identified by a patient and a date. The rule: every other column must depend on the whole of that identity, not just part of it.
The patient's home address depends only on the patient, not on the visit date, so it does not belong in the visit table. It belongs with the patient. Facts that depend on only part of the key get moved to the table where that part is the whole key.
Third normal form: no facts about facts
Third normal form removes columns that describe another column rather than the row itself. If a visit row stores a department code and also the department's name, the name is really a fact about the department, not about the visit. Store the name once in a department table and let the visit point to it.
When to stop, and when to bend
Third normal form is the sensible stopping point for most real databases. Higher forms exist, but past 3NF you are usually chasing edge cases. And there are times, mostly in reporting systems built for speed, when people deliberately keep a copy of some data to avoid a join. That is a considered trade, not an excuse to skip the thinking.
Where to go next
Normalization is a skill you build by doing, not by reading definitions, because the rules only click once you have refactored a messy table yourself. Normalization Without Tears walks through it gently with health-data examples, and Normalization I: 1NF, 2NF & 3NF covers the same ground in more depth.