Lesson 7 | Second Normal Form |

Objective | Explain the requirements for Second Normal Form |

Second Normal Form (2NF) has two main requirements that must be met for a table to be considered in 2NF:

To meet the second requirement, you may need to create additional tables and move data to ensure that each non-key column depends on the entire primary key. This process is also known as partial dependency elimination. By meeting these requirements, a table can be considered in second normal form (2NF), which is the second step towards achieving a normalized database design.

- The table must be in first normal form (1NF): This means that the table should have a primary key, and each column should contain atomic values.
- All non-key columns must be fully dependent on the primary key: This means that all non-key columns should depend on the entire primary key, and not just a part of it.

To meet the second requirement, you may need to create additional tables and move data to ensure that each non-key column depends on the entire primary key. This process is also known as partial dependency elimination. By meeting these requirements, a table can be considered in second normal form (2NF), which is the second step towards achieving a normalized database design.

Relations in 1NF can have significant design flaws resulting in reduced efficiency. The goal of second normal form *(2NF)*^{[1]} is to correct these flaws. Consider the following table, which might be used to list cars available for sale at different dealerships. The relation assumes that a given car can only be stocked by a single dealer.

Car |
||||||

CarID | Color | Make | Model | Year | DealerID | DealerName |

101 | Red | Ford | Escort | 1999 | 501 | Timmons |

102 | Blue | Ford | Escort | 1999 | 502 | Serrano |

103 | Green | Chevy | Malibu | 1996 | 503 | Tomason |

104 | Black | Ford | Explorer | 2000 | 504 | Frye |

Note that, in this example, values in the CarID field are equivalent to book ISBN's.
The CarID denotes a particular make and model of car, but not a specific instance of that make and model.

In relational notation, this table would be written as:

The problem with this relation is that the fields relating to a car's dealer are not functionally dependent on the primary key (CarID). If any car can be acquired from more than one dealer, you will waste space by creating a second relation to save information about that car and its second dealer.

For a relation to be in 2NF, every descriptor (non-key column) must be*functionally dependent* on every primary-key column in the relation.

The next lesson defines*functional dependencies*^{[2]} .

In relational notation, this table would be written as:

Car (CarID, Color, Make, Model, Year, DealerID, DealerName)

The problem with this relation is that the fields relating to a car's dealer are not functionally dependent on the primary key (CarID). If any car can be acquired from more than one dealer, you will waste space by creating a second relation to save information about that car and its second dealer.

For a relation to be in 2NF, every descriptor (non-key column) must be

The next lesson defines

The solution to anomalies in a first normal form relation is to break down the relation so there is one relation for each entity in the 1NF relation.
The orders relation, for example, will break down into four relations (customers, items, orders, and line items).

Such relations are in at least second normal form (2NF).

In theoretical terms, second normal form relations are defined as follows:

Such relations are in at least second normal form (2NF).

In theoretical terms, second normal form relations are defined as follows:

- The relation is in first normal form.
- All non-key attributes are functionally dependent on the entire primary key.

Before moving on to the next lesson, click the Exercise link below to reinforce your understanding of the requirements of 1NF and 2NF.

**Two Relations - Exercise**

[1]*second normal form (2NF):* A table is in second normal form when every attribute is functionally dependent on the entire primary key.

[2]*functional dependency*: A one-way relationship between two attributes so that, for any unique value of one attribute, there is only one value of the other attribute.