Partielle funktionale Abhängigkeit
Partielle funktionale Abhängigkeit
Hallo,
ich hab eine Frage zur partiellen Abhängigkeit:
R ist Relation mit R= ABCD, Primärschlüssel = AB und F = {BC -> D, A -> C}
Sind C und D beide partiell vom Primärschlüssel abhängig, oder nur C? D.h. muss die linke Seite eine echte Teilmenge des Primärschlüssels sein, damit es partiell abhängig ist oder reicht es bereits, wenn nur eine Teilmenge seiner Attribute darin vorkommt (u.U. zusammen mit anderen Nichtschlüsselattributen, so wie bei BC -> D)?
ich hab eine Frage zur partiellen Abhängigkeit:
R ist Relation mit R= ABCD, Primärschlüssel = AB und F = {BC -> D, A -> C}
Sind C und D beide partiell vom Primärschlüssel abhängig, oder nur C? D.h. muss die linke Seite eine echte Teilmenge des Primärschlüssels sein, damit es partiell abhängig ist oder reicht es bereits, wenn nur eine Teilmenge seiner Attribute darin vorkommt (u.U. zusammen mit anderen Nichtschlüsselattributen, so wie bei BC -> D)?
Es reicht nicht, dass nur eine Teilmenge der Attribute des PK auf der linken Seite vorkommen.
Uebrigens reicht es nichtmal nur den PK zu betrachten, nicht-schluessel-attribute muessen von allen Schluesselkandidaten voll FD sein:
http://www.cs.jcu.edu.au/Subjects/cp150 ... n/2nf.html
[...]The concept of 2NF requires that all attributes that are not part of a candidate key be fully dependent on each candidate key.[...]
Uebrigens reicht es nichtmal nur den PK zu betrachten, nicht-schluessel-attribute muessen von allen Schluesselkandidaten voll FD sein:
http://www.cs.jcu.edu.au/Subjects/cp150 ... n/2nf.html
[...]The concept of 2NF requires that all attributes that are not part of a candidate key be fully dependent on each candidate key.[...]
Hmmm, da jetzt noch keine klare Antwort gekommen ist, bin ich noch etwas im Unklaren bezüglich dieser Aufgabe.
Die zweite NF ist ja verletzt, ich frag mich nur, aus welchem Grund genau.
Erst einmal ein anderes Beispiel, bei dem die zweite Normalform (meiner Ansicht nach) nicht verletzt wird:
Relation R = ABC, Primärschlüssel A, FDs A->B und B->C
Hier wird ja die zweite NF nicht verletzt, da B vollständig vom Schlüssel abhängt und C auch, da es ja vollständig von B abhängt.
Zu diesem Schluss kam ich zumindest aus einer der Beispiellösungen der Übungen. (In Lösung 3.1.4. liegt 2NF vor, obwohl ja B vom Nicht-Schlüssel C abhängt, C aber wiederum vom Schlüssel A abhängt)
Sollte das so nicht stimmen, korrigiert mich bitte.
So, aber zurück zu dem gegebenen Beispiel:
R ist Relation mit R= ABCD, Primärschlüssel = AB und F = {BC -> D, A -> C}
Nun verletzt ja die FD A->C auf jeden Fall die zweite NF, da C nur von einem Teil des Schlüssels abhängig ist.
Aber was ist mit BC->D ? C ist ja vollständig von A abhängig, also ist D letztlich vollständig von AB abhängig. Wäre diese FD also keine Verletzung der zweiten NF?
Ich bitte um Aufklärung.
Danke.
Die zweite NF ist ja verletzt, ich frag mich nur, aus welchem Grund genau.
Erst einmal ein anderes Beispiel, bei dem die zweite Normalform (meiner Ansicht nach) nicht verletzt wird:
Relation R = ABC, Primärschlüssel A, FDs A->B und B->C
Hier wird ja die zweite NF nicht verletzt, da B vollständig vom Schlüssel abhängt und C auch, da es ja vollständig von B abhängt.
Zu diesem Schluss kam ich zumindest aus einer der Beispiellösungen der Übungen. (In Lösung 3.1.4. liegt 2NF vor, obwohl ja B vom Nicht-Schlüssel C abhängt, C aber wiederum vom Schlüssel A abhängt)
Sollte das so nicht stimmen, korrigiert mich bitte.
So, aber zurück zu dem gegebenen Beispiel:
R ist Relation mit R= ABCD, Primärschlüssel = AB und F = {BC -> D, A -> C}
Nun verletzt ja die FD A->C auf jeden Fall die zweite NF, da C nur von einem Teil des Schlüssels abhängig ist.
Aber was ist mit BC->D ? C ist ja vollständig von A abhängig, also ist D letztlich vollständig von AB abhängig. Wäre diese FD also keine Verletzung der zweiten NF?
Ich bitte um Aufklärung.
Danke.
Ich denke, in diesem Fall verletzt BC->D nicht die 2NF, allerdings hat A->C ja schon verletzt.
Ein besseres Beispiel waere:
R = ABCD, SK = {{A,B}}, F = {BC->D, AB->C}
Da bleibt immer noch das eigentliche Problem mit der Transitivitaet aber ohne das Nebenproblem, dass schon eine andere involvierte FD die 2NF verletzt.
Ein besseres Beispiel waere:
R = ABCD, SK = {{A,B}}, F = {BC->D, AB->C}
Da bleibt immer noch das eigentliche Problem mit der Transitivitaet aber ohne das Nebenproblem, dass schon eine andere involvierte FD die 2NF verletzt.
Ich habe mich heute mit dem Patric Kabus getroffen. Zu dem Beispiel von plasma:
Hier gibt es keine partielle Abhängikeit, da D nicht NUR von B abhängt, sondern auch von einem nicht-Primattribut!
Zudem prüfen wir bei 2.NF nur die Angängigkeiten an sich, und nicht irgendwelche transitiven Verbindungen. D.h. man kann NICHT sagen, da C von AB aghängt, hängt D von AB ab und verletzt somit nicht die 2. NF! Wobei das, wie oben schon beschrieben, hier gar nicht zu tragen kommt.
Hier gibt es keine partielle Abhängikeit, da D nicht NUR von B abhängt, sondern auch von einem nicht-Primattribut!
Zudem prüfen wir bei 2.NF nur die Angängigkeiten an sich, und nicht irgendwelche transitiven Verbindungen. D.h. man kann NICHT sagen, da C von AB aghängt, hängt D von AB ab und verletzt somit nicht die 2. NF! Wobei das, wie oben schon beschrieben, hier gar nicht zu tragen kommt.
Es kann doch nicht sein, dass hier keine partielle Abhängigkeit vorliegt, da auf der linken Seite neben dem Schlüsselattribut noch ein Nicht-Schlüsselattribut steht.
[edit: Begründung falsch, siehe Post von plasma weiter unten]
Man könnte doch sonst in einer Relation mit Primärschlüssel {AB} und der FD A->D, die nicht in 2NF ist, durch hinzufügen von weiteren (Nicht-Primär-) Attributen auf der linken Seite zu einer FD machen, die zur 2NF passt. (Also z.B. AC->D, was ja durch Augmentation zulässig ist)
[edit: Begründung falsch, siehe Post von plasma weiter unten]
Man könnte doch sonst in einer Relation mit Primärschlüssel {AB} und der FD A->D, die nicht in 2NF ist, durch hinzufügen von weiteren (Nicht-Primär-) Attributen auf der linken Seite zu einer FD machen, die zur 2NF passt. (Also z.B. AC->D, was ja durch Augmentation zulässig ist)
Zuletzt geändert von BastiS am 8. Sep 2007 11:46, insgesamt 1-mal geändert.
- SM
- Endlosschleifenbastler
- Beiträge: 167
- Registriert: 10. Okt 2005 18:11
- Wohnort: Darmstadt
- Kontaktdaten:
Diese Aussage ist falsch. Die 2NF sagt nichts über zusätzliche Nicht-Schlüssel-Attribute aus, sondern nur über die partielle Abhängigkeit. Und partielle Abhängigkeit in einer FD ist nur gegeben, wenn ein Nicht-Schlüssel-Attribut nur von einer echten Teilmenge eines Schlüsselkandidaten abhängt (und beliebigen zusätzlichen Nicht-Schlüsselattributen).Panulli hat geschrieben: Hier gibt es keine partielle Abhängikeit, da D nicht NUR von B abhängt, sondern auch von einem nicht-Primattribut!
Daher sind Relationen mit nicht-zusammengesetzten Schlüsselkandidaten auch immer automatisch in 2NF (wenn sie auch in 1NF sind natürlich).
Und ich glaube, hier irrst Du dich auch. Was Du beschreibst, ist die 3NF. Diese verbietet transitive Abhängigkeiten von Schlüsselkandidaten.Zudem prüfen wir bei 2.NF nur die Angängigkeiten an sich, und nicht irgendwelche transitiven Verbindungen. D.h. man kann NICHT sagen, da C von AB aghängt, hängt D von AB ab und verletzt somit nicht die 2. NF! Wobei das, wie oben schon beschrieben, hier gar nicht zu tragen kommt.
~ Per aspera ad astra. ~
Vielleicht nicht explizit, moeglicherweise aber implizit?SM hat geschrieben:Diese Aussage ist falsch. Die 2NF sagt nichts über zusätzliche Nicht-Schlüssel-Attribute aus, sondern nur über die partielle Abhängigkeit.Panulli hat geschrieben: Hier gibt es keine partielle Abhängikeit, da D nicht NUR von B abhängt, sondern auch von einem nicht-Primattribut!
Wir brauchen BC->D *vielleicht* nicht betrachten, da wir ohnehin noch AB->C pruefen werden.
Wenn C auf rechter Seite vorkommt, schauen wir, ob es partiell von einem SK abhaengt. Wenn ja, ist eine Verletzung gefunden. Wenn nicht, ist BC->D auch keine Verletzung. Und wenn C auf keiner rechten Seite vorkommt, hm..., ich schaetze dann haetten wir auch andere Schluesselkandidaten(?).
Er schreibt, dass wir "transitive Verbindungen" _nicht_ pruefen.SM hat geschrieben:Und ich glaube, hier irrst Du dich auch. Was Du beschreibst, ist die 3NF. Diese verbietet transitive Abhängigkeiten von Schlüsselkandidaten.
Du fuegst doch nicht Attribute auf der linken Seite hinzu, sondern -wenn ueberhaupt- eine weitere abgeleitete FD. Sprich: Du haettest dann Zwei FDs, die alte und die neue, und die alte waere immer noch eine Verletzung.BastiS hat geschrieben:Man könnte doch sonst in einer Relation mit Primärschlüssel {AB} und der FD A->D, die nicht in 2NF ist, durch hinzufügen von weiteren (Nicht-Primär-) Attributen auf der linken Seite zu einer FD machen, die zur 2NF passt. (Also z.B. AC->D, was ja durch Augmentation zulässig ist)
Die Armstrong Axiome sind nur Implikationen und keine Aequivalenzen.
@plasma: Ok, da geb ich dir Recht, das war eine schlechte bzw falsche Argumentation.
Aber trotzdem bleibe ich bei meiner Aussage, dass es nicht stimmt, dass keine partielle Abhängigkeit exisitiert, wenn auf der linken Seite neben der der echten Teilmenge eines Schlüsselkandidaten noch ein Nicht-Schlüssel-Attribut X steht.
Dies gilt eben nur in dem Fall, den plasma erläutert hat - wenn also X vollständig vom Schlüssel abhängig ist.
Aber trotzdem bleibe ich bei meiner Aussage, dass es nicht stimmt, dass keine partielle Abhängigkeit exisitiert, wenn auf der linken Seite neben der der echten Teilmenge eines Schlüsselkandidaten noch ein Nicht-Schlüssel-Attribut X steht.
Dies gilt eben nur in dem Fall, den plasma erläutert hat - wenn also X vollständig vom Schlüssel abhängig ist.
Auwei, ich glaube ich hab das jetzt endlich verstanden.
Laut Elmasri ist eine Abhängigkeit X-> Y voll funktional, wenn die Entfernung eines Attributs A aus X bedeutet, dass die entstehende Abhängigkeit nicht gilt. Gilt die entstehende Abhängigkeit hingegen, dann war die ursprüngliche Abhängigkeit eine partielle Abhängigkeit.
1. Beispiel:
Relation = ABCD
PK = AB
FD = {AB->CD, B->D}
Entfernt man A aus AB->CD, erhält man B->CD und somit B->D. Das gilt ohnehin, also war AB->CD eine partielle Abhängigkeit vom Primärschlüssel.
2. Beispiel:
Relation = ABCD
PK = AB
FD = {AB->CD, BC->D}
Hier ist also noch das Nichtschlüsselattribut C in der zweiten FD hinzugekommen. Jetzt gilt: entfernt man A oder B aus AB->CD entsteht A->CD bzw. B->CD und daraus wiederum A->D und B->D. Beide gelten jedoch nicht! Also ist AB->CD eine voll funktionale Abhängigkeit vom Primärschlüssel und Beispiel 2 somit in 2NF. Würde man z.B. noch A->D in die Menge FD mit aufnehmen, wäre es (offensichtlich) wieder nicht in 2NF. Es genügt also tatsächlich zu prüfen, ob ein Nichtschlüsselattribut nur (und nur!) von einer echten Teilmenge des PK funktional abhängt um festzustellen, ob das Relationsschema in 2NF ist.
Hoffe das stimmt so jetzt.
Laut Elmasri ist eine Abhängigkeit X-> Y voll funktional, wenn die Entfernung eines Attributs A aus X bedeutet, dass die entstehende Abhängigkeit nicht gilt. Gilt die entstehende Abhängigkeit hingegen, dann war die ursprüngliche Abhängigkeit eine partielle Abhängigkeit.
1. Beispiel:
Relation = ABCD
PK = AB
FD = {AB->CD, B->D}
Entfernt man A aus AB->CD, erhält man B->CD und somit B->D. Das gilt ohnehin, also war AB->CD eine partielle Abhängigkeit vom Primärschlüssel.
2. Beispiel:
Relation = ABCD
PK = AB
FD = {AB->CD, BC->D}
Hier ist also noch das Nichtschlüsselattribut C in der zweiten FD hinzugekommen. Jetzt gilt: entfernt man A oder B aus AB->CD entsteht A->CD bzw. B->CD und daraus wiederum A->D und B->D. Beide gelten jedoch nicht! Also ist AB->CD eine voll funktionale Abhängigkeit vom Primärschlüssel und Beispiel 2 somit in 2NF. Würde man z.B. noch A->D in die Menge FD mit aufnehmen, wäre es (offensichtlich) wieder nicht in 2NF. Es genügt also tatsächlich zu prüfen, ob ein Nichtschlüsselattribut nur (und nur!) von einer echten Teilmenge des PK funktional abhängt um festzustellen, ob das Relationsschema in 2NF ist.
Hoffe das stimmt so jetzt.
Zuletzt geändert von Randy am 8. Sep 2007 22:15, insgesamt 1-mal geändert.
Da ist ein Tippfehler, Nichtschluesselattribut C ist dazugekommen.Randy hat geschrieben:2. Beispiel:
Relation = ABCD
PK = AB
FD = {AB->CD, BC->D}
Hier ist also noch das Nichtschlüsselattribut B in der zweiten FD hinzugekommen.
Zuletzt geändert von plasma am 8. Sep 2007 22:18, insgesamt 2-mal geändert.
Sorry, sollte natürlich C heissen.plasma hat geschrieben:Hab's mir noch nicht komplett angeschaut, aber ein Fehler ist drin:Randy hat geschrieben:2. Beispiel:
Hier ist also noch das Nichtschlüsselattribut B in der zweiten FD hinzugekommen.
B ist ein Schluesselattribut, da es in einem Schluesselkandidaten vorkommt.