Introduction aux systèmes de bases de données/Dépendances fonctionnelles et normalisation
Soit une relation avec l’ensemble de ses attributs.
Soit , c'est-à-dire que et sont deux attributs ou ensemble d’attributs de R.
On dit qu’il existe une dépendances fonctionnelle (DF) entre et (ou que détermine ou encore que est déterminé par ), notée si et seulement si pour tout tuple et de , on a
Pour une DF , on dit que est la source et la cible.
Objets représentées par une dépendance fonctionnelle
[modifier | modifier le wikicode]La dépendance fonctionnelle permet d'exprimer
- la caractéristique invariante de la relation ;
- la contrainte liée à sa définition en intention.
Par exemple dans une université, étant donné le matricule d’un étudiant, on peut donner son nom. Il existe donc une dépendance fonctionnelle entre matricule et nom.
Mais l’inverse n’est pas vrai : étant donné un nom, on ne peut déterminer le matricule d’un étudiant, car il peut y avoir plusieurs matricules, puisque plusieurs étudiants peuvent avoir le même nom
Cette dépendance ne signifie pas que le nom associé à un matricule ne change jamais ; le nom peut changer, mais on peut toujours déterminer le nom d’un étudiant à partir de son matricule. Cela ne signifie pas non plus que si on a deux matricules différents, alors leurs noms associés doivent être différents. |
Distinction du variant et de l'invariant d'une dépendance fonctionnelle
[modifier | modifier le wikicode]La fonction mathématique met en correspondance les mêmes couples de valeurs : hier, aujourd’hui et demain, pour .
La dépendance fonctionnelle met en correspondance des couples de valeurs qui peuvent différer selon l’instant considéré : hier, on avait « », aujourd’hui, ce client a changé d’adresse et en conséquence, on a « ».
Lorsqu’on dit que la dépendance fonctionnelle fait partie des caractéristiques invariantes d’une relation, on se place au niveau des structures et cela signifie qu’à toute valeur de la source, on associe une seule valeur de la cible, même si cette valeur déterminée peut changer dans le temps.
Le déménagement du client 42 ne contredit en rien l’existence de la DF .
Dépendance fonctionnelle minimale
[modifier | modifier le wikicode]Si alors on a aussi
Pour normaliser, on considère seulement les dépendances qui sont minimales selon la liste de gauche.
Considérons R(matricule, nom, prénom, date naissance, …)
Si on a matricule → (nom, prénom, date naissance, ...) alors (matricule, nom) → (prénom, date naissance, ...).
S’il existe une dépendance fonctionnelle minimal entre (A1, ..., An) et tous les autres attributs de la relation, alors on peut conclure que (A1, ..., An) est une clé candidate.
Une dépendance fonctionnelle sera donc traduite en une contrainte de clef primaire (PRIMARY KEY) ou unique (UNIQUE).
Principales lois sur les dépendances fonctionnelles
[modifier | modifier le wikicode]- réflexivité : si , alors
- augmentation : si , alors
- transitivité : si et , alors
- décomposition : si , alors et
- union : si et , alors
- pseudo-transitivité : si et , alors
Détermination de la dépendance fonctionnelle
[modifier | modifier le wikicode]Les dépendances fonctionnelles sont des contraintes du domaine d’application. On les détermine à partir de notre connaissance des faits (règles, conditions, etc.) du domaine d’application.
Si pour une liste de valeurs pour , on peut toujours associer une et une seule valeur pour , alors on a une dépendance fonctionnelle .
Représentation graphique
[modifier | modifier le wikicode]Voir Unified Modeling Language#Les diagrammes sur Wikipédia .
Dépendance fonctionnelle
[modifier | modifier le wikicode]Étude des liens sémantiques entre attributs, particulièrement les liens fonctionnels.
Cette notion est introduite pour caractériser des relations pouvant être décomposée sans perte d'information.
Autrement dit un attribut, ou groupe d'attributs, Y dépend fonctionnellement d'un attribut, ou groupe d'attributs, X, si étant donnée une valeur unique de X il lui correspond une valeur unique de Y, quel que soit l'instant considéré.
Soit R=(A, …, B, …), on dit que B dépend fonctionnellement de A si et seulement si pour chaque valeur de A dans un tuple il lui correspond toujours la même valeur de B.
Notes et références
[modifier | modifier le wikicode]