Full Functional Dependency in Database Normalization

Former Lifewire writer Mike Chapple is an IT professional with more than 10 years' experience cybersecurity and extensive knowledge of SQL and database management.

Updated on August 25, 2021 Reviewed by

Jessica Kormos is a writer and editor with 15 years' experience writing articles, copy, and UX content for Tecca.com, Rosenfeld Media, and many others.

A full functional dependency is a state of database normalization that equates to the normalization standard of Second Normal Form (2NF). In brief, this means that it meets the requirements of First Normal Form (1NF), and all non-key attributes are fully functionally dependent on the primary key.

This is not as complicated as it may sound. Let's look at this in more detail.

Summary of First Normal Form

Before a database can be fully functionally dependent, it must first comply with First Normal Form. All this means that each attribute must hold a single atomic value.

For example, the following table does not comply with 1NF because the employee Tina is linked to two locations, both of them in a single cell:

Employee Location
John Los Angeles
Tina Los Angeles, Chicago

Allowing this design could negatively impact data updates or entries. To ensure 1NF compliance, rearrange the table so that all attributes (or column cells) hold a single value:

Employee Location
John Los Angeles
Tina Los Angeles
Tina Chicago

But 1NF is still not enough to avoid problems with the data.

How 2NF Works to Ensure Full Dependency

To be fully dependent, all non-candidate key attributes must depend on the primary key.

A candidate key attribute is any key (for example, a primary or foreign key) used to uniquely identify a database record.

Database designers use a notation to describe the dependent relationships between attributes:

If attribute A determines the value of B, we write this A -> B, meaning that B is functionally dependent on A. In this relationship, A determines the value of B, while B depends on A.

For example, in the following Employee Departments table, EmployeeID and DeptID are both candidate keys: EmployeeID is the table's primary key while DeptID is a foreign key. Any other attributes—in this case, EmployeeName and DeptName—must depend on the primary key to obtain its value.

EmployeeID EmployeeName DeptID DeptName
Emp1 John Dept001 Finance
Emp2 Tina Dept003 Sales
Emp3 Carlos Dept001 Finance

In this case, the table is not fully dependent because, while the EmployeeName depends on the primary key EmployeeID, the DeptName depends instead on the DeptID. This is called partial dependency.

To make this table conform to 2NF, we need to separate the data into two tables: an Employees table and a Departments table. Here's the Employees table:

EmployeeID EmployeeName DeptID
Emp1 John Dept001
Emp2 Tina Dept003
Emp3 Carlos Dept001

We remove the DeptName attribute from the Employees table and create a new table Departments:

DeptID DeptName
Dept001 Finance
Dept002 Human Resources
Dept003 Sales

Now the relations between the tables are fully dependent, or in 2NF.

Why Full Dependency Is Important

Full dependency between database attributes helps ensure data integrity and avoid data anomalies.

For example, consider the table in the section above that adheres only to 1NF. Here it is, again:

Employee Location
John Los Angeles
Tina Los Angeles
Tina Chicago

Tina has two records. If we update one without realizing that there are two, the result would be inconsistent data.

Or, what if we want to add an employee to this table, but we don't yet know the location? We might be disallowed to even add a new employee if the Location attribute does not allow NULL values.

Full dependency is not the whole picture, though, when it comes to normalization. You must make sure that your database is in Third Normal Form (3NF).

Was this page helpful? Thanks for letting us know!

Get the Latest Tech News Delivered Every Day

Tell us why! Other Not enough details Hard to understand More from Lifewire

Man using a laptop

What Is Transitive Dependency in a Database

Database administrator working at desk

Defining a Database Domain

Stylized database flow chart

The Basics of Database Normalization

Young boy student programming at computer in dark classroom

Databases for Beginners

Database programmer using a laptop at desk in a home office

Putting a Database in Third Normal Form (3NF)

Colorful circle made of different colored paper

What Is a Database Instance?

Woman overlooking server room

One-to-Many Relationships in a Database

Database schema layout

What Is a Database Schema?

Business People Discussing Over Laptop At Desk In Meeting

A Database Attribute Defines the Properties of a Table

Social Security Cards

What Is a Primary Key?

An illustration of the ways that data is collected and how databases help parse information.

5 Best Free Online Database Creators

blocked call

7 Best Call-Blocker Apps for Smartphones

Business owner talking to tech support with laptop next to servers

The ACID Database Model

MYSQL database.

An Overview of NoSQL Databases

Computer network illustrated by blocks connected by witres

What Is BASE in Database Engineering?

OpenOffice Writer editing DOCX file

OpenOffice Writer Review Tech for Humans

Hit Refresh on Your Tech News

Lifewire is part of the Dotdash Meredith publishing family. Newsletter Sign Up Newsletter Sign Up Newsletter Sign Up Newsletter Sign Up Newsletter Sign Up

We Care About Your Privacy

We and our 100 partners store and/or access information on a device, such as unique IDs in cookies to process personal data. You may accept or manage your choices by clicking below, including your right to object where legitimate interest is used, or at any time in the privacy policy page. These choices will be signaled to our partners and will not affect browsing data.

We and our partners process data to provide:

Store and/or access information on a device. Use limited data to select advertising. Create profiles for personalised advertising. Use profiles to select personalised advertising. Create profiles to personalise content. Use profiles to select personalised content. Measure advertising performance. Measure content performance. Understand audiences through statistics or combinations of data from different sources. Develop and improve services. Use limited data to select content. List of Partners (vendors)