Cours
En bases de données, une dépendance transitive apparaît lorsqu'un attribut d'une table dépend d'un autre attribut, lequel dépend lui-même de la clé primaire. C'est un enjeu de la normalisation, car cela génère des problèmes de données (anomalies de mise à jour, d'insertion et de suppression) que nous allons examiner dans cet article.
Si, après lecture, vous souhaitez aller plus loin, nous vous recommandons le cours Database Design de DataCamp pour vous familiariser avec les bases de données relationnelles et le stockage des données. Consultez aussi notre tutoriel Normalization in SQL pour découvrir les formes normales en SQL, la langue la plus courante pour gérer les bases relationnelles dans ce contexte.
Comprendre la dépendance transitive en base de données
Dans une base de données relationnelle, une dépendance transitive se produit lorsqu'un attribut dépend indirectement d'un autre via un attribut intermédiaire. Concrètement, la valeur d'une colonne peut être déduite indirectement à partir des valeurs de deux autres colonnes. Considérez la table suivante, appelée DataCamp_Programs :
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
À partir de cette table :
-
Course_or_Skill_Track→Instructor: si l'on connaît le cours ou le parcours de compétences, on connaît l'instructeur. -
Instructorne → pasCourse_or_Skill_Track: un instructeur peut enseigner plusieurs éléments. -
Instructor→Instructor_Title: chaque instructeur a un intitulé de poste.
Donc, Course_or_Skill_Track → Instructor_Title est une dépendance transitive.
Pourquoi les dépendances transitives posent problème
Elles entraînent notamment de la redondance, des anomalies et des incohérences de données.
Redondance de données
La redondance survient lorsque les mêmes informations sont inutilement répétées, ce qui crée des inefficacités. Dans l'exemple de la table DataCamp_Programs, l'intitulé de poste de l'instructeur est stocké plusieurs fois pour chaque cours qu'il enseigne. Cette répétition gaspille de l'espace et complexifie la maintenance.
Anomalies de données
Voyons maintenant les anomalies de mise à jour, d'insertion et de suppression.
Anomalies de mise à jour
Elles se produisent lorsque, à cause de la redondance, une modification doit être répercutée à plusieurs endroits. Si certaines occurrences sont oubliées, des incohérences apparaissent. Imaginez, par exemple, une requête SQL visant à mettre à jour la table DataCamp_Programs parce que le titre de Mona Khalil devient Lead Data Scientist. Il faudrait modifier manuellement chaque ligne où son titre apparaît. Si une seule occurrence est oubliée, la base contiendra des informations contradictoires sur son titre actuel.
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Lead Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
Anomalies d'insertion
Elles apparaissent lorsque vous ne pouvez pas insérer des données faute d'autres informations requises. Dans d'autres cas, vous pouvez insérer des données mais la structure de la table vous oblige à saisir des informations inutiles, redondantes ou manquantes, comme ci-dessous :
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
| Introduction to SQL | Izzy Weber | Data Coach |
| TBD | Liam Cooper | Data Analyst |
Anomalies de suppression
Elles surviennent lorsqu'en supprimant un enregistrement, vous effacez involontairement des informations utiles. Par exemple, supprimer la ligne contenant Izzy Weber supprime aussi son intitulé de poste, ce qui peut mener à une perte d'information : vous pourriez ne plus disposer de l'ensemble des titres existants dans le système. Ici, Data Coach a pu être retiré du système sans que ce soit souhaité.
| Course_or_Skill_Track | Instructor | Instructor_Title |
|---|---|---|
| Data Manipulation in SQL | Mona Khalil | Data Scientist |
| SQL Fundamentals | Mona Khalil | Data Scientist |
Éliminer les dépendances transitives avec la 3NF
Dans une base de données, la normalisation organise les données pour réduire la redondance et améliorer l'intégrité. C'est pourquoi les dépendances transitives sont souvent traitées dans le cadre de la troisième forme normale (3NF), une technique de normalisation qui supprime ces dépendances.
La troisième forme normale vise à éliminer les dépendances transitives et à garantir que chaque attribut non clé dépend uniquement de la clé primaire. Cela limite la redondance et les erreurs liées aux dépendances transitives. Voici les étapes à considérer lors de la normalisation d'un schéma de base de données.
Identifier les dépendances transitives
Pour les repérer dans votre base, procédez ainsi :
- Vérifier les dépendances fonctionnelles sur la clé primaire : identifiez d'abord toutes les dépendances fonctionnelles où des attributs dépendent directement de la clé primaire. Cela vous aide à cadrer les relations principales de la table.
- Chercher des dépendances indirectes : examinez ensuite si des attributs non clés (qui ne font pas partie de la clé primaire) dépendent d'autres attributs non clés. Si un attribut non clé dépend d'un autre, lequel dépend de la clé primaire, vous avez une dépendance transitive.
- Tester la redondance ou les anomalies : demandez-vous enfin si cette dépendance indirecte introduit de la redondance ou complique les mises à jour.
Scinder les tables
Une fois les dépendances transitives identifiées, il faut scinder les tables pour les supprimer. On divise la table en sous-ensembles où les attributs non clés dépendent directement de la clé primaire, tout en préservant les relations via des clés étrangères.
Voici comment vous pourriez scinder la table DataCamp_Programs en deux tables pour la normaliser et éliminer la dépendance transitive. Comme vous le verrez, nous la séparons en deux ; Instructor devient la clé de liaison entre elles.
Table 1 : courses_table
| Course or Skill Track | Instructor |
|---|---|
| Data Manipulation in SQL | Mona Khalil |
| SQL Fundamentals | Mona Khalil |
| Introduction to SQL | Izzy Weber |
Table 1 : instructors_table
| Instructor | Instructor_Title |
|---|---|
| Mona Khalil | Data Scientist |
| Izzy Weber | Data Coach |
Cette structure élimine la dépendance transitive, où Instructor_Title dépendait auparavant de Course_or_Skill_Track via Instructor. Désormais, Instructor_Title dépend uniquement de Instructor.
Comment éviter les dépendances transitives
Lors de la conception de votre base, il est essentiel d'éviter les dépendances transitives pour préserver l'efficacité, l'évolutivité et l'intégrité des données. Voici de bonnes pratiques pour réduire les risques de redondance, d'anomalies et d'incohérences.
- Normalisation dès la conception du schéma : si vous partez du schéma, tenez compte de la troisième forme normale (3NF) dès les premières étapes. Cette approche permet de réduire les dépendances transitives en appliquant la normalisation.
- Audits réguliers du schéma : après la mise en place de la base, réalisez des audits réguliers pour vérifier l'absence de dépendances transitives.
- Éviter de sursimplifier les relations : cartographiez systématiquement les relations et séparez correctement les entités dans des tables distinctes pour stocker des informations différentes.
Conclusion
Une dépendance transitive se produit lorsqu'un attribut d'une table dépend d'un autre attribut, lequel dépend de la clé primaire. Elle nuit à l'efficacité des bases de données en introduisant redondances, incohérences et anomalies. En tant que développeur, vous devez identifier et éliminer ces dépendances pour préserver l'intégrité des données, idéalement dès la conception. Atteindre la troisième forme normale (3NF) vous aidera à optimiser vos bases et à gagner en efficacité.
Pour renforcer vos compétences en conception de bases, suivez le cours de DataCamp Creating PostgreSQL Databases pour approfondir le design de schéma et les contrôles d'accès. Enfin, pour faire progresser vos compétences de gestion de bases à l'ère du big data, découvrez notre cours Introduction to Data Modeling in Snowflake afin d'explorer les relations, la modélisation dimensionnelle et les data vaults pour concevoir des entrepôts de données cloud performants.
Obtenez une certification SQL de haut niveau
FAQ sur les dépendances transitives
Quelle est la différence entre dépendances fonctionnelles et dépendances transitives ?
Une dépendance fonctionnelle se produit lorsqu'un attribut dépend directement de la clé primaire. Une dépendance transitive survient lorsqu'un attribut non clé dépend d'un autre attribut non clé, lequel dépend à son tour de la clé primaire.
Pourquoi les dépendances transitives sont-elles problématiques ?
Les dépendances transitives entraînent de la redondance et des anomalies de données, notamment lors des mises à jour, insertions et suppressions.
Qu'est-ce que la normalisation des données ?
La normalisation est le processus qui consiste à organiser une base en tables et colonnes pour réduire la redondance et améliorer l'intégrité des données.
Qu'est-ce que la troisième forme normale (3NF) ?
La troisième forme normale (3NF) est une technique de normalisation sans dépendances transitives. En 3NF, chaque attribut non premier doit dépendre uniquement de la clé primaire, garantissant l'absence de dépendances indirectes.
