Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cours 4-BDD-conception de Bases de Données Relationnelles

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 10

Module BDD : Conception de BDD relationnelles Mme H.

CHELLAKH

Dépendances fonctionnelles et normalisation des BDD


1. introduction :
Etant donné un ensemble d’attributs (dictionnaire de données) relatif à un domaine d’étude
particulier, comment trouver une bonne structuration de ces attributs en un ensemble de relations
s’adaptant aux données à représenter ? En d’autres termes, il s’agit de décider d’une structure
logique adéquate (cohérente et sans redondance) pour les données à représenter.
Pour cela, plusieurs méthodes existent dont l’algorithme de synthèse, qui est basé sur deux
concepts clés : les dépendances fonctionnelles et la normalisation.

2. les dépendances fonctionnelles (DF) :


2.1. Notion de DF :

Domaine Ensemble Ensemble de


d’étude Collecter les d’attributs Déterminer les DFs
attributs du dépendances entre
domaine les attributs
Soit le sous ensemble d’attributs tirés du dictionnaire de données relatif à la gestion d’une scolarité :

Nom d’attribut Signification


Cod_mod Code du module
Num-ens Numéro d’enseignant
Jour Jour de semaine
Heure Horaire d’une séance
Section Numéro de la section
Local Numéro de la salle de cours
An-étude Année d’étude

Sur la base de cet ensemble d’attributs, nous construisons une relation qui nous renseigne
sur l’emploi du temps, d’une filière donnée (informatique par exemple, toutes années confondues.
Emploi du temps :
Jour Heure local Cod-mod Num-ens An-étude Section
Dimanche 8h 00 L1 Algo E1 2 A
Dimanche 13h 00 L2 Archi E2 2 A
Lundi 9h 30 L1 Algo E4 2 B
Mardi 11h 30 L3 Log E3 2 B
Dimanche 13h 00 L3 Sys E4 3 A

De là, nous constatons ce qui suit :


Connaissant le jour de semaine, l’heure et le local, nous pouvons déterminer de façon unique les
valeurs de Cod-mod, Num-ens, An-étude et Section.
On dira que {Jour, Heure, Local} déterminent cod-mod, Num-ens, An-étude et section.
On dira aussi que Cod-mod, Num-ens, An-etude et section dépendent fonctionnellement de
{Jour, Heure, Local}.
On écrira : Jour, Heure, Local Cod-mod, Num-ens, An-étude, Section
L’ensemble des attributs de la partie gauche détermine les attributs de la partie droite.

1
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Ou encore :
Jour , Heure, Local  Cod  mod
Jour , Heure, Local  num  ens
Jour , Heure, Local  An  étude
Jour , Heure, Local  Section
Nous constatons aussi que Cod-mod ne détermine pas Num-ens. En effet, pour le module
Algo, nous avons deux enseignants différents E1 et E4.
Connaissant le module, nous ne pouvons pas déterminer l’enseignant.
De même, Num-ens ne détermine pas Cod-mod, du fait que l’enseignant E4 assure deux module
différents Algo et Sys.
Remarques :
 Une DF est une assertion qui est définie sur toutes les réalisations (tuples) d’une réalisation
et pas sur un tuple particulier.
 Une DF traduit une certaine perception de la réalité, elle correspond à une contrainte sur les
données, qui doit être vérifiée en permanence.
Définition (Dépendance Fonctionnelle) :
Soit R a1 , a 2 ,..., a n  ( n  2) un schéma de relation, soit X, Y, Z trois sous-ensembles
d’attributs de A= a1 , a 2 ,..., a n  tels que : X  Y  Z   et X  Y  Z  A (Z peut être vide)
On dira que X détermine Y, ou Y dépend fonctionnellement de X et on notera X  Y si quels que
soient les tuples (x,y,z) et ( x , y , z  ) de R, x  x   y  y 
Autrement dit : une valeur de x détermine une et une seule valeur de y, ou bien connaissant la
valeur de x, nous pouvons déterminer la valeur de y sans ambiguïté.
Exemples :
 Dans une relation qui décrit les modules enseignés R(Code-mod, Libellé-mod, coef), nous
avons les DFs suivantes :
Code  mod  Libellé  mod
Code  mod  Coef
Connaissant Cod-mod, nous pouvons déterminer son libellé et son Coefficient.
 Dans une relation qui décrit les enseignants, nous avons les DFs suivantes :
Num  ens  Grade
Num  ens  Nom  ens
Num  ens  Pr énom  ens
On pourra les écrire aussi comme suit :
Num  ens  Grade, Nom  ens, Pr énom  ens
 Dans une relation qui décrit les sections, nous avons :
Section, An  étude  Nbre  étudiants

2.2. Propriétés des DF :


Dans cette partie, X et Y représentent deux sous-ensembles d’attributs d’une relation R.
 Réflexivité :
Pour tout Y  X , on a X  Y , en particulier X  X
 Augmentation :
Si X  Y alors X  Z  Y  Z
Exemple :
Cod  mod  Libellé  mod  Cod  mod, Coef  Libellé  mod, Coef

2
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

 Transitivité :
Si X  Y et Y  Z alors X  Z
Exemple :
Num  ens  grade et grade  salaire de base  Num  ens  salaire de base
Les trois règles précédentes ci-dessus sont connues sous le nom d’axiomes
d’ARMSTRONG, d’autres règles peuvent en être déduites : il s’agit de l’union, la pseudo
transitivité et la décomposition.
 Union :
Si X  Y et X  Z alors X  Y  Z
Exemple :
Jour , Heure, Local  Cod  mod et Jour , Heure, Local  num  ens
 Jour , Heure, Local  Cod  mod, Num  ens
 Pseudo-transitivité :
Si X  Y et Y  W  Z  X  W  Z
Exemple :
Num  ens  grade
Grade, Nom  ens  salaire
 Num  ens, Nom  ens  salaire
 Décomposition :
Si X  Y et Z  Y alors X  Z
Exemple :
Code  mod  Libellé  mod, Coef Coef   Libellé  mod, Coef 
 Cod  mod  Coef

2.3. Typologie des DF :


 DF triviale :
X  Y est triviale si Y  X . (Réflexivité).
 DF élémentaire :
Une DF X  Y est dite élémentaire si X   X , X   Y .
Autrement dit : Y ne dépend pas d’une partie de X
Exemple :
Jour , Heure, Local  Cod  mod est élémentaire.
Cod  mod, libellé  mod  Coef n’est pas élémentaire car Cod-mod suffit pour déterminer
Coef.
Cette DF élémentaire sert à conserver les seules DF utiles.
 DF canonique :
Une DF X  Y est dite canonique si son membre droit est réduit à un singleton (c.a.d un seul
attribut).
Notons que toute DF qui n’est pas canonique peut être transformée en un ensemble de DFs
canonique par décomposition.
Exemple :
La DF Num  ens  Grade, Nom  ens, Pr énom  ens n’est pas canonique, elle donne lieu à
trois DF canoniques.

3
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Num  ens  Grade


Num  ens  Nom  ens
Num  ens  Pr énom  ens
 DF directe :
X  Y est directe si :
 Elle est élémentaire.
 Y ne dépend pas transitivement de X
( ( Z / X  Z et Z  Y )

2.4. Couverture minimale (irréductible)


Définition :
La couverture minimale d’un ensemble de DF est un sous ensemble minimum de DF
élémentaires permettant de générer toutes les autres.
Théorème :
Tout ensemble de DF admet une couverture minimale, en général non unique.
Exemple :
1- Cod  mod  Cod  filière
2- Cod  filière  libellé filière
3- Cod  mod  Libellé  filière
4- Jour , Heure, Local  num  ens
5- Jour , Heure, Local  Cod  filière
6- Jour , Heure, Local  Section
7- Jour , Heure, Local  Groupe
8- Jour , Heure, Local  An  étude
9- Jour , Heure, Local  Cod  mod
10- Jour , Heure, Local , Num  ens  Cod  filière
La couverture minimale de cet ensemble de DF consiste à éliminer les DF N°3 (obtenu par
transitivité de 1 et 2), N° 10 obtenue par augmentation de la DF N°5, et la DF N° 5 obtenu par
transitivité de 1 et 9.

2.5. Fermeture transitive :


Définition :
On appelle fermeture transitive d’un ensemble de F de DF, l’ensemble F+ constitué de F lui-
même et de l’ensemble des DF déduites par transitivité.
Exemple :
Soit l’ensemble de DF,
F= Num  ens  Grade, Grade  Salaire, Grade  Nbre  heures
La fermeture transitive de F sera :
F+= F  Num  ens  salaire, Num  ens  Nbre  heures
 Num  ens  Grade, Grade  Salaire, Grade  Nbre  heures, Num  ens  Salaire
=
Num  ens  Nbre  heures 
Dans ce cas la couverture minimale de F+ est F.

4
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Remarque :
La recherche de la couverture minimale d’un ensemble de DF est un élément essentiel dans
le processus de normalisation, afin de décomposer une relation en plus petites relations.

2.6. Notion de clé de relation :


De façon informelle, la clé d’une relation R est un ensemble d’attributs (un ou plusieurs) de R,
qui détermine tous les attributs de R.
 Définition (clé de relation) :
Soit A l’ensemble des attributs d’une relation R et soit X un sous ensemble de A. X est une clé
de R si a  A, X  a .
Exemple :
Jour , Heure, Local  Cod  mod
Jour , Heure, Local  num  ens
Jour , Heure, Local  An  étude
Jour , Heure, Local  Section
Donc {Jour, Heure, Local} est une clé de la relation Emploi du temps, elle sera écrite juste
après le nom de la relation et soulignée pour la distinguer des autres attributs qui ne sont pas clés.
On aura la relation : Emploi du temps (Jour, Heure, Local, Num-ens, Cod-mod, section, An-étude)
De même dans la relation Module, Cod-mod est une clé.
On écrira Module (Cod-mod, libellé-mod,Coef)
 Clé minimale :
Soit X un sous ensemble d’attributs d’une relation R. X est dite clé minimale, si X est une clé de
R et si toute DF X  a de R est élémentaire.
Exemple :
 Dans une relation décrivant les étudiants :
Etudiant (Matricule, Nom_etud, Prénom-etud, Date-nais-etud, Adresse-etud)
Matricule, Nom  Pr énom  etud
Matricule, Nom  Date  nais  etud
Matricule, Nom  Adresse  etud
Matricule  Nom  etud
Matricule, Nom-etud est une clé de la relation Etudiant, mais elle n’est pas minimale car il suffit
d’avoir le matricule de l’étudiant, pour déterminer tous les attributs, y compris le nom.
Matricule est alors une clé minimale de la relation Etudiant. Le schéma de relation est :
Etudiant (Matricule, Nom-etud, Prénom_etud, Date-nais-etud, Adresse-etud)
 Dans une relation décrivant les résultats obtenus par les étudiants dans les différents modules,
nous aurons :
Résultats (Matricule, Code-mod, Moyenne)
{Matricule, cod-mod}est une clé de la relation Résultats. De plus elle est minimale.
 Clés candidates/ Clé primaire :
Une relation peut avoir plusieurs clés possibles, on parle alors de clés candidates, on en choisit
une qu’on appelle clé primaire.
Dans l’exemple de la relation Emploi du temps, on peut vérifier que {Jour, Heure, Local} et {Jour,
Heure, Num-ens} sont deux clés candidates de la relation.
 Clé étrangère (exterieure) :
La notion de clé étrangère sert à faire le lien entre deux relations d’une même BD, et permet au
SGBD de maintenir la cohérence des lignes (tuples) de deux relations ou d’une même relation.

5
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Définition :
Soit A un ensemble d’attributs qui constitue la clé primaire d’une relation R1. A est dite
étrangère de R2, si :
1- A apparaît dans R2.
2- Une valeur de clé extérieure d’un tuple quelconque de R2 est soit « NULL », soit apparaît
comme valeur de clé primaire d’un tuple de R1.
Exemple :
Module (Cod-mod, Libellé-mod, Coef, An-étude, Code-filière)
Filière (Cod-filière, Libellé-filière)
Code-filière est une clé primaire dans la relation Filière et elle est étrangère dans la relation module.

6
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

3. Les formes normales :


La théorie de normalisation est destinée à concevoir correctement le schéma d’une base de
données relationnelle, c'est-à-dire :
 Sans redondance d’informations
 Sans anomalies de mise à jour
Exemple :
Considérons la relation Etud-mod suivante :
Etud-mod (Matricule, Cod-mod, Nom-etud, Prénom-etud, moyenne) pour laquelle nous présentons
une partie en extension (l’attribut Moyenne désigne la moyenne d’un étudiant dans un module).

Matricule Nom-etud Prénom-etud Cod-mod Moyenne


52001 ABADI Mohammed Algo 10
52001 ABADI Mohammed Archi 01 12.5
52001 ABADI Mohammed Logique 11
52002 BADAOUI Karim Algo 8.5
52002 BADAOUI Karim Archi 01 15
52002 BADAOUI Karim Logique 11
.
.
.
Nous remarquons tout de suite une redondance dans ce tableau, en effet chaque tuple pour
l’étudiant ‘ ABADI’» nous indique son matricule, son nom et son prénom. Idem pour le tuple de
‘BADAOUI’. D’une manière générale, le nom et le prénom sont répétés autant de fois que le
nombre de modules auxquels il est inscrit.
Dans le modèle relationnel, on doit éviter ce type de situations (redondance d’informations),
pour cela on effectue ce qu’on appelle une normalisation sur les relations, on obtient alors des
relations normalisées. On parle plus précisément de formes normales.

3.1 Première forme normale : (1FN)


Définition (1FN) :
Une relation R est en 1FN, si chacun de ses attributs a un domaine atomique mono-valué.
Autrement dit : pour chaque tuple de la relation, tout attribut possède une seule valeur.
Cette définition exclut les relations ayant des attributs dont les valeurs seraient des ensembles ou
des listes de valeurs.
Exemple :
La relation Résultats qui stocke les résultats des étudiants dans les modules, supposons que
l’on veuille sauvegarder pour chaque module et pour chaque étudiant, les différentes notes obtenues
pendant l’année (pas uniquement la moyenne). Nous aurons à sauvegarder la note de l’EMD1, celle
de l’EMD2, éventuellement celles de la synthèse et du rattrapage.
Soit le schéma de relation suivant :
Résultats (Matricule, Cod-mod, Nom-etud, Prénom-etud, Notes)
Pour l’étudiant « ABADI Mohammed », nous aurons par exemple 4 notes à sauvegarder, pour le
module Algo : 52001 ABADI Mohammed Algo {8 9.5 6.5 11}
Nous remarquons que cette relation n’est pas en 1FN du fait que l’attribut notes possède 4
valeurs différentes, il n’est donc pas atomique.
Pour transformer cette relation en première forme normale (1FN), il faut décomposer l’attribut
Notes en quatre autres attributs : note1, note2, synt, ratt qui soient atomiques.
Nous aurons le schéma de relation suivant :

7
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Résultats ( Matricule-Cod-mod, Nom-etud, Prénom-etud, Note1, Note2, Synt, Ratt)


Chacun des attributs Note1, Note2, Synt, Ratt aura une valeur atomique, la relation ainsi obtenue
est en 1FN.
Remarque : La première forme normale a pour objectif de mettre à plat les hiérarchies, dans un
souci de simplicité.

3.2 Deuxième forme normale : (2FN)


Une relation R est en 2FN si et seulement si :
 Elle est en 1FN.
 Tout attribut n’appartenant pas à la clé ne dépend pas d’une partie de la clé. Autrement dit il
est en dépendance fonctionnelle élémentaire de la clé (c.a.d. dépend de toute la clé)
Exemple :
La relation Résultats (Matricule, Cod-mod, Nom-etud, Prénom-etud, Note1, Note2, Synt, Ratt)
n’est pas en 2FN
Car : Matricule  Nom  etud
Matricule  Pr énom  etud
Nom-etud et Prénom-etud sont deux attributs qui dépendent d’une partie de la clé.
Il faut décomposer la relation résultats en deux autres relations :
Résultats (Matricule, Cod-mod, Note1, Note2, Synt, Ratt) et
Etudiant (Matricule, Nom-etud, Prénom-etud)
Ces deux dernières relations sont en 2FN.
Remarque :
La 2FN n’est pas suffisante pour éviter toutes les redondances, nous pouvons voir ceci sur
l’exemple suivant :
Considérons la relation Enseignant :
Enseignant (Num-ens, Nom-ens, prénom-ens, Date-nais-ens, Adresse-ens, Grade, Nbr-heures)

Num-ens Nom-ens Prénom-ens Date-nais-ens Adresse-ens Grade Nbr-


heures
E1 SALAH Mohammed 10/06/65 Alger C .C 9h
E2 EL-ALLAMI Ryad 25/02/59 Alger M.C 7h ½
E3 NOUALI Nora 13/05/75 BBA C.C 9h

On remarque que le nombre d’heures d’enseignement dépend uniquement du grade de


l’enseignant, en fait la même valeur sera répétée à chaque fois que l’on répète le même grade.
Nous avons un attribut (Nbr-heures) qui dépend d’un autre attribut non clé (Grade), ceci crée une
autre forme de redondance. Pour l’éliminer, il faut mettre les relations en 3FN.

3.3 Troisième forme normale : (3FN)


Une relation est en 3FN si :
 Elle est en 2FN.
 Tout attribut n’appartenant pas à la clé ne dépend pas d’un attribut non clé. Autrement dit
tout attribut doit dépendre de la clé par du DF élémentaire directe.
Sur l’exemple précédent, il faudra supprimer l’attribut Nbr-heures de la relation Enseignant et
créer une nouvelle relation Charge qui détermine le nombre d’heures d’enseignement, en fonction
du grade de l’enseignant. On éclate la relation précédente en deux autres relations comme suit :
Enseignant (Num-ens,Nom-ens, Prénom-ens, date-nais-ens, Adresse-ens, Grade)
Charge (Grade, Nbr-heures)
Ainsi ces deux relations sont en 3FN.

8
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Remarque :
La troisième forme normale a pour objectif d’éliminer les redondances dues aux DF
transitives.

3.4 Forme normale de Boyce Codd : (BCFN)


Dans le cas où une relation admet plusieurs clés candidates, des anomalies peuvent subsister
en 3FN. La forme normale de Boyce Codd, permet d’éviter ces anomalies.
Définition :
Une relation est en forme normale de Boyce-Codd (BCFN), si quelle que soit la dépendance
fonctionnelle, le membre gauche est une clé. Autrement dit un des éléments composant la clé ne
doit pas dépendre d’un autre attribut.
Remarque :
Toute relation qui est en BCFN est forcément en 3FN.
Exemple :
Soit la relation R (Matière, N°classe, Code-ens) vérifiant l’ensemble de DF suivant :
Matière, N classe  code  ens code  ens  matière
Avec la règle de gestion suivante :
Tout enseignant enseigne une et une seule matière.
Cette relation est en 3FN mais n’est pas en BCFN : le membre gauche de la DF
code  ens  matière n’est pas une clé.

Matière Classe Code-ens


Algo INF1 E1
Algo INF2 E1

On remarque qu’il y a une redondance entre Matière et Code-ens.


Cependant, il n’est pas toujours possible de trouver une décomposition sans perte d’informations, et
qui préserve les DF.
La décomposition de R en :
R1 (Code-ens, matière) et R2 (N°classe, Code-ens) évite la redondance, elle est sans perte
d’informations, mais elle ne préserve pas la DF : Matière, N classe  code  ens

4. Algorithme de synthèse :
En appliquant les étapes de cet algorithme, vous pourrez déduire un schéma de relation en
3FN. Vous devez démarrer de la relation universelle et de ses dépendances fonctionnelles. La
relation universelle est une relation qui contient tous les attributs du domaine d’étude.

Relation Ensemble
universelle de DF

Algorithme de
synthèse

Relations
En 3FN

9
Module BDD : Conception de BDD relationnelles Mme H.CHELLAKH

Soit F, l’ensemble de toutes les dépendances fonctionnelles définies sur les attributs de la relation
universelle. Les étapes de l’algorithme de synthèse sont les suivantes :
1. Trouver l’ensemble IRR(F) contenant la couverture irréductible (couverture minimale) de F
2. Partitionner l’ensemble IRR(F) en sous ensembles Fi, tels que toutes les DFs d’un ensemble
Fi aient la même partie gauche.
3. pour chaque ensemble Fi de DFs, construire une relation composée de tous les attributs
formant les DFs de Fi, la clé de la relation sera la partie gauche commune à toutes ces DFs.
4. traiter les attributs isolés.
Exemple :
Soient les DFS suivantes relatives à la gestion de la scolarité :
1. Code  mod  Libellé  mod
2. Code  mod  An  etude
3. Code  mod  Libellé  filière
4. Code  filière  Libellé  filière
5. Matricule  Nom  etud
6. Matricule  Adresse  etud
7. Matricule  Date  naiss  etud
8. Num  ens  Nom  ens
9. Num  ens  Date  naiss  ens
10. Num  ens  Grade
11. Num  ens  Situation familiale
12. Num  ens  salaire
13. Grade  Nbre  heures
14. Grade  Salaire
15. Code  mod  Coef
16. Code  mod  Code  filière
17. Matricule  Pr énom  etud
18. Num  ens  Pr énom  ens
19. Num  ens  Adresse  ens
20. Num  ens, Grade  Nbre  heures
21. Num  ens, Grade  salaire
22. Num  ens  Nbre  heures
23. Matricule  Section
24. Matricule  Groupe
25. Code  mod, Matricule  Code  filière
Question :
Concevoir un schéma de relations en 3FN, à partir de cet ensemble de DFs en appliquant
l’algorithme de synthèse.

10

Vous aimerez peut-être aussi