Datenbanken

Schlüssel, Normalform

 aufwärts

Schlüssel

Definition:  Eine Menge von Attributen einer Tabelle heißt Schlüssel­kandidat, wenn jede Zeile der Tabelle sich durch die Werte dieser Attribute eindeutig identifizieren lässt.

Stets ist die Menge aller Attribute der Tabelle ein Schlüssel­kandidat.

Beispiel:  In folgender Tabelle Konto ist die Attribut­menge {kontonr, bank, blz} ein Schlüssel­kandidat, da sich durch Angabe von Werten für diese Attribute jede Zeile eindeutig identifizieren lässt. So lässt sich etwa durch die Angabe der Werte (414141, Commerzbank Kiel, 210 400 10) die zweite Zeile der Tabelle identifizieren. Hier könnte man jetzt etwa den Kontoinhaber feststellen.

Kontoinhaberkontonrbankblz
Meyer602201Postbank Hamburg200 100 20
DRK414141Commerzbank Kiel210 400 10
Meyer190032Sparkasse Kiel210 501 70
Schmidt175060Sparkasse Kiel210 501 70

In diesem Beispiel ist die Attribut­menge {inhaber, kontonr} kein Schlüssel­kandidat. Zwar lässt sich in der aktuell vorliegenden Tabelle jede Zeile durch diese Attribute eindeutig identifizieren. Es ist jedoch nicht aus­geschlossen, dass das DRK unter der leicht zu merkenden Nummer 414141 auch noch ein Konto bei der Deutschen Bank einrichtet.

Die Eigenschaft "Schlüssel­kandidat" bezieht sich also nicht auf die aktuellen Einträge in der Tabelle, sondern auf sämtliche möglichen Einträge - unter Berücksichtigung der Gegeben­heiten der realen Welt.

In obigem Beispiel gehen wir etwa davon aus, dass zwei verschiedene Inhaber nicht dasselbe Konto haben können, sonst wäre die Attribut­menge {kontonr, bank, blz} kein Schlüssel­kandidat.

Definition:  Ein Schlüssel­kandidat S heißt Schlüssel, wenn keine echte Teilmenge von S Schlüssel­kandidat ist.

Schlüssel sind also minimale identifizierende Attribut­mengen. Eine Tabelle kann unter­schiedliche Schlüssel haben. Ein Schlüssel wird als Primär­schlüssel ausge­zeichnet; die anderen möglichen Schlüssel heißen alternative Schlüssel.

Beispiel:  In obiger Tabelle Konto ist die Attribut­menge {kontonr, blz} ein Schlüssel. Aber auch {kontonr, bank} wäre ein Schlüssel.

Wiederum bezieht sich die Eigenschaft "Schlüssel" nicht auf die aktuellen Einträge in der Tabelle, sondern auf sämtliche möglichen Einträge. Hier gehen wir davon aus, dass durch Angabe von kontonr und blz ein Konto eindeutig identifizierbar ist.

Ist {kontonr, blz} als Primär­schlüssel ausge­zeichnet, so sorgt das Datenbank­system dafür, dass keine neuen Zeilen eingetragen werden können, wenn die Primär­schlüsselattributwerte schon belegt sind. So würde das Datenbank­system etwa verhindern, dass die Zeile (Müller, 190032, Kieler Sparkasse, 210 501 70) aufgenommen wird.

Definition:  Wir nennen einen Schlüssel echt, wenn er nicht aus allen Attributen der Tabelle besteht.

Jede Tabelle hat einen Schlüssel, aber nicht unbedingt einen echten Schlüssel.

Beispiel:  Folgende Tabelle Person hat keinen echten Schlüssel, sondern es sind alle Attribute notwendig, um die Zeilen eindeutig zu identifizieren.

Personnachnamevornamegebdat
MeyerHeinz  12.03.1962
Schmidt  Heinz21.05.1948
MeyerHeinz21.05.1948
MeyerAnna12.03.1962

Beziehungen

Schlüssel, die aus mehreren Attributen bestehen, sind problematisch. So ist für die Darstellung der Beziehung Verwandt unten­stehende Tabelle erforderlich, in der die Schlüssel der beteiligten Personen als Fremd­schlüssel (Attribute, die in einer anderen Tabelle Schlüssel sind) auftreten. Ändert sich der Name einer Person, etwa durch Heirat, so ist eine ent­sprechende Änderung nicht nur in der Tabelle Person, sondern auch in der Tabelle Verwandt nötig.

Verwandtnachname1vorname1gebdat1nachname2vorname2gebdat2
MeyerHeinz12.03.1962MeyerAnna12.03.1962

Es ist daher sinnvoll, ein weiteres Attribut nummer als künstlichen Schlüssel einzuführen. nummer dient also quasi als Zeiger auf eine bestimmte Person. Die Person wird also durch diesen Zeiger eindeutig identifiziert und nicht durch ihre Eigen­schaften wie Nachname, Vorname und Geburtsdatum, die sich möglicherweise ändern können oder die auch möglicherweise für zwei verschiedene Personen über­einstimmen können. Dies ist der Grund dafür, dass wir Personal­nummern, Matrikel­nummern, Sozial­versicherungs­nummern, Mitglieds­nummern, Kunden­nummern usw. haben, über die wir in den unter­schiedlichen Datenbanken identifiziert werden.

Personnachnamevornamegebdat
101MeyerHeinz  12.03.1962
102Schmidt  Heinz21.05.1948
103MeyerHeinz21.05.1948
104MeyerAnna12.03.1962

Die Beziehung Verwandt reduziert sich dadurch auf folgende Tabelle:

Verwandtperson1person2
101104

Normalform

Tabellen können zunächst beliebig aufgebaut sein. Ein Ziel im Datenbank­konzept ist es jedoch, die Daten frei von Redundanz zu speichern. Dies ist gewähr­leistet, wenn sich die Tabellen in der sogenannten Boyce-Codd-Normalform befinden.

Die Boyce-Codd-Normalform lässt sich mithilfe der Begriffe Projektion und Schlüssel charakterisieren.

Zur Erinnerung: Durch Projektion können Spalten einer Tabelle ausgewählt werden. Das Ergebnis dieser Operation ist wieder eine Tabelle. Mehrfach auftretende Zeilen dieser Tabelle werden nur einmal aufgeführt, denn die Zeilen der Tabelle müssen eine Relation bilden. Eine Relation ist aber eine Menge, und eine Menge kann nur unter­schiedliche Elemente enthalten.

Definition:  Eine Tabelle ist in Boyce-Codd-Normalform (BCNF), wenn keine Projektion der Tabelle einen eigenen echten Schlüssel hat.

Zu beachten ist, dass es sich um einen echten Schlüssel handeln muss. Als eigenen Schlüssel einer Projektion bezeichnen wir eine Attribut­menge, die nicht auch Schlüssel der ganzen Tabelle ist.

Als Beispiel betrachten wir die Tabelle Konto.

Kontoinhaberkontonrbankblz
Meyer602201Postbank Hamburg200 100 20
DRK414141Commerzbank Kiel210 400 10
Meyer190032Sparkasse Kiel210 501 70
Schmidt175060Sparkasse Kiel210 501 70

Diese Tabelle ist nicht in Boyce-Codd-Normalform. Um dies zu zeigen, müssen wir also eine Projektion der Tabelle finden, die einen eigenen echten Schlüssel hat.

Folgende Tabelle ist die Projektion der Tabelle Konto auf die Spalten {bank, blz}. Mehrfach auftretende Zeilen werden nur einmal aufgeführt.

Konto[bank, blz]bankblz
Postbank Hamburg200 100 20
Commerzbank Kiel210 400 10
Sparkasse Kiel210 501 70

Das Attribut {blz} ist offenbar ein Schlüssel dieser Projektion, und sogar ein echter Schlüssel, denn er besteht nicht aus allen Attributen der Projektion. Das Attribut {blz} ist aber kein Schlüssel der gesamten Tabelle Konto, sondern ein eigener Schlüssel der Projektion. Damit ist die Tabelle Konto nicht in Boyce-Codd-Normalform.

Immer wenn eine Projektion vorhanden ist, die einen eigenen echten Schlüssel hat, ist dies ein Indiz dafür, dass beim Datenbank­entwurf die Entities nicht klar identifiziert wurden. In dem Beispiel ist "Bank" eine eigene Entity.

Zerlegung

Um eine redundanz­freie Speicherung der Daten zu erzielen, wird die Tabelle Konto wie folgt in zwei Tabellen zerlegt. Die ursprüng­liche Tabelle kann dann durch einen Verbund der beiden Tabellen wieder zurück­gewonnen werden.

Kontoinhaberkontonrbankid
Meyer6022011
DRK4141412
Meyer1900323
Schmidt1750603
 
Bankidnameblz
1Postbank Hamburg200 100 20
2Commerzbank Kiel210 400 10
3Sparkasse Kiel210 501 70

Der Verbund dieser beiden Tabellen wird durch folgendes SQL-Kommando realisiert; Ergebnis ist die ursprüng­liche Tabelle:

SELECT inhaber, kontonr, name AS bank, blz
FROM Konto, Bank
WHERE bankid=Bank.id

Durch SELECT name AS bank wird die Spalte name ausgewählt und in der Ergebnis­tabelle mit der Bezeichnung bank versehen (so wie es in der ursprüng­lichen Tabelle Konto war).

 

Alternativ lässt sich die Anfrage mithilfe des SQL-Befehls JOIN folgender­maßen formulieren:

SELECT inhaber, kontonr, name AS bank, blz
FROM Konto JOIN Bank
ON bankid=Bank.id

 

Weiter mit:   [Literatur]   oder   up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©   Created: 08.11.1999   Updated: 09.06.2016
Valid HTML 4.01 Transitional


Campus Flensburg

Informatik in Flensburg studieren...

 

Neu gestaltetes Studienangebot:

Bachelor-Studiengang
Angewandte Informatik

mit Schwerpunkten auf den Themen Software, Web, Mobile, Security und Usability.

Ihr Abschluss
nach 7 Semestern:
Bachelor of Science

 

Ebenfalls ganz neu:

Master-Studiengang
Angewandte Informatik

Ein projektorientiertes Studium auf höchstem Niveau mit den Schwerpunkten Internet-Sicherheit, Mobile Computing und Human-Computer Interaction.

Ihr Abschluss
nach 3 Semestern:
Master of Science

 

Weitere Informatik-Studienangebote an der Hochschule Flensburg:

Medieninformatik

Wirtschaftsinformatik