Attribute closure repeatedly applies dependencies until no new attributes appear.

highlighted = computed this step

Attribute closure

Attribute closure is a fixpoint computation. Start with the chosen attributes, scan the dependencies in deterministic order, add anything newly implied, and repeat until nothing changes. The trace matters because it shows why the final closure is not an authored answer. Note: each row in the render is a dependency firing produced by the compiler.

closure fixpoint\text{closure fixpoint}

Closure trace

The recomputed closure contains 3 attributes after 2 firings. Note: the render lists the fired dependencies, what each firing added, and the closure after that step.

X+=3,firings=2\left|X^+\right|=3,\quad \text{firings}=2

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.

Attribute closure: A+=ABCroundfdaddsclosure1A->BBAB1B->CCABC

Summary

Closure is the basic exact operation underneath superkeys, candidate keys, BCNF, and the lossless-join check. Note: the book uses finite dependency traces only; broader dependency inference systems and physical design tradeoffs are outside this model.

closure is recomputed\text{closure is recomputed}