Chiavi DBMS: tipi Candidate, Primarie, Super e Estere
⚡ Riepilogo intelligente
Nei DBMS, le chiavi sono attributi che identificano in modo univoco una riga in una tabella e stabiliscono relazioni tra le tabelle. Otto tipi di chiavi, dalla chiave primaria e superchiave alla chiave esterna e surrogata, garantiscono l'identità e l'integrità all'interno di un database relazionale.

Che cosa sono le chiavi in un DBMS?
Chiavi nel DBMS Le chiavi sono attributi o un insieme di attributi che aiutano a identificare una riga (tupla) in una relazione (tabella). Permettono di individuare la relazione tra due tabelle. Le chiavi aiutano a identificare in modo univoco una riga in una tabella tramite una combinazione di una o più colonne e sono utili anche per trovare un record univoco nella tabella.
Esempio:
| ID Dipendente | Nome | Cognome |
|---|---|---|
| 11 | Andrea | Johnson |
| 22 | Tom | Legno (MDF) |
| 33 | alex | Sano |
Nell'esempio precedente, l'ID dipendente è una chiave primaria perché identifica in modo univoco un record dipendente. In questa tabella, nessun altro dipendente può avere lo stesso ID dipendente.
Perché ci serve una chiave?
Ecco alcuni motivi per utilizzare una chiave in un DBMS:
- Le chiavi consentono di identificare in modo univoco qualsiasi riga di dati all'interno di una tabella. In un'applicazione reale, una tabella potrebbe contenere migliaia di record, alcuni dei quali duplicati. Le chiavi garantiscono la possibilità di identificare in modo univoco un record della tabella, nonostante queste difficoltà.
- Consentono di stabilire e identificare le relazioni tra le tabelle.
- Ti aiutano a rafforzare l'identità e l'integrità nella relazione.
Tipi di chiavi nei DBMS
Nei DBMS esistono principalmente otto tipi diversi di chiavi, e ogni chiave ha una propria funzionalità:
- Super Key
- Chiave primaria
- Chiave del candidato
- Chiave alternativa
- chiave esterna
- Chiave composta
- Chiave composita
- Chiave surrogata
La tabella seguente riassume tutti e otto i punti a colpo d'occhio, prima che ciascuno venga spiegato in dettaglio.
| Le | In una riga | Unico? |
|---|---|---|
| Super Key | Qualsiasi set di attributi che identifica una riga, sono ammessi attributi aggiuntivi | Si |
| Chiave del candidato | Una super chiave minimale, senza attributi ridondanti | Si |
| Chiave primaria | La chiave del candidato scelto non è nulla | Si |
| Chiave alternativa | Una chiave candidata non scelta come primaria | Si |
| chiave esterna | Fa riferimento a una chiave primaria in un'altra tabella | Non |
| Chiave composta | Due o più attributi, ciascuno potenzialmente non univoco | Combinato |
| Chiave composita | Due o più colonne combinate per l'unicità | Combinato |
| Chiave surrogata | Un identificatore artificiale generato | Si |
Cos'è una Super Chiave?
Una superchiave è un gruppo di chiavi singole o multiple che identifica le righe in una tabella. Una superchiave può avere attributi aggiuntivi non necessari per l'identificazione univoca.
Esempio:
| EmpSSN | NumEmp | Nome personale |
|---|---|---|
| 9812345098 | AB05 | indicato |
| 9876512345 | AB06 | Roslyn |
| 199937890 | AB07 | James |
Nell'esempio precedente, EmpSSN e EmpNum sono superchiavi.
Cos'è una chiave primaria?
CHIAVE PRIMARIA in DBMS La chiave primaria è una colonna o un gruppo di colonne all'interno di una tabella che identifica in modo univoco ogni riga della tabella stessa. La chiave primaria non può essere duplicata, ovvero lo stesso valore non può comparire più di una volta nella tabella. Una tabella non può avere più di una chiave primaria.
Regole per la definizione di una chiave primaria
- Due righe non possono avere lo stesso valore di chiave primaria.
- Ogni riga deve avere un valore di chiave primaria.
- Il campo della chiave primaria non può essere nullo.
- Il valore in una colonna di chiave primaria non può mai essere modificato o aggiornato se una chiave esterna fa riferimento a quella chiave primaria.
Esempio: Nel seguente esempio, StudID è una chiave primaria.
| 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 |
Che cos'è un tasto alternativo?
CHIAVE ALTERNATIVA La chiave primaria è una colonna o un gruppo di colonne all'interno di una tabella che identifica in modo univoco ogni riga. Una tabella può avere più opzioni per la chiave primaria, ma solo una può essere impostata come tale. Tutte le chiavi che non sono la chiave primaria sono chiamate chiavi alternative.
Esempio: In questa tabella, StudID, Roll No ed Email sono qualificati per diventare chiave primaria. Tuttavia, poiché StudID è la chiave primaria, Roll No ed Email diventano chiavi alternative.
| 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 |
Cos'è una chiave candidata?
CHIAVE DEL CANDIDATO Una chiave candidata è un insieme di attributi che identificano in modo univoco le tuple in una tabella. Una chiave candidata è una superchiave senza attributi ripetuti. La chiave primaria deve essere selezionata tra le chiavi candidate. Ogni tabella deve avere almeno una chiave candidata e può avere più chiavi candidate, ma solo una chiave primaria.
Proprietà di una chiave candidata:
- Deve contenere valori univoci.
- Una chiave candidata può avere più attributi.
- Non deve contenere valori nulli.
- Dovrebbe contenere i campi minimi necessari a garantire l'univocità.
- Identifica in modo univoco ogni record in una tabella.
Esempio: nella tabella seguente, StudID, Roll No ed Email sono chiavi candidate che ci aiutano a identificare in modo univoco un record studente. La loro relazione con le chiavi primarie e superchiave è un modo comune per capire dipendenza funzionale.
| 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 |

Che cos'è una chiave esterna?
CHIAVE ESTERA Una chiave esterna è una colonna che crea una relazione tra due tabelle. Lo scopo di una chiave esterna è quello di mantenere l'integrità dei dati e consentire la navigazione tra due diverse istanze di un'entità. Agisce come un riferimento incrociato tra due tabelle, poiché fa riferimento alla chiave primaria di un'altra tabella.
Esempio:
| DeptCode | NomeDip |
|---|---|
| 001 | Scienze |
| 002 | Inglese |
| 005 | computer |
| ID insegnante | Fnome | Lnome |
|---|---|---|
| B002 | David | Ammonitore |
| B017 | Sara | Joseph |
| B009 | Mike | brunton |
In questo esempio, abbiamo due tabelle, Insegnante e Dipartimento, all'interno di una scuola. Allo stato attuale, non c'è modo di vedere quale insegnante lavora in quale dipartimento.
Aggiungendo la chiave esterna DipartimentoCode alla tabella Insegnante, possiamo creare una relazione tra le due tabelle.
| ID insegnante | DeptCode | Fnome | Lnome |
|---|---|---|---|
| B002 | 002 | David | Ammonitore |
| B017 | 002 | Sara | Joseph |
| B009 | 001 | Mike | brunton |
Questo concetto è noto anche come integrità referenziale.
Che cos'è una chiave composta?
CHIAVE COMPOSTA Una chiave composta ha due o più attributi che consentono di identificare in modo univoco un record specifico. È possibile che ciascuna colonna non sia univoca singolarmente all'interno del database. Tuttavia, quando combinate, le colonne diventano univoche. Lo scopo della chiave composta è quello di identificare in modo univoco ogni record nella tabella.
Esempio:
| Numero d'ordine | Codice prodotto | Ürün Adı | Quantità |
|---|---|---|---|
| B005 | GIAPPONE102459 | Topo | 5 |
| B005 | DKT321573 | USB | 10 |
| B005 | OMG446789 | Monitor LCD | 20 |
| B004 | DKT321573 | USB | 15 |
| B002 | OMG446789 | Stampante laser | 3 |
In questo esempio, OrderNo e ProductID non possono essere entrambi chiavi primarie, poiché nessuno dei due identifica in modo univoco un record. Tuttavia, una chiave composta da OrderNo e ProductID identifica in modo univoco ciascun record.
Cos'è una chiave composita?
CHIAVE COMPOSITA Si tratta di una combinazione di due o più colonne che identificano in modo univoco le righe di una tabella. La combinazione delle colonne garantisce l'unicità, sebbene l'unicità individuale non sia garantita. Pertanto, vengono combinate per identificare in modo univoco i record in una tabella.
La differenza tra una chiave composta e una chiave composita sta nel fatto che qualsiasi parte di una chiave composta può essere una chiave esterna, mentre una chiave composita può essere o meno parte di una chiave esterna.
Che cos'è una chiave surrogata?
CHIAVE SURROGATA Una chiave surrogata è una chiave artificiale che ha lo scopo di identificare in modo univoco ogni record. Questo tipo di chiave è unico perché viene creato quando non si dispone di una chiave primaria naturale. Le chiavi surrogate non conferiscono alcun significato ai dati nella tabella e sono generalmente numeri interi generati immediatamente prima dell'inserimento del record.
| Fnome | Cognome | Ora di inizio | Fine |
|---|---|---|---|
| Anne | fabbro | 09:00 | 18:00 |
| Giacca | Francis | 08:00 | 17:00 |
| Anna | McLean | 11:00 | 20:00 |
| indicato | Guglielmo | 14:00 | 23:00 |
L'esempio sopra mostra gli orari dei turni di diversi dipendenti. Qui è necessaria una chiave surrogata per identificare in modo univoco ciascun dipendente. Le chiavi surrogate in SQL vengono utilizzati quando:
- Nessuna proprietà ha il parametro di una chiave primaria.
- La chiave primaria è troppo grande o complicata.
Differenza tra chiave primaria e chiave esterna
Di seguito viene illustrata la principale differenza tra una chiave primaria e una chiave esterna:
| Chiave primaria | chiave esterna |
|---|---|
| Consente di identificare in modo univoco un record nella tabella. | È un campo nella tabella che costituisce la chiave primaria di un'altra tabella. |
| Una chiave primaria non accetta mai valori nulli. | Una chiave esterna può accettare più valori null. |
| La chiave primaria è un indice cluster e i dati nella tabella sono fisicamente organizzati secondo la sequenza dell'indice cluster. | Una chiave esterna non può creare automaticamente un indice, clusterizzato o non clusterizzato. È possibile crearlo manualmente. |
| È possibile avere una singola chiave primaria in una tabella. | Puoi avere più chiavi esterne in una tabella. |
