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.
Exemple : Réé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.