Normalisierung

Werbung
Kapitel 6
6
Normalisierung
Seite 1
Normalisierung
Dieses Kapitel behandelt Lehrstoff, der in der 9. Jahrgangsstufe im Lehrplan
nicht vorgesehen ist. Es liefert jedoch das theoretische Hintergrundwissen zu
Kapitel 2 Die Datenbank Buchausleihe und ist somit ausschließlich für
interessierte Schüler gedacht, die sich mit der Theorie der Datenbanken
intensiver beschäftigen wollen.
6.1
Effizienz
Eine weitere Möglichkeit, eine relationale Datenbank widerspruchsfrei zu
verwalten, wird durch die so genannte Normalisierung erreicht. Mit der
Normalisierung kannst du sicherstellen sicher, dass die Datenorganisation einer
relationalen Datenbank effizient ist.
Um den Begriff Effizienz zu verdeutlichen betrachte zuerst folgende äußerst
uneffiziente Datenbank:
Schüler
SchülerNr
1
1
4
4
7
11
13
16
18
Name
Poddey T.
Poddey T.
Schwaner N.
Schwaner N.
Vierling M.
Burkert F.
Weiss G.
Kunz K.
Schurian I.
KursNr
1264
1565
1564
1264
1264
1265
1265
1264
1265
Kurs
Französisch 1
Französisch 2
Spanisch 3
Französisch 1
Französisch 1
Französisch 2
Französisch 2
Französisch 1
Französisch 2
Lehrer
Heck
Steppan
Heck
Heck
Heck
Abbildung 6.1: Tabelle Schüler
Unter Effizienz einer Datenbank versteht man u.a.
1.
Fehlen von Redundanz
Ein System enthält Redundanz, wenn die gleichen Daten an mehr als einer
Stelle vorkommen. Neben der Vergeudung von Speicherplatz eröffnet
diese mehrfache Speicherung auch die Möglichkeit inkonsistenter und
mehrdeutiger Daten.
(Änderungs-Anomalien, Einfüge-Anomalien)
2.
Minimaler Einsatz von NULL-Werten
Im obigen Beispiel existieren drei Datensätze mit einem NULL-Wert für
Lehrer. Vielleicht gibt es keinen Lehrer für diesen Kurs, oder der Name ist
einfach noch nicht eingetragen, oder dies ist ein Kurs im selbstständigen
Lernen, der ohne Lehrer auskommt.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 2
einfach noch nicht eingetragen, oder dies ist ein Kurs im selbstständigen
Lernen, der ohne Lehrer auskommt.
NULL ist ein spezieller Wert, der keinem anderen Wert gleicht, nicht
einmal sich selbst. Wir können nicht einmal behaupten, zwei Schüler mit
NULL-Einträgen für Lehrer hätten für jenes Attribut den gleichen Wert.
3.
Kein Datenverlust
Wenn der Schüler Schwaner N. seinen Kurs verlässt, würden alle
Informationen über den Kurs Spanisch 3 verloren gehen.
(Lösch-Anomalien)
Weitere Ziele der Datenorganisation beschreibt Matzke in seinem Skript S. 3.
Übung 6.1:
Überlege Dir an Hand der oben angesprochenen Effizienz, warum diese Tabelle
nicht sinnvoll angelegt wurde.
6.2
Schlüssel
In einer Tabelle sind alle Datensätze eindeutig identifizierbar. Das bedeutet, dass
sich diese Datensätze in mindestens einem Attribut unterscheiden.
Dazu betrachte noch einmal die obige Tabelle Schüler in Abbildung 6.1. Nicht
geeignet als eindeutiges Identifizierungsmerkmal ist das einzelne Attribut
SchülerNr, da es für verschiedene Datensätze den gleichen Wert annehmen
kann. Man erkennt, dass auch die anderen Attribute einzeln nicht geeignet sind.
Ebenfalls nicht besonders nützlich zur eindeutigen Identifizierung ist die Menge
aller Attribute (SchülerNr, Name, KursNr, Kurs, Lehrer). Diese Menge enthält
Attribute, die man entfernen könnte, ohne die eindeutige Identifizierbarkeit
jedes Datensatzes aufzugeben.
Du musst nach einer Menge von Attributen suchen, die sich nicht mehr weiter
reduzieren lässt, und trotzdem jedem Datensatz eine eindeutige Identität
verleiht.
Zur eindeutigen Identifizierbarkeit eines Datensatzes wird der Begriff
Identifikationsschlüssel eingeführt.
Ein Identifikationsschlüssel (Kandidatenschlüssel) besteht aus einem Attribut
oder aus einer minimalen, nicht mehr reduzierbaren Kombination von
Attributen, welche jede Entität einer Entitätsmenge eindeutig identifiziert.
Übung 6.2:
Suche in der Tabelle Schüler alle Identifikationsschlüssel.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 3
Wie bereits erwähnt, eignet sich in der Tabelle Schüler kein einzelnes Attribut
als Identifikationsschlüssel. Somit muss nach zweielementigen Mengen von
Attributen gesucht werden, die jeden Datensatz eindeutig identifizieren. Möglich
wären folgende Kombinationen:
(SchülerNr, KursNr), (Name, KursNr), (SchülerNr, Kurs), (Name, Kurs),
(SchülerNr, Lehrer), (Name, Lehrer)
Bemerkung:
Es existieren auch dreielementige Mengen von Attributen wie z.B. (Name,
KursNr, Lehrer). Diese Kombination bildet jedoch keinen
Identifikationsschlüssel, weil jeder Lehrer seine eigene KursNr hat. Somit ist das
Attribut KursNr in dieser Menge überflüssig, die Kombination lässt sich weiter
reduzieren und ist somit nicht minimal.
Wenn du nach Identifikationsschlüsseln in einer Tabelle suchst, solltest du dir
immer die Frage stellen, ob zur eindeutigen Identifizierung eines Datensatzes
wirklich alle Attribute benötigt werden oder ob du mit weniger Attributen
auskommst. Ein Identitätsschlüssel soll sich nicht mehr reduzieren lassen.
Alle Attribute, die Teil des Identifikationsschlüssels sind, nennt man SchlüsselAttribute. Attribute, die nicht am Identifikationsschlüssel beteiligt sind, heißen
Nichtschlüssel-Attribute.
Hat eine Tabelle mehrere Identifikationsschlüssel, so musst du einen von ihnen
als Primärschlüssel auswählen.
Ein Primärschlüssel ist eine minimale Menge von Attributen, die eindeutig die
Datensätze einer Tabelle (Objekte einer Klasse) identifiziert.
Bemerkung:
Beim Anlegen einer Tabelle hast du bemerkt, dass ACCESS nach einem
Primärschlüssel fragt.
Es ist sicher sinnvoll, einen Primärschlüssel zu wählen, dessen Attributwerte
a)
Zahlen sind (leichtere Handhabung) und
b) sich so wenig wie möglich ändern (keine Telefonnummer, etc).
Um nun Beziehungen zwischen den Tabellen zu definieren, wird ein
Fremdschlüssel benötigt.
Eine Spalte in einer Tabelle, die den Primärschlüssel einer anderen Tabelle
beinhaltet, wird Fremdschlüssel genannt.
Bemerkung:
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 4
In den bisherigen Datenbanken hast du als Primärschlüssel immer einen
künstlichen Schlüssel verwendet und diesen mit der Endung ID gekennzeichnet
(z.B. PersonID). Dieser nummeriert die Datensätze einfach durch und hat als
Wertebereich AutoWert. Somit identifiziert dieser eindeutig jeden Datensatz
einer Tabelle. Die Verwendung eines solchen Primärschlüssels vereinfachte die
Erstellung einer Tabelle, ist jedoch mit deinem jetzigen Wissen nicht unbedingt
notwendig. Den zugehörigen Fremdschlüssel bezeichnest du dann am besten mit
der Endung Nr (z.B PersonNr).
6.3
Normalisierung
Das Normalisierungsverfahren wird in der Regel dazu eingesetzt, eine
Datenbank zu verbessern, die bereits im Klassenmodell entworfen worden ist.
Hierbei charakterisieren die verschiedenen Normalformen Schritte, die
nacheinander ausgeführt werden. Von praktischer Bedeutung sind hier nur die
ersten drei Normalformen:
Normalform Beschreibung
Erläuterung
1. NF
Atomisierung
Alle Attribute sind atomar, d.h. sie lassen sich
nicht in weitere Attribute unterteilen
2. NF
Funktionale
Abhängigkeit
Die Tabelle ist bereits in der 1.NF und alle
Nichtschlüssel-Attribute sind voll funktional
abhängig vom Primärschlüssel.
3. NF
Transitive
Abhängigkeit
Die Tabelle ist bereits in der 2.NF und alle
Nichtschlüssel-Attribute dürfen nicht transitiv
von einem Schlüssel abhängen.
Das hört sich sehr kompliziert an. Deswegen musst du versuchen, an Hand von
einigen Beispielen diese Definitionen zu verstehen. Wie bereits gesagt wird die
Normalisierung im Allgemeinen dazu eingesetzt, eine Datenbank effizient zu
machen. Um nun die drei Normalformen besser zu verdeutlichen, werde ich
ohne den Entwurf eines Klassenmodells mit einer Datenbank Buchausleihe
beginnen.
Buchausleihe (Rohdaten)
PersonID Name
Adresse
1
Vierling Röntgenstr. 26
86343
Königsbrunn
2
Geiger
Lechallee 8
86399
Gymnasium Königsbrunn
ISBN
3-431-02644
3-7627-3733-9
Titel
Algebra7
Geometrie8
Ausleihdatum
21.03.2003
21.03.2003
3-7627-3737-1
3-7627-3735-5
Geometrie10
Geometrie9
20.04.2003
24.07.2003
Ralph Henne
Kapitel 6
Normalisierung
3
McRae
4
Hackl
Bobingen
Alpenstr. 15
86343
Königsbrunn
Edelweißring 49
86343
Königsbrunn
Seite 5
3-431-02962-0
3-7627-3733-9
3-431-02962-0
Algebra9
Geometrie8
Algebra9
24.07.2003
26.07.2003
30.10.2003
3-431-02644
Algebra7
29.09.2003
Abbildung 6.2: Datenbank Buchausleihe (Rohdaten)
In dieser Tabelle ist eine Buchausleihe festgehalten. Eine Analyse des
Ausleihvorgangs ergab folgende Informationsstruktur:
In dieser Bücherei gibt es von jedem Titel jeweils nur ein Buch. Bücher werden
von Personen ausgeliehen. Eine Person kann mehrere Bücher ausleihen. Ein und
dasselbe Buch kann auch mehrmals ausgeliehen werden. (Zwischenzeitliche
Rückgabe wird natürlich vorausgesetzt, dies ist aber in diesem Datenbankmodell
nicht erkennbar.) Eine Person besitzt nur einen Hauptwohnsitz.
Wichtiger Hinweis:
Bevor die Normalisierungsschritte der in Abb. 6.2 dargestellten Datenbank
Buchausleihe(Rohdaten) einzeln besprochen werden, möchte ich auf Folgendes
hinweisen
In diesem Kapitel wird zu Übungszwecken vorausgesetzt, dass die Datenbank
Buchausleihe(Rohdaten) vollständig ist, also keine weiteren Datensätze
hinzukommen. Diese Voraussetzung erleichtert für den Anfang das Verständnis
der einzelnen Normalisierungsschritte. Mit den Schülern wird im Unterricht
jedoch diskutiert, ob die von mir dargestellten funktionalen Abhängigkeiten in
der Praxis sinnvoll gewählt sind oder auch bestehen bleiben, falls neue
Datensätze hinzukommen.
Man sollte sich bei der Normalisierung einer Datenbank immer überlegen, ob
bei Hinzufügen von weiteren Datensätzen die funktionalen Abhängigkeiten
bestehen bleiben.
6.4
1.Normalform
Alle Attribute sind atomar, d.h. sie lassen sich nicht in weitere Attribute
unterteilen
Betrachte zuerst einen Ausschnitt der oben dargestellten Tabelle
Buchausleihe(Rohdaten):
Eine Person leiht ein Buch aus. Sie besitzt die Attribute Name und Adresse.
Sinnvoll wäre auch ein Attribut PersonID (ist hier aber nicht unbedingt
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 6
notwendig, solange ein Name nur einmal vorkommt; aber wer weiß, ob das
immer so bleibt?).
Person
PersonID
Name
Adresse
Abbildung 6.3: Tabelle Person
Du kannst feststellen, dass das Attribut Adresse drei Unterkategorien PLZ, Ort
und Straße besitzt. Die 1.Normalform verlangt, dass das Attribut Adresse durch
die Attribute PLZ, Ort und Straße ersetzt wird. Somit wird vermieden, dass in
einer Tabellenspalte mehrere Werte auftreten.
Person (1.NF)
PersonID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
PLZ
86343
86399
86343
86343
Ort
Königsbrunn
Bobingen
Königsbrunn
Königsbrunn
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring 49
Abbildung 6.4: Tabelle Person (1.NF)
Damit ist die Tabelle „Person“ bereits in der 1.Normalform, obwohl das Attribut
Straße zusammengesetzt ist aus Straße und Hausnummer. Das Attribut kann
man trotzdem elementar nennen, da man die beiden Teile niemals getrennt
voneinander benötigt.
Aber auch das Ausleihdatum wie „21.03.2003“ bezeichnet man als elementar,
obwohl sie Tag, Monat und Jahr enthält, die man doch gelegentlich getrennt
voneinander benötigt. In so einem Fall benutzt man dann spezielle Funktionen,
die aus dem Datum den Tag, den Monat oder das Jahr ermitteln. Das Datum
gehört trotzdem als Ganzes zusammen, sonst lassen sich beispielsweise
Rückgabetermine, Ausleihzeit, usw. nicht berechnen.
Übung 6.3:
Überführe die Tabelle Buchausleihe(Rohdaten) in die 1Normalform.
Betrachte nun die Attribute ISBN, Titel und Ausleihdatum der Tabelle
Buchausleihe (Rohform). Auch diese enthalten mehr als einen Wert. Du musst
also weitere Datensätze in unsere Tabelle einfügen. Die Tabelle Buchausleihe
liegt nun aber vollständig in der 1.Normalform vor:
Buchausleihe (1.NF)
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
P-ID Name
PLZ
1
Vierling 86343
1
Vierling 86343
2
Geiger
2
Ort
Straße
Seite 7
ISBN
3-431-02644
86399
Königsbrunn Röntgenstr.
26
Königsbrunn Röntgenstr.
26
Bobingen
Lechallee 8
Geiger
86399
Bobingen
Lechallee 8
3-7627-3735-5
2
Geiger
86399
Bobingen
Lechallee 8
3-431-02962-0
3
McRae
86343
Königsbrunn Alpenstr. 15 3-7627-3733-9
3
McRae
86343
Königsbrunn Alpenstr. 15 3-431-02962-0
4
Hackl
86343
Königsbrunn Edelweiß49
3-7627-3733-9
3-7627-3737-1
3-431-02644
Titel
Ausl.
datum
Algebra7
21.03.
2003
Geometrie8 21.03.
2003
Geometrie10 20.04.
2003
Geometrie9 24.07.
2003
Algebra9
24.07.
2003
Geometrie8 26.07.
2003
Algebra9
30.10.
2003
Algebra7
29.09.
2003
Abbildung 6.5: Datenbank Buchausleihe in der 1.Normalform
Diese Atomisierung erzeugt leider auch Redundanz. In der Tabelle Buchausleihe
(1.NF) sind die Namen, PLZ, … als auch Titel redundant, weil diese bei jeder
Buchausleihe wiederholt werden.
Übung 6.4:
Suche in der Tabelle „Buchausleihe(1.NF)“ alle Identifikationsschlüssel.
Das Attribut P-ID kann nun nicht mehr als Identifikationsschlüssel (und somit
auch nicht mehr als Primärschlüssel) verwendet werden. Zur eindeutigen
Identifizierung benötigt man nun als Schlüssel eine Kombination von Attributen,
z.B. (P-ID, ISBN).
Du benötigst eine bessere („höhere“) Normalform. Durch diese weiteren
Normalisierungsschritte kannst du die Redundanzen wieder beseitigen.
6.5
2.Normalform
Die Tabelle ist in der 1.NF und alle Nichtschlüssel-Attribute sind voll funktional
abhängig vom Primärschlüssel.
Um die 2.Normalform verstehen zu können, muss der Begriff der vollen
funktionalen Abhängigkeit verdeutlicht werden. Hiermit wird eine spezielle
Beziehung zwischen den Attributen einer Tabelle beschrieben.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 8
Sei X eine Menge von Attributen einer Tabelle und A eine weitere Menge von
Attributen der gleichen Tabelle. A ist genau dann von X funktional abhängig,
wenn es zu beliebigen Wert von X genau einen Wert von A gibt. Wir verwenden
die Notation X " A.
Bemerkung:
Das Heft
!
Arbeitskreis „Datenbanken im Unterricht“
Datenbank
Zentralstelle für Computer im Unterricht
Augsburg 2000
ersetzt auf Seite 47 den Begriff „genau einen Wert“ durch „höchstens einen
Wert“.
Nimm als Beispiel in der Tabelle Buchausleihe(1.NF) das Attribut Name. Laut
der gegebenen Informationsstruktur besitzt jede Person genau einen
(Haupt)Wohnsitz. Also gehört zu jedem Wert von Namen genau ein Wert von
Ort.
Notiere:
Analog gilt:
Name " Ort
Name " PLZ
Name " Straße
Verkürzt kannst du schreiben: ! Name " PLZ, Ort, Straße
!
Übung 6.5:
!
Suche in der Tabelle Buchausleihe(1.NF)
alle funktionale Abhängigkeiten
!
analog obigem Beispiel (von einem einzigen Attribut funktional abhängig).
Übung 6.6:
Welches Attribut eignet sich als Identifikationsschlüssel?
Die Übung 6.6 zeigt, dass die funktionale Abhängigkeit von nur einelementigen
Attributmengen nicht ausreichend ist. Deswegen wirst du nun die funktionale
Abhängigkeit von mehrelementigen Attributmengen untersuchen:
Notiere:
Analog gilt:
Verkürzt kannst du schreiben:
Übung 6.7:
Gymnasium Königsbrunn
Name, Titel
Name, Titel
Name, Titel
……
!
Name,
! Titel
!
!
" Ausleihdatum
" ISBN
" Straße
" P-ID, PLZ, … ,Ausleihdatum
Ralph Henne
Kapitel 6
Normalisierung
Seite 9
Suche in der Tabelle Buchausleihe(1.NF) alle funktionale Abhängigkeiten
analog obigem Beispiel (von einer mehrelementigen Attributmenge funktional
abhängig).
Übung 6.8:
Welche Attributmenge eignet sich als Identifikationsschlüssel?
In der Tabelle Buchausleihe(1.NF) eignen sich nun mehrere zusammengesetzte
Attributmengen als Identifikationsschlüssel, beispielsweise der Schlüssel (P-ID,
ISBN). Bei zusammengesetzten Schlüsseln muss man den Begriff der vollen
funktionalen Abhängigkeit einführen.
Voll funktional abhängig bedeutet bei einem Mehrfeld-Schlüssel, dass ein
Nichtschlüssel-Attribut nicht bereits von einem Teil des Schlüssels funktional
abhängt.
Da du nun also einen zusammengesetzten Schlüssel hast, muss diese Tabelle auf
ihre volle funktionale Abhängigkeit überprüft werden, um sie in die
2.Normalform zu überführen. Jede Kombination aus P-ID und ISBN bestimmt
eindeutig einen Namen, eine PLZ, … , ein Ausleihdatum.
Es gelten also die funktionalen Abhängigkeiten:
(P-ID, ISBN) " Name
(P-ID, ISBN) " PLZ
…
(P-ID, ISBN) " Titel
!
(P-ID, ISBN) " Ausleihdatum
!
Verkürzt können wir schreiben:
(P-ID,
! ISBN) " Name, PLZ, Ort, Straße, Titel, Ausleihdatum
!
Allerdings
hast du bereits in Übung 6.5 festgestellt, dass Name, PLZ, Ort und
Straße funktional abhängig sind von P-ID, also von einem Teil des Schlüssels.
Ebenso
! ist der Titel funktional abhängig von ISBN, also auch von einem Teil des
Schlüssels.
P-ID " Name, PLZ, Ort, Straße
ISBN " Titel
Dies ist ein Widerspruch zur Definition der vollen funktionalen Abhängigkeit.
! Somit ist also Buchleihe (1.NF) nicht in der 2.Normalform.
!
Bemerkung:
Tabellen mit nur einem Schlüsselattribut sind automatisch in der 2.Normalform.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 10
Um also eine Tabelle in die 2.Normalform zu überführen, entfernst du zunächst
alle Attribute, die vom Primärschlüssel nur partiell abhängen. Mit diesem
Attributen und denen, von denen sie abhängen, als Primärschlüssel bildest du
eine neue Tabelle. Die Attribute, aus denen du den Primärschlüssel der neuen
Tabelle machst, verbleiben auch in der alten Tabelle als Teile des dortigen
zusammengesetzten Primärschlüssels.
Dieses oben dargestellte „Rezept“ zur Überführung in die 2. Normalform werde
ich mit Hilfe der Tabelle Ausleihe(1.NF) verdeutlichen. Diese Tabelle stellt
einen Teil des Beispiels der Buchausleihe dar.
Ausleihe (1.NF)
PersonNr ISBN
1
3-431-02644
1
3-7627-3733-9
2
3-7627-3737-1
2
3-7627-3737-5
2
3-431-02962-0
3
3-7627-3733-9
3
3-431-02962-0
4
3-431-02644
Titel
Algebra7
Geometrie8
Geometrie10
Geometrie9
Algebra9
Geometrie8
Algebra9
Algebra7
Ausleihdatum
21.03.2003
21.03.2003
20.04.2003
20.04.2003
24.07.2003
26.07.2003
30.10.2003
29.09.2003
Abbildung 6.6: Tabelle Ausleihe (1.NF)
In dieser Tabelle kann kein einzelnes Attribut als Schlüsselattribut verwendet
werden, da kein Attribut jeden Datensatz eindeutig identifiziert.
Erst eine Kombination aus PersonNr und z.B. ISBN identifiziert einen Datensatz
eindeutig und kann als Primärschlüssel dienen.
Eine weitere Untersuchung ergibt jedoch, dass der Titel nicht voll funktional
vom Primärschlüssel (PersonNr, ISBN) abhängt. Der Titel hängt nur von der
ISBN abhängt, also nur von einem Teil des Primärschlüssels. Ändert sich also
nur die PersonNr, dann ändert sich nicht der Titel, wie man am Buch
Geometrie8 sehen kann. Somit verstößt diese Tabelle gegen die 2.Normalform.
Übung 6.9:
Untersuche das Attribut Ausleihdatum.
Gemäß dem obigen Rezept entfernst du das Attribut Titel aus der Tabelle
Ausleihe und bildest zusammen mit dem Attribut ISBN als Primärschlüssel eine
neue Tabelle Buch. Die ISBN verbleibt auch in der alten Tabelle als Teil des
dortigen zusammengesetzten Primärschlüssels.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Ausleihe (2.NF)
PersonNr ISBN
1
3-431-02644
1
3-7627-3733-9
2
3-7627-3737-1
…
…
Buch (2.NF)
ISBN
3-431-02644
3-7627-3733-9
3-7627-3737-1
…
Seite 11
Ausleihdatum
21.03.2003
21.03.2003
20.04.2003
…
Titel
Algebra7
Geometrie7
Geometrie10
…
Abbildung 6.7: Überführung der Tabelle Ausleihe in die 2.Normalform
Man kann dieses Beispiel in die 2.Normalform überführen, indem man die
ursprüngliche Tabelle in zwei neue Tabellen aufspaltet.
Bemerkung:
Das Attribut ISBN ist in der Tabelle Buch (2.NF) der Primärschlüssel und in der
Tabelle Ausleihe (2.NF) der zugehörige Fremdschlüssel.
Übung 6.10:
Die Tabelle Buchausleihe (1.NF) besitzt (wie bereits beschrieben) den
zusammengesetzten Primärschlüssel (P-ID, ISBN). Untersuche, welche weiteren
Attribute nicht voll funktional vom Primärschlüssels abhängen.
Diese Überlegungen kannst du nun auf die Tabelle Buchausleihe (1. NF)
anwenden:
Person (2.NF)
P-ID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
PLZ
86343
86399
86343
86343
Ort
Königsbrunn
Bobingen
Königsbrunn
Königsbrunn
Ausleihe (2.NF)
P-Nr
ISBN
1
3-431-02644
1
3-7627-3733-9
Gymnasium Königsbrunn
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring49
Ausleihdatum
21.03.2003
21.03.2003
Ralph Henne
Kapitel 6
Normalisierung
2
2
2
3
3
4
3-7627-3737-1
3-7627-3735-5
3-431-02962-0
3-7627-3733-9
3-431-02962-0
3-431-02644
Buch (2.NF)
ISBN
3-431-02644
3-7627-3733-9
3-7627-3737-1
3-7627-3735-5
3-431-02962-0
Seite 12
20.04.2003
24.07.2003
24.07.2003
26.07.2003
30.10.2003
29.09.2003
Titel
Algebra7
Geometrie8
Geometrie10
Geometrie9
Algebra9
Abbildung 6.8: Datenbank Buchausleihe in der 2.Normalform
Beachte, dass sich die Redundanzen in den Tabellen Person und Buch aufgelöst
haben.
Bemerkung:
Das Attribut P-ID ist in der Tabelle Person (2.NF) der Primärschlüssel und in
der Tabelle Ausleihe (2.NF) ist P-Nr der zugehörige Fremdschlüssel.
6.6
3.Normalform
Die Tabelle ist in der 2. NF und alle Nichtschlüssel-Attribute dürfen nicht
transitiv von einem Schlüssel abhängen.
Um die 3.Normalform verstehen zu können, muss der Begriff der transitiven
Abhängigkeit verdeutlicht werden. Im Prinzip wird mit der 3.Normalform
erreicht, dass die funktionale Abhängigkeit auch zwischen NichtschlüsselAttributen beseitigt wird.
Wenn Attribut B von A funktional abhängt und Attribut C von B funktional
abhängt, so heißt C transitiv abhängig von A (falls nicht A von B abhängt).
/ A)
Kurz bedeutet transitiv: A " B " C (wobei B "
Bemerkung:
Matzke gibt in seinem
Skript
S. 17 folgende Definition:
!
!
!
Eine Tabelle befindet sich in der 3.Normalform, wenn (sie in der 2.Normalform
ist und) alle Nichtschlüssel-Attribute voneinander funktional unabhängig sind.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 13
Jedoch zeigt die Übung 6.12 ein Beispiel, in dem trotz der funktionalen
Abhängigkeit von Nichtschlüssel-Attributen die 3.Normalform nicht verletzt
wird.
Wenn du eine transitive Abhängigkeit entdeckst, musst du die betroffenen
Nichtschlüssel-Attribute entfernen. Dann erzeugst du eine neue Tabelle aus
diesen entfernten Nichtschlüssel-Attributen und demjenigen NichtschlüsselAttribut, von dem diese entfernten Nichtschlüssel-Attribute funktional
abhängen. Letzteres wird der Primärschlüssel der neuen Tabelle und verbleibt
als Fremdschlüssel in der ursprünglichen Tabelle.
Dieses oben dargestellte „Rezept“ zur Überführung in die 3. Normalform werde
ich mit Hilfe der Tabelle Person (2.NF) verdeutlichen. Diese Tabelle stellt
einen Teil des Beispiels der Buchausleihe dar.
Person (2.NF)
P-ID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
PLZ
86343
86399
86343
86343
Ort
Königsbrunn
Bobingen
Königsbrunn
Königsbrunn
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring49
Abbildung 6.9: Tabelle Person (2.NF)
Als Primärschlüssel wurde das Attribut P-ID gewählt. Nun gelten folgende
funktionale Abhängigkeiten:
P-ID " Name, PLZ, Ort, Straße
PLZ " Ort
Du entdeckst in dieser Tabelle also die transitive Abhängigkeit:
! P-ID " PLZ " Ort , wobei PLZ "
/ P-ID
!
Bemerkung:
Die funktionale Abhängigkeit PLZ " Ort ist in dieser Tabelle sicherlich
!
!
! angemerkt, keine weiteren Datensätze hinzufügen
richtig, wenn man, wie bereits
will. Untersucht man jedoch das Postleitzahlenbuch, so stellt man fest, dass hier
die funktionale Abhängigkeit (Ort, Straße) " PLZ gilt. Man sollte bei der
!
Normalisierung immer die künftig möglichen Attributwerte im Auge haben.
Die Tabelle Person (2.NF) befindet sich also noch nicht in der 3.Normalform,
!
denn Ort hängt transitiv von P-ID ab.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 14
Gemäß dem obigen Rezept entfernst du das betroffene Attribut Ort aus der
Tabelle Person (2.NF). Aus diesem entfernten Nichtschlüssel-Attribut Ort und
aus dem Nichtschlüssel-Attribut PLZ, von dem Ort funktional abhängt, bildest
du eine neue Tabelle Ort (3.NF). PLZ ist in dieser neuen Tabelle der
Primärschlüssel und verbleibt als Fremdschlüssel in der ursprünglichen Tabelle,
die ich nun mit Person (3.NF) bezeichne.
Person (3.NF)
P-ID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring49
PLZ
863431
86399
86343
86343
Ort (3.NF)
PLZ
Ort
86343
Königsbrunn
86399
Bobingen
Abbildung 6.10: Überführung der Tabelle Person (2.NF) in die 3.Normalform
Da Ausleihe (2.NF) und Buch (2.NF) jeweils nur eine Nicht-Schlüsselspalte
besitzen, sind diese automatisch in der 3.Normalform. Somit ist die Datenbank
Buchausleihe komplett in die 3.Normalform übergeführt worden:
Person (3.NF)
P-ID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring49
PLZ
863431
86399
86343
86343
Ort (3.NF)
PLZ
Ort
86343
Königsbrunn
86399
Bobingen
Ausleihe (3.NF)
ISBN
3-431-02644
3-7627-3733-9
3-7627-3737-1
3-7627-3735-5
3-431-02962-0
3-7627-3733-9
3-431-02962-0
Gymnasium Königsbrunn
PersonNr
1
1
2
2
2
3
3
Ausleihdatum
21.03.2003
21.03.2003
20.04.2003
24.07.2003
24.07.2003
26.07.2003
30.10.2003
Ralph Henne
Kapitel 6
Normalisierung
3-431-02644
4
Buch (3.NF)
ISBN
3-431-02644
3-7627-3733-9
3-7627-3737-1
3-7627-3735-5
3-431-02962-0
Seite 15
29.09.2003
Titel
Algebra7
Geometrie8
Geometrie10
Geometrie9
Algebra9
Abbildung 6.11: Datenbank Buchausleihe in der 3.Normalform
Bemerkungen
1.
Die Beziehung zwischen Ort(3.NF) und Person(3.NF) wird über das
Attribut PLZ hergestellt. Das bisheriges Vorgehen war, dass in der Tabelle
ein zusätzliches Attribut OrtID als Primärschlüssel eingeführt wurde, das
mit dem Fremdschlüssel OrtNr (anstelle PLZ) verknüpft war:
Person
P-ID Name
1
Vierling
2
Geiger
3
McRae
4
Hackl
Straße
Röntgenstr. 26
Lechallee 8
Alpenstr. 15
Edelweißring49
OrtNr
1
2
1
1
Ort
OrtID
1
2
PLZ
86343
86399
Ort
Königsbrunn
Bobingen
2.
Nach dem bisherigen Vorgehen sollte in der Tabelle Buch der
Primärschlüssel BuchID heißen. Die ISBN kann jedoch auch als
Primärschlüssel verwendet werden, da jedes Buch seine separate Nummer
erhält. Jedoch ist der Datentyp in diesem Fall nicht mehr AutoWert. Man
muss also selbst aufpassen, dass aus Versehen keine doppelten ISBN
eingegeben werden.
3.
Zum Glück wird dir in ACCESS diese Aufgabe abgenommen. Wenn du in
Access ein Attribut als Schlüssel festlegst, weigert sich es sich, wenn Du
zweimal den gleichen Wert eingibst.
Falls man sich in anderen Datenbanken dessen nicht sicher ist, sollte man
einen AutoWert BuchID als Primärschlüssel verwenden.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 16
Die Ausgangstabelle
Buchausleihe (Rohdaten)
PersonID Name
Adresse
1
Vierling Röntgenstr. 26
86343
Königsbrunn
2
Geiger
Lechallee 8
86399
Bobingen
3
McRae
Alpenstr. 15
86343
Königsbrunn
4
Hackl
Edelweißring 49
86343
Königsbrunn
ISBN
3-431-02644
3-7627-3733-9
Titel
Algebra7
Geometrie8
Ausleihdatum
21.03.2003
21.03.2003
3-7627-3737-1
3-7627-3735-5
3-431-02962-0
3-7627-3733-9
3-431-02962-0
Geometrie10
Geometrie9
Algebra9
Geometrie8
Algebra9
20.04.2003
24.07.2003
24.07.2003
26.07.2003
30.10.2003
3-431-02644
Algebra7
29.09.2003
Abbildung 6.12: Datenbank Buchausleihe (Rohdaten)
wurde mit Hilfe der drei Normalisierungsformen in die vier Tabellen Person,
Ort, Ausleihe und Buch übergeführt. Dadurch hast du nun einen
Ausleihvorgang erzeugt, der auch durch folgendes Klassendiagramm
beschrieben werden kann.
Abbildung 6.13: Klassendiagramm der Datenbank Buchausleihe
Hinweis:
Matzke schreibt auf S.15:
Bei einem sauberen Entwurf nach dem Klassenmodell und Anwendung der
Abbildungsregeln befinden sich die erzeugten Tabellen häufig schon in der
3 Normalform.
Jedoch sind Klassendiagramme leichter und intuitiver zu handhaben als die
Normalformen. Deswegen wirst du Tabellen in Datenbanken hauptsächlich mit
Hilfe von Klassendiagrammen erstellen. Du solltest jedoch immer wieder
überprüfen, ob die Tabellen den Normalformen genügen.
Übung 6.11:
Welcher Normalform widerspricht die Speicherung von Geburtsdatum und Alter
von Personen?
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 17
Übung 6.12:
Überprüfe in beiden Tabellen auf 3.NF. In beiden Tabellen gibt es eine
Abhängigkeit von Nichtschlüssel-Attributen. Aber nur in einer liegt eine
transitive Abhängigkeit vor, so dass man diese Tabelle aufspalten muss.
Fahrzeug
Kennzeichen
A-CW27
A-BM2332
A-XY1010
A-OH234
A-BE303
Fabrikat
Golf III
Sprinter
Golf III
Astra
Golf IV
Fahrzeug
Kennzeichen
A-CW27
A-BM2332
A-XY1010
A-OH234
A-BE303
FahrgestNr
W…2196
W…9270
W…8244
W…3062
W…1196
Hersteller
VW
DaimlerChrysler
VW
Opel
VW
Hersteller
VW
DaimlerChrysler
VW
Opel
VW
Übung 6.13:
Wende auf die Rohdaten der Tabelle SpieltIn (Auszug einer Datenbank eines
Sportvereins) die Regeln der Normalisierung. Überführe diese Tabellen
a)
b)
c)
in die 1.Normalform
in die 2.Normalform
in die 3.Normalform
SpieltIn
MitgliedNr
1
3
6
4
MannschNr
1
3
1
1
SeitWann
04.05.2001
11.07.1999
12.01.2000
08.11.2000
Alter
23
19
22
22
Funktion
Sturm
Verteidigung
Sturm
Torwart
Die Tabelle SpieltIn des Sportvereins hat einen kombinierten Schlüssel aus
MitgliedNr und MannschaftNr. Der Verein möchte auch festhalten, seit wann
ein Mitglied in einer Mannschaft spielt, wie alt es ist und welche Funktion es in
der Mannschaft hat. Teste oben stehende Tabelle auf die Normalformen.
Gymnasium Königsbrunn
Ralph Henne
Kapitel 6
Normalisierung
Seite 18
Übung 6.14
Nimm deinen Stundenplan und übertrage ihn in eine datenbanktaugliche
Tabelle. In dieser Datenbank sollen die folgenden Daten erfasst werden:
Fach, Lehrer, (Wochen)Tag, Stunde, Beginn (der Stunde).
Die drei NF sollen erfüllt sein! Zeichne ein Klassendiagramm.
Übung 6.15:
Wende auf die Rohdaten eines Sportvereins die Regeln der Normalisierung.
Überführe diese Tabelle
a)
b)
c)
in die 1.Normalform
in die 2.Normalform
in die 3.Normalform
und erstelle hinterher ein Klassendiagramm.
Sportverein (Rohdaten)
M-Nr
Name
1
Heinz Gruber
Ge
m
2
Udo Meier
m
3
Frieda Baum
w
4
Ali Berg
m
Adresse
Hauptstraße 7,
86343 Königsbrunn
Bierweg 35,
86199 Augsburg
Lerchenweg 4,
86161 Augsburg
Kirchgasse 7,
86343 Königsbrunn
Sportarten(Beitrag)
F(50.-) H(40.-)
F(50.-) L(55.-)
L(55.-)
F(50.-) V(40.-)
Übung 6.16:
Wende auf die Rohdaten einer Volkshochschule die Regeln der Normalisierung.
Überführe diese Tabelle
a)
b)
c)
in die 1.Normalform
in die 2.Normalform
in die 3.Normalform
und erstelle hinterher ein Klassendiagramm.
Volkshochschule(Rohdaten)
KursNr
Kurs
Dozent
VSF217
Französisch1 LeClerc
Tel
08212345
VSF218
08212345
Französisch2
Gymnasium Königsbrunn
LeClerc
Tag
Mo
Do
Di
Di
Zeit
19:00
19:00
17:00
18:00
Raum
E12
138
E12
E12
Ralph Henne
Kapitel 6
Normalisierung
VSF219
VSS13
VSS14
VSS15
Französisch3
Spanisch1
Spanisch2
Spanisch3
Simpson
Rodriguez
Rodriguez
Lopez
08213451
08213541
08213541
08215544
Seite 19
Di
Mo
Mo
Mi
19:00
17:00
19:00
17:00
138
139
139
E12
Übung 6.17:
Wende auf den folgenden Auszug eines Chemikalien-Katalogs die Regeln der
Normalisierung. Überführe diese Tabelle
a)
b)
c)
in die 1.Normalform
in die 2.Normalform
in die 3.Normalform
und erstelle hinterher ein Klassendiagramm.
Chemikalien (Auszug aus einem Katalog)
FN
Formel
MG
Bezeichnung
12540 C6H6
78.1147 Benzene, puriss.
BRN
969212
12549
C6H6
78.1147
Benzene, for HPLC
969212
12550
C6H6
78.1147
Benzene, ACS
969212
12560
C6H6
78.1147
Benzene, purum
969212
82700
C5H5N
79.1023
Pyridine, for Uvspectroscopy
103233
82701
56380
C5H5N
C5H5NO
79.1023
95.1017
Pyridine, for sequence analysis
2-Hydroxypyridine, pract.
103233
105757
56390
C5H5NO
95.1017
3-Hydroxypyridine, purum
105699
56400
C5H5NO
95.1017
4-Hydroxypyridine, techn.
105800
82811
C5H5NO
95.1017
Pyridine-N-oxide, pract.
105257
Gymnasium Königsbrunn
Preise
5,0ml:48,50;
10ml:83,30
1,0l:48,50;
2,5l:101,50
500ml:24,70;
1,0l:48,20;
2,5l:103,40
1,0l:23,60;
2,5l:42,50
250ml:92,10;
1,0l:343,40
250ml:177,90
100g:62,30;
500g:289,10
25g:17,80;
100g:60,20
25g:35,60;
100g:130,90
100g:37,90;
500g:159,00
Ralph Henne
Herunterladen