Che cos'è una chiave primaria in SQL Server?

Datamaze
13.12.23 12:40 PM Comment(s)

In SQL Server, una chiave primaria è un vincolo che identifica in modo univoco ogni riga in una tabella. Le chiavi primarie sono uno degli elementi fondamentali della progettazione di un database relazionale: non solo garantiscono l'integrità dei dati, ma migliorano anche le prestazioni delle query, in quanto sono esse stesse un indice univoco della tabella.


Una chiave primaria è composta da una o più colonne della tabella, con il vincolo che l’insieme dei valori che la compongono sia univoco per ciascuna riga.


Caratteristiche delle chiavi primarie

Una chiave primaria deve soddisfare i seguenti requisiti:
  • Deve essere univoca: ogni riga in una tabella deve avere un valore univoco per la chiave primaria (anche come combinazione di più colonne).
  • Deve essere non null: la chiave primaria non può essere impostata su NULL (valore vuoto).
  • Deve essere una o più colonne, ovvero deve essere composta da almeno una colonna nella tabella.

Creazione di una chiave primaria

Una chiave primaria solitamente viene creata assieme alla tabella che governa come parte integrante di una buona progettazione della base dati.              

Ipotizzando di progettare una base dati per un e-shop possiamo immaginare l'anagrafica articoli come una banale tabella con Codice, Descrizione e Prezzo. La nostra chiave primaria che impedisce di avere duplicati e ci permette una veloce ricerca potrebbe essere tranquillamente il codice articolo, come nell’esempio seguente.              
CREATE TABLE dbo.AnagraficaArticoli (
	Codice INT NOT NULL
	,Descrizione VARCHAR(500) NULL
	,Prezzo DECIMAL(18, 6) NULL
	,CONSTRAINT [PK_ AnagraficaArticoli] PRIMARY KEY CLUSTERED (Codice)
	) ON [PRIMARY]
GO


Nulla vieta di poter aggiungere la chiave ad una tabella che ne è sprovvista in un momento successivo. In questo caso però va tenuto presente che la colonna e le colonne prescelte non devo avere valori duplicati pena un errore e la non creazione della chiave.

ALTER TABLE dbo.AnagraficaArticoli ADD CONSTRAINT PK_ AnagraficaArticoli PRIMARY KEY CLUSTERED (Codice)

Eliminare una chiave primaria

Per eliminare una chiave primaria in SQL Server, è possibile utilizzare il comando ALTER TABLE. Ad esempio, per eliminare la chiave primaria dalla tabella AnagraficaArticoli, si può utilizzare il seguente comando:

ALTER TABLE [dbo].[AnagraficaArticoli]

DROP CONSTRAINT PK_ AnagraficaArticoli;

Vantaggi delle chiavi primarie

Le chiavi primarie offrono diversi vantaggi, in particolare:

  • Integrità dei dati: garantiscono l'integrità dei dati, assicurando che ogni riga in una tabella abbia un valore univoco per la chiave primaria.
  • Efficienza delle query: possono essere utilizzate per migliorare le prestazioni delle query, poiché consentono al motore di database di individuare rapidamente le righe necessarie.

Esempi di chiavi primarie

Alcuni esempi di chiavi primarie possono essere:

  • Un numero di identificazione univoco, come ad esempio un codice fiscale o un numero di previdenza sociale.
  • Un identificatore generato dal sistema, come un GUID o un campo IDENTITY.
  • Una combinazione di colonne, come nome, cognome e codice fiscale.

La scelta del tipo di chiave primaria da utilizzare dipende dal contesto specifico del database. Ad esempio, se è necessario garantire che ogni riga in una tabella abbia un valore univoco e permanente, è possibile utilizzare un identificatore generato dal sistema (Identity). Se, invece, è necessario utilizzare un valore che sia comprensibile dagli utenti, è possibile utilizzare una combinazione di colonne.


Conclusioni

Come abbiamo visto, le chiavi primarie sono un elemento fondamentale della progettazione di un database relazionale. Garantendo l'integrità dei dati, migliorando le prestazioni delle query, le chiavi primarie contribuiscono infatti a creare un database affidabile ed efficiente.


di Alice Sella e Riccardo Trattenero, pubblico il 13 dicembre 2023