Integrità referenziale

Introduzione ai database relazionali in SQL

Timo Grossenbacher

Data Journalist

Integrità referenziale

  • Un record che fa riferimento a un’altra tabella deve puntare a un record esistente in quella tabella
  • Definita tra due tabelle
  • Applicata tramite chiavi esterne
Introduzione ai database relazionali in SQL

Violazioni dell’integrità referenziale

L’integrità referenziale da tabella A a tabella B è violata...

  • ...se un record in B, referenziato da A, viene eliminato.
  • ...se in A si inserisce un record che punta a un record inesistente in B.
  • Le chiavi esterne evitano le violazioni!
Introduzione ai database relazionali in SQL

Gestire le violazioni

CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE NO ACTION
);
CREATE TABLE a (
 id integer PRIMARY KEY,
 column_a varchar(64), 
 ...,
 b_id integer REFERENCES b (id) ON DELETE CASCADE
);
Introduzione ai database relazionali in SQL

Gestire le violazioni (cont.)

ON DELETE...

  • ...NO ACTION: Genera un errore
  • ...CASCADE: Elimina tutti i record che fanno riferimento
  • ...RESTRICT: Genera un errore
  • ...SET NULL: Imposta la colonna di riferimento a NULL
  • ...SET DEFAULT: Imposta la colonna di riferimento al valore predefinito
Introduzione ai database relazionali in SQL

Vediamo alcuni esempi!

Introduzione ai database relazionali in SQL

Preparing Video For Download...