Differenza tra chiave primaria e chiave esterna
Differenze chiave tra chiave primaria e chiave esterna
- Un vincolo di chiave primaria è una colonna che identifica in modo univoco ogni riga nella tabella del sistema di gestione del database relazionale, mentre una chiave esterna è una colonna che crea una relazione tra due tabelle.
- La chiave primaria non accetta mai valori null, mentre la chiave esterna può accettare più valori null.
- Puoi avere una sola chiave primaria in una tabella, mentre puoi avere più chiavi esterne in una tabella.
- Il valore della chiave primaria non può essere rimosso dalla tabella madre, mentre il valore della chiave esterna può essere rimosso dalla tabella figlia.
- Due righe non possono avere valori identici per una chiave primaria; d'altra parte, una chiave esterna può contenere valori duplicati.
- Non esiste alcuna limitazione all'inserimento dei valori nella colonna della tabella durante l'inserimento di qualsiasi valore nella tabella delle chiavi esterne; assicurarsi che il valore sia presente in una colonna di una chiave primaria.

Qui ho analizzato la differenza tra la chiave primaria e la chiave esterna e ne valuterò in modo completo i pro e i contro.
Cos'è la chiave primaria?
Un vincolo di chiave primaria è una colonna o un gruppo di colonne che identificano in modo univoco ogni riga nella tabella del sistema di gestione del database relazionale. Non può essere un duplicato, ovvero lo stesso valore non deve apparire più di una volta nella tabella.
Una tabella non può avere più di una chiave primaria. IL chiave primaria può essere definito a livello di colonna o tabella. Se crei una chiave primaria composita, dovrebbe essere definita a livello di tabella.
Esempio di chiave primaria
Sintassi:
Di seguito è riportata la sintassi della chiave primaria:
CREATE TABLE <Table-Name> ( Column1 datatype, Column2 datatype, PRIMARY KEY (Column-Name) . );
Qui,
- Table_Name è il nome della tabella che devi creare.
- Column_Name è il nome della colonna con la chiave primaria.
Esempio:
| StudID | N. rotolo | Nome | Cognome | |
|---|---|---|---|---|
| 1 | 11 | Tom | Prezzo | abc@gmail.com |
| 2 | 12 | Nick | Wright | xyz@gmail.com |
| 3 | 13 | Dana | Nathan | mno@yahoo.com |
Nell'esempio sopra, abbiamo creato una tabella studenti con colonne come StudID, Roll No., First Name, Last Name ed Email. StudID è stato scelto come chiave primaria perché può identificare in modo univoco altre righe nella tabella.
Perché utilizzare la chiave primaria?
Durante i miei anni di gestione dei sistemi di database, ho notato questi svantaggi e vantaggi quando si utilizza una chiave primaria:
- Lo scopo principale della chiave primaria è identificare ogni singolo record nella tabella del database.
- Puoi utilizzare una chiave primaria quando non consenti a qualcuno di immettere valori null.
- Se elimini o aggiorni i record, verrà intrapresa l'azione specificata per garantire l'integrità dei dati.
- Eseguire l'operazione di restrizione per rifiutare l'operazione di eliminazione o aggiornamento per la tabella padre.
- Ogni volta che si organizza fisicamente una tabella DBMS, i dati vengono organizzati in una sequenza di indici cluster.
Cos'è la chiave esterna?
La chiave esterna è una colonna che crea una relazione tra due tabelle. Lo scopo della chiave esterna è mantenere l'integrità dei dati e consentire la navigazione tra due diverse istanze di un'entità. Funziona come un riferimento incrociato tra due tabelle poiché fa riferimento alla chiave primaria di un'altra tabella. Ogni relazione nel database dovrebbe essere supportata da una chiave esterna.
Esempio di chiave esterna
Sintassi:
Di seguito è riportata la sintassi della chiave esterna:
CREATE TABLE <Table Name>( column1 datatype, column2 datatype, constraint (name of constraint) FOREIGN KEY [column1, column2...] REFERENCES [primary key table name] (List of primary key table column) ...);
Qui,
- Il parametro Nome Tabella indica il nome della tabella che stai per creare.
- I parametri colonna1, colonna2… descrivono le colonne che devono essere aggiunte alla tabella.
- Un vincolo indica il nome del vincolo che stai creando.
- I riferimenti indicano una tabella con la chiave primaria.
Esempio:
| CodiceDip | NomeDip |
|---|---|
| 001 | Scienze |
| 002 | Inglese |
| 005 | computer |
| ID insegnante | Fnome | Lnome |
|---|---|---|
| B002 | David | Ammonitore |
| B017 | Sara | Joseph |
| B009 | Mike | brunton |
Nell'esempio sopra abbiamo due tabelle: un insegnante e un dipartimento di una scuola. Tuttavia, non è possibile vedere quale ricerca funziona in quale dipartimento.
In questa tabella, aggiungendo la chiave esterna in Deptcode al nome dell'insegnante, possiamo creare una relazione tra le due tabelle.
| ID insegnante | CodiceDip | Fnome | Lnome |
|---|---|---|---|
| B002 | 002 | David | Ammonitore |
| B017 | 002 | Sara | Joseph |
| B009 | 001 | Mike | brunton |
Questo concetto è noto anche come integrità referenziale.
Perché utilizzare la chiave esterna?
Da quello che ho visto, ecco i motivi importanti per implementare le chiavi esterne:
- Le chiavi esterne ti aiutano a migrare le entità utilizzando una chiave primaria dalla tabella padre.
- A chiave esterna consente di collegare due o più tabelle insieme.
- Rende coerenti i dati del tuo database.
- Una chiave esterna può essere utilizzata per abbinare una colonna o una combinazione di colonne alla chiave primaria in una tabella padre.
- Il vincolo di chiave esterna SQL viene utilizzato per garantire che l'integrità referenziale del genitore dei dati corrisponda ai valori nella tabella figlia.
Differenza tra chiave primaria e chiave esterna
Vorrei condividere l'importante differenza tra una chiave primaria e una chiave esterna, come ho sperimentato personalmente:

| Base di confronto | Chiave primaria | chiave esterna |
|---|---|---|
| Definizione | Un vincolo di chiave primaria è una colonna o un gruppo di colonne che identificano in modo univoco ogni riga nella tabella del file sistema di gestione di database relazionali. | Una chiave esterna è una colonna che crea una relazione tra due tabelle. |
| Basic | Ti aiuta a identificare in modo univoco un record nella tabella. | È un campo nella tabella che costituisce la chiave primaria di un'altra tabella. |
| NULL | La chiave primaria non accetta mai valori null. | Una chiave esterna può accettare più valori null. |
| Indicizzazione | La chiave primaria è un indice clusterizzato e i dati nella tabella DBMS sono fisicamente organizzati nella sequenza dell'indice clusterizzato. | Una chiave esterna non può creare automaticamente un indice, clusterizzato o non clusterizzato. |
| Contare | Puoi avere una singola chiave primaria in una tabella. | Puoi avere più chiavi esterne in una tabella. |
| cancellazione | Il valore della chiave primaria non può essere rimosso dalla tabella padre. | Il valore della chiave esterna può essere rimosso dalla tabella figlia. |
| Tavolo temporaneo | È possibile definire la chiave primaria in modo implicito nelle tabelle temporanee. | Non è possibile definire chiavi esterne nelle tabelle temporanee locali o globali. |
| Rapporto | La chiave primaria è un indice cluster. | Per impostazione predefinita, non è un indice cluster. |
| Duplicazione | Non possono esserci due righe con valori identici per una chiave primaria. | Una chiave esterna può contenere valori duplicati. |
| Inserimento | Non vi è alcuna limitazione all'inserimento dei valori nella colonna della tabella. | Quando inserisci qualsiasi valore nella tabella delle chiavi esterne, assicurati che il valore sia presente in una colonna di una chiave primaria. |
Come scegliere tra una chiave primaria e una chiave esterna
Da quello che abbiamo visto, le chiavi primarie identificano in modo univoco le voci della tabella e le chiavi esterne collegano queste voci tra le tabelle, entrambe fondamentali per mantenere l'integrità dei dati e facilitare il recupero efficiente dei dati.
