La differenza fondamentale tra la chiave esterna e la chiave primaria è che la chiave esterna è una colonna o un insieme di colonne che fanno riferimento a una chiave primaria oa una chiave candidata di un' altra tabella mentre la chiave primaria è una colonna o un insieme di colonne che può essere utilizzato per identificare in modo univoco una riga in una tabella.
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 primaria in un database relazionale è una combinazione di colonne in una tabella che identificano in modo univoco una riga della tabella. La chiave esterna in un database relazionale è un campo in una tabella che corrisponde alla chiave primaria di un' altra tabella. La chiave esterna viene utilizzata per incrociare le tabelle.
Cos'è la chiave esterna?
La chiave esterna è un vincolo referenziale tra due tabelle. Identifica una colonna o un insieme di colonne in una tabella, denominata tabella di riferimento che fa riferimento a un insieme di colonne in un' altra tabella, denominata tabella di riferimento. La chiave esterna o le colonne nella tabella di riferimento devono essere la chiave primaria o una chiave candidata (una chiave che può essere utilizzata come chiave primaria) nella tabella di riferimento. Inoltre, le chiavi esterne consentono di collegare i dati tra più tabelle. Pertanto, la chiave esterna non può contenere valori che non compaiono nella tabella a cui fa riferimento. Quindi il riferimento fornito dalla chiave esterna aiuta a collegare le informazioni in più tabelle e questo diventerebbe essenziale con database normalizzati. Più righe nella tabella di riferimento possono fare riferimento a una singola riga nella tabella di riferimento.
Figura 01: Mappatura delle chiavi esterne
Nello standard ANSI SQL, il vincolo FOREIGN KEY definisce le chiavi esterne. Inoltre è possibile definire le chiavi esterne in fase di creazione della tabella stessa. Una tabella può avere più chiavi esterne e possono fare riferimento a tabelle diverse.
Cos'è la chiave primaria?
La chiave primaria è 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 con chiave primaria non può contenere valori NULL. La chiave primaria può essere un normale attributo nella tabella di cui è garantito l'univocità, ad esempio un numero di previdenza sociale, oppure potrebbe essere un valore univoco generato dal sistema di gestione del database, ad esempio un GUID (Globally Unique Identifier) in Microsoft SQL Server.
Figura 02: Chiave primaria
Inoltre, il vincolo PRIMARY KEY in ANSI SQL Standard definisce le chiavi primarie. È anche possibile definire una chiave primaria durante la creazione della tabella. In aggiunta a ciò, 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 siano esplicitamente NON NULL.
Qual è la differenza tra chiave esterna e chiave primaria?
Chiave straniera vs chiave primaria |
|
La chiave esterna è una colonna o un gruppo di colonne in una tabella di database relazionale che fornisce un'associazione tra i dati in due tabelle. | La chiave primaria è una speciale colonna della tabella del database relazionale o una combinazione di più colonne che consente di identificare in modo univoco tutti i record della tabella. |
NULL | |
La chiave straniera accetta il valore NULL. | Il valore della chiave primaria non può essere NULL. |
Numero di chiavi | |
La tabella può avere più chiavi esterne. | La tabella può avere solo una chiave primaria. |
Duplicazione | |
Le tuple possono avere un valore duplicato per un attributo di chiave esterna. | Due tuple in una relazione non possono avere valori duplicati per un attributo di chiave primaria. |
Riepilogo – Chiave esterna vs chiave primaria
La differenza tra chiave esterna e chiave primaria è che la chiave esterna è una colonna o un insieme di colonne che fanno riferimento a una chiave primaria o una chiave candidata di un' altra tabella mentre la chiave primaria è una colonna o un insieme di colonne che può essere utilizzato per identificare in modo univoco una riga in una tabella.