Les contraintes d’intégrité avec MySQL


Les contraintes d’intégrité avec MySQL

  1. Objectifs

    • Connaitre les contraintes d’intégrité avec MySQL
  2. Présentation

    • Une contrainte d’intégrité est une règle qui définit la cohérence d’une donnée ou d’un ensemble de données de la BD.
    • Il existe deux types de contraintes :
      1. sur une colonne unique,
      2. ou sur une table lorsque la contrainte porte sur une ou plusieurs colonnes.
    • Les contraintes sont définies au moment de la création des tables.



  3. 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. Comme dans l’exemple suivant:
        • Syntaxe pour définir une clé primaire au niveau de la colonne : column name datatype [CONSTRAINT constraint_name] PRIMARY KEY
        • 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 :
          • ou alors
          • Clé primaire au niveau de la colonne :
      2. UNIQUE : interdit que deux tuples de la relation aient la même valeur pour l’attribut.
        • 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.
        • Syntaxe pour définir une clé unique au niveau de la
          :
          column name datatype [CONSTRAINT constraint_name] PRIMARY KEY
        • Exemple :
          • pour créer une table d’employés avec une clé unique, la requête serait comme,
          • Clé unique au niveau de la colonne :
            • ou alors
      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 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.
        • Syntaxe pour définir une clé étrangère au niveau de la colonne:
          :
          [CONSTRAINT constraint_name] REFERENCES Referenced_Table_name(column_name)
        • Exemple :
          • Utilisons la table “product” et “order_items”.
          • Clé étrangère au niveau de la colonne :
      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.
        • Syntaxe pour définir une contrainte de vérification :
          :
          [CONSTRAINT constraint_name] CHECK (condition)
        • Exemple :
          • Dans la table des employés pour sélectionner le sexe d’une personne, la requête serait comme
          • Vérifiez la contrainte au niveau de la colonne :
  4. Contraintes d’intégrité sur une table

    • Les contraintes d’intégrité sur une table sont :
      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 pour définir une clé primaire au niveau de la table :

          [CONSTRAINT constraint_name] PRIMARY KEY (column_name1,column_name2,..)

        • Exemple :
          • Clé primaire au niveau de la colonne :
      2. UNIQUE () : interdit que deux tuples de la relation aient les mêmes valeurs pour l’ensemble des attributs de la liste.
        • Syntaxe pour définir une clé unique au niveau de la table :
          [CONSTRAINT constraint_name] UNIQUE(column_name)
        • Exemple :
          • Clé unique au niveau de la table
      3. 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 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:
          :
          [CONSTRAINT constraint_name] FOREIGN KEY(column_name) REFERENCES referenced_table_name(column_name);
        • Exemple :
        • Clé étrangère au niveau de la table : :
      4. CHECK () : contrôle la validité de la valeur des attributs spécifiés dans la condition dans le cadre d’une restriction de domaine
        • Exemple :
          • Vérifier la contrainte au niveau de la table :
  5. Application

    • Soit le schéma de la base de données Bibliothèque suivante :
    • Un étudiant peut emprunter plusieurs livres à la fois. Chaque fois qu’un livre est retourné, la date de retour est mise à jour. Sinon sa valeur reste null. Pour des raisons de statistique, on conserve dans la table Prêt tous les tuples les livres retournés.
      • Un livre ne peut pas être emprunté le même jour ou il est retourné !
      • Donner les clés de ces relations. Justifier.
      • Donner toutes les contraintes d’intégrités référentielles qui apparaissent dans ce schéma





Sommaire du cours MySQL



Riadh HAJJI

Laisser un commentaire

Abonnez vous à notre chaîne YouTube gratuitement