How to use the Database Normalization Checker
- 1. List the attributesType the relation's attributes, separated by commas.
- 2. Add dependenciesOne functional dependency per line, like CourseID -> CourseName, Instructor.
- 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.