Les contraintes dans les bases de données SQL

Introduction aux contraintes

Dans une base de données relationnelle, les contraintes sont des règles appliquées aux colonnes ou aux tables pour garantir l'exactitude et la fiabilité des données. Elles représentent le dernier rempart pour préserver l'intégrité des informations stockées. Définir une colonne de type entier (INT) impose par exemple que seules des valeurs entières y soient insérées.

Contrainte NOT NULL

Cette contrainte empêche l'insertion de valeurs nulles dans une colonne. Elle ne peut être définie qu'au niveau de la colonne (« column-level constraint ») et non au niveau de la table.

-- Définition au niveau de la colonne
CREATE TABLE profils_utilisateur (
    identifiant INT NOT NULL,
    nom_complet VARCHAR(100) NOT NULL
);

Contrainte UNIQUE

Elle assure que toutes les valeurs dans une colonne ou une combinaison de colonnes sont distinctes. Une colonne contrainte par UNIQUE peut accepter plusieurs valeurs NULL.

-- Contrainte sur une combinaison de colonnes
CREATE TABLE evenements (
    code_evenement VARCHAR(50),
    date_debut DATE,
    lieu VARCHAR(200),
    UNIQUE (code_evenement, date_debut)
);

Combinaison de NOT NULL et UNIQUE

Lorsqu'une colonne satisfait simultanément aux contraintes NOT NULL et UNIQUE, certains systèmes (comme MySQL) l'identifient automatiquement comme clé primaire. Dans d'autres (Oracle, SQL Server), ce n'est pas le cas.

-- Dans MySQL, la colonne 'code_produit' pourrait devenir une clé primaire.
CREATE TABLE produits (
    code_produit INT UNIQUE NOT NULL,
    designation VARCHAR(150)
);

Contrainte PRIMARY KEY

La clé primaire (PK) identifie de manière unique chaque enregistrement dans une table. Elle combine les propriétés NOT NULL et UNIQUE. Une table ne peut contenir qu'une seule clé primaire, qui peut être simple (une colonne) ou composite (plusieurs colonnes).

-- Ajout d'une clé primaire à une table existante
ALTER TABLE commandes ADD CONSTRAINT pk_commandes PRIMARY KEY (numero_commande);

-- Suppression d'une contrainte de clé primaire
ALTER TABLE commandes DROP CONSTRAINT pk_commandes;

-- Définition d'une clé primaire composite
CREATE TABLE reservations_chambre (
    id_chambre INT,
    date_arrivee DATE,
    nom_client VARCHAR(100),
    PRIMARY KEY (id_chambre, date_arrivee)
);

Contrainte FOREIGN KEY

La clé étrangère (FK) établit un lien entre deux tables, garantissant ainsi l'intégrité référentielle. Elle fait référence à la clé primaire (ou une colonne unique) d'une autre table appelée « table parente ».

-- Création de la table parente
CREATE TABLE categories_produits (
    id_categorie INT PRIMARY KEY,
    libelle VARCHAR(100)
);

-- Création de la table enfant avec une référence
CREATE TABLE inventaire (
    reference_article VARCHAR(30) PRIMARY KEY,
    description TEXT,
    id_cat INT,
    CONSTRAINT fk_inventaire_categorie FOREIGN KEY (id_cat) REFERENCES categories_produits(id_categorie)
);

La gestion des suppressions et mises à jour dans la table parente peut être configurée via les clauses ON DELETE et ON UPDATE. Les options courantes sont CASCADE (propagation), SET NULL (mise à null), ou RESTRICT / NO ACTION (empêchement par défaut).

Contrainte CHECK

Elle permet de définir une condition logique que les données doivent respecter. Son support varie selon les systèmes de gestion de bases de données (par exemple, non supportée dans les anciennes versions de MySQL, mais implémentée dans PostgreSQL et SQL Server).

-- Exemple hypothétique (syntaxe valide dans beaucoup de SGBD)
CREATE TABLE employes (
    matricule INT PRIMARY KEY,
    age INT CHECK (age >= 18 AND age <= 70),
    statut VARCHAR(20) DEFAULT 'Actif'
);

Étiquettes: SQL MySQL PostgreSQL Contraintes de base de données Clé primaire

Publié le 13 juillet à 04h20