Exemple de contraintes d'intégrité

Exemple

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