In the relational database model, a functional dependency is a relationship between attributes in the same table. Specifically, if a give functional dependency A -> B exists, then tuples that agree on the value of attributes A must also agree on the value of attributes B.

They help specify primary keys and can aid in schema refinemen. Armstrong's Axioms govern the manipulation of functional dependencies.

If you have a table called Students, and this table has four fields student name(N), student ID(I), student's Dean(D), and major(M) then a functional dependency can determine which fields should be key. The following dependencies may exist :

  • I -> N : Student ID determines a student's name
  • I -> M : Student ID determines a student's major
  • MN -> D : Student's major and name determine his Dean.
One can use functional dependencies to determine the normal form of a database and even use reduction and redundancy elimination methods to reduce or expand a database and improve the overal design.