DEV Community

Cover image for Normalization In DBMS
Harish T
Harish T

Posted on

Normalization In DBMS

Simplifying Database Normalization: From 1NF to 3NF
When you start designing a database, it’s easy to store everything in one big table.
But soon, you’ll face duplicate data and inconsistency issues.
That’s where normalization comes in — the process of organizing data step-by-step to make it efficient and logical.

In this post, we’ll learn 1NF, 2NF, and 3NF using a simple Student–Course example.

1NF – All Data in One Table
We start with a single table that contains students, their courses, and instructors.

Problem: Instructor names and course data repeat multiple times.
Let’s fix that.

2NF – Splitting Data into Logical Tables

Now we’ll separate the data into Students, Courses, and a linking table StudentCourses.

Table for Students

Table for Courses

Table for Instructors

Table for Studentcourses


3NF – Removing Transitive Dependencies
emove transitive dependency (non-key attributes shouldn’t depend on other non-keys).

👉 In our case, the InstructorPhone depends on Instructor, not directly on Course.
So we already separated Instructors, which makes this 3NF compliant.

Final tables in 3NF:

Students(StudentID, StudentName)
Instructors(Instructor, InstructorPhone)
Courses(CourseID, CourseName, Instructor)
StudentCourses(StudentID, CourseID)

Final Combined View

Now we can join everything neatly using an SQL JOIN.

Key Takeaways
By breaking down our initial table step by step:

1NF → Atomic values
2NF → Remove partial dependencies
3NF → Remove transitive dependencies
We achieved a clean, normalized schema that eliminates anomalies and improves consistency.

Top comments (0)