Tutorium5 Aufgabe 5.3 Musterlösung

nvalenti
Neuling
Neuling
Beiträge: 10
Registriert: 30. Aug 2015 18:06

Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von nvalenti »

Weiß jemand, wieso die 3 NF in R3 verletzt ist?

Viele Grüße,
Nathan

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

Hi Nathan,

ohne Garantie auf Korrektheit :) :

Egal welchen der Schlüsselkandidaten Du nimmst, es gibt immer transitive Abhängigkeiten.

{B, F} als PK: H ist transitiv abhängig (BF -> (E)G und G -> H)
{G} als PK: BEF sind transitiv abhängig (G -> H und H -> BF und BF -> E)
{H} als PK: EG sind transitiv abhängig (H -> BF und BF -> EG)

Somit erfüllt keiner der drei Schlüsselkandidaten die 3. NF, somit auch R3 nicht. Beachte bitte auch den anderen Thread hier, wonach die theoretische Definition von Normalformen verwendet wird, d.h. die Bedingungen für eine NF müssen auf alle Schlüsselkandidaten zutreffen.

Beste Grüße
Daniel

nvalenti
Neuling
Neuling
Beiträge: 10
Registriert: 30. Aug 2015 18:06

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von nvalenti »

Hallo Daniel,

danke für deine Antwort. Das Problem an der Stelle ist, das keine Abhängigkeiten zwischen zwei nicht Schlüsselattributen auftauchen, was nach meinem Verständnis für die Verletzung der 3 NF gefordert wäre. Dies ist auch relativ schwierig bei einem Nicht-Schlüsselattribut.

Nach deiner Logik wäre sonst keine Relation mit mehreren Schlüsselkandidaten in 3 NF, da es dann immer transitive Abhängigkeiten zum jeweiligen Primärschlüssel gibt.

Ich würde die Musterlösung ja einfach als falsch abtun, da die Definition nach der "reinen Theorie" ja gerade nicht verwendet wird (bei keiner Aufgabe). Mich stört, dass das vollständige Syntheseverfahren angeblich auch H abspaltet, deswegen ist da wohl doch irgendetwas verletzt.

Weitere Ideen?

Gruß,
Nathan

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

nvalenti hat geschrieben:Das Problem an der Stelle ist, das keine Abhängigkeiten zwischen zwei nicht Schlüsselattributen auftauchen, was nach meinem Verständnis für die Verletzung der 3 NF gefordert wäre.
Das ist zwar nicht konkret gefordert, aber für eine Verletzung notwendig. Siehe unten.
nvalenti hat geschrieben:Nach deiner Logik wäre sonst keine Relation mit mehreren Schlüsselkandidaten in 3 NF, da es dann immer transitive Abhängigkeiten zum jeweiligen Primärschlüssel gibt.
Es ist dann tatsächlich sehr selten, aber das ist doch gerade der Punkt hinter der dritten NF. Am Ende hast Du ja immer einen Primärschlüssel, auf den kommt es letztendlich an. Als Gegenbeispiel schau aber mal im Script das Beispiel für die BCNF an (Seite 135). Hier gibt es eine Relation mit zwei Schlüsselkandidaten, die dennoch in der 3. NF ist.

Ich denke das Problem ist hier, dass Du es auf alle Schlüsselkandidaten gleichzeitig anwenden willst. Das ist aber nicht gefordert. Du nimmst einen Schlüsselkandidat, beispielsweise {B, F} als Primärschlüssel. Für diese Betrachtung sind G und H Nichtschlüsselattribute, und es ergeben sich transitive Abhängigkeiten. Im anderen Thread wurde dann diskutiert, ob es genügt, wenn ein Schlüsselkandidat den Bedingungen für die 3. NF erfüllt, oder ob dies alle Schlüsselkandidaten (jeweils für sich betrachtet) müssen.
nvalenti hat geschrieben:Ich würde die Musterlösung ja einfach als falsch abtun, da die Definition nach der "reinen Theorie" ja gerade nicht verwendet wird (bei keiner Aufgabe). Mich stört, dass das vollständige Syntheseverfahren angeblich auch H abspaltet, deswegen ist da wohl doch irgendetwas verletzt.
An dieser Stelle ist die Lösung glaube ich korrekt. Aber ja, die reine Theorie (alle drei SKs müssen die NF erfüllen) wird nicht angewandt, so wie es auch in der Vorlesung ist. H wird noch abgespalten, weil eben die 3. NF verletzt ist. Der Fall tritt auch in irgendeiner anderen Übung auf, hab aber vergessen welche. Das vereinfachte Synteseverfahren scheint wohl dort ein paar Fälle zu haben, in denen am Ende die 3. NF nicht eingehalten wird. Das wird dann eben "manuell" nachgeholt, was beim vollständigen Syntheseverfahren offensichtlich nicht notwendig wäre. Der letzte Teil ist aber nur geraten, da ich das vollständige Verfahren nicht kenne... Bitte korrigieren und hauen :)

VG
Daniel

nvalenti
Neuling
Neuling
Beiträge: 10
Registriert: 30. Aug 2015 18:06

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von nvalenti »

Du nimmst einen Schlüsselkandidat, beispielsweise {B, F} als Primärschlüssel. Für diese Betrachtung sind G und H Nichtschlüsselattribute, und es ergeben sich transitive Abhängigkeiten. Im anderen Thread wurde dann diskutiert, ob es genügt, wenn ein Schlüsselkandidat den Bedingungen für die 3. NF erfüllt, oder ob dies alle Schlüsselkandidaten (jeweils für sich betrachtet) müssen.
Danke, das erklärt die Musterlösung :)

Ich bin vor allem wegen folgendem verwirrt: Im Englischen wikipedia ist ein Nichtschlüsselattribut ein Attribut, welches nicht Teil eines Schlüsselkandidaten ist (https://en.wikipedia.org/wiki/Second_normal_form). Deine Argumentation erfordert die Definition, dass es ein Attribut ist, welches nicht Teil des Primärschlüssels ist. Das deutsche Wikipedia ist da nicht ganz eindeutig:
Jedes nicht-primäre Attribut (nicht Teil eines Schlüssels) ist jeweils von allen ganzen Schlüsseln abhängig,
(s. https://de.wikipedia.org/wiki/Normalisi ... _.282NF.29). Leider ist "Teil eines Schlüssels" nicht sehr sauber.

Was gillt denn jetzt prinzipiell?

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

nvalenti hat geschrieben:Ich bin vor allem wegen folgendem verwirrt: Im Englischen wikipedia ist ein Nichtschlüsselattribut ein Attribut, welches nicht Teil eines Schlüsselkandidaten ist (https://en.wikipedia.org/wiki/Second_normal_form). Deine Argumentation erfordert die Definition, dass es ein Attribut ist, welches nicht Teil des Primärschlüssels ist. Das deutsche Wikipedia ist da nicht ganz eindeutig:
Jedes nicht-primäre Attribut (nicht Teil eines Schlüssels) ist jeweils von allen ganzen Schlüsseln abhängig,
(s. https://de.wikipedia.org/wiki/Normalisi ... _.282NF.29). Leider ist "Teil eines Schlüssels" nicht sehr sauber.
Hm, interessante Frage. Das englischsprachige Wikipedia ist da allerdings in der Tat eindeutig und das widerspricht meinem Verständnis. Ich halte dann mal ein Zitat aus "Grundlagen von Datenbanksystemen" von R.A. Elmasri und S.B. Navathe, Edison-Wesley Verlag (ISBN: 9783868940121) entgegen. Ich habe im PDF (http://www.cse.hcmut.edu.vn/~ttqnguyet/CSDL/EbookDB.pdf) auch gleich die Englische Variante mit rausgesucht.
Ein Relationsschema R ist in 2NF, wenn jedes Nicht-Prime-Attribut A in R funktional voll vom Primärschlüssel in R abhängig ist.
(Seite 323)
A relation schema R is in 2NF if every nonprime attribute A in R is fully functionally dependent on the primary key of R.
(Seite 552)

Für die 3. NF:
Ein Relationsschema R [ist] in der 3NF, wenn es die 2NF erfüllt und kein Nicht-Prime-Attribut von R transitiv vom Primärschlüssel abhängt.
(Seite 324)
According to Codd’s original definition, a relation schema R is in 3NF if it satisfies 2NF and no nonprime attribute of R is transitively dependent on the primary key.
(Seite 553)

Hier ist von dem Primärschlüssel die Rede, was für mich auch deutlich mehr Sinn ergibt. Wäre es nicht so, würde für mich die 3NF nicht mehr allzu viel Sinn ergeben. Ich wollte mal im Originalartikel von Codd nachschauen, komme von hier zu Hause aber nicht ran (und vorausgesetzt ich habe überhaupt den richtigen in der ACM Lib gefunden...). Ich würde mittlerweile soweit gehen, dass der Wikipedia-Artikel ungenau formuliert ist... Aber vllt kann Robert ja was Definitives dazu sagen und Licht ins Dunkle bringen :)

//Edit: Noch ein Zitat, der Einfachheit halber mal nur aus der deutschen Fassung:
Ein Attribut eines Relationsschema R wird als Prime-Attribut von R bezeichnet, wenn es Mitglied eines Schlüsselkandidaten von R ist. Ein Attribut ist nicht prime, wenn es kein Prime-Attribut, d.h. kein Mitglied eines Schlüsselkandidaten ist.
(Seite 319).

Das passt auch zur Definition bei Wikipedia. Davon ausgegangen, ist in R3 in T5.3 nur E ein nicht-prime Element. Nehmen wir nun mal die formelle Defintion, dass DIe Bedingung für alle Schlüsselkandidaten gelten muss, haben wir:

- SK {B,F}: E ist nicht transitiv abhängig wegen BF->EG
- SK {G}: E ist transitiv abhängig wegen G->H, H->BF, BF->EG

Damit ist die formelle Definition laut Wikipedia nicht erfüllt, die dritte NF verletzt.

Das Script ist hier nicht ganz eindeutig, es wird vom "Schlüsselkandidaten" und von NIchtschlüsselattributen gesprochen. Zusammen mit den Übungen passt das eher zu dem, was ich verstanden habe, nämlich dass man sich jeden Schlüsselkandidaten einzeln anschaut (eben einen Primary Key) und alles andere sind Nichtschlüsselattribute. Auch damit haben wir transitive Abhängigkeiten.

Dem Buch nach zu Folge ist es ähnlich, nur E ist nicht-prime. Hier ist nur die Frage, was ist "der Primärschlüssel". Wenn man hier einen beliebigen Schlüsselkandidaten wählen kann, lässt sich beides konstruieren, sowohl gehaltene als auch eine verletzte 3NF.

Nun bin ich auch etwas verwirrt - was ist denn korrekt?

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

Hab da was im Archiv gefunden - siehe diesen Thread

Demnach ist es wohl so wie oben beschrieben:
Es gibt je nach Fachliteratur leicht unterschiedliche Definitionen der 3. Normalform (ob nur der Primärschlüsslel oder die Menge der SK betrachtet wird).

Wir verwenden in der Vorlesung die Definition bei der man die tatsächliche Wahl des Primärschlüssels betrachtet (so wie in den Übungen auch verkündet).
Allerdings gab es daraufhin weitere Fragen (siehe alten Thread). So ganz abschließend scheint das also noch immer nicht geklärt. Darauf gekommen bin ich übrigens über diesen Thread aus dem Archiv, wo effektiv die gleiche Frage wie hier gestellt wird...

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von Robert »

Was ist jetzt die eigentliche Frage?

Ob nur ein oder alle SK für die NF zählen? -> Alle, da das die Theorie ist.

Die Antwort welche NF vorliegt wenn es mehrere SK gibt kann man sich ca. so vorstellen:

Code: Alles auswählen

for-each Schlüsselkandidat aus der Menge-der-SK
        Nicht-Schlüssel := R \ SK
        prüfe ob 1NF erfüllt ist
        prüfe ob 2NF erfüllt ist
        prüfe ob 3NF erfüllt ist

wenn bei JEDEM die 3NF erfüllt ist, dann ist es 3NF
wenn bei JEDEM die 2NF erfüllt ist, dann ist es 2NF
wenn bei JEDEM die 1NF erfüllt ist, dann ist es 1NF
Wie schon in nem anderen Thread gesagt, wenn man das ganze mit PK statt SK betrachtet kann die Sache anders aussehen, da es dann ja keine menge an SK gibt sondern nur den einen PK. Aber wir nehmen die "theorie nahe" Definition hier. Im Tutorium wurde das für jeden SK aus der Menge der SK einzeln diskutiert um zu verdeutlichen wann es Verletzungen gibt und wann nicht.

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

Die Frage bezieht sich auf Folgendes. Nach deinem Pseudo-Code:
Robert hat geschrieben:

Code: Alles auswählen

for-each Schlüsselkandidat aus der Menge-der-SK
        Nicht-Schlüssel := R \ SK
        prüfe ob 1NF erfüllt ist
        prüfe ob 2NF erfüllt ist
        prüfe ob 3NF erfüllt ist

wenn bei JEDEM die 3NF erfüllt ist, dann ist es 3NF
wenn bei JEDEM die 2NF erfüllt ist, dann ist es 2NF
wenn bei JEDEM die 1NF erfüllt ist, dann ist es 1NF
Hier ist die Menge der Nichtschlüsselattribute abhängig vom aktuell ausgewähltem Schlüsselkandidaten. So wird es ja auch in der VL und Übung gemacht, macht meiner Ansicht nach auch Sinn (siehe oben). Aber nach Wikipedia und dem Lehrbuch oben gilt:
Every non-prime attribute of R is non-transitively dependent on every superkey of R.
[...]
A non-prime attribute of R is an attribute that does not belong to any candidate key of R
Hier ist natürlich die theorienahe Defintion angenommen, das ist ja auch kein Problem. Das Problem ist eher die Menge der Nichtschlüsselattribute. Non-prime wird definitiert als "not belong to ANY candidate key". Vergleichbar auch in dem oben angesprochenen Buch:
Ein Relationsschema R [ist] in der 3NF, wenn es die 2NF erfüllt und kein Nicht-Prime-Attribut von R transitiv vom Primärschlüssel abhängt.
[...]
Ein Attribut eines Relationsschema R wird als Prime-Attribut von R bezeichnet, wenn es Mitglied eines Schlüsselkandidaten von R ist. Ein Attribut ist nicht prime, wenn es kein Prime-Attribut, d.h. kein Mitglied eines Schlüsselkandidaten ist.
Hier wird die nicht so theorienahe Defintion der dritten NF verwendet, auch kein Problem. Aber auch hier ist nicht prime, wenn es kein Mitglied EINES Schlüsselkandidaten ist. Das wiederspricht dem, was in der Übung und der Vorlesung gemacht hat, und auch dem, was dein Pseudo-Code sagt. Macht für mich aber eigentlich keinen Sinn... sind etwa beide Quellen (und noch dazu das Buch in Originalsprache) ungenau definiert?

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von Robert »

Das Buch kenne ich. Es ist nunmal ein sehr praktisches Buch und daher eher schwach was die Theorie angeht. Die werfen (ihre eigenen Definitionen) ständig durcheinander.

Erst fangen die an von Keys, Superkeys und Candidate Keys zu sprechen, dann verwenden die Primary Key um die 2NF zu definieren. Dann im nächsten Abschnitt sagen sie "jaaa also bisher haben wir nur von primary keys gesprochen und die anderen candidate keys ignoriert ... jetzt machen wir es richtig und betrachten alle Candidate Keys" .. aber im vorherigen Abschnitt haben die candidate key benutzt um non-prime zu definieren.

Das deren Definition von non-prime nicht funktionieren kann, kann man sich leicht an folgendem Extrembeispiel verdeutlichen: F={A->B, B->A, X->Y, Y->X} .. die candidate keys sind offensichtlich SK={AX, BX, AY, BY} .. nach deren Definition gibt es keine non-prime keys mehr, demnach ist die 2NF erfüllt. Aber es ist egal welchen SK ich als PK wähle, eine einfüge/update Anomalie kriege ich hier locker hin.

Also wie gesagt, das Buch ist einfach stark praktisch orientiert und dadurch ziemlich unsauber in den Theorie Kapiteln. Das war es aber in der vorherigen Ausgabe auch schon (die habe ich hier auch noch rumliegen)

waza-ari
Windoof-User
Windoof-User
Beiträge: 32
Registriert: 3. Nov 2010 20:26

Re: Tutorium5 Aufgabe 5.3 Musterlösung

Beitrag von waza-ari »

Dass es wenig Sinn macht war schon klar, es hat nur einfach nicht übereingestimmt. Genauso wie die englische Wikipedia. Sei es wie es sei, wir wissen wie es in der VL, Übung und Klausur gehandhabt werden muss, die ursprüngliche Frage ist damit hoffentlich auch erledigt und alles ist gut.

Danke für die klärenden Antworten :)

Antworten

Zurück zu „Archiv“