D'abord, vous devez calculer une couverture canonique des dépendances. Dans ce cas, il est:
{ A B → C
A B → D
C → E
C → F
G → A
G → F } >
Depuis la clé candidat (unique) est B G
, aucune dépendance fonctionnelle satisfait la BNCF. Puis, à partir de toute dépendance fonctionnelle X → Y
qui viole le BCNF, nous calculons la fermeture de X
, X+
, et de remplacer la relation originale R<T,F>
avec deux relations, R1<X+>
et R2<T - X+ + X>
. Ainsi, chosing dans ce cas, la dépendance A B → C
, nous remplaçons la relation originale avec:
R1 < (A B C D E F) ,
{ A B → C
A B → D
C → E
C → F} >
et:
R2 < (A B G) ,
{ G → A } >
Ensuite, nous vérifions chaque relation décomposée pour voir si elle satisfait la BCNF, sinon nous appliquons récursivement l'algorithme.
Dans ce cas, par exemple, dans R1
la clé est A B
, si C -> E
viole le BCNF, et nous remplacer R1
avec:
R3 < (C E F) ,
{ C → E
C → F } >
et:
R4 < (A B C D) ,
{ A B → C
A B → D } >
deux relations qui satisfont le BCNF.
Enfin, étant donné que R2
ne satisfait pas trop la BCNF (beacuse la clé est B G
), nous décomposons R2
dans:
R5 < (A G) ,
{ G → A } >
et:
R6 < (B G) ,
{ } >
qui sont en BCNF.
Ainsi, la décomposition finale est constitué par les relations: R3
, R4
, R5
et R6
. Nous pouvons également noter que la dépendance G → F
sur la relation d'origine est perdue dans la décomposition.
Merci pour votre réponse et explication. J'ai toujours une confusion. Quand vous obtenez la décomposition en R1 et R2, le FD: G-> F semble avoir disparu. C'est là que je commençais à être confus pour commencer. Est-ce correct de laisser tomber certaines des FD, alors que la décomposition? Ma compréhension à ce sujet est très floue. J'apprécierais toute aide. – Rana
@Rana, comme je l'ai dit dans ma dernière phrase de la réponse: "On peut aussi noter que la dépendance G → F sur la relation originale est perdue dans la décomposition." En fait il est possible que dans une décomposition obtenue par l'algorithme pour BCNF, certaines dépendances sont perdues.C'est un fait négatif, en ce sens que nous avons perdu une information importante sur le schéma original (une contrainte d'intégrité, car les dépendances fonctionnelles peuvent être vues comme des contraintes d'intégrité). – Renzo
Pour cette raison, le 3NF (Third Normal Form) peut être utilisé à la place du BCNF, puisque son algorithme de décomposition garantit qu'aucune dépendance n'est perdue (mais parfois le résultat a encore quelques anomalies, comme la redondance). En fait, ceci est un fait bien connu dans la théorie de la normalisation, et pour cette raison, dans la pratique, on utilise le 3NF, pas le BCNF. – Renzo