A functional dependency exists when one attribute, or set of attributes, uniquely determines another. Partial-key and transitive dependencies are specific dependency problems that normalization removes to reduce redundancy and update anomalies.
The Reasoning
A functional dependency is written as . This means that whenever two records have the same value of , they must also have the same value of . Here, is the determinant.
For example, in STUDENT(StudentID, StudentName), because each student ID identifies one student name.
| Dependency | Meaning | Example |
|---|---|---|
| Functional dependency | One attribute or attribute set determines another | |
| Partial-key dependency | A non-key attribute depends on only part of a composite primary key | In ENROLMENT(StudentID, CourseID, StudentName), , although the key is (StudentID, CourseID) |
| Transitive dependency | A non-key attribute depends on the key through another non-key attribute | and , so transitively |
A partial-key dependency violates second normal form (2NF). It is removed by placing the partially dependent attribute in a separate relation, such as STUDENT(StudentID, StudentName).
By contrast, a full functional dependency uses the whole composite key. For example, in ENROLMENT(StudentID, CourseID, Grade), the grade depends on both identifiers, not either one alone.
A transitive dependency violates third normal form (3NF). It is removed by separating customer data into CUSTOMER(CustomerID, CustomerName) while retaining CustomerID as a foreign key in ORDER.
Normalization must also preserve valid links: the decomposed relations reconnect through primary-key and foreign-key attributes, avoiding accidental information loss. This is called lossless decomposition.
A common misconception is that every functional dependency is undesirable. Functional dependencies are normal and necessary; only dependencies that create partial or transitive reliance on a key cause normalization problems.
Exam Technique
For A3.2 Database design, identify the primary key, write dependencies using , classify each dependency, and state the relevant normal form. Always explain how decomposition removes redundancy and prevents insertion, deletion, and update anomalies.