Informatique


La dépendance fonctionnelle

Aller à

Définition

Les attributs d'une entité (ou d'une association) doivent dépendre directement de la clef primaire .


La dépendance fonctionnelle en mathématique

Un ensemble B dépend fonctionnellement d'un ensemble A si la connaissance d'un élément a € A détermine un et un seul élément b € B.
On dit alors que A détermine B.

Il existe une dépendance fonctionnelle entre deux attributs Ai et Aj, si pour une valeur de Ai on cible une et une seule valeur Aj.
On note: Ai ---> Aj
Ai est appelée la source et Aj la cible.

De même Il existe une dépendance fonctionnelle entre une liste d'attributs (Ai.....An) et un attribut Aj, si pour une combinaison de valeurs de (Ai.....An) on cible une et une seule valeur Aj.
On note: (Ai.....An) ---> Aj
(Ai.....An) est appelée la source et Aj la cible.


La dépendance fonctionnelle appliquée au MCD

La question fondamentale à se poser est : Connaissant une valeur de la source, peut-on connaître une valeur unique du but ?.
Quand la réponse est affirmative, on a l'habitude de représenter cette dépendance comme suit :

Dépendance fonctionnelle à partie gauche ( source ) non composée.

SOURCE =====> BUT

Appliquons la règle de la dépendance fonctionnelle à l'entité EMPLOYE.

Chaque employé se voit attribué un identifiant unique (la clé), et un même identifiant ne peut jamais être attribué à plus qu'un employé.
En conséquence, un identifiant ne pourra déterminer qu'un et un seul nom d'employé (nom_emp).

On a donc les DF suivantes:

  • id_emp --> nom_emp (il y a dépendance fonctionnelle entre l'identifiant et nom_emp)
  • id_emp --> preno_emp (il y a dépendance fonctionnelle entre l'identifiant et preno_emp)
  • id_emp --> daten_emp (il y a dépendance fonctionnelle entre l'identifiant et daten_emp)
  • id_emp --> adres_emp (il y a dépendance fonctionnelle entre l'identifiant et adres_emp)

NB: la flèche doit être traduite par "détermine".

Dépendance fonctionnelle à partie gauche composée.

Il peut arriver que ce soit la combinaison de plusieurs attributs ( en source ) qui permettent de connaître une valeur unique du but.
Exemple : un numéro de commande + un numéro de produit nous donnent la quantité commandée.

(identifiant commande, identifiant article) =====> quantité commandée


Dépendance non fonctionnelle

Deux attributs sont en dépendance non fonctionnelle si la connaissance d'une valeur du premier attribut (source)

  • ne permet de connaître aucune des valeurs du second (pas de rapport entre les deux)
  • détermine la connaissance de plusieurs valeurs de la seconde

Exemples :
la connaissance d'une date de naissance ne permet pas de connaître une adresse
la connaissance d'un numéro de facture permet de connaître plusieurs références d'articles

Un exemple

Nous pourrions ajouter à l'entité "professeurs" l'attribut dip_prof, les diplômes du professeur.

Question: cet attribut est-il en situation de dépendance fonctionnelle par rapport à l'identifiant (la clé) ?

Réponse: non, car un identifiant ne détermine pas une valeur de dip_pro mais plusieurs valeurs.
En effet un professeur peut avoir plusieurs diplômes, c'est d'ailleurs en général le cas!
Donc, puisque dip_pro n'est pas en dépendance fonctionnelle par rapport à l'identifiant il ne peut être attribut de l'entité "professeurs".

La mauvaise solution: on pourrait éventuellement créer plusieurs propriétés dip1_prof, dip2_prof, dip3_prof (diplôme 1, diplôme 2, diplôme 3, etc.), mais cette solution doit être écartée car il n'y a pas de règle qui détermine le maximum de diplômes que peut avoir un professeur!

La bonne solution: créer une entité "diplome" en association avec "professeurs".


Dépendance fonctionnelle directe

Une dépendance fonctionnelle donnée 1 =====> donnée 2 est directe s'il n'existe pas une donnée 3 qui engendrerait une dépendance fonctionnelle transitive de telle sorte que l'on pourrait écrire :

Donnée 1 =====> donnée 3 =====> donnée 2

Exemples :
Numéro facture ======> numéro représentant
Numéro représentant ======> nom représentant
Numéro facture ======> nom représentant