Functional Dependency is the starting point for the process of normalization. Functional dependency exists when a relationship between two attributes allows you to uniquely determine the corresponding attribute’s value. If ‘X’ is known, and as a result you are able to uniquely identify ‘Y’, there is functional dependency. Combined with keys, normal forms are defined for relations.
Bear Number determines Student Name:
BearNum ---> StuName
Department Number and Job Rank determine Security Clearance:
(DeptNum, JRank) --->SecClear
Social Security Number determines Employee Name and Salary:
SSN ---> (EmpName, Salary)
Additionally, the above can be read as:
SSN --->EmpName and SSN Salary
William W. Armstrong established a set of rules which can be sued to infer the functional dependencies in a relational database (from umbc.edu - no external linking, Google Database Design UMBC):
- Reflexivity rule:If A is a set of attributes, and B is a set of attributes that are completely contained in A, the A implies B.
- Augmentation rule: If A implies B, and C is a set of attributes, then if A implies B, then AC implies BC.
- Transitivity rule: If A implies B and B implies C, then A implies C.
These can be simplified if we also use:
- Union rule:If A implies B and A implies C, the A implies AC.
- Decomposition rule:If A implies BC then A implies B and A implies C.
- Pseudotransitivity rule:If A implies B and CB implies D, then AC implies D.
Normalization, as previously mentioned, makes use of functional dependencies that exist in relations and the primary key or candidate keys when analyzing tables. Multivalued Dependencies are also part of the normalization process, at levels higher than Third Normal Form.