L3-Informatique Paris 8
Base de données
4
Introduisons par exemple un attribut sigle (ex : INF1010, INF2705, LOG2410, MTH1006,
PHS1101, …) et qui est une clé pour la table cours. On aurait alors comme commande
de création de table :
CREATE TABLE cours (
sigle CHAR(7) UNIQUE NOT NULL,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants IS
NULL) ;
Qui est identique à celle-ci :
CREATE TABLE cours (
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants IS
NULL) ;
Contrainte d’intégrité de référence (REFERENCES)
La contrainte d’intégrité de référence est la contrainte de clé étrangère. Elle permet de
préciser qu’une colonne ou groupe de colonnes correspondent aux valeurs qui
apparaissent dans les lignes d’une autre table. Ce type de contrainte permet de
maintenir une intégrité entre deux tables.
Par exemple, dans l’exemple de la table cours, pour préciser l’enseignant qui dispense le
cours, il faut introduire une colonne id_enseignant qui fait référence à la colonne
id_personne de la table personne.
Quand on supprime une ligne de la table personne, le SGBD doit vérifier qu’aucune ligne
de la table cours, par l’intermédiaire de l’attribut id_enseignant, n’a la ligne qui doit être
supprimée. Sinon (i.e. la ligne à supprimer se trouve dans la table cours), trois situations
sont possibles :
la suppression est interdite dans la table maître (personne) et dans la table courante
(ici cours) où la contrainte d’intégrité est définie comme suit :
CREATE TABLE cours (
Id_enseignant INTEGER
REFERENCES personne (id_personne) RESTRICT,
sigle CHAR(7) PRIMARY KEY,
Intitule VARCHAR NOT NULL,
NbEtudiants INTEGER CHECK(NbEtudiants > 0 OR NbEtudiants
IS NULL) ;