Skip to content
Preptima
easyConceptEntry

Here is one messy student table. Normalise it to third normal form in front of me, then tell me when you would undo it.

Normalise by naming each functional dependency and splitting on it: atomic values for 1NF, no column depending on part of a composite key for 2NF, no non-key column depending on another for 3NF. Undo it only for a measured read path, and say who keeps the copies in step.

4 min readUpdated 2026-10-10Target archetype: Enterprise Captive

Answer

Short answer

Third normal form means every non-key column depends on the key, the whole key, and nothing but the key. You get there by writing down the functional dependencies first, then splitting the table once for each dependency that breaks a rule. Undo normalisation only when a measured read path pays for the joins and you can name who keeps the duplicated copies consistent.

Was this answer helpful?

Likely follow-ups

  • Your Enrolment table has a two-column primary key. Why not add an auto-increment id and call that the key instead?
  • Department heads change every year and old transcripts must show the head at the time. Does that change your 3NF schema?
  • Write the SQL join that rebuilds the original flat table from your four tables, and say which rows could go missing.
  • Is the final Student table in BCNF, and how would you check?

Related questions