2016-10-29 2 views
0

J'ai trouvé une relation de cette façon - CUSTOMER (NAME, STREET, CITY, STATE, ZIP)Comment décomposer table 3NF et BCNF

qui utilisent abrégeant pour chaque façon suivante,

Name - N 
STREET - R 
CITY - C 
STATE - T 
ZIP - Z 

Et étant donné F = {N->RCT, RCT->Z, Z->CT}

Et question est décomposer à 3NF et BCNF.

Je décomposons à 3NF, ici, je considérais comme moyen pratique,

R1(N,R,Z) 
R2(Z,C,T) 

est-il exact?

Ou dois-je considérer seulement les dépendances fonctionnelles données pour décomposer. Si je pense que cette façon se décomposer et 3NF, alors la réponse sera

R1(N,R,C,T) 
R2(R,C,T,Z) 

S'il vous plaît quelqu'un me conseiller de quelle manière la bonne façon.

+0

Dans votre premier décompositon, comment êtes-vous arrivé à N-> RCT? Dans votre seconde, qu'est-il arrivé à Z-> CT? –

+0

@ MikeSherrill'CatRecall 'Dans ma première décomposition, je ne considère que les dépendances N-> RCT et Z-> CT, En utilisant ce nom, je peux obtenir la rue, la ville et l'état. Et en utilisant le zip si je peux obtenir la ville et l'état. alors je crée R2 relation comme R2 (Z, C, T). Et R1 (N, R, Z) ici, je considère Z comme clé étrangère. – user3099298

+0

La normalisation ne consiste pas à trouver un chemin navigable. La normalisation ne jette pas les dépendances fonctionnelles. (RCT-> Z?) –

Répondre

1

Votre première décomposition n'est pas correcte, tandis que la seconde est. Pour se décomposer en 3NF, la première étape de l'algorithme de "synthèse" nécessite de trouver une couverture canonique de l'ensemble des dépendances, puis de regrouper les dépendances trouvées dans les groupes ayant le même côté gauche.

Comme il n'y a pas de dépendances redondantes ou attribut superflu dans vos dépendances, nous pouvons commencer par les trois dépendances, qui ont un autre côté gauche, produisant trois relations:

from N → RCT, R1 (N, R, C, T), with key N 
from RCT → Z, R2 (R, C, T, Z), with key RCT 
from Z → CT, R3 (C, T, Z), with key Z 

puis, en notant que le troisième la relation est complètement contenue dans la seconde, nous pouvons l'éliminer. L'étape formelle finale de l'algorithme nécessite que l'on vérifie si dans une relation décomposée est présente une clé de la relation d'origine (sinon une nouvelle relation avec la clé devrait être ajoutée). Ceci est vrai, car Z est une telle clé, qui est présente dans la seconde relation. Ainsi, la décomposition finale est:

R1 (N, R, C, T), with key N 
R2 (R, C, T, Z), with key RCT 

Notez que, en appliquant les algorithmes « d'analyse » pour trouver le BCNF on obtient une autre solution:

R1 <(N, R, C, T), 
    { N → RCT }> 

R2 <(C, T, Z), 
    { Z → CT } > 

R3 <(R, Z), 
    { } > 

mais dans cette décomposition la dépendance fonctionnelle CRT → Z est perdu.