Exemple de contraintes d'intégrité

Exemple

1
CREATE TABLE Personne (
2
 N°SS CHAR(13) PRIMARY KEY,
3
 Nom VARCHAR(25) NOT NULL,
4
 Prenom VARCHAR(25) NOT NULL,
5
 Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65),
6
 Mariage CHAR(13) REFERENCES Personne(N°SS),
7
 Codepostal INTEGER(5),
8
 Pays VARCHAR(50),
9
 UNIQUE (Nom, Prenom),
10
 FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)
11
);
12
13
CREATE TABLE Adresse (
14
 CP INTEGER(5) NOT NULL,
15
 Pays VARCHAR(50) NOT NULL,
16
 Initiale CHAR(1) CHECK (Initiale = LEFT(Pays, 1)),
17
 PRIMARY KEY (CP, Pays)
18
);

Dans la définition de schéma précédente on a posé les contraintes suivantes :

  • La clé primaire de Personne est N°SS et la clé primaire de Adresse est (CP, Pays).

  • Nom, Prénom ne peuvent pas être null et (Nom, Prénom) est une clé.

  • Age doit être compris entre 18 et 65 et Initiale doit être la première lettre de Pays (avec la fonction LEFT qui renvoie la sous chaîne à gauche de la chaîne passée en premier argument, sur le nombre de caractères passés en second argument)

  • Mariage est clé étrangère vers Personne et (Codepostal, Pays) est une clé étrangère vers Adresse.

ExempleRéécriture avec uniquement des contraintes de table

1
CREATE TABLE Personne (
2
 N°SS CHAR(13) ,
3
 Nom VARCHAR(25) NOT NULL,
4
 Prenom VARCHAR(25) NOT NULL,
5
 Age INTEGER(3) ,
6
 Mariage CHAR(13),
7
 Codepostal INTEGER(5),
8
 Pays VARCHAR(50),
9
 PRIMARY KEY (N°SS),
10
 UNIQUE (Nom, Prenom),
11
 CHECK (Age BETWEEN 18 AND 65),
12
 FOREIGN KEY (Mariage) REFERENCES Personne(N°SS),
13
 FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays)
14
);
15
16
CREATE TABLE Adresse (
17
 CP INTEGER(5) NOT NULL,
18
 Pays VARCHAR(50) NOT NULL,
19
 Initiale CHAR(1),
20
 PRIMARY KEY (CP, Pays),
21
 CHECK (Initiale = LEFT(Pays, 1))
22
);

Ce schéma est strictement le même que le précédent, simplement les contraintes ont toutes été réécrites comme des contraintes de table.