Given two attributes A and B of a relation, then B is functionally dependent on A if whenever any two tuples (rows) of the relation have the same value for A, they will necessarily also have the same value for B. Notationally this is written A →B, often colloquially expressed as “A determines B”. This definition is readily generalized to the case where A and B are arbitrary subsets of attributes, which is the definition used in the theoretical development. A logical consequence of the definition is that if the values of a particular attribute in a relation are necessarily all distinct (e.g. if it is a key) then all other attributes of the relation are functionally dependent on it, and similarly for a set of attributes (e.g. a compound key).
A relation is in second normal form if it has a single attribute that can serve as a key or, if having a compound key, all other attributes are functionally dependent on the whole of the key and not just part of it. A relation is in third normal form if it contains no functional dependencies among its nonkey attributes. The concepts of second and third normal form are widely understood and used in practical database design, the functional dependencies usually being a reflection within the tables of real-world functions that exist in the application domain.
Further normal forms, less used in practice, are Boyce–Codd, fourth and fifth. Fourth normal form also uses the concept of multivalued dependency and fifth normal form that of join dependency.