Dependance Fonctionnelle
Dependance Fonctionnelle
Dependance Fonctionnelle
Faîçal Felhi
felhi_fayssal@yahoo.fr
Introduction
• Le but des dépendances fonctionnelles et de la théorie de la normalisation est de s'assurer
que le schéma relationnel défini pour une base de données est correctement construit.
• Un mauvais schéma relationnel peut en effet entrainer des anomalies lors des
manipulations.
• L'objectif de la normalisation est de construire un schéma de base de données cohérent et
possédant certaines propriétés vérifiées par la satisfaction de formes normales.
• Pour une application spécifique, il est en effet possible de proposer plusieurs schémas.
• Les questions qui se posent alors sont les suivantes :
•qu'est-ce qu'un bon schéma ?
•quel schéma choisir ?
• Un mauvais schéma défini lors de la phase de conception peut conduire à un certain
nombre d'anomalies pendant la phase d'exploitation de la base :
•des redondances d'information,
•des anomalies lors des opérations de mise à jour (insertions, suppressions,
modifications). 2
Exemple :
Soit le schéma de la relation FOURNISSEUR (Nom_Fournisseur, Adresse, Produit, Prix).
Une relation (table) correspondant à ce schéma pourra éventuellement contenir plusieurs produits
pour un même fournisseur. Dans ce cas, il faudra faire face à un certain nombre de problèmes :
•l'adresse du fournisseur sera dupliquée dans chaque n-uplet (redondance),
•si on souhaite modifier l'adresse d'un fournisseur, il faudra rechercher et mettre à jour
tous les n-uplets correspondant à ce fournisseur,
•si on insère un nouveau produit pour un fournisseur déjà référencé, il faudra vérifier que
l'adresse est identique,
•si on veut supprimer un fournisseur, il faudra retrouver et supprimer tous les n-uplets
correspondant à ce fournisseur (pour différents produits) dans la table.
Ces anomalies n'apparaitront pas si on décompose le schéma initial de base
de données.
Les 3 premières formes normales ont été proposées par E.F. Codd
("inventeur" du modèle relationnel) en 1972. La forme normale dite de
Boyce-Codd a été proposée en 1974. Les 4ème (1977) et 5ème (1979)
formes normales ont été proposées ensuite par Fagin, mais elles ne
concernent que des cas rares et très spécifiques.
Les formes normales s'appuient sur les dépendances fonctionnelles entre
attributs d'un schéma de base de données.
Dépendances fonctionnelles
Définition :
un attribut (ou un groupe d'attributs) B est dit "fonctionnellement
dépendant" d'un attribut (ou d'un groupe d'attributs) A si :
a1 = a2 => b1 = b2,
a1, a2, b1, b2 étant des réalisations (valeurs) des attributs A et B dans
des n-uplets de la base de données.
On dit alors que A "détermine" B, et on note A -> B.
Dépendances fonctionnelles
Exemple :
Soit le schéma de relation PERSONNE (No_SS, Nom, Adresse, Age,
Profession).
Les dépendances fonctionnelles qui s'appliquent sur ce schéma de relation sont
les suivantes :
•No_SS -> Nom,
•No_SS -> Adresse,
•No_SS -> Age,
•No_SS -> Profession.
On pourra aussi écrire : No_SS -> Nom Adresse Age Profession.
L'attribut No_SS détermine tous les attributs du schéma de relation. Il s'agit
d'une propriété de la clé d'une schéma de relation.
La normalisation est donc le processus de transformation d’une relation ayant des
problèmes lors de la mise à jour vers une autre relation n’ayant pas ces problèmes
L’objectif est donc de définir un bon schéma relationnel qui décrit d’une manière
convenable le système d’information d’une entreprise.
7
Exemple :
Considérons la relation suivante
PRODUIT (Refproduit, LibelleProduit, PU, Quantité, NumService, Adresse, Capacité)
Elle est visiblement redondante
8
Cette relation présente certaines anomalies :
- Redondance : un produit apparaît autant de fois qu’il sera livré par un service
- Mise à jour : faute de redondance, les mises à jour conduiront à des risques d’incohérence et
de non intégrité.
- Insertion et suppression : l’insertion et la suppression ou le transfert d’attributs pourront
faire apparaître des valeurs nulles
9
On peut dire qu’une Base de Données relationnelle est ‘correcte’ ou normalisée si :
- chaque relation décrit une information élémentaire avec les seuls attributs qui lui
sont directement liés
- il n'y a pas de redondance d’information qui peuvent produire des problèmes de
mise à jour
10
La relation Produit peut être décomposée en trois relations non redondantes :
PRODUIT(RefProduit, LibelleProduit, PU, Quantité, NumService, Adresse, Capacité)
11
12
Le résultat final de la décomposition est donc les relations suivantes :
13
Dépendance fonctionnelle
Définition
Un attribut ou une liste d’attributs Y dépend fonctionnellement d’un attribut ou
d’une liste d’attributs X dans une relation R, si, étant donnée une valeur de X, il
ne lui est associé qu’une seule valeur de Y dans tout tuple de R.
On notera une telle dépendance fonctionnelle :
X→Y (X détermine Y ou Y dépend fonctionnellement de X).
14
Exemple
PRODUIT (RefProduit, LibelleProduit, PU, Quantité, NumService, Adresse, Capacité)
Pour cette relation, les dépendances fonctionnelles suivantes sont vérifiées :
RefProduit → LibelleProduit
NumService → Adresse, Capacité
RefProduit → PU
RefProduit, NumService → Quantité
15
Propriétés des dépendances fonctionnelles
Des axiomes et des règles d’inférence permettent de découvrir de nouvelles
dépendances à partir d’un ensemble initial. Dans ce que suit nous considérons R
une relation.
Les trois premières propriétés sont connues sous le nom « Axiomes d’Armstrong »
16
17
Dépendance fonctionnelle élémentaire
Une Dépendance fonctionnelle X →Y est élémentaire si pour tout X’ X la
dépendance fonctionnelle X’ →Y n’est pas vraie.
En d’autres termes,Y ne dépend pas fonctionnellement d’une partie de X (X
est la plus petite quantité d’information donnant Y).
Exemple :
RefProduit, LibelleProduit → PU
n’est pas élémentaire car il suffit d’avoir la référence du produit pour
déterminer le prix unitaire.
18
Dépendance fonctionnelle canonique
19
Clé d’une relation
est l’ensemble d’attributs dont les valeurs permettent de caractériser les n-uplets
de la relation de manière unique.
Formellement :
Un attribut ou une liste d’attributs X est une clé pour la relation R(X,Y,Z) si
Y et Z dépendent fonctionnellement de X dans
R : X→ Y, Z.
et X→ Y, Z est élémentaire.
20