Current Page: | Greybox » Authoring » Course ID: medieninformatik » Modules » Module ID: m06 » Learning Units » Unit ID: 4_1_02 |
---|---|
Last Modified: | Tuesday, 2015-05-05 - 08:09:02 |
Tools: | Validate — Preview XML Preview HTML Preview PDF |
Alternative: | Printable HTML |
Title: | Normalisierung | ||
---|---|---|---|
Abstract: | In dieser LU werden die Grundlagen der Normalisierung von Relationsschemata erläutert. Nach der Einführung von Datenanomalien, Schlüsselbegriffen und verschiedene Typen von Abhängigkeiten, werden die 1NF, 2NF und 3NF vorgestellt. | ||
Status: | Version: | 8.0 | |
History: |
Acronyme done. im Review wurde nichts beanstandet. Rechtschreibfehler gecheckt (LOD1+LOD2). Unbekannte Character ausgebessert. Sourcecode repariert. |
Author 1: | Bernhard Tatzmann | E-Mail: | bernhard@isys.uni-klu.ac.at |
---|---|---|---|
Author 2: | (empty) | E-Mail: | (empty) |
Author 3: | (empty) | E-Mail: | (empty) |
Author 4: | (empty) | E-Mail: | (empty) |
Author 5: | (empty) | E-Mail: | (empty) |
Organization: | Universität Klagenfurt - Institut für Informatik-Systeme |
Einleitung1Auto
2AutoBeim Design von Relationsschemata ist es wichtig darauf zu achten, dass die einzelnen Tabellen (vgl. Relationen) keine unkontrollierten Redundanzen enthalten. Diese können nämlich, wie später gezeigt wird, zu Datenanomalien führen. Unkontrollierte Redundanzen können durch einen Prozess, der Normalisierung genannt wird, beseitigt werden. Die Normalisierung kann durch Transformation der Tabellen in bestimmte Normalformen durchgeführt werden. In dieser LU wird auf die folgenden Normalformen näher eingegangen:
Weitere Normalformen die jedoch nicht behandelt werden sind z.B.: Boyce-Codd Normalform Cod72, Vierte Normalform Fag77 und Fünfte Normalform Fag79. Nachdem das Konzept der Normalisierung über Datenanomalien motiviert wird, müssen noch durch Wiederholung der verschiedenen Schlüsselbegriffe bzw. der Definitionen verschiedener Abhängigkeiten die theoretischen Grundlagen geschaffen werden.
Datenanomalien1Schlechtes Design
Relation Schlechtes Design
Auto
2AutoSind Datenbankentabellen nicht normalisiert, so enthalten sie Redundanzen, die beim Manipulieren zu Datenanomalien führen können. Dies soll anhand eines schlechten Designs im folgenden Beispiel gezeigt werden. Schlechtes DesignRelation Schlechtes Design
AutoIn obiger Tabelle werden vermietete Produkte bestimmten Kunden zugeordnet. Beim Vermieten eines weiteren Produktes muss ein neuer Eintrag eingefügt werden. Handelt es sich dabei um eine Person, die schon als Kunde registriert ist, so erscheinen die personenbezogenen Daten wie Nach-/Vorname, Aufenthaltsort und Geburtsjahr mehrfach (siehe "Newton"). Dies ist nicht nur eine Verschwendung von Speicherplatz, sondern kann auch zu diversen Datenanomalien führen. UpdateanomalienSollen personenbezogene Daten in obigem Beispiel geändert werden, so müssen aufgrund der Redundanz alle Einträge zu einer bestimmten Person berücksichtigt werden. Ändert zum Beispiel der Kunde "Newton" seinen Aufenthaltsort, so müssen beide vorhandenen Einträge modifiziert werden. Wird dies vergessen, so ergeben sich Inkonsistenzen. Außerdem ergibt sich neben dem oben erwähnten Nachteil des hohen Speicheraufwandes noch das Problem längerer Bearbeitungszeiten, da mehrere Einträge bearbeitet werden müssen KE99. EinfügeanomalienEinfügeanomalien treten dann auf, wenn nicht alle nötigen Attribute für einen bestimmten Eintrag bekannt sind und so Attribute auf NULL gesetzt werden müssen. Will man z.B. einen neuen Kunden "Einstein" anlegen, der noch keine Artikel gemietet hat, so müssen die Felder Produktnummer und Stückzahl auf NULL gesetzt werden. Der Grund dafür liegt darin, dass beim Entwurf der Tabelle Informationen zweier Entitytypen (siehe Entity-Relationship Modell) innerhalb einer Tabelle abgelegt wurden KE99. LöschanomalienDas Problem der Vermischung verschiedener Entitytypen kommt auch dann zum Tragen, wenn nur die Instanz eines der beiden Typen gelöscht werden soll. Gibt z.B. der Kunde Keppler seine Teleskope zurück, so werden die entsprechenden Einträge gelöscht und seine personenbezogenen Daten gehen ebenso verloren. Ebenso wie oben wäre hier eine Trennung der Entitytypen in mehrere Tabellen hilfreich. Schlüssel1Relation Schlüsselkandidaten
Auto
2AutoZum Verständnis des weiteren Inhalts ist die Kenntnis einiger Schlüssel notwendig. Ein Schlüssel ist ein Attribut oder eine Gruppe von Attributen eines Tupels, die dieses eindeutig von den anderen Tupeln der Relation unterscheidet. SchlüsselkandidatenEin Schlüsselkandidat besteht aus einem oder mehreren Attributen, die einen Eintrag einer Relation eindeutig bestimmen. Dabei ist darauf zu achten, dass alle Attribute, die verwendet werden, auch wirklich notwendig sind. Die folgende Beispiel-Relation zeigt die Bestimmung von Schlüsselkandidaten: Relation Schlüsselkandidaten
AutoDie möglichen Schlüsselkandidaten dieser Relation wären A2 und A4, da diese einen Eintrag der Relation eindeutig identifizieren können. SuperschlüsselEin Superschlüssel kann im Gegensatz zu einem Schlüsselkandidaten auch aufgeteilt werden und man würde trotzdem noch einen Schlüssel erhalten, der den Tabelleneintrag eindeutig identifiziert. Im obigen Beispiel wäre dies z.B. {A2, A3, A4} , da auch noch die Teilmengen {A2, A4} bzw. {A2} gültige Schlüsselkandidaten darstellen. PrimärschlüsselDer Primärschlüssel ist ein Schlüsselkandidat. Abgesehen von inhaltlichen Kriterien wird meist der kleinste Schlüsselkandidat als Primärschlüssel ausgewählt. Abhängigkeiten1Funktionale AbhängigkeitenRelation Funktionale Abhängigkeiten
Auto
Allgemein: Transitive AbhängigkeitenErweiterung der obigen Beispiel-Relation um ein weiteres Attribut: Relation Transitive Abhängigkeiten
Autoschon bekannt: neu: transitive Abhängigkeit :
2AutoBei den oben beschriebenen Vermischungen verschiedener Entitytypen kommt es zu Abhängigkeiten zwischen den einzelnen Attributen, die zu den erwähnten Anomalien führen. Im Folgenden werden die verschiedenen Ausprägungen der Abhängigkeiten näher erläutert, um in weiterer Folge beim Prozess der Normalisierung gezielt gegen diese vorgehen zu können. Funktionale AbhängigkeitenMan betrachte die folgende Tabelle mit den beiden Spalten Kundennummer und Produktnummer : Relation Funktionale Abhängigkeiten
AutoDas Attribut Kundennummer fungiert dabei als Primärschlüssel. Die Spalte Produktnummer enthält mehrfach gleiche Einträge. Soll nun ein bestimmter Eintrag anhand der Produktnummer eindeutig ausgewählt werden, so ist dies nur mit Hilfe der Kundennummer möglich. Es ergibt sich also eine Abhängigkeit zwischen den beiden Attributen Kundennummer und Produktnummer. Diese Abhängigkeit wird funktionale Abhängigkeit genannt und wird formal folgendermaßen angeschrieben: Kundennummer -> Produktnummer Dies bedeutet: oder: Allgemein: Transitive AbhängigkeitenErweitert man die obige Beispiel-Relation um ein weiteres Attribut, welches die Bauart des Teleskops speichert, so ergibt sich zum Beispiel folgende Tabelle: Relation Transitive Abhängigkeiten
AutoWie schon oben erwähnt, ist die Produktnummer funktional abhängig von der Kundenummer . Da mehrere Teleskope von der gleichen Bauart sein können ergibt sich auch eine funktionale Abhängigkeit der Bauart von der Produktnummer. Dies lässt sich in der folgenden Darstellung noch besser erkennen: Relation Transitive Abhängigkeiten - Getrennte Darstellung 1
Relation Transitive Abhängigkeiten - Getrennte Darstellung 2
AutoDie Sterne symbolisieren nicht relevante Tabelleneinträge. Da nun Kundennummer Produktnummer determiniert und auch Produktnummer Bauart determiniert, kann man sagen, dass auch Bauart von Kundennummer funktional abhängig ist. Diese Abhängigkeit nennt sich transitive Abhängigkeit : (Kundennummer -> Produktnummer) (Produktnummer -> Bauart) =>(Kundennummer -> Bauart)
Normalisierung1Erste Normalform (1NF)Relation, die 1NF verletzt
Auto
Relation in 1NF (Version 1)
AutoAllgemein: Zweite Normalform (2NF)
Relation, die 2NF verletzt
Auto
Relation Kunde
AutoKundennummer->{Nachname, Vorname, Aufenthaltsort, Geburtsjahr} Relation Verleih
Auto(Kundennummer, Produktnummer)->Stückzahl keine partiellen Abhängigkeiten vom Schlüssel mehr vorhanden: Allgemein: Dritte Normalform (3NF)
Relation, die 3NF verletzt
Autofunktionalen Abhängigkeiten:
transitive Abhängigkeit enthalten: Kundennummer -> Aufenthaltsort -> Filtertyp Lösung:
Relation Kunde
Relation Filtertyp
Relation Verleih
AutoAllgemein:
2AutoNachdem die Notwendigkeit der Normalisierung nun durch das mögliche Auftreten von Datenanomalien motiviert wurde, und mit den Definitionen von Schlüsseln und Abhängigkeiten die theoretischen Voraussetzungen geschaffen wurden, ist es nun möglich das Konzept der Normalisierung zu erläutern. Erste Normalform (1NF)In der ersten Normalform müssen alle Attribute atomare Wertebereiche haben. Im folgenden Beispiel ist dies z.B. nicht der Fall: Relation, die 1NF verletzt
AutoDas Attribut Produktnummer ist mengenwertig. Dies ist in der ersten Normalform nicht erlaubt. Um die obige Relation in eine Form zu bringen, die der ersten Normalform entspricht ist es nötig mengenwertige Attribute zu vermeiden. Dies kann durch Auflösen in mehrere Tupel erreicht werden und würde bei diesem Beispiel in der folgenden schon bekannten Relation resultieren: Relation in 1NF (Version 1)
AutoEine weitere Möglichkeit wäre, die Relation in zwei Tabellen aufzuspalten: Relation in 1NF (Version 2, Teil 1)
Relation in 1NF (Version 2, Teil 2)
AutoAllgemein kann gesagt werden: Zweite Normalform (2NF)Um eine Relationsschema in die zweite Normalform zu bringen, so muss es die erste Normalform erfüllen und zusätzlich darf kein Attribut, das nicht zu einem Schlüssel gehört, nur teilweise vom Schlüssel abhängig sein. Bezogen auf die obige Relation bedeutet dies folgendes: Relation, die 2NF verletzt
AutoDer Primärschlüssel lautet in dieser Relation (Kundennummer,Produktnummer) . Stückzahl wäre z.B. vollständig von diesem Schlüssel abhängig. Alle anderen Attribute wie Nachname , Vorname , usw. sind hingegen nur teilweise vom Schlüssel abhängig (nur von Kundennummer). Um dieses Relationsschema in die zweite Normalform zu bringen wird das Schema so in mehrere Tabellen aufgeteilt, dass alle partiellen Abhängigkeiten verschwinden: Relation Kunde
AutoKundennummer->{Nachname, Vorname, Aufenthaltsort, Geburtsjahr} Relation Verleih
Auto(Kundennummer, Produktnummer)->Stückzahl In diesem Relationsschema sind alle Nichtschlüsselattribute voll funktional vom Schlüssel abhängig, d.h., es treten keine partiellen Abhängigkeiten vom Schlüssel auf. Definition: Allgemein kann gesagt werden, dass ein Relationsschema die 2NF475 verletzt, wenn es mehrere Entitytypen umfasst KE99. Dritte Normalform (3NF)Ein Relationsschema in dritter Normalform muss in erster und zweiter Normalform sein und alle Nichtschlüsselattribute dürfen nur direkt und nicht transitiv vom Schlüssel abhängen. Um dies zu erläutern wird die Relation Kunde von zuvor um das Attribut Filtertyp , der für eine gewisse Stadt benötigt wird, erweitert: Relation, die 3NF verletzt
AutoDie funktionalen Abhängigkeiten dieser Relation sind die folgenden: Kundennummer->{Nachname, Vorname, Aufenthaltsort, Geburtsjahr} Dies bedeutet, dass die Relation auch nach der Erweiterung noch immer in 2NF475 ist. Was auffällt ist, dass hier eine transitive Abhängigkeit enthalten ist. Der Aufenthaltsort ist nämlich funktional von der Kundennummer abhängig und der Filtertyp vom Aufenthaltsort . Dies widerspricht der obigen Vorgabe, dass Relationen in 3NF476 keine Nichtschlüsselattribute enthalten dürfen, die indirekt vom Schlüssel abhängen. Dieses Problem kann wiederum durch Aufspaltung nach dem folgenden Schema gelöst werden:
Führt man dieses Prinzip aus, so ergibt sich folgendes Relationsschema: Relation Kunde
Relation Filtertyp
Relation Verleih
AutoDefinition: Zusammenfassung1Auto
2AutoZur Vermeidung der häufigsten Anomalien ist die 3NF476 ausreichend. Es gibt jedoch noch weitere Normalformen, auf deren Beschreibung hier jedoch verzichtet wird, z.B.:
Neben den Artikeln Cod72, Fag77 und Fag79 sei auch auf KE99 und Bob97, die Zusammenfassungen aller Normalformen präsentieren. Bibliographie2AutoCod70 Cod72 Fag77 Fag79 Bob97 KE99 MS04 |
(empty) |