Primary Key
Rispondo a Gianni che mi chiedeva in un'altro thread dell'importanza delle
PRIMARY KEY.
Una chiave primaria (PRIMARY KEY) è una colonna di una tabella (TABLE) che permette di identificare in modo univoco gruppi di record all'interno della stessa tabella. Si può operare anche con una combinazione di colonne, in questo caso si tratta di chiavi primarie composte. Quando si definisce una colonna come chiave primaria si tenga conto che il campo che la identifica non può avere mai lo stesso valore in più record e che lo stesso valore deve essere, sia per tipo che per contenuto, valido e quindi non nullo.
Quindi l'importanza delle
chiavi primarie e il loro uso nella gestione dei dati è presto detta. Supponiamo, per esempio, un sistema di integrità referenziale che assicuri che le relazioni definite tra le tabelle in uso non possano essere mai violate. Supponiamo che questo sistema coinvolga due tabelle: una
tabella referenziata (
REFERENCED TABLE) che contiene la chiave primaria e una
tabella referenziante (
REFERENCING TABLE) che si lega ad essa attraverso una
chiave esterna (
FOREIGN KEY). Per essere precisi va detto che la
chiave esterna può far riferimento ad una o più colonne su cui è definito un vincolo di unicità (
UNIQUE CONSTRAINT), ed in ogni caso occorre che il tipo di dato delle colonne in relazione sia identico. Un esempio? Si pensi ad un qualsiasi gestionale aziendale dove è necessario relazionare un cliente presente nella tabella nominativi (anagrafica) con i relativi movimenti di magazzino o contabili, ebbene: si percepisce l'importanza dell'utilizzo di chiavi uniche?.
Altra cosa da dire è che nello standard
ANSI SQL92, oltre a tutti gli atri comandi o azioni possibili sia sulle singole tabelle che su i gruppi di record (
INSERT, DELETE, ecc.), si parla di azioni referenziali anche al verificarsi degli aggiornamenti della tabella referenziata e se ne definiscono quattro tipi dalle quali si evince ancor di più l'importanza della presenza delle
chiavi primarie:
- NO ACTION che impedisce le modifiche alla chiave primaria referenziata da una chiave esterna
- SET NULL consente la cancellazione e la modifica e produce un aggiornamento del valore della chiave primaria al valore NULL
- SET DEFAULT imposta il valore della chiave esterna al suo valore di DEFAULT
- CASCADE consente la cancellazione e la modifica della chiave primaria, producendo, nel primo caso, la cancellazione di tutte le istanze in relazione della tabella referenziante, e nel secondo caso l’aggiornamento del valore della chiave esterna
Ma adesso mi fermo, altrimenti rischio di scrivere un trattato sull'argomento e visto che molta buona teoria ed esempi ben fatti abbondano sul web, rimando gli interessati ad effettuare delle ricerche in internet da dove potranno attingere ulteriori informazioni.