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 :
À 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.
-
Instructor ne → pas Course_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.
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 :
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é.
É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
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.
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.
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:À 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_Titleest 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_Programsparce que le titre de Mona Khalil devientLead 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.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 :
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 Coacha pu être retiré du système sans que ce soit souhaité.É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 :
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_Programsen deux tables pour la normaliser et éliminer la dépendance transitive. Comme vous le verrez, nous la séparons en deux ;Instructordevient la clé de liaison entre elles.Table 1 : courses_table
Table 1 : instructors_table
Cette structure élimine la dépendance transitive, où
Instructor_Titledépendait auparavant deCourse_or_Skill_TrackviaInstructor. Désormais,Instructor_Titledépend uniquement deInstructor.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.
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.