Skip to main content

Dépendance transitive dans une base de données

Peau Sauvage - épisode 41 - complet en français (HD 1080) (Avril 2025)

Peau Sauvage - épisode 41 - complet en français (HD 1080) (Avril 2025)
Anonim

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.