A functional dependency records when left-side attributes force right-side attributes.

highlighted = computed this step

Functional dependencies

A functional dependency says that once the left side is fixed, the right side is forced. In a table, that means matching left-side values cannot disagree on the right-side values. A trivial dependency only repeats information already present on the left, while a non-trivial dependency can add new information. Note: the diagram shows the dependency that actually changes the closure.

functional dependency\text{functional dependency}

Trivial and non-trivial effects

The compiled dependency set contains 2 dependencies, and the closure trace has 1 firing. Note: the dependency that adds no new attribute is still valid, but it does not create a trace row.

dependencies=2,firings=1\text{dependencies}=2,\quad \text{firings}=1

FD closure, candidate keys, BCNF decomposition, and lossless-join checks are exact finite computations on tiny schemas; dependency inference beyond these traces and physical schema design tradeoffs are beyond this book - no product claims.

Functional dependencies: A+=ABroundfdaddsclosure1A->BBAB

Summary

Functional dependencies are the input facts for the rest of normalization. The engine treats them as pinned finite facts, then recomputes closure, keys, BCNF violations, decomposition, and lossless checks from them. Note: dependency inference beyond these tiny schemas and physical schema design tradeoffs are deferred.

dependencies feed normalization\text{dependencies feed normalization}