La décomposition d'un rapport en FNBC
Je vais avoir du mal à établir quand une relation est en Boyce-Codd Forme Normale et la façon de le décomposer info FNBC si elle ne l'est pas. Étant donné cet exemple:
R(A, C, B, D, E) avec les dépendances fonctionnelles: A -> B, C -> D
Comment puis-je aller sur la décomposer?
Les étapes que j'ai prises sont:
A+ = AB
C+ = CD
R1 = A+ = **AB**
R2 = ACDE (since elements of C+ still exist, continue decomposing)
R3 = C+ = **CD**
R4 = ACE (pas de FD fermetures de résider dans ce rapport)
Alors maintenant, je sais que ACE va composer l'ensemble de la relation, mais la réponse pour la décomposition est: AB, CD, AS.
Je suppose que je suis aux prises avec la façon de bien décomposer une relation en FNBC la forme et la manière de dire quand vous avez terminé. Voudrais vraiment l'apprécier quelqu'un qui peut me guider à travers leur processus de pensée lors de la résolution de ces problèmes. Merci!
- Avez-vous lu toutes les questions sur l'FNBC dans la barre latérale?
- J'ai lu à travers un exemple qui semble pour aider à la décomposition. Je crois que je comprends en partie d'accord, mais je suis encore un peu confus quand vous êtes complètement fait en décomposition. Est-il lorsque vos relations ne plus inclure tous les attributs au sein de la fermeture de l'un de vos dépendances fonctionnelles?
- Une relation est en FNBC quand tous les "flèche" dans chaque dépendance fonctionnelle est une "flèche" d'une clé candidate.
- J'ai mis à jour mon premier post pour montrer comment je suis aller sur la décomposition. Dans ce problème, sont les relations avec le candidat clés (AB, CD, AS)? J'essaye de visualiser votre dernier relevé, mais je vais avoir du mal à comprendre ce que tu veux dire.
- Dans {AB}, A est une clé candidate. La seule FD est Un->B. Chaque flèche dans chaque FD dans {AB} est une flèche hors de la clé candidate A. Donc, {AB} est, à tout le moins, en FNBC.
- Et de même, dans {CD} C est une clé candidate. La seule FD est C->D où chaque flèche dans chaque FD dans {CD} est une flèche hors de la clé candidate C. comme il n'y a aucune FDs {AS} est un AS de sa propre candidat à la clé puisque c'est en FNBC?
- {AS} est au moins en FNBC, parce que la seule FD est un trivial FD. (ACE->ACE) Voir Wikipédia
Vous devez vous connecter pour publier un commentaire.
Bien que la question est ancienne, l'autre des questions/réponses ne semblent pas très claires étape par étape de réponse générale à la détermination et à la décomposition des relations de FNBC.
1. Déterminer FNBC:
Pour la relation R d'être en FNBC, toutes les dépendances fonctionnelles (Df) qui tiennent dans la R doivent satisfaire à la propriété, les facteurs X sont tous superkeys de R. c'est à dire si X>Y détient dans R, alors X doit être un superkey de R d'être en FNBC.
Dans votre cas, il peut être démontré que la seule clé candidate (minime superkey) est ACE.
Ainsi, les deux FDs: A->B et C->D violent FNBC que A et C ne sont pas superkeys ou R.
2. Décomposer R en FNBC forme:
Si R n'est pas en FNBC, on décompose R dans un ensemble de relations qui sont en FNBC.
Ceci peut être accompli avec un algorithme très simple:
Dans votre cas, les étapes itératives sont comme suit:
Donc R(A,B,C,D,E) est décomposé en un ensemble de relations: R1(A,C,E), R2(A,B) et R3(C,D) qui répond à FNBC.
Note également que, dans ce cas, la dépendance fonctionnelle est préservé, mais la normalisation des FNBC ne garantit pas cela.
J'espère que cette aide.
R
parce que vous avez besoin pour analyser un tuple(R', Σ')
à chaque itération. DoncS
devrait ressembler à ceci:S = [(R_1, Σ_1); (R_2, Σ_2); ...; (R_n, Σ_n)}
. Je recommande également de mettre à jour leR'
de cette façonR' = X(R' - Y)
.1FN -> 2FN -> 3FN -> FNBC
En fonction de FD set "ACE" les formes de la clé.
Clairement R(A,B,C,D,E) n'est pas en 2FN.
2FN décomposition donne R1(A,B) , R2(C,D) et R3(A,C,E).
cette décomposition décomposé les relations sont en 3FN et aussi en FNBC.