7

J'ai lu de nombreuses sources différentes sur la façon de différencier les relations qui sont en 3NF/BCNF. Et je l'ai jusqu'à présent ce je crois savoir ...Trouver une relation dans 3NF mais pas dans BCNF

Je vais utiliser cette relation comme un exemple ...

R = {A, B, C, D, E}

et

F = {A -> B, B C - > E, E D -> A}.

Premièrement, nous devons trouver les clés de la relation. I used this video to help me do that. et je me suis

Keys = {ACD, BCD, CDE}

maintenant pour vous assurer R est en BCNF, nous devons nous assurer que le côté gauche de chaque dépendance fonctionnelle dans F est l'un des Keys. Nous savons immédiatement que ce n'est pas le cas, car le premier FD est A -> B et A n'est pas l'une des clés. Donc ce n'est pas dans BCNF.

maintenant pour vous assurer R est en 3NF, nous devons nous assurer que le côté gauche de chaque dépendance fonctionnelle dans F est l'un des KeysOU le côté droit de chaque dépendance fonctionnelle dans F est un sous-ensemble de l'un des Keys. Si vous regardez le côté droit de chaque FD, ils sont B, E et A. Ce sont chacun un sous-ensemble d'un Key, donc cela signifie que il est dans 3NF.

C'est donc l'un des rares cas (selon wiki) où une relation est en 3NF mais pas dans BCNF. Cette méthode est-elle correcte? Est-ce fiable? Est-ce que je manque quelque chose?

+1

Oui, vous avez tout fait correctement. – laurids

+0

vous pouvez vouloir vérifier ceci: http://class2go.stanford.edu/db/Winter2013 – laurids

Répondre

1

Vous devez d'abord apprendre les super-clés, les clés candidates et les attributs primaires.

Cependant, cette règle de base aide:

Une table 3FN qui ne dispose pas de plusieurs clés candidats qui se chevauchent est garanti d'être en BCNF.

En d'autres termes, si les clés candidates dans une relation 3FN sont

  • tout atomique, ou
  • non-atomique, mais sans chevauchement,

il est garanti que la relation est en BCNF.

La relation la plus simple qui viole BCNF mais répond 3FN a les dépendances fonctionnelles suivantes:

A,B -> C C -> B

Dans ce cas, les clés candidats sont (A,B) et (A,C).
Il rencontre 3NF parce

  • la droite côté de toutes les dépendances fonctionnelles est un attribut principal .

Il viole BCNF parce

  • C -> B, mais la main gauche n'est pas un superkey.
2

BCNF:

X-> Y où Y peut être premier ou non-prime
Ici, X doit être un super-clé

3NF:

X-> Y où Y est non-prime
puis,
X doit être un super-clé
autre
X n'a pas besoin d'êtresuper clé

Espérons, cela aide

+2

Ceux-ci ne sont pas clairs ou corrects. Regardez quelques définitions de manuels, ou même wikipedia. – philipxy

+0

Les définitions sont vagues. Par exemple, pour BCNF, vous pouvez simplement indiquer que X doit être une super-clé. La définition de 3NF est correcte, mais c'est la manière la plus compliquée de la décrire! – AHA