Chiave primaria e chiave univoca
Una colonna o un insieme di colonne, che possono essere utilizzati per identificare o accedere a una riga o a un insieme di righe in un database è chiamata chiave. Una chiave univoca è una chiave che può identificare in modo univoco una riga in una tabella nel contesto dei database relazionali. Una chiave univoca è costituita da una singola colonna o da un insieme di colonne. Una chiave primaria è anche una combinazione di colonne in una tabella che identificano in modo univoco una riga. Ma è considerato un caso speciale della chiave univoca.
Cos'è la chiave univoca?
Come accennato in precedenza, la chiave univoca è una singola colonna o un insieme di colonne che possono identificare in modo univoco una riga in una tabella. Quindi, una chiave univoca è vincolata in modo tale che non ci siano due valori uguali. Una proprietà importante è che le chiavi univoche non impongono il vincolo NOT NULL. Poiché NULL rappresenta la mancanza di un valore, se due righe hanno NULL in una colonna non significa che i valori siano uguali. La colonna definita come chiave univoca consente solo un singolo valore NULL in quella colonna. Quindi può essere utilizzato per identificare quella particolare riga in modo univoco. Ad esempio, in una tabella che contiene informazioni sugli studenti, l'ID studente può essere definito come una chiave univoca. Poiché due studenti non possono avere lo stesso ID, identifica in modo univoco un singolo studente. Quindi la colonna ID studente soddisfa tutte le proprietà di una chiave univoca. A seconda della struttura di un database, una tabella può avere più di una chiave univoca.
Cos'è la chiave primaria?
La chiave primaria è anche una colonna o una combinazione di colonne che definisce in modo univoco una riga in una tabella di un database relazionale. Una tabella può avere al massimo una chiave primaria. La chiave primaria impone il vincolo NOT NULL implicito. Pertanto, una colonna definita come chiave primaria non può contenere valori NULL. La chiave primaria può essere un normale attributo nella tabella che è garantito essere univoco, ad esempio il numero di previdenza sociale, oppure potrebbe essere un valore univoco generato dal sistema di gestione del database, come un GUID (Globally Unique Identifier) in Microsoft SQL Server. Le chiavi primarie sono definite tramite il vincolo PRIMARY KEY in ANSI SQL Standard. La chiave primaria può anche essere definita durante la creazione della tabella. SQL consente alla chiave primaria di essere composta da una o più colonne e ogni colonna inclusa nella chiave primaria è implicitamente definita come NOT NULL. Ma alcuni sistemi di gestione del database richiedono che le colonne della chiave primaria esplicitamente NON NULL.
Differenza tra chiave primaria e chiave univoca
Anche se sia la chiave primaria che la chiave univoca sono una o più colonne che possono identificare in modo univoco una riga in una tabella, presentano alcune importanti differenze. Ancora più importante, una tabella può avere solo una singola chiave primaria mentre può avere più di una chiave univoca. La chiave primaria può essere considerata come un caso speciale della chiave univoca. Un' altra differenza è che le chiavi primarie hanno un vincolo NOT NULL implicito mentre la chiave univoca non ha quel vincolo. Pertanto, le colonne della chiave univoca possono contenere o meno valori NULL, ma le colonne della chiave primaria non possono contenere valori NULL.