CONTRAINTES D’INTÉGRITÉ SUR UNE COLONNE
Les contraintes d’intégrité sur une colonne sont :
1. PRIMARY KEY : définit l’attribut comme la clé primaire
A chaque élément d’une table est associé un champ ‘id’, non null, qui identifie
de façon unique l’enregistrement et qui nous sert de référence pour établir
des liens avec d’autres tables. C’est ce que l’on appelle une clé primaire.
Cette contrainte définit une colonne ou une combinaison de colonnes qui
identifie de manière unique chaque ligne de la table.
On pourra à la création de la table déclarer un champ (qu’il soit auto-
incrémenté ou pas) comme étant une clé primaire par l’utilisation du mot clé
PRIMARY KEY juste après la déclaration du type du champ.
Exemple :
Pour créer une table d’employés avec une contrainte de clé primaire, la
requête serait comme.
Clé primaire au niveau de la colonne :
CREATE TABLE Employe(
id_Emp int PRIMARY KEY,
Nom varchar(30 ) NOT NULL,
Prenom varchar(50) NOT NULL,
Telephone varchar(15) NOT NULL,
Salaire int NOT NULL
);
Raymond J. JEAN Page 1
2. UNIQUE : interdit que deux tuples de la relation aient la même
valeur pour l’attribut.
1. Cette contrainte garantit qu’une colonne ou un groupe de colonnes de
chaque ligne a une valeur distincte. Une ou plusieurs colonnes peuvent
avoir une valeur nulle mais les valeurs ne peuvent pas être dupliquées.
Exemple :
Pour créer une table d’employés avec une clé unique, la requête serait
Clé unique au niveau de la colonne :
CREATE TABLE Employe2(
Code_Emp int PRIMARY KEY,
Nom varchar(30) Not Null,
Prenom varchar(50) Not Null,
dept varchar(10) Not Null,
Email varchar(30) Unique
);
3. REFERENCES () : contrôle l’intégrité référentielle entre l’attribut
et la table et ses colonnes spécifiées
Cette contrainte identifie toute colonne référençant la PRIMARY KEY dans
une autre table. Il établit une relation entre deux colonnes d’une même
Raymond J. JEAN Page 2
table ou entre des tables différentes. Pour qu’une colonne soit définie en
tant que clé étrangère, elle doit être définie en tant que clé primaire dans
la table à laquelle elle fait référence. Une ou plusieurs colonnes peuvent
être définies comme clé étrangère.
Exemple
Utilisons la table Employe et Departement pour définir une clé référentielle
au niveau de la colonne
CREATE Table Departement(
Code_Dep int,
Nom_Dep VARCHAR(20),
primary key (Code_Dep),
Id_Emp int, foreign key(Id_Emp) references Employe (Id_Emp)
);
4. CHECK () : contrôle la validité de la valeur de l’attribut spécifié
dans la condition dans le cadre d’une restriction de domaine
Cette contrainte définit une règle métier sur une colonne. Toutes les lignes
doivent satisfaire à cette règle. La contrainte peut être appliquée pour une
seule colonne ou un groupe de colonnes.
Le SQL suivant crée une CHECK contrainte sur la colonne "Salaire" lors de la
création de la table " Employe4". La CHECK contrainte garantit que le salaire
d'un employé doit être de 10000 gourdes ou plus :
Raymond J. JEAN Page 3
Exemple
Contrainte CHECK au niveau de la colonne
CREATE TABLE Employe4(
Id int PRIMARY KEY,
Nom VARCHAR(20),
Prenom VARCHAR(50),
Age int,
Salaire int CHECK (salaire>=100000)
);
5. DEFAULT () : contrôle la validité de la valeur de l’attribut spécifié
dans la condition dans le cadre d’une restriction de domaine
Cette contrainte est utilisée pour définir une valeur par défaut pour une colonne. La
valeur par défaut sera ajoutée à tous les nouveaux enregistrés, si aucune autre valeur
n'est indiquée.
Exemple :
Contrainte DEFAULT au niveau de la colonne
CREATE TABLE Employe5(
Id int PRIMARY KEY,
Raymond J. JEAN Page 4
Nom VARCHAR(20),
Prenom VARCHAR(50),
Age int,
Salaire int,
Adresse VARCHAR(80) DEFAULT 'Port-au-Prince'
);
CONTRAINTES D’INTÉGRITÉ SUR UNE TABLE
1. PRIMARY KEY () : définit les attributs de la liste comme la clé primaire
La clé primaire pourra être déclarée à la fin de la requête de création de table,
notamment si elle implique plusieurs champs comme dans le schéma suivant (si l’on
considère une table où les couples (nom/prenom) sont uniques)
Syntaxe :
CREATE TABLE table_name (
column1 data_type,
...,
[CONSTRAINT constraint_name] PRIMARY KEY (column1, column2)
);
Raymond J. JEAN Page 5
Exemple :
Contrainte PRIMARY KEY au niveau de la table
CREATE TABLE Employe(
id_Emp int ,
Nom varchar(30) NOT NULL,
Prenom varchar(50) NOT NULL,
Telephone varchar(15) NOT NULL,
Salaire int NOT NULL,
PRIMARY KEY (id_Emp, Telephone)
);
Ou
CREATE TABLE Employe22(
id_Emp int ,
Nom varchar(30) NOT NULL,
Prenom varchar(50) NOT NULL,
Telephone varchar(15) NOT NULL,
Salaire int NOT NULL,
CONSTRAINT PK_Emp PRIMARY KEY (id_Emp)
);
Raymond J. JEAN Page 6
2. UNIQUE () : la contrainte UNIQUE dans une colonne signifie que la
colonne doit avoir des valeurs uniques.
Syntaxe :
CREATE TABLE table_name(
...
column_name1 column_definition,
column_name2 column_definition,
...,
UNIQUE(column_list)
);
Ou
CREATE TABLE table_name(
...
column_name1 column_definition,
column_name2 column_definition,
...,
CONSTRAINT constraint_name UNIQUE(column_list)
);
Exemple :
Contrainte UNIQUE au niveau de la table
CREATE TABLE Employe9(
Raymond J. JEAN Page 7
id_Emp int PRIMARY KEY,
Nom varchar(30) NOT NULL,
Prenom varchar(50) NOT NULL,
Telephone varchar(15) NOT NULL,
Salaire int NOT NULL,
UNIQUE(Telephone)
);
Ou
CREATE TABLE Employe10(
id_Emp int PRIMARY KEY,
Nom varchar(30) NOT NULL,
Prenom varchar(50) NOT NULL,
Telephone varchar(15) NOT NULL,
Salaire int NOT NULL,
CONSTRAINT UC_Emp UNIQUE(Telephone)
);
Raymond J. JEAN Page 8
3. CHECK () : contrôle la validité de la valeur de l’attribut spécifié dans la
condition dans le cadre d’une restriction de domaine
Exemple
Contrainte CHECK au niveau de la table
CREATE TABLE Employe41(
Id int PRIMARY KEY,
Nom VARCHAR(20),
Prenom VARCHAR(50),
Age int,
Salaire int,
CONSTRAINT CHK_SAL CHECK (salaire>=100000)
);
4. FOREIGN KEY () REFERENCES () : contrôle l’intégrité référentielle entre
les attributs de la liste et la table et ses colonnes spécifiées
Cette contrainte identifie toute colonne référençant la PRIMARY KEY dans une autre
table. Il établit une relation entre deux colonnes d’une même table ou entre des tables
différentes. Pour qu’une colonne soit définie en tant que clé étrangère, elle doit être
Raymond J. JEAN Page 9
définie en tant que clé primaire dans la table à laquelle elle fait référence. Une ou
plusieurs colonnes peuvent être définies comme clé étrangère.
Syntaxe pour définir une clé étrangère au niveau de la table:
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
...,
FOREIGN KEY (column_name)
REFERENCES referenced_table_name (referenced_column_name)
);
Ou
CREATE TABLE table_name (
column1 data_type,
column2 data_type,
...,
CONSTRAINT constraint_name FOREIGN KEY (column_name)
REFERENCES referenced_table_name (referenced_column_name)
);
Contrainte FOREIGN KEY au niveau de la table
Utilisons la table Employe4 et Departement pour définir une clé référentielle au
niveau de la colonne
CREATE Table Departement(
Raymond J. JEAN Page 10
Code_Dep int,
Nom_Dep VARCHAR(20),
id_Emp int,
primary key (Code_Dep),
foreign key (id_Emp) references Employe(id_Emp)
);
Ou
CREATE Table Departement1(
Code_Dep int,
Nom_Dep VARCHAR(20),
id_Emp int,
primary key (Code_Dep),
CONSTRAINT FK_Emp_Dep FOREIGN KEY (id_Emp) REFERENCES
Employe(id_Emp)
);
Raymond J. JEAN Page 11