7

Ich habe viele verschiedene Quellen gelesen, wie man Beziehungen unterscheidet, die in 3NF/BCNF sind. Und ich habe bisher das ist mein Verständnis ...Finden einer Beziehung in 3NF, aber nicht in BCNF

Ich werde diese Beziehung als Beispiel ...

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

und

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

Zuerst müssen wir die Schlüssel der Beziehung finden. I used this video to help me do that. Und ich habe

Keys = {ACD, BCD, CDE}

nun sicher zu machen R in BCNF ist, dass wir sicherstellen müssen, dass die linke Seite jeder funktionalen Abhängigkeit in F ist einer der Keys. Wir wissen sofort, dass dies nicht der Fall ist, denn die erste FD ist A -> B und A ist nicht einer der Schlüssel. So ist es nicht in BCNF.

Jetzt, um sicherzustellen, R ist in 3NF, wir müssen dafür sorgen, dass die linke Seite jeder funktionalen Abhängigkeit in F ist einer der KeysOR die rechte Seite jeder funktionalen Abhängigkeit in F ist eine Teilmenge von einem der Keys. Wenn Sie auf die rechte Seite jeder FD schauen, sind dies B, E und A. Dies sind jeweils eine Teilmenge von Key, also bedeutet dies, dass es in 3NF ist.

So ist dies eine der seltenen Fälle (nach dem Wiki), in dem eine Beziehung in 3NF ist aber nicht in BCNF. Ist diese Methode korrekt? Ist es zuverlässig? Fehle ich etwas?

+1

Ja, Sie haben alles richtig gemacht. – laurids

+0

können Sie dies überprüfen: http://class2go.stanford.edu/db/Winter2013 – laurids

Antwort

1

Zuerst müssen Sie Supertasten, Kandidatenschlüssel und primäre Attribute lernen.

Doch diese Daumenregel hilft:

A 3NF Tabelle, die nicht mehrere überlappende Kandidatenschlüssel ist in BCNF sein garantiert hat.

Mit anderen Worten, wenn die Schlüsselkandidaten in einer 3NF Relation sind

  • alle atomaren oder
  • Nicht-Atom aber nicht überlappende,

es ist garantiert, dass die Beziehung in BCNF ist.

Die einfachste Beziehung, die BCNF verletzt sondern erfüllt 3NF die folgenden funktionalen Abhängigkeiten:

A,B -> C C -> B

In diesem Fall Kandidatenschlüssel sind (A,B) und (A,C).
Es trifft 3NF weil

  • die rechte-Seite aller funktionalen Abhängigkeiten ein primäre Attribut ist.

Es verletzt BCNF weil

  • C -> B, aber die linke Seite ist kein superkey.
2

BCNF:

X-> Y, wobei Y prime oder Non-Prime
hier sein kann, X muss sein, Superschlüssel

3NF:

X-> Y, wobei Y nicht-prime
ist dann,
X muss sein ein Superschlüssel
sonst
X braucht nicht zu sein Superschlüssel

Hoffe, das hilft

+2

Diese sind nicht klar oder richtig. Sehen Sie sich einige Lehrbuchdefinitionen oder sogar Wikipedia an. – philipxy

+0

Die Definitionen sind vage. Zum Beispiel könnten Sie für BCNF einfach angeben, dass X ein Superschlüssel sein muss. Die Definition von 3NF ist korrekt, aber das ist die komplizierteste Art, sie zu beschreiben! – AHA

Verwandte Themen