What is Third normal form (3NF)?

The state of a table that is in second normal form and has no column determined via a column other than the primary key (no transitive functional dependency). If there is a dependency such as emp_no → dept_code → dept_name, for example, splitting off a department table gives third normal form.

Japanese name: 第3正規形

Third normal form (3NF) appears in 2 practice questions across 1 topic, including Database Basics.

Field: Database Basics

Try it: questions about Third normal form (3NF)

The primary key of an order table (order_no, item_no, qty, cust_no, cust_name) is {order_no, item_no}, and its functional dependencies are {order_no, item_no} → qty, order_no → cust_no and cust_no → cust_name. Which is the correct result of normalizing this table up to third normal form (3NF)?

  1. Aorder_line(order_no, item_no, qty, cust_no), customer(cust_no, cust_name)
  2. Border_line(order_no, item_no, qty), order_header(order_no, cust_no), customer(cust_no, cust_name)
  3. Corder_line(order_no, item_no, qty), order_header(order_no, cust_no, cust_name)
Show answer and explanation

Answer: B. order_line(order_no, item_no, qty), order_header(order_no, cust_no), customer(cust_no, cust_name)

Second normal form is a state in first normal form in which no column depends on only part of the primary key (no partial functional dependency). order_no → cust_no is a partial functional dependency, because cust_no is determined by order_no alone, which is only part of the primary key, so the original table is in first normal form but not in second normal form. Moving the columns determined by order_no into order_header(order_no, cust_no, cust_name) gives second normal form. Third normal form (3NF) is a state in second normal form in which no column is determined via a column other than the primary key (no transitive functional dependency). order_header still has the transitive functional dependency order_no → cust_no → cust_name, so customer(cust_no, cust_name) is split off as well. The three tables order_line(order_no, item_no, qty), order_header(order_no, cust_no) and customer(cust_no, cust_name) are then in third normal form. Joining them on order_no and cust_no restores the original table.

Third normal form (3NF) in the explanations

Questions that mention Third normal form (3NF) (2)

  1. The primary key of an order table (order_no, item_no, qty, cust_no, cust_name) is {order_no, item_no}, and its functional dependencies are {order_no, item_no} → qty, order_no → cust_no and cust_no → cust_name. Which is the correct result of normalizing this table up to third normal form (3NF)?
  2. The primary key of an employee table (emp_no, name, dept_code, dept_name) is emp_no, and every column holds a single value. The functional dependencies are emp_no → name, emp_no → dept_code and dept_code → dept_name. Which correctly states the normal form of this table?

Books on Database Basics Ad

As an Amazon Associate I earn from qualifying purchases.

Related terms

Primary key Foreign key ACID properties Database index Database view E-R diagram Isolation level Normalization NoSQL Relational database

Back to the glossary