Kandidatenschlüssel ermitteln Rechenweg/Anleitung

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Kandidatenschlüssel ermitteln Rechenweg/Anleitung
Servus Leute,

bei der Suche nach Übungsaufgaben zur Normalisierung bin ich über diese hier gestolpert:
(a) R(A, B, C, D, E, F) und F{A → BC, DE → F, F → E}

Aufgabe: Kandidatenschlüssel und NF ermitteln.

Jetzt ists mir etwas unklar, wie ich auf ADE und ADF komme.
Bisher bin ich immer so vorgegangen, dass ich mit Hilfe der Armstrong Axiome die funktionalen Abhängigkeiten überprüft habe.
Anschließend hab ich die eventuell neu entstehenden Abhängigkeiten aus der Superschlüsselmenge gestrichen und bin dann auf die möglichen Kandidatenschlüssel gekommen.

Allerdings scheint an meinem Vorgehen was falsch zu sein oder ich wende es nicht richtig an. Daher wäre es echt klasse, wenn mir jemand von euch mal kurz ein Kochrezept bzw. den “Rechenweg” nennen könnte, wie ich auf die Kandidatenschlüssel komme.

Vielen Dank! :slight_smile:


Für Kandidatenschlüssel reicht es, wenn man die Definition + Try and Error verwendet. (Das sollte bei den meisten Aufgaben auch verhältnismäßig schnell gehen)
Bei der Aufgabe sind mir R, F und → aber nicht klar.


Nimmt man nicht immer alle funktionalen Abhängigkeiten, versucht so weit wie möglich für jede fkt. Abhängigkeit noch was zu ergänzen (im Grunde nach den Axiomen Verstärkung, Reflexivität, Transitivität), und dann alles, was auf der rechten Seite steht, von dem größtmöglichen Superschlüssel - alle Attribute zusammen (hier ABCDEF) - zu streichen?

A → BC ABCDEF
DE → F ABCDEF
F → E ABCDEF

=> ADEF, ABCDE, ABCDF

Wie kommst du auf ADE und ADF? Hast du das aus den Vorlesungsfolien entommen?


@Marcel

Genau so hätte ich das auch gemacht. Deswegen hat mich die Lösung auch verwundert.
Ich habe die Aufgabe(n) im Internet bei der Uni Mannheim gefunden (Quelle: http://pi3.informatik.uni-mannheim.de/downloads/hauptstudium/dbs1/ss04/loes9.pdf) → Gleich Aufgabe 1a)


Hiess das früher nicht mal Schlüsselkandidat?

Wie auch immer:
Es geht ja darum, die Attributkombinationen zu finden, von denen alle anderen Attribute abhängig sind. Um darüber hinaus als Schlüsselkandidat zu gelten, darf auf der linken Seite kein Attribut weggelassen werden können, ohne das die Superschlüsseleigenschaft verloren geht.

Drei FAs sind gegeben:

  1. A → (A)BC
  2. DE → (DE)F
  3. F ->E(F)

Zunächst mal kein Schlüsselkandidat dabei. Die trivialen Abhängigkeiten habe ich mal in Klammern gesetzt. Normalerweise lässt man die weg, aber man erkennt so m.M.n. leichter Schlüsselkandidaten.

Die FAs kann man kombinieren:

  1. und 2. ADE → (A)BC(DE)F
  2. und 3. AF → (A)BCE(F)
  3. und 3. DEF → (D)EF

Die erste Kombination ist ein Superschlüssel. Rechts stehen alle Attribute, und auf der linken Seite kannst du nichts weglassen, ohne dass du rechts auch was wegnehmen musst.
Bei der zweiten Kombi fehlt das D. Also einfach links dazu (Verstärkung) und schauen, ob es ein Superschlüssel ist:

ADF → (A)BC(D)E(F)

Keins der Attribute kann weggelassen werden → Superschlüssel.

Bei der dritten Kombi fehlen A, B und C. Durch Verstärkung bekommen wir:
ABCDEF → (ABCD)EF

B und C kann man aber weglassen, da sie aus a folgen (1. FA). Also:
ADEF → (A)BC(D)EF

Immer noch ein Superschlüssel, aber kein Schlüsselkandidat, da DE → F. Das F kann also weggelassen, werden, was uns zu einem bereits bekannten Schlüsselkandidaten führt:
ADE → (A)BC(DE)F

tl;dr.
FAs kombinieren, Verstärken oder ggf. reduzieren führt meist zum Erfolg.


Anscheinend funktioniert das auf den Vorlesungsfolien enthaltene Schema wohl nicht immer.

Mit folgendem Weg bin ich jetzt auch auf ADE und ADF gekommen.

  1. Für jede FA nehme ein Element aus der Potenzmenge der restlichen FAs und verschmelze sie mit der aktuellen (-> Verstärkungsaxiom):
    (D.h. nehme 1. allein und 1. und verschmelze mit 2. und 1. mit 3. und 1. mit 2. und 3.)

A → BC A → BC
A → BC ADE → BCF
A → BC AF → BCE
A → BC ADEF → BC(EF)

DE → F DE → F
(2. mit 1. FA kombinieren haben wir oben schon!)
DE → F(E) DE → F (hier (E) geklammert, da DE immer E bestimmt (Reflexivität))

F → E F ->E
(3. mit 1. kombinieren haben wir oben schon!)
(3. mit 2. kombinieren haben wir oben schon!)
(3. mit 1. & 2. kombinieren haben wir oben schon!)

  1. Bestimme die resultierenden Superschlüssel.

  2. Wähle nur die minimalen aus.

Keine Ahnung, ob das immer so funktioniert oder gar viel zu aufwendig ist :wink: