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.
