Dans une base de données relationnelle, une dépendance se produit lorsque les informations stockées dans la même table de base de données déterminent de manière unique d'autres informations stockées dans la même table. Une dépendance multivaluée se produit lorsque la présence d'une ou plusieurs lignes dans une table implique la présence d'une ou plusieurs autres lignes dans cette même table. En d'autres termes, deux attributs (ou colonnes) d'une table sont indépendants l'un de l'autre, mais tous deux dépendent d'un troisième attribut.
Une dépendance multivaluée empêche la quatrième forme normale standard de normalisation. Les bases de données relationnelles suivent cinq formes normales qui représentent des lignes directrices pour la conception des enregistrements. Ils évitent les anomalies de mise à jour et les incohérences dans les données. La quatrième forme normale traite des relations plusieurs-à-un dans une base de données.
Dépendance fonctionnelle vs dépendance multivaluée
Pour comprendre une dépendance multivaluée, il est utile de revoir ce qu'est une dépendance fonctionnelle.
Si un attribut X détermine de manière unique un attribut Y, alors Y dépend fonctionnellement de X. Cela s'écrit X -> Y. Par exemple, dans le tableau Étudiants ci-dessous, le Nom_Étudiant détermine la Majeure:
Student_Name | Majeur |
---|---|
Ravi | Histoire de l'art |
Beth | Chimie |
Cette dépendance fonctionnelle peut s'écrire: Student_Name -> Major. Chaque Student_Name détermine exactement une majeure et pas plus.
Si vous voulez que la base de données suive également les sports pratiqués par ces élèves, vous pourriez penser que la façon la plus simple de le faire est simplement d'ajouter une autre colonne intitulée Sport:
Student_Name | Majeur | Sports |
---|---|---|
Ravi | Histoire de l'art | Football |
Ravi | Histoire de l'art | Volley-ball |
Ravi | Histoire de l'art | Tennis |
Beth | Chimie | Tennis |
Beth | Chimie | Football |
Le problème ici est que Ravi et Beth pratiquent plusieurs sports. Il est nécessaire d'ajouter une nouvelle rangée pour chaque sport supplémentaire.
Ce tableau a introduit une dépendance multivaluée car la majeure et le sport sont indépendants l'un de l'autre mais dépendent tous deux de l'étudiant. Ceci est un exemple simple et facilement identifiable, mais une dépendance multivaleur pourrait devenir un problème dans une grande base de données complexe.
Une dépendance multivaluée s'écrit X ->-> Y. Dans ce cas:
Student_Name ->-> Major
Student_Name ->- > Sport
Ceci est lu comme "Student_Name multidetermines Major" et "Student_Name multidetermines Sport."
Une dépendance à plusieurs valeurs nécessite toujours au moins trois attributs car elle se compose d'au moins deux attributs qui dépendent d'un troisième.
Dépendance multivaluée et normalisation
Une table avec une dépendance multivaluée enfreint la norme de normalisation de la quatrième forme normale car elle crée des redondances inutiles et peut contribuer à des données incohérentes. Pour amener cela à 4NF, il est nécessaire de diviser ces informations en deux tables.
Le tableau ci-dessous a maintenant une dépendance fonctionnelle de Student_Name -> Major, et aucune dépendance à plusieurs valeurs:
Student_Name | Majeur |
---|---|
Ravi | Histoire de l'art |
Ravi | Histoire de l'art |
Ravi | Histoire de l'art |
Beth | Chimie |
Beth | Chimie |
Bien que cette table ait également une seule dépendance fonctionnelle de Student_Name -> Sport:
Student_Name | Sports |
---|---|
Ravi | Football |
Ravi | Volley-ball |
Ravi | Tennis |
Beth | Tennis |
Beth | Football |
La normalisation est souvent accomplie en simplifiant des tableaux complexes afin qu'ils contiennent des informations liées à une seule idée ou thème plutôt que d'essayer de faire en sorte qu'un seul tableau contienne trop d'informations disparates.