Database normalization

Fill in a table, mark its primary key and declare its functional dependencies to see how it splits into 1NF, 2NF and 3NF.

Everything is calculated in this browser; nothing is sent to any server.

Table

3 rows × 5 columns

A cell is treated as multivalued when it contains values separated by a comma or a semicolon.

Primary key

Tick the columns that make up the key (one or several).

Functional dependencies

A dependency says that the determinant columns fix the value of the dependent columns.

No dependencies yet. Add the ones that apply to your table.

This tool teaches you how to normalize a database step by step. You type in a table (3 rows by 5 columns to start, up to 20 rows and 10 columns), mark its primary key and declare the functional dependencies that hold. When you press Normalize, it detects the normal form the table is in (not in 1NF, 1NF, 2NF or 3NF) and shows the tables that result from applying 1NF, 2NF and 3NF, with their primary and foreign keys and the reason for each split. If a step is already met, it says so and changes nothing. It is handy for studying the relational model. Everything is calculated in your browser and nothing is sent to any server.

How to use it

  1. Type the table data and rename the columns if you like. You can add or remove rows and columns.
  2. Tick the primary key columns, single or composite.
  3. Add the functional dependencies: pick the determinant and dependent columns of each one.
  4. Press Normalize and go through the current normal form and the 1NF, 2NF and 3NF steps with their resulting tables.

Frequently asked questions

What counts as a multivalued cell?
A cell with several values separated by a comma or a semicolon, such as "ann; luis". It does not detect other kinds of non-atomic data, such as a compound address ("Street 1, 28000 Madrid" would be treated as two values) or repeated columns like phone1 and phone2.
Does it infer the functional dependencies from the data?
No. You declare them, because with few rows the data is not enough to know which dependencies are true. The tool only checks that the data does not contradict them.
Which normal forms does it cover?
First, second and third normal form. It does not cover BCNF, 4NF or 5NF, and it works with a single primary key.
Can I load or copy my data as JSON?
Yes. The Edit as JSON button shows the table, key and dependencies as JSON so you can change and apply them, and the Example button loads a sample table. Every table in the result has a Copy JSON button so you can paste it into the editor and continue from that step.

Related tools