Notion de contraintes

Contrainte de domaine

Lorsque l'on définit une table, on définit également des contraintes sur cette table, qui serviront à contrôler son intégrité, par rapport à des règles que l'on aura fixées.

C'est notamment le cas des contraintes de domaine, qui permettent de vérifier qu'une colonne prend ses valeurs parmi un ensemble déterminé (les chaînes de 10 caractères au plus, les entier de 1 à 1000, etc.).

Question

Exécuter l'instruction suivante et expliquer pourquoi le système renvoie une erreur.

1
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
2
VALUES ('XXXXXXXXXXXXXXX', 'XXXXXX', 'Dupont', 'Pierre');

Question

Donner un exemple de contrainte qui n'est pas formulée dans la définition de la table tEtu et que l'on aurait pu souhaiter.

Indice

Pour indiquer qu'un élément est obligatoire, on ajoute la clause NOT NULL après la définition de son domaine dans l'instruction CREATE TABLE.

Solution

Par exemple le fait que le nom et le prénom ne sont pas optionnels (tous les étudiants en ont un).

1
CREATE TABLE tEtu (
2
pk_numSecu CHAR(13) PRIMARY KEY,
3
k_numEtu VARCHAR(20) UNIQUE NOT NULL,
4
nom VARCHAR(50) NOT NULL,
5
prenom VARCHAR(50) NOT NULL);

Contraintes de clé

Les contraintes de clé se composent de contraintes d'unicité et de contraintes de non nullité. Elles permettent d'assurer que toutes les valeurs d'une colonne seront différentes pour chaque ligne.

Question

Exécuter les trois instructions suivantes (les unes après les autres) et expliquer ce qui se passe.

1
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
2
VALUES ('1800675001066', 'HGYT67655Y', 'Dupont', 'Pierre');
3
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
4
VALUES ('2810592012232', 'XGB67668', 'Durand', 'Anne');
5
INSERT INTO tEtu (pk_numSecu, k_numEtu, nom, prenom)
6
VALUES ('2810592012232', 'HGYT67655Y', 'Duchemin', 'Aline');

Solution

Explications
  1. La première instruction est rejetée car le pk_numSecu=1800675001066 existe déjà

  2. La première instruction est rejetée car le k_numEtu=XGB67668 existe déjà

  3. La troisième instruction est exécutée, car les deux instructions précédentes ont été rejetées

Question

Explorer le contenu de votre table en exécutant l'instruction suivante, et vérifier vos explications précédentes.

1
SELECT *
2
FROM tEtu;

Question

Pourrait-on insérer dans la table une seconde personne qui aurait le prénom "Aline" et le nom "Duchemin" ? Pourquoi ?

Solution

Oui, car aucune contrainte n'impose le contrainte, seuls les numéros (sécurité sociale et numéro d'étudiant) doivent être uniques.