webentwicklung-frage-antwort-db.com.de

kandidatenschlüssel aus funktionalen Abhängigkeiten

Gegeben sei die Relation R mit den Attributen ABCDE. Ihnen werden folgende Abhängigkeiten gegeben: A -> B, BC -> E und ED -> A. Ich habe bereits die Antwort CDE, ACD und BCD. Ich muss nur wissen, wie es geht. Vielen Dank. 

27
ranzy

Ein Kandidatenschlüssel ist ein minimaler Superkey. Mit anderen Worten, der Schlüssel enthält keine überflüssigen Attribute. Der erste Schritt zum Finden eines Kandidatenschlüssels besteht darin, alle Superschlüssel zu finden. Für diejenigen, die nicht vertraut sind, ist ein Superschlüssel eine Menge von Attributen, deren Abschluss die Menge aller Attribute ist. Mit anderen Worten, ein Superschlüssel besteht aus einer Reihe von Attributen, von denen Sie ausgehen können. Wenn Sie die funktionalen Abhängigkeiten verwenden, werden Sie zu einer Menge geführt, die alle Attribute enthält.

Da wir die funktionalen Abhängigkeiten haben: A -> B, BC -> E und ED -> A, haben wir die folgenden Superschlüssel:

  • ABCDE (Alle Attribute sind immer ein Superschlüssel)
  • BCED (Wir können Attribut A durch ED -> A erhalten)
  • ACDE (fügen Sie einfach B durch A -> B hinzu)
  • ABCD (fügen Sie einfach E durch BC -> E hinzu)
  • ACD (Wir können B durch A -> B bekommen und dann E durch BC -> E)
  • BCD (Wir können E durch BC -> E und dann A von ED -> A erhalten)
  • CDE (Wir können A durch ED -> A und dann B von A -> B erhalten)

(Ein Trick hier ist, zu erkennen, dass C und D niemals auf der rechten Seite einer funktionalen Abhängigkeit erscheinen, jeder Schlüssel muss sowohl C als auch D enthalten.)

Nun, da wir alle unsere Superschlüssel haben, können wir sehen, dass nur die letzten drei Kandidatenschlüssel sind. Da können die ersten vier alle abgeschnitten werden. Aber wir können den letzten drei Superschlüsseln keine Attribute wegnehmen und haben sie trotzdem als Superschlüssel.

Daher sind die Kandidatenschlüssel: ACD, BCD und CDE.

Hoffentlich hilft das,

65
lbrendanl

Um den Kandidatenschlüssel zu finden, müssen Sie die FDs in Attribute in Left, Middle, Right teilen. __- Die Linke enthält Attribute, die nur auf der linken Seite (CD) angezeigt werden - Die Mitte enthält Attribute, die angezeigt werden sowohl links als auch rechts (ABE) - Das Recht enthält Attribute, die nur auf der rechten Seite angezeigt werden (keine).

Finden Sie nun die Schließung der Attribute von links: * CD + -> CD Da wir nicht alle Attribute der Relation erhalten, müssen wir die mittleren Attribute (ABE) einzeln hinzufügen und versuchen, sie zu finden der Verschluss wieder.

Also: * CDA + -> CDABE (CDA ist ein Kandidatenschlüssel) * CDB + -> CDBEA (CDB ist ein Kandidatenschlüssel) * CDE + -> CDEAB (CDE ist ein Kandidatenschlüssel)

9
Agustin

Verwenden Sie einen Algorithmus.

1. Nehmen Sie ein beliebiges Attribut oder eine Gruppe von Attributen

zB: ACD

2. Nehmen Sie die zuerst erwähnte funktionale Abhängigkeit

zB: A -> B

3.Ist die L.H.S der Abhängigkeit eine Teilmenge der Attribute, die Sie in Schritt 1 ausgewählt haben?

Wenn ja, fügen Sie die R.H.S der Funktionsabhängigkeit zum Attribut ..__ hinzu. Falls nein, ignorieren Sie diese Funktionsabhängigkeit.

zB: A ist eine Untermenge von ACD. Also füge B zu ACD hinzu. ACD ist jetzt ABCD

4.Setzen Sie jetzt die nächste funktionale Abhängigkeit ein. Wiederholen Sie Schritt 3.

zB: BC -> E BC ist eine Untermenge von ABCD. Also ist ABCD jetzt ABCDE

5.Wenn Sie jetzt alle Attribute haben, können Sie aufhören. 

Wenn Sie nicht über alle Attribute verfügen, fahren Sie mit der nächsten Funktionsabhängigkeit fort und wiederholen Sie Schritt 3. Wenn Sie die letzte Funktionsabhängigkeit erreicht haben und nicht alle Attribute haben, kehren Sie zur ersten Funktionsabhängigkeit zurück und wiederholen Sie die Schritte 3 und 4 Fahren Sie in dieser Schleife weiter, bis sich die Gruppe der Attribute nicht ändert, unabhängig von der funktionalen Abhängigkeit, mit der Sie Schritt 3 wiederholen.

zB: Da ich ABCDE für das Attribut ACD gesetzt habe, kann ich aufhören.

Wenn Sie alle Attribute haben, haben Sie eine Superkey. B. ACD ist eine Superkey, da ich ABCDE habe.

0
rubixphys12