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