Skip to main content

Qu'est-ce que la dépendance transitive dans une base de données?

Une dépendance transitive dans une base de données est une relation indirecte entre les valeurs d'une même table qui entraîne une dépendance fonctionnelle. Pour atteindre la norme de normalisation de la troisième forme normale (3NF), vous devez éliminer toute dépendance transitive.

De par sa nature, une dépendance transitive nécessite au moins trois attributs (ou colonnes de base de données) ayant une dépendance fonctionnelle entre eux, ce qui signifie que la colonne A d'une table s'appuie sur la colonne B via une colonne C intermédiaire.

Voyons comment cela pourrait fonctionner.

Exemple de dépendance transitive

AUTEURS

Author_IDAuteurLivreAuteur_nationalité
Auth_001Orson Scott Cardle match de EnderÉtats Unis
Auth_001Orson Scott Cardle match de EnderÉtats Unis
Auth_002Margaret AtwoodLe conte de la servanteCanada

Dans l'exemple AUTEURS ci-dessus:

  • Livre Auteur: Ici le Livre attribut détermine la Auteur attribut. Si vous connaissez le nom du livre, vous pouvez apprendre le nom de l'auteur. cependant, Auteur ne détermine pas Livre, car un auteur peut écrire plusieurs livres. Par exemple, juste parce que nous connaissons le nom de l'auteur, Orson Scott Card, nous ne connaissons toujours pas le nom du livre.
  • Auteur Auteur_nationalité: De même, le Auteur attribut détermine la Auteur_nationalité, mais pas l’inverse; ce n'est pas parce que nous connaissons la nationalité que nous pouvons déterminer l'auteur.

Mais ce tableau introduit une dépendance transitive:

  • Livre Author_Nationality: Si nous connaissons le nom du livre, nous pouvons déterminer la nationalité via la colonne Auteur.

    Éviter les dépendances transitives

    Pour assurer la troisième forme normale, supprimons la dépendance transitive.

    Nous pouvons commencer par supprimer la colonne Livre de la table des auteurs et créer un tableau séparé:

    LIVRES

    Book_IDLivreAuthor_ID
    Livre_001le match de EnderAuth_001
    Livre_001Enfants de l'espritAuth_001
    Book_002Le conte de la servanteAuth_002

    AUTEURS

    Author_IDAuteurAuteur_nationalité
    Auth_001Orson Scott CardÉtats Unis
    Auth_002Margaret AtwoodCanada

    Est-ce que cela a résolu le problème? Examinons maintenant nos dépendances:

    LIVRES:

    • Book_ID→ Livre: le Livre Depend de Book_ID.
    • Aucune autre dépendance dans cette table n'existe, nous allons donc bien. Notez que la clé étrangère Author_ID lie cette table à la table AUTHORS via sa clé primaire Author_ID. Nous avons créé une relation pour éviter une dépendance transitive, une conception clé de bases de données relationnelles.

    Table AUTEURS:

    • Author_ID Auteur: le Auteur Depend de Author_ID.
    • Auteur Author_Nationality: La nationalité peut être déterminée par l'auteur.
    • Author_ID Author_Nationality: La nationalité peut être déterminée à partir du Author_ID à travers le Auteur attribut. Nous avons toujours une dépendance transitive.

    Nous devons ajouter une troisième table pour normaliser ces données:

    DES PAYS

    Country_IDPays
    Coun_001États Unis
    Coun_002Canada
     

    AUTEURS

    Author_IDAuteurCountry_ID
    Auth_001Orson Scott CardCoun_001
    Auth_002Margaret AtwoodCoun_002

    Nous avons maintenant trois tables, utilisant des clés étrangères pour faire le lien entre les tables:

    • La clé étrangère de la table BOOK Author_ID lie un livre à un auteur de la table AUTHORS.
    • Clé étrangère de la table AUTHORS Country_ID lie un auteur à un pays dans la table COUNTRIES.
    • La table COUNTRIES n'a pas de clé étrangère car elle n'a pas besoin d'être liée à une autre table de cette conception.

    Pourquoi les dépendances transitives sont une mauvaise conception de base de données

    Quelle est la valeur d’éviter les dépendances transitives pour assurer la 3NF? Reprenons notre première table et voyons les problèmes qu’elle crée:

    AUTEURS

    Author_IDAuteurLivreAuteur_nationalité
    Auth_001Orson Scott Cardle match de EnderÉtats Unis
    Auth_001Orson Scott CardEnfants de l'espritÉtats Unis
    Auth_002Margaret AtwoodLe conte de la servanteCanada

    Ce type de conception peut contribuer à des anomalies et des incohérences dans les données, par exemple:

    • Si vous supprimez les deux livres "Children of the Mind" et "Ender's Game", vous supprimez complètement l'auteur "Orson Scott Card" et sa nationalité de la base de données.
    • Vous ne pouvez pas ajouter un nouvel auteur à la base de données à moins d'ajouter un livre. Que se passe-t-il si l'auteur n'est pas encore publiée ou si vous ne connaissez pas le nom d'un livre qu'elle a écrit?
    • Si "Orson Scott Card" a changé de citoyenneté, vous devez la changer dans tous les enregistrements dans lesquels il apparaît. Avoir plusieurs enregistrements avec le même auteur peut entraîner des données inexactes: que se passe-t-il si le responsable de la saisie de données ne réalise pas qu'il en a plusieurs et qu'il modifie les données dans un seul enregistrement?
    • Vous ne pouvez pas supprimer un livre comme "The Handmaid's Tale" sans supprimer également complètement l'auteur.

    Ce ne sont là que quelques-unes des raisons pour lesquelles la normalisation et l’évitement des dépendances transitives protègent les données et en assurent la cohérence.