Superkey

A superkey is any set of attributes whose values uniquely identify tuples in a relation. Unlike a Candidate Key, a superkey does not need to be minimal — it can contain extra attributes. Every candidate key is a superkey, but not every superkey is a candidate key.

Example

For students(id, email, name):

  • {id} — Superkey (and candidate key, minimal)
  • {id, name} — Superkey (not candidate key, not minimal)
  • {id, email, name} — Superkey (the entire tuple, trivially unique)
  • {name} — Not a superkey (not unique)

Relation to BCNF

In Boyce-Codd Normal Form, every non-trivial functional dependency X → Y requires that X is a superkey. This is the defining property of BCNF.