Cosa significa Primary Key?
Una primary key (chiave primaria) è una colonna speciale della tabella del database relazionale (o una combinazione di colonne) designata per identificare in modo univoco ogni record della tabella.
Una chiave primaria viene utilizzata come identificatore unico per analizzare rapidamente i dati all’interno della tabella. Una tabella non può avere più di una chiave primaria.
Le caratteristiche principali di una primary key sono:
- Deve contenere un valore unico per ogni riga di dati.
- Non può contenere valori nulli.
- Ogni riga deve avere un valore di primary key.
Una primary key può utilizzare uno o più campi già presenti nel modello di dati sottostante, oppure può essere creato un campo aggiuntivo specifico per essere la primary key.
Techopedia spiega la Primary Key
Il concetto di primary key è fondamentale per un database relazionale efficiente. Senza la chiave primaria e i concetti di chiave esterna strettamente correlati, i database relazionali non funzionerebbero.
Infatti, poiché una tabella può facilmente contenere migliaia di record (compresi i duplicati), una chiave primaria è necessaria per garantire che un record della tabella possa sempre essere identificato in modo univoco.
Tutte le chiavi che derivano da fatti osservabili e attributi del mondo reale sono chiamate chiavi primarie naturali, in contrapposizione alle chiavi primarie surrogate che sono invece assegnate arbitrariamente a ciascun record.
Quasi tutti gli individui hanno a che fare con primary key naturali frequentemente, ma inconsapevolmente, nella vita di tutti i giorni.
Ad esempio, agli studenti vengono assegnati abitualmente numeri di identificazione (ID) unici, e tutti i cittadini italiani hanno un codice fiscale assegnato dal governo e identificabile in modo univoco. Gli indirizzi stradali o i numeri di patente sono esempi di chiavi primarie utilizzate per identificare in modo univoco (rispettivamente) luoghi o autisti.
Come altro esempio, un database deve contenere tutti i dati archiviati da una banca commerciale. Due delle tabelle del database includono CUSTOMER_MASTER, che memorizza i dati di base e statici dei clienti (nome, data di nascita, indirizzo, codice fiscale, ecc.) e ACCOUNTS_MASTER, che memorizza i vari dati del conto bancario (data di creazione del conto, tipo di conto, limiti di prelievo o informazioni corrispondenti sul conto, ecc.)
Per identificare in modo univoco i clienti, viene selezionata una colonna o una combinazione di colonne per garantire che due clienti non abbiano mai lo stesso valore univoco. Pertanto, alcune colonne vengono immediatamente eliminate, ad esempio il cognome e la data di nascita.
Un buon candidato per la chiave primaria è la colonna designata per contenere i numeri di patente. Tuttavia, alcuni titolari di conto potrebbero non avere una patente, quindi la candidatura di questa colonna viene eliminata.
L’opzione logica successiva è quella di utilizzare una combinazione di colonne, ad esempio aggiungendo il cognome alla data di nascita e all’indirizzo e-mail, ottenendo una chiave primaria lunga e ingombrante.
L’opzione migliore è creare una chiave primaria separata in una nuova colonna denominata ID_CLIENTE. In questo modo, il database genera automaticamente un numero unico ogni volta che viene aggiunto un cliente, garantendo un’identificazione univoca.
Quando viene creata questa chiave, la colonna viene designata come chiave primaria all’interno dello script SQL che crea la tabella, e tutti i valori nulli vengono automaticamente rifiutati.
Il numero di conto associato a ciascun ID CLIENTE consente di gestire in modo sicuro le query sui clienti e di effettuare ricerche rapide (come per qualsiasi tabella indicizzata).
Ad esempio, a un cliente può essere chiesto di fornire il suo cognome quando effettua una ricerca bancaria. Una query su un cognome comune (come Rossi) probabilmente restituirà più risultati.
Quando interroga i dati, l’utilizzo della funzione di unicità della primary key garantisce un unico risultato.