#1 India's Top IT Training Institute

×

About Uncodemy

Know more about who we are and what we stand for.

About Us

About Us

Discover our mission to equip individuals with essential IT skills and industry expertise.

Read More →
UnCodeMy Gallery

UnCodeMy Gallery

Explore highlights from our IT training sessions and success stories.

Read More →
×

Free Resources

Learn, practice and plan your career — bilkul free.

Tutorials

Tutorials

Step-by-step written tutorials to learn any technology at your own pace.

Read More →
Free Counselling

Free Counselling

Book a free video counselling session and pick the right course for you.

Read More →
Online Compiler

Online Compiler

Write, run and test your code online — no setup required.

Read More →
🗃️ FREE · EXACT ANSWERS

Database Normalization Checker: Keys, Normal Forms and Decompositions

Enter a relation and its functional dependencies to see its keys, which rules it breaks and how to fix it.

  • 🔑 Candidate keys
  • 📏 2NF, 3NF, BCNF
  • 🧩 Decomposition

How to use the Database Normalization Checker

  1. 1. List the attributesType the relation's attributes, separated by commas.
  2. 2. Add dependenciesOne functional dependency per line, like CourseID -> CourseName, Instructor.
  3. 3. CheckSee keys, the highest normal form, every violation and decompositions.

How it decides

The checker finds every candidate key by computing attribute closures (all attributes reachable from a set) over every subset of attributes, so the keys are exact. It then applies the definitions:

  • 2NF: no non-key attribute depends on only part of a candidate key.
  • 3NF: for every dependency X → A, X is a superkey or A is a prime attribute.
  • BCNF: every determinant is a superkey.

It assumes 1NF (atomic values). It also gives a minimal cover, a lossless, dependency-preserving 3NF decomposition (synthesis algorithm) and a lossless BCNF decomposition.

Worked example

The default relation stores enrolments: StudentID, StudentName, CourseID, CourseName, Instructor, InstructorPhone and Grade. Its candidate key is {StudentID, CourseID}. StudentName depends on StudentID alone, a partial dependency, so the relation is only in 1NF. There's also a transitive dependency, Instructor → InstructorPhone. The 3NF decomposition gives four tables: R(StudentID, StudentName), R(CourseID, CourseName, Instructor), R(StudentID, CourseID, Grade) and R(Instructor, InstructorPhone). The classic S, J, T example (S, J → T and T → J) comes out as 3NF but not BCNF, as textbooks say.

How we checked it

  • On 150 random relations with random dependencies, our keys and normal forms matched an independent brute-force implementation that tests every implied dependency.
  • Every 3NF decomposition was confirmed lossless (chase test) and dependency-preserving.
  • Every BCNF decomposition was confirmed lossless, with each table in BCNF.
  • Up to 16 attributes are supported.

Frequently asked questions

Why can't BCNF always keep every dependency?

Some relations, like S, J, T, can only reach BCNF by splitting a dependency across tables. The tool tells you when that happens; 3NF always keeps them.

Is this enough for my DBMS exam?

It checks your answers. In exams you still need to show the closure steps, which the minimal cover and key lists help you write out.

Is the database normalization checker free?

Yes. You can open the database normalization checker, load files and set every option without signing up. When you check a relation for the first time, we ask once for your name and WhatsApp number; after that it, and every other Uncodemy tool, opens straight away.

More free tools

See all free tools