Le chiavi della base di dati
Cosa sono le chiavi
In un database relazionale una chiave è uno o più attributi che identificano le tuple di una tabella (relazione) in modo univoco.
Essendo associate in modo univoco alle tuple, in una chiave non possono esserci valori duplicati.
Un esempio pratico
In un'anagrafica dei dipendenti di un'azienda l'attributo matricola è una chiave perché identifica in modo univoco ogni lavoratore.
Anche l'insieme di attributi Cognome+Nome+Data di nascita sono una chiave.
In una tabella possono esserci più chiavi. In genere si sceglie la chiave più efficace e semplice da gestire.
Ad esempio, a parità di efficacia tra matricola e cognome+nome+data è più semplice usare l'attributo matricola come chiave.
Nota. L'attributo cognome, invece, non può essere una chiave perché al suo interno ci sono valori duplicati. Due persone si chiamano Rossi.
A cosa servono le chiavi?
Le chiavi permettono l'accesso ai dati della tabella(relazione) perché identificano univocamente le tuple (record) della tabella.
Pertanto, ogni tabella deve avere almeno una chiave
Una tabella è una relazione matematica.
Le relazioni matematiche non contegono elementi identici.
Quindi, la tabella relazionale può contenere soltanto tuple diverse tra loro.
Se le tuple sono tutte diverse tra loro, allora esiste almeno un attributo o un insieme di attributi con tutti valori diversi (chiave).
Nota. Se non ci fosse, nella tabella ci sarebbero alcune tuple identiche. E questo non è possibile in una relazione matematica.
La chiave primaria
Cos'è la chiave primaria
In una tabella relazionale la chiave primaria è una chiave che non contiene valori nulli (Null).
La chiave primaria permette di identificare univocamente tutte le tuple di una tabella in modo rapido, semplice ed efficace.
In una tabella possono esserci molte chiavi ma soltanto una è anche una chiave primaria.
Tutte le altre chiavi sono dette chiavi secondarie.
Esempio. In un'anagrafica dei dipendenti di un'azienda la matricola del lavoratori è la chiave primaria. In una base dati di veicoli la targa è la chiave primaria. In un'anagrafica di contribuenti la chiave primaria è il codice fiscale. E via dicendo.
E se in una tabella non esiste una chiave primaria?
Se in una tabella non esiste un attributo in grado di diventare chiave primaria, allora devo aggiungere alla tabella un nuovo attributo apposito per svolgere questo scopo.
Ad esempio, in genere si aggiunge un attributo codice (Cod) o un attributo identificatore (Id).
La superchiave
Cos'è una superchiave
Un insieme di attributi è una superchiave se e solo se non contiene tuple duplicate al suo interno.
Qual è la differenza tra chiave e superchiave
Una chiave è sempre una superchiave ma non vale l'inverso.
Una superchiave non è detto che sia anche una chiave.
Una superchiave è una chiave se è una superchiave minimale ossia se non contiene altre superchiavi al suo interno.
Un esempio pratico
L'attributo matricola è una superchiave.
E' anche una superchiave minimale perché non esistono altre superchiavi al suo interno.
Pertanto, l'attributo matricola è una chiave.
Esempio 2
Gli attributi cognome + nome sono un'altra superchiave.
Non essendoci altre superchiavi al suo interno, è una superchiave minimale.
Quindi è un'altra una chiave.
Esempio 3
Gli attributi matricola + cognome + nome sono un'altra superchiave.
Non è una superchiave minimale perché ci sono altre superchiavi al suo interno ossia la superchiave matricola.
Quindi non è una chiave.
Alcune osservazioni sulle chiavi e sulle superchiavi
Una volta compresa la differenza tra chiave e superchiave si deducono due osservazioni
- Ogni tabella ha sempre almeno una superchiave. Nel modello relazionale una tabella non può contenere due tuple uguali. Pertanto, l'insieme degli attributi della tabella è sicuramente una superchiave. Da questo si deduce che ogni tabella e ogni schema di relazione ha almeno una superchiave.
- Ogni tabella ha almeno una chiave. Ogni tabella ha una superchiave e ogni superchiave ha al suo interno almeno una superchiave minimale ossia una chiave. Pertanto, in una tabella (relazione) è sempre presente almeno una chiave.
E così via