Normalization
Candidate Keys
Candidate keys are minimal superkeys found by recomputing closure.
Candidate keys
A candidate key is a minimal superkey. Minimal means no smaller contained set already determines the whole relation. The compiler enumerates subsets in deterministic order, recomputes closure for each, and keeps only the minimal winners. Note: the key table is the recomputed list, not a hand-authored list.
All candidate keys
The compiled key table has 1 candidate key. Note: each listed key is included only after closure reaches the full relation and minimality has been checked.
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.
Superset contrast
The contrast closure also reaches size 3 for a relation of size 3, but it is not listed as a candidate key. Note: minimality removes supersets after a smaller key already works.
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.
Summary
Candidate keys are exactly the minimal attribute sets whose closures cover the whole relation. Note: this finite enumeration is suitable for tiny teaching schemas; dependency inference beyond these traces and physical design tradeoffs are deferred.