Un insieme di attributi o un singolo attributo di una relazione è una chiave in (lo schema) se soddisfa le seguenti condizioni:
- Per ogni istanza di , non esistono due tuple distinte e che hanno gli stessi valori per tutti gli attributi di (); cioè , determina tutto .
- Nessun sottoinsieme proprio di soddisfa la condizione (ovviamente è verificata se l’attributo è un singleton).
Una superchiave è un insieme di attributi che contiene anche una o più chiavi.
N.B.: Una chiave può essere anche un insieme di attributi di cui nessuno è una chiave.
Un attributo si dice primo se appartiene a una chiave (NON a una superchiave).
- In un database di persone, nome + codice fiscale è la superchiave, mentre solo il codice fiscale è la vera chiave, quindi per definizione la superchiave può essere ridotta.
- Lo schema stesso è una superchiave.
Il valore di default
nullè polimorfico (tutti i tipi degli attributi sono nullable) e non viola l’unicità delle chiavi e la foreign key.