Folie 1

Werbung
Datenbanken
Rückblick:
Datenbank-Entwurfsprozess
Semantische Datenmodellierung
(vgl. Kapitel 2)
Überführung des semantischen
Datenmodells in das relationale
Modell (vgl. Kapitel 3)
Das relationale Modell wird in
eine normalisierte Form
gebracht.
1
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Normalisierung von relationalen Datenbanken
Anomalien:
Datenbanken ändern ihren Zustand ständig durch Einfügen, Ändern oder Löschen von Tupeln.
Wie wir im 1. Kapitel gesehen haben, sind Inkonsistenzen von Datenbanken, also Zustände, die
die Realität nicht richtig wiedergeben, unerwünscht. So führen z.B. Redundanzen häufig zu
Inkonsistenzen. Nur bei den genannten Zustandsänderungen können nicht gewünschte
Zustände entstehen, die man mit dem Begriff Anomalie bezeichnet. Hingegen braucht das Lesen
(also Informieren) nicht im Bezug auf Anomalien betrachtet werden, da Leseoperationen den
Datenbank-Zustand nicht verändern.
Normalisierung:
Die Normalisierung ist ein Vorgehen, das auf vorhandene relationale Datenbanken angewendet
werden kann. Das Verfahren garantiert – angewendet auf Relationen – im Ergebnis eine Menge
von Relationen mit der gleichen Semantik wie zu vor, die jedoch normalisiert sind. Die Menge der
Relationen nimmt durch den Normalisierungsprozess zu.
Mit der Kenntnis der Normalisierung und durch den Prozess der guten Modellierung können
Anomalien zu einem großen Teil bereits beim Entstehungsprozess des Datenmodells vermieden
werden. Insofern empfiehlt es sich, den Datenmodellierungs-Prozess richtig zu durchlaufen.
2
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Die Einfüge-Anomalie beschreibt eine Anomalie, die auftritt, wenn ein Tupel eingefügt
wird.
Was passiert, wenn ein neuer Verkaufsmarkt eingefügt werden soll, für den noch keine
Produkte existieren?
Was passiert, wenn ein neues Produkt erzeugt wird, das noch auf keinem Markt existiert?
3
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Beispiel: Einfügen des Produktes (33033, Schüssel, Gebrauch) in die Tabelle ohne zugehörigen Markt:
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
33033
Schüssel
Gebrauch
???
???
???
Problematik (Einfüge-Anomalie):
•
Die neue (letzte) Zeile ist nicht vollständig.
•
Der Teilschlüssel Verkaufsmarkt erhält keinen Wert (nicht zulässig).
•
Angenommen es existiert noch kein Markt, aber sehr viele Produkte:
Der benötigte Speicher ist etwa doppelt so hoch wie die Menge der Daten.
4
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Die Änderungs-Anomalie beschreibt eine Anomalie, die auftritt, wenn ein Tupel geändert
wird.
Was passiert, wenn der Marktstandort eines Verkaufsmarktes (z.B. Odenwälder
Töpfermarkt) geändert werden soll?
Was passiert, wenn die Funktion eines Produktes (z.B. 20131 von Deko zu Gebrauch)
geändert werden soll?
5
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Beispiel: Ändern des Produktes mit Nummer 20131: Funktion ist jetzt „Gebrauch“
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Problematik (Änderungs-Anomalie):
•
Die zu ändernde Information ist redundant gespeichert, weil jedes Produkt so häufig
vorkommt wie es auf Märkten existiert.
•
Obwohl nur eine Änderung in der Realität durchgeführt werden soll, sind hier mehrere (3)
Änderungen vorzunehmen.
6
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Die Lösch-Anomalie beschreibt eine Anomalie, die auftritt, wenn ein Tupel gelöscht wird.
Was passiert, wenn ein Produkt gelöscht wird?
Was passiert, wenn ein Produkt gelöscht wird, das das einzige (aktuelle) auf einem Markt ist?
Was passiert, wenn ein Markt gelöscht wird?
Was passiert, wenn ein Markt gelöscht wird, auf dem ein Produkt angeboten wird, das auf
keinem anderen angeboten wird?
7
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Anomalien (Beispiel):
Töpferprodukt Markt
Beispiel: Löschen des Produktes mit Nummer 20131.
gelöschte
Zeilen
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Problematik (Lösch-Anomalie):
•
Nur ein Produkt soll gelöscht werden, aber 3 Zeilen müssen dafür wegfallen.
•
Obwohl nur ein Produkt zu löschen ist, wird ein Markt (Rheinischer Tonmarkt) komplett
verschwinden, weil dieses Produkt das einzige auf dem Markt war.
8
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Ursachen der Anomalien
9
•
Die Ursache von Anomalien liegt in der Redundanz der Daten. Sobald ein Faktum mehrfach
(also redundant) gespeichert ist, läuft man Gefahr, bei Änderungen (Löschungen,
Einfügungen) Fehler zu machen.
•
Die Tatsache, dass man ein Faktum mehrfach abspeichert (bzw. wie in dem Beispiel
abspeichern muss), liegt darin begründet, dass die Relationen ungünstig gewählt werden.
So erscheint es bei näherer Betrachtung unsinnig, dass man Produkte und Märkte in einer
Relation unterbringt.
•
Das Erkennen von ungünstigen Relationen sollte nicht nur intuitiv erfolgen. Das Konzept der
funktionalen Abhängigkeit ermöglicht es, systematisch solche Relationen zu finden.
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Funktionale Abhängigkeit
Funktion zwischen einer Menge A und B:
Abbildung einer Menge A auf eine Menge B, für die gilt:
Für alle a  A gibt es genau ein b  B.
Funktionale Abhängigkeit:
Eine Menge B von Attributen B1, B2, … Bn ist funktional abhängig von einer Menge A von
Attributen A1, A2, … An, wenn eine Funktion zwischen A und B besteht,
d. h. für alle {a1,a2, … an}  A gibt es genau ein {b1, b2, … bn }  B.
Mit anderen Worten:
In einer Relation ist Attribut(-kombination) B ist funktional abhängig
von Attribut(-kombination) A,
wenn für gleiche A-Werte jeweils gleiche B-Werte vorhanden sind.
Darstellung:
A  B bedeutet: B hängt funktional von A ab, wobei A und B jeweils ein(e) Attribut(-menge) ist.
10
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Funktionale Abhängigkeit (Beispiel):
A
B
C
1
2
3
1
2
2
3
2
2
Mögliche Aussagen:
•
A  B gilt aktuell. Jedoch könnte zu einem anderen Zeitpunkt eine Zeile (1, 3, 3) eingefügt
•
•
•
•
werden, so dass A  B nicht mehr gelten würde.
B  C gilt nicht, da es für den gleichen B-Wert (2) verschiedene C-Werte (3 und 2) gibt.
C  B gilt aktuell. Jedoch könnte zu einem anderen Zeitpunkt eine Zeile (1, 3, 2) eingefügt
werden, so dass C  B nicht mehr gelten würde.
A, B  C gilt nicht, weil es für eine gleiche A,B-Kombination (1, 2) zwei verschiedene CWerte (3 und 2) gibt.
A  A gilt immer (trivial).
Der Primärschlüssel einer Relation kann über die funktionale Abhängigkeit wie folgt spezifiziert
werden: Ein Attribut (oder eine Kombination von Attributen) K heißt Schlüssel einer Relation,
wenn für alle Attribute X aus der Relation gilt: K  X. Zusätzlich muss gelten, dass keine echte
Teilmenge von K diese Bedingung erfüllt (Minimalitätsbedingung).
Die funktionale Abhängigkeit wird aktiv definiert (so wie der Schlüssel), d.h. es wird vor
Eintragung von Tupeln festgelegt, welche funktionale Abhängigkeiten gelten und anschließend
wird bei jedem Eintrag geprüft, ob diese eingehalten werden kann. Falls nicht, wird der Eintrag
nicht akzeptiert.
11
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
1. Normalform (1NF)
Ein Relationenschema ist in 1. Normalform (1NF), wenn alle Attribute des Schemas elementar
(atomar) sind.
Dies bedeutet, dass für die Attribute nur einfache, unstrukturierte Attribute erlaubt sind.
Listenartige, mengenwertige oder relationenartige Attribute sind nicht erlaubt.
Erlaubte Datentypen: integer, real, string (=char(), =varchar()), enum.
Nicht erlaubte Datentypen: array, record, list.
Nicht erlaubte Datentypen sind ohne Probleme in erlaubte zu überführen:
12
•
Ein record ist selbst als Relation der record-Elemente zu definieren.
•
Ein array oder eine Liste kann durch eine Einführung einer Relation, die über den Schlüssel
der Ursprungsrelation verbunden wird, zu erreichen.
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
1. Normalform (Beispiel)
Lehrbücher
ISBN
Titel
Autor
3-2304-0619
UML Distilled
Fowler
Nicht-atomare
Attributwerte sind
verboten !
Kendall
3-8273-1282-5
Refactoring
Fowler
3-8266-0619-1
Datenbanken
Heuer
Saake
Das Attribut Autor erlaubt pro Tupel (also pro Lehrbuch) für die 1NF nur einen Autor.
Jedoch sind mehr Autoren pro Buch in der Realität erwünscht.
Es ist nicht erlaubt, etwa den Attribut-Typ array () of string zu wählen, da sonst die
1NF-Eigenschaft verletzt wird.
13
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
1. Normalform (Beispiel)
Lehrbücher
Buchautoren
ISBN
Titel
ISBN
Autor
3-2304-0619
UML Distilled
3-2304-0619
Fowler
3-8273-1282-5
Refactoring
3-2304-0619
Kendall
3-8266-0619-1
Datenbanken
3-8273-1282-5
Fowler
3-8266-0619-1
Heuer
3-8266-0619-1
Saake
Die Lösung liegt in der Ausgliederung des Attributs, das array-artig war.
14
•
Ein neues Relationenschema wird erzeugt, in der dieses Attribut zusammen mit dem
Primärschlüssel aufgenommen wird.
•
Beide Attribute zusammen bilden den Primärschlüssel des neuen
Relationenschemas.
•
Der Schlüssel des ursprünglichen Relationenschemas wird in dem neuen
Relationenschema Fremdschlüssel.
•
Haben mehrere Autoren an einem Buch mitgeschrieben, so werden
für solche Bücher mehrere Zeilen in der neuen Relation aufgenommen.
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
1. Normalform (Aufgabe)
Gegeben sei das folgende Relationenschema:
ProfName
Vorlesung
Weber
30.4110, Programmieren 1, 6 SWS
30.4304, Datenbanken, 4 SWS
Karczewski
15
30.4304, Datenbanken, 4 SWS
1.
Ist dieses Relationenschema in 1. Normalform? Erläutern Sie hierzu kurz die Inhalte
des o.a. Schemas.
2.
Wenn nicht: Erstellen Sie 1NF-Schemata mit gleicher Semantik.
3.
Nachdem Sie die Inhalte identifiziert und die Schamta normalisiert haben: Erstellen
Sie ein EERM, das den Sachverhalt ausdrückt.
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (2NF)
Ein Relationenschema ist in 2. Normalform (2NF), wenn
•
es in 1. Normalform ist und
•
jedes Nichtschlüsselattribut voll funktional von jedem Schlüssel abhängt (und nicht nur von
einem Teil des Schlüssels)
Abhängigkeiten von einem Teilschlüssel führen zu Anomalien.
Es gilt: Besteht der Schlüssel nur aus einem Attribut und 1NF ist gegeben, dann liegt stets 2NF
vor, weil Teilschlüssel-Abhängigkeit nicht möglich ist.
16
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
Gegeben sei das Anfangsbeispiel
Töpferprodukt Markt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
11022
Tee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
10622
Kaffee-Service
Gebrauch
Internat. Tonmarkt
Strasbourg
200 €
20131
Schale
Deko
Rheinischer Tonmarkt
Mainz
80 €
20131
Schale
Deko
Odenwälder Töpfermarkt
Erbach
50 €
20131
Schale
Deko
Internat. Tonmarkt
Strasbourg
120 €
40030
Krug
Deko
Internat. Tonmarkt
Strasbourg
100 €
40031
Krug
Deko
Odenwälder Töpfermarkt
Erbach
80 €
Bei einem komplexen Relationenschema sollte man zunächst analysieren, welche Inhalte
dargestellt werden. Man muss die Sicht der Anwendung (des Kunden) annehmen, um die
Schemata anschließend richtig (normalisiert) zu formen.
Dieser Prozess des Re-Engineering funktioniert nur über das Verstehen, was gemeint war.
Folgende Schritte eignen sich, um zum Ergebnis zu gelangen:
17
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
1.
Schritt: Identifizieren der funktionalen Abhängigkeiten:
Man erkennt, dass in diesem Schema zwei voneinander unabhängige Entitäten abgebildet sind:
Produkte und Märkte. Produkte besitzen eine Nummer, eine Art und eine Funktion. Märkte
besitzen einen Namen (Verkaufsmarkt) und einen Standort. Der marktspezifische Preis bezieht
sich auf Produkt und Markt gleichermaßen.
Hieraus ergeben sich folgende funktionalen Abhängigkeiten:
Prod-Nr  Produktart; Produktart  Funktion; Verkaufsmarkt  Marktstandort;
Prod-Nr, Verkaufsmarkt  marktspez. Preis
2.
Schritt: Überprüfen auf die Normalformen
1NF ist gegeben, denn jedes Attribut ist atomar (elementar, keine Listen oder Records).
2NF ist nicht gegeben, denn es gibt einige Attribute, die nicht vom ganzen Schlüssel (voll)
funktional abhängen, sondern nur von einem Teil, z.B.
Produktart und Funktion hängen nur von Prod-Nr, nicht von Verkaufsmarkt ab,
Marktstandort hängt nur von Verkaufsmarkt, nicht von Prod-Nr ab.
18
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
3.
Schritt: Auflösen der Teilabhängigkeiten durch Aufteilen des Relationenschemas
Das Relationenschema muss so aufgetrennt werden, dass die gefundenen Teilabhängigkeiten
(2. Schritt) nicht mehr auftreten können.
Wir definieren ein Schema mit den vom Teilschlüssel Prod-Nr abhängigen Attributen, ein
zweites mit den von Verkaufsmarkt abhängigen Attributen und ein drittes mit den von beiden
Teilschlüsseln abhängigen Attributen. Also:
Ursprungsschema:
Töpferprodukt Markt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
Normalisierte Schemata (2NF):
Töpferprodukt
Prod-Nr.
Markt
Produktart
Funktion
Verkaufsmarkt
Marktstandort
TöpferproduktMarkt
Prod-Nr.
19
Stephan Karczewski - Datenbanken
Verkaufsmarkt
Marktspez. Preis
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
4.
Schritt: Überprüfen auf die Verbindungen zwischen den neuen Relationenschemata, so dass
gewährleistet ist, dass die Informationen im ursprünglichen Relationenschema noch
vorhanden sind. In diesem Schritt muss untersucht werden, dass kein neues Schema
isoliert ohne Verbindung zum Rest der Schemata exisitert. Ggfs. muss eine solche
Verbindung nachträglich hergestellt werden.
Im Beispiel ist in jedem Schema wenigstens eines der beiden Schlüsselattribute des
Ursprungsschemas vorhanden. Es ist nur noch dafür zu sorgen, dass entsprechende
Fremdschlüssel eingeführt werden.
Die Produkt-Nr. in TöpferproduktMarkt wird Fremdschlüssel zur Produkt-Nr. in Töpferprodukt
und
der Verkaufsmarkt in TöpferproduktMarkt wird Fremdschlüssel zu Verkaufsmarkt in Markt.
Töpferprodukt
Prod-Nr.
Markt
Produktart
Funktion
Verkaufsmarkt
Marktstandort
TöpferproduktMarkt
Prod-Nr.
20
Stephan Karczewski - Datenbanken
Verkaufsmarkt
Marktspez. Preis
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
Folgende Regeln müssen bei diesem Vorgehen zur Normalisierung beachtet werden:
21
•
Funktionale Abhängigkeiten dürfen bei der Aufteilung in verschiedene Relationenschemata
nicht zerlegt werden, d.h. es muss nach der Aufteilung jedes Attribut einer funktionalen
Abhängigkeit des Ursprungsschemas in einer der zerteilten Schemata komplett vorhanden
sein, also müssen z.B. die Attribute Prod-Nr. und Funktion in einem Schema sein, weil sie
gemeinsam in der funktionalen Abhängigkeit Prod-Nr.  Funktion vorkommen.
•
Der ursprüngliche Schlüssel des Relationenschemas muss in einem der zerteilten
Schemata komplett vorkommen. Der Schlüssel darf also nicht selbst zerteilt werden. Man
spricht hier von Verbundtreue. Bei Verletzung der Verbundtreue entstehen isolierte
Schemata bei der Zerteilung. Im Beispiel ist in dem Schema TöpferproduktMarkt der
ursprüngliche Schlüssel vorhanden (Prod-Nr., Verkaufsmarkt ).
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (Beispiel – Verlust der Verbundtreue)
Ursprungsschema:
Töpferprodukt Markt (ohne das Attribut Markspez. Preis )
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
Mit dem Attribut Marktspez. Preis entfällt auch die funktionale Abhängigkeit
Prod-Nr., Verkaufsmarkt  Marktspez.Preis
Normalisierte Schemata (2NF):
Markt
Töpferprodukt
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
TöpferproduktMarkt
Prod-Nr.
Verkaufsmarkt
Marktspez. Preis
Das Schema TöpferproduktMarkt wird nicht mehr benötigt wegen der verlorenen funktionalen
Abhängigkeit. Der ursprüngliche Schlüssel ist nicht mehr komplett in einem Schema vorhanden.
Die Schemata Töpferprodukt und Markt sind nicht mehr miteinander verbunden. Man kann also
nicht mehr abbilden, welches Produkt auf welchem Markt angeboten wird.
22
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
2. Normalform (Beispiel)
Alternativ kann man das Reengineering auch so gestalten, dass man aus dem
Ursprungsschema versucht ein EERM zu entwickeln, das den Sachverhalt wiedergibt.
In unserem Beispiel kann man vermuten, dass es Produkte gibt, die auf Märkten verkauft
werden.
Produkt
(0,*)
1
(1,*)
Markt
Produkt (Prod-Nr., Produktart, Funktion)
Markt (Verkaufsmarkt, Standort)
wirdAngebotenAuf (Marktspez. Preis)
Das EERM wird nach den gelernten Regeln (Kap. 3) überführt in ein relationales Datenmodell.
Produkt
Prod-Nr.
Markt
Produktart
Funktion
Verkaufsmarkt
Marktstandort
wirdAngebotenAuf
Prod-Nr.
23
Stephan Karczewski - Datenbanken
Verkaufsmarkt
Marktspez. Preis
4. Normalisierung
Datenbanken
2. Normalform (Aufgabe)
Gegeben sei das folgende abstrakte Relationenschema, das nicht in 2NF ist.
A
B
C
D
E
F
Schlüssel ist A,B.
Es gelten: A,B  C; A  D; B  E; B  F
Überführen Sie das 2NF-Schema in Schemata, die in 2NF sind.
24
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (3NF)
Ein Relationenschema ist in 3. Normalform (3NF), wenn
•
es in 2. Normalform ist (und somit auch in 1. Normalform) und
•
wenn kein Nichtschlüssel-Attribut transitiv von einem Schlüssel abhängt bzw. alle
Nichtschlüssel-Attribute direkt vom Schlüssel abhängen.
Indirekte Abhängigkeiten vom Schlüssel über Nichtschlüssel-Attribute führen zu Anomalien.
Transitive Abhängigkeiten sind Abhängigkeiten über andere Attribute, also z.B.
C hängt transitiv von A ab, wenn es ein B gibt, so dass gilt: A  B und B  C.
25
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (Beispiel)
Gegeben sei vom Anfangsbeispiel die Relation
Töpferprodukt
Prod-Nr.
Produktart
Funktion
11022
Tee-Service
Gebrauch
10622
Kaffee-Service
Gebrauch
20131
Schale
Deko
20131
Schale
Deko
20131
Schale
Deko
40030
Krug
Deko
40031
Krug
Deko
Auch hier (wie bei 2NF) kann man systematisch die 3. Normalform herstellen.
26
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (Beispiel)
1.
Schritt: Identifizieren der funktionalen Abhängigkeiten:
Prod-Nr.  Produktart; Produktart  Funktion
ergibt sich aus der bereits bei 2NF vorgenommenen Analyse.
2.
Überprüfen auf die Normalformen
1NF ist gegeben, denn jedes Attribut ist atomar (elementar, keine Listen oder Records).
2NF ist gegeben, denn es gibt keine Attribute, die nur von einem Teil des Schlüssels abhängen.
Dies ist in diesem Beispiel nicht möglich, da der Schlüssel nur aus einem Attribut besteht.
3NF ist nicht gegeben, da Funktion transitiv von dem Schlüssel Prod-Nr. abhängt.
27
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (Beispiel)
3.
Schritt: Auflösen der transitiven Abhängigkeit(en)
Das Relationenschema muss so aufgetrennt werden, dass die gefundene(n) transitive
Abhängigkeit(en) (2. Schritt) nicht mehr auftreten können.
Wir definieren ein zusätzliches Relationenschema mit dem Attribut, über das die Transitivität
entsteht (Produktart ) und dem Attribut, das transitiv vom Schlüssel abhängt (Funktion ).
Ersteres wird Schlüssel des neuen Relationenschemas. Das ursprüngliche Relationenschema
wird reduziert um das transitiv abhängige Attribut. Das die Transitivität auslösende Attribut wird
Fremdschlüssel zu dem neuen Schema. Also:
Ursprungsschema:
Töpferprodukt
Prod-Nr.
Produktart
Funktion
Normalisierte Schemata (3NF):
Töpferprodukt
Prod-Nr.
4.
28
Produktart
ProduktFunktion
Produktart
Funktion
Überprüfung: Keines der Schemta ist isoliert (also nicht erreichbar).
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (Beispiel)
Gesamtlösung für das Anfangsmodell
Töpferprodukt Markt (nicht normalisiert)
Prod-Nr.
Produktart
Funktion
Verkaufsmarkt
Marktstandort
Marktspez. Preis
Normalisierte Schemata (3NF):
Töpferprodukt
Prod-Nr.
29
Markt
Produktart
Verkaufsmarkt
ProduktFunktion
TöpferproduktMarkt
Produktart
Prod-Nr.
Funktion
Stephan Karczewski - Datenbanken
Verkaufsmarkt
Marktstandort
Marktspez. Preis
4. Normalisierung
Datenbanken
3. Normalform (Aufgabe)
Ein Lieferant (L) liefert Teile (T) in einer bestimmten Anzahl (A). Die Teile sind zu liefern an einen
Ort (O) des Kunden, der eine Entfernung in Kilometern (K) vom Standort des Lieferanten entfernt
ist.
LTAOK
LNR
TNR
Anzahl
Ort
KM-Entf.
4711
T1
55
Darmstadt
62
4712
T1
44
Darmstadt
62
4712
T2
33
Darmstadt
62
4713
T1
22
Frankfurt
42
Fragen:
30
•
Welche funktionalen Abhängigkeiten ergeben sich aus dem Text?
•
Ist das Relationenschema in 3NF?
•
Wenn nein: Zerlegen Sie das Schema so, dass anschließend ausschließlich 3NF-Schemata
vorhanden sind.
•
Alternative Vorgehensweise: Erstellen Sie ein ER-Diagramm, das den gleichen Sachverhalt
ausdrückt und entwickeln Sie daraus Relationenschemata.
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
Normalformen (Kritik und praktische Relevanz)
Es gibt noch weitere Normalformen (4., 5., Boyce-Codd, konjunktive, Projektion-Verbund), die
jedoch in der Praxis weniger relevant sind.
Kritik an der Normalisierung wird mitunter geübt. Es wird behauptet:
„Normalisierung erfordert mehr Speicherplatz“. Diese Aussage ist falsch, auch wenn mehr
Relationen benötigt werden. Diese sind jedoch kleiner.
„Normalisierte Relationen sind umständlicher zu handhaben, weil man die Inhalte über so viele
Tabellen verteilt“. Diese Aussage ist falsch, da es gute Konzepte gibt (z.B. Views), die es
ermöglichen, dem Anwender eine einfache Handhabung mit der Menge der Tabellen zu
ermöglichen.
„Normalisierte Tabellen reduzieren die Laufzeit-Performance, da man häufiger einen Vebund
zwischen vielen Tabellen vornehmen muss.“ Dies Aussage ist korrekt, so dass man nach
kompletter Normalisierung mitunter eine gezielte Denormalisierung vornimmt, bei der
diejenigen Relationen, für die die negativen Auswirkungen der Nicht-Normalisierung (nahezu)
ausgeschlossen werden können, wieder zusammengefasst werden.
In der Regel wird heute die 3. Normalform verwendet, um die Anomalien zu vermeiden. Bei zu
hohem Performance-Verlust, der auf die Normalisierung zurückzuführen ist, wird in seltenen
Fällen denormalisiert. Bei Neu-Entwicklungen von Datenbanken versucht man, die Anomalien
dadurch zu vermeiden, dass man ein gutes EERM entwirft, bevor man die Relationenschemata
erstellt.
31
Stephan Karczewski - Datenbanken
4. Normalisierung
Datenbanken
3. Normalform (Aufgabe)
Die folgenden Attribute seien alle in einem Relationenschema zusammengefasst:
Kontonummer (K), PLZ (P), Ort (O), Filialnummer (F), Bankname (N), Bankleitzahl (L).
Die Attribute hängen folgendermaßen voneinander ab.
Durch die Bankleitzahl wird der Bankname festgelegt. Die Postleitzahl legt den Ort fest.
Die Filialnummer und die Kontonummer hängen vom Banknamen ab.
32
1.
Zeichnen Sie alle funktionalen Abhängigkeiten auf. Benutzen Sie dabei
die Buchstaben in Klammern.
2.
Ermitteln Sie den Schlüssel zu dem Relationenschema
3.
Begründen Sie, warum das Relationenschema nicht in 2.
und nicht in 3. Normalform ist.
4.
Zerlegen Sie das Relationenschema in Relationenschemata so,
dass diese alle in 3. Normalform sind.
Stephan Karczewski - Datenbanken
4. Normalisierung
Herunterladen