Décomposition en 3Nf (Algorithme de Bernstein, 1976)
Algorithme
Entrée : Schéma R et un ensemble F de DF
Sortie : Schémas {R1, R2, ... , Rn} avec Ri en 3NF pour tout i
Etape 1
Rechercher une couverture minimale G de F
Etape 2
Partitionner G en groupes ayant la même partie gauche
Etape 3
Fusionner les groupes Gi et Gj possédant des parties gauches Xi et Xj équivalentes
Etape 4
Pour chaque groupe, créer un schéma relationnel Ri dont la clé est la partie
gauche des DF et les attributs non clés est la partie droite des DF.
Etape 5
Si aucune des clés candidates ne figure dans une des relations Ri alors il est nécessaire
de rajouter une relation dont les attributs constituent une clé candidate. 155
Décomposition 3NF BCNF 1NF 2NF
Décomposition en 3Nf
Exemple:
Soit R(A,B,C,D,E) et les dépendances A B ; A C; C,D E ; B D.
Étape 1
Ces DF forment déjà une couverture minimale, il est impossible d’enlever une de
ces dépendances.
Étape 2
Il y a trois groupes de dépendances avec la même partie gauche : {AB ; AC}
{C,DE} et {BD}
Étape 3
Donc l’algorithme donne la décomposition en trois relations
R1(A,B,C), R2(C,D,E), R3(B,D).
Étape 4
Noter que A est une clé candidate de R et elle est dans R1 donc la dernière étape
(5) de l’algorithme ne s’applique pas 156
Décomposition 3NF BCNF 1NF 2NF
Décomposition en 3Nf: exercice
Trouver des décompositions en 3NF:
1) Soit R(A, B, C, D) avec DF= {AB , BC , AD
, DC}
2)Soit R(F, A, N, P) avec DF= {FA , F,NP}
3) Soit R(A, B, C, D) avec DF= {A,B,CD}
4)Soit R(A, B, C, D} avec DF={AB}
157
Décomposition 3NF BCNF 1NF 2NF
Décomposition en 3Nf: exercice
5) Soit R= ({A, B, C, D, E}, F) avec F l’ensemble des dépendances
fonctionnelles.
F = {AC ; A,B E ; D B ; A,B C,D ; DA, E}
Trouver des décompositions en 3NF
158
Décomposition 3NF BCNF 1NF 2NF
INSUFFISANCE DE LA 3NF
Exemple: Poste (Ville, Rue, Code) et DF={V,RC ; CV}
Clés: VR, RC
Relation en 3 NF
Poste
Redondance entre le code et la ville
159
Ville
Rue
Code
Paris
St Michel
75005
Paris
Champollion
75005
Décomposition 3NF BCNF 1NF 2NF
1 / 21 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !