Skip to content
intermediate2 min readFree guide

Database normalization: store each fact in the right place

InterviewSolutionHub learning library · Updated

On this page

Normalization helps avoid contradictory copies of the same fact. Begin with the dependencies in your data, then separate entities and relationships so updates have a clear home.

Find the fact that determines another fact

If a course identifier determines a course title, storing the title in every enrolment repeats one fact across many rows. A title correction would require updating every copy. Write down these dependencies before splitting tables; decomposition should preserve the relationships the application actually needs.

Separate repeating relationships

A list of courses inside one learner column makes searching, constraints and updates awkward. A learner table, a course table and an enrolment table give each concept a stable row meaning. A join can reconstruct the useful view without requiring duplicated names and titles to remain synchronised by convention.

Treat denormalisation as a deliberate trade-off

Some systems store derived or duplicated data for a measured performance need. That does not remove the need for a source of truth and a synchronisation strategy. Start with a coherent model, measure the problem and document which extra copy can become stale. Normalization is not a rule that every query must use the maximum number of tables.

Worked example

In a fictional course platform, changing a course title in the courses table should affect the joined enrolment view without rewriting each enrolment. The relationship table stores identifiers; the descriptive title stays with the course.

Check your understanding

Try each question before opening its explanation. These are free practice prompts; they do not use game chances.

What is an update anomaly?

It is a situation where one logical change requires several stored copies to be updated consistently. Missing one copy can leave contradictory information in the database.

Does normalization eliminate the need for joins?

No. Separating related concepts often makes joins necessary. The benefit is clearer ownership of facts and relationships, not avoiding every multi-table query.

Where should a course title correction be made in this model?

In the course row that owns the title. Enrolment rows keep the course identifier and retrieve its current title through the relationship.

Sources and further reading

These original examples explain foundational concepts. Use the official references for complete, current details and version-specific behaviour.

About this guide: AI-assisted educational content with original examples and linked primary references. Found an issue? Tell us what to improve.

Keep exploring Databases

All subtopics →