A candidate key is a minimal super key for a relation, meaning it is a set of attributes that uniquely identifies a tuple, and removing any attribute from the set would result in a loss of uniqueness.
Consider a relation R with attributes {A,B,C} and the following functional dependencies:
Here, Ais a candidate key because:
If there are multiple sets of attributes that satisfy the candidate key conditions, each of them is considered a candidate key. For example, if R has attributes {A,B,C} and the functional dependency {A,B}→C, then {A,B} might also be a candidate key.