Intégrité référentielle

Introduction aux bases de données relationnelles en SQL

Timo Grossenbacher

Data Journalist

Intégrité référentielle

  • Un enregistrement faisant référence à une autre table doit renvoyer à un enregistrement existant dans cette table
  • Spécifié entre deux tables
  • Appliqué par le biais de clés externes
Introduction aux bases de données relationnelles en SQL

Violations de l'intégrité référentielle

L'intégrité référentielle entre la table A et la table B n'est pas respectée…

  • …si un enregistrement de la table B référencé par un enregistrement de la table A est supprimé.
  • …si un enregistrement de la table A faisant référence à un enregistrement inexistant de la table B est inséré.
  • Les clés externes empêchent les violations !
Introduction aux bases de données relationnelles en SQL

Gestion des violations

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
);
Introduction aux bases de données relationnelles en SQL

Gestion des violations, suite

ON DELETE...

  • …NO ACTION : générer une erreur
  • …CASCADE : supprimer tous les enregistrements de référence
  • …RESTRICT : générer une erreur
  • …SET NULL : définir la colonne de référence sur NULL
  • …SET DEFAULT : définir la colonne de référence sur sa valeur par défaut
Introduction aux bases de données relationnelles en SQL

Regardons quelques exemples.

Introduction aux bases de données relationnelles en SQL

Preparing Video For Download...