07.06.2014 Aufrufe

6 Normalisierung - Ralph Henne

6 Normalisierung - Ralph Henne

6 Normalisierung - Ralph Henne

MEHR ANZEIGEN
WENIGER ANZEIGEN

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>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!