Database  »  Articoli  »  SQL Server 

Sql Server 2005 e l'integrità referenziale

di: Francesco Quaratino     27 Novembre 2007

Il concetto di integrità applicato ad un database si traduce nel tenere sotto controllo la consistenza e la precisione dei dati. Bisogna assicurarsi che un campo possa accettare un determinato insieme di valori (Integrità di dominio), che ogni tabella abbia un insieme di campi che fungano da indentificatore univoco di ogni riga (Integrità di entità) e che le relazioni definite tra le tabelle non possano essere violate (Integrità referenziale).

Questo articolo tratta l'implementazione fisica in SQL Server 2005 dell'integrità dei dati in un database OLTP concentrandosi su quella referenziale.

Integrità referenziale

L'integrità referenziale coinvolge due tabelle: una "referenced table" (tabella referenziata) che contiene la chiave primaria (PRIMARY KEY o PK) e una "referencing table" (tabella referenziante) che si lega ad essa attraverso una chiave esterna (FOREIGN KEY o FK).

Nota: È utile ricordare che la PRIMARY KEY di una tabella è l'insieme di colonne in cui valori, presi insieme, sono univoci nell'ambito della tabella. Perciò, si suol dire che la PK è in grado di identificare univocamente una riga di tabella.

Oltre che a una PK, la FK può far riferimento ad una colonna (o un insieme di colonne) su cui è definito un vincolo di unicità (UNIQUE CONSTRAINT). In ogni caso occorre che il tipo di dato delle colonne in relazione sia identico (salvo l'attributo di NULL/NOT NULL).

Tale legame può essere più o meno "forte". Ad esempio si può prevedere un vincolo di partecipazione tra due tabelle tale che, cancellando una record identificato dalla relativa PK sulla tabella referenziata, vengano cancellati tutti i record, sulla tabella referenziante, che fanno riferimento quella chiave primaria.

Figura 1. Esempio di "cancellazione a cascata"

Esempio di "cancellazione a cascata"

In ogni caso, la relazione condizionerà la tabella referenziante poiché in essa non sarà possibile inserire o aggiornare il valore di una chiave esterna se tale valore non esiste in un'istanza della PK della tabella referenziata.

Guide Database

Guida Access

Iniziare a sviluppare database grazie alla potenza visuale offerta...

Guida SQL Server 2005

L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito...

Guida Oracle

Scoprire ed approfondire un dei più importanti RDBMS sulla scena...

Altre guide

Newsletter

Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto