Informatik III Datenbanken

Werbung
Informatik III
Datenbanken
Prof. Dr. R. Laue
Sommersemester 1992
Erstellt von Walter Dorwald, Martin Dobmann und Helmut Hahn
Graphiken von Walter Dorwald, Helmut Hahn und Martin Dobmann
Inhalt:
1. Einfuhrung . . . . . . . . . . . . . .
2. Formale Beschreibungsmittel . . . . . .
3. Datenmodelle . . . . . . . . . . . . .
4. Die Sprache SQL . . . . . . . . . . .
5. Die physikalische Ebene . . . . . . . .
6. Entwurfstheorie relationaler Datenbanken
A. Literaturverzeichnis . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
3
6
11
24
36
90
1. Einfuhrung
Es wird darauf hingewiesen, da die Vorlesung zu groen Teilen aus der im Anhang stehenden Literatur
entnommen wurde.
Beispiel Versicherungsunternehmen
In einem Versicherungsunternehmen gebe es die Sparten
Lebens-, Kfz-, Gebaude-, Kranken-, Hausrat-, Transport- und Rechtsschutzversicherung.
Auerdem gibt es Abteilungen fur die einzelnen Bereiche. Dort arbeiten Spezialisten fur den
jeweiligen Bereich. Die Daten fallen in groen Mengen an. Deshalb erfolgt die Speicherung und
Verwaltung im Computer.
Fur die einzelnen Sparten werden spezielle Auswertprogramme und Datensammlungen benotigt
beziehungsweise vorgenommen. Daher mu man Daten, die mehrere Sparten betreen, mehrfach
speichern.
Vorteil
Jede Sparte ist fur ihre eigenen Daten verantwortlich, daher ergeben sich keine Kompetenzschwierigkeiten und es sind keine zeitaufwendigen Abstimmungen uber Datenfestlegung
zwischen den verschiedenen Abteilungen notig.
Nachteil
Ist eine Information mehrfach vorhanden, so besteht bei einer A nderung das Risiko, da die
Information nicht uberall gleichzeitig geandert wird. Ursachen dafur konnen sein
1. Schlechte Organisation
2. Informationen sind verschieden modelliert (Transformation schwierig)
Beispiel
Die Informationen vom Kunden kommen an eine bestimmte Sparte, zum Beispiel Kontoanderung oder Adressanderung. Bei Zahlungsunfahigkeit wird eine Sparte informiert. Fur
Werbezwecke mu jede Sparte auf die Kundendaten der anderen Sparten zugreifen. Auch die
Rentabiltat und Reaktionen auf den Markt sind spartenubergreifend.
1.1 3-Ebenen-Modell
Man kann sich das 3-Ebenen-Modell wie folgt veranschaulichen
Anwendersichten
Logische Ebene
Sicht 1
Sicht 2
Sicht n
ZZ
ZZ BBB
ZZ BB
ZZ B ZB
Datenbanksystem
Massenspeicher
Physikalische Ebene
1
Die logische Ebene stellt ein Gesamtmodell aller Daten des Unternehmens dar. Der zu verwaltende
Ausschnitt der realen Welt ist hier deniert. Das erfordert die Kenntnis der Bedeutung aller Daten
des Unternehmens. Dies ist somit nicht nur eine datenverarbeitungsspezische Beschreibung!
Die verschiedenen Sichten stellen Ausschnitte aus dieser Gesamtheit dar. Sie entsprechen speziellen
Anwenderwunschen, etwa denen einer Abteilung.
Die physikalische Ebene beschreibt die Datenverarbeitungssicht der Daten. Dies beinhaltet die
Aufteilung in Dateien, Zugriswege, Zugrisrechte und anderes.
Bemerkung
Es wird gefordert, da die Ebenen unabhangig sein mussen.
A nderung der physikalischen Speicherung darf Anwenderprogramme nicht beruhren.
Jederzeit mussen neue Sichten auf vorhandene Daten hinzufugbar sein.
Auf der logischen Ebene sollte es moglich sein, den Ausschnitt der modellierten Welt zu
vergroern, ohne vorhandene Sichten zu andern.
1.2 Datenbanksystem
Die Aufgabe des Datenbanksystems ist es, eine automatische Transformation der Anwenderwunsche zu Datenverarbeitungsanfragen durchzufuhren. Weiterhin mu durch Programme die Rucktransformation der Ergebnisse durchgefuhrt werden. Auerdem mussen die eingegebenen Daten
auf ihre Korrektheit uberpruft werden.
2
2. Formale Beschreibungsmittel
2.1 Das Entity-Relationship-Model
Die Objekte der realen Welt heien Entities. Objekte gleichen Typs werden zu Entity-sets zusammengefat. Objekte besitzen Eigenschaften oder Merkmale, diese heien Attribute. Alle Entities eines
Entity-sets haben die gleichen Attribute.
Beispiel
Hinz und Kunz sind Angestellte. Hinz, Kunz sind also Entities des Entity-sets Angestellter.
Attribute sind etwa Alter, Telefonnummer, Anschrift, Kinderzahl, Gehalt usw.
Seien nun A1 ; : : :; An die Attribute eines Entity-sets E . Dann wird jedem Ai ein Wertebereich D(Ai)
zugeordnet. Jedes Entity E aus E wird beschrieben durch (e1; : : :; en ), wobei ei 2 D(Ai ). Es ist also
ei der Wert des Objekts E bei Eigenschaft Ai. Falls Ai = Alter, dann ist beispielsweise ei = 45 Jahre.
Die Attributwerte dienen dazu, Eigenschaften zu beschreiben. Damit konnen zu diesen Objekten
Informationen ausgegeben werden. Auerdem dienen sie dazu, die Objekte (Entities) zu identizieren.
Es werden haug spezielle Attribute zur Identikation eingefuhrt.
Denition
Eine minimale Menge von Attributen, deren Eintrage ein Objekt bereits festlegen, heit Schlussel,
mit anderen Worten ein minimales S mit S A = fA1 ; : : :; An g und der Eigenschaft, da fur
jedes E = (e1; : : :; en ) 2 E und E 0 = (e01; : : :; e0n ) 2 E mit ei = e0i fur alle Ai 2 S folgt, da E = E 0
ist.
Es reicht, die Werte bei einem Schlussel zu kennen, um ein Objekt eindeutig zu identizieren. Ein
spezieller Schlussel wird im allgemeinen als sogenannter Primarschlussel ausgezeichnet. Es gibt im
allgemeinen mehrere Schlussel. Die Nicht-Primarschlussel heien Sekundarschlussel .
Beispiel
Kraftfahrzeuge lassen sich identizieren uber Hersteller, Fahrgestellnummer, uber Besitzer und
Schlu sselnummer, oder uber Polizeiliches Kennzeichen.
Hier ist die Hinzunahme des redundanten Attributs \Polizeiliches Kennzeichen" aus Datenschutzgrunden erwunscht.
Neben den Entity-sets bestehen auch Beziehungen zwischen diesen.
Denition
Eine Beziehung zwischen E1 ; : : :; En ist eine Teilmenge von E1 : : : En , das heit gewisse n-Tupel
(E1; : : :; En) 2 E1 : : : En .
Beispiel
Es sei E1 = Angestellter und E2 = Abteilung. Dann ist die Beziehung \arbeitet in" die Menge der
(Ang, Abt) mit Ang 2 Angestellter und Abt 2 Abteilung
Ang arbeitet in Abt.
Somit gehoren also (Hinz, Versand) und (Kunz, Reklamation) zu \arbeitet in".
2.2 Das Entity-Relationship-Diagramm
Eine Darstellung der realen Welt durch eine Menge von Entity-sets und Beziehungen wird durch einen
Graphen veranschaulicht. Es gibt 3 Arten von Knoten
3
Attribute werden Kreisen zugeordnet,
Entity-sets werden Rechtecken zugeordnet,
Beziehungen werden Rauten zugeordnet.
Ein Entity-Relationship-Diagramm sieht typischerweise wie folgt aus:
'$'$'$
Name
RufNr
Gehalt
&%&%&%
Angestellter
arbeitet in
Abteilung
'$
'$
Aufgabe
Leiter
&%
&%
Die Kanten verlaufen zwischen Rechtecken und Kreisen zugehoriger Attribute und zwischen Rechtecken und Rauten zugehoriger Entity-sets. Die Beziehungen sind haug 2-stellig, wobei es folgende
Typen von Beziehungen gibt
(1,n)-Beziehung
E1
1
B
n
E2
Zu jedem Entity aus E2 gehort hochstens ein Entity aus E1 . Somit folgt aus (E1; E2) 2 B und
(E10 ; E2) 2 B , da E1 = E10 ist.
Sei E1 = Abteilungsleiter und E2 = Abteilung, dann ist die Relation B \gehort zu" ein Beispiel
fur eine (1,n)-Beziehung.
(n,m)-Beziehung
E1
n
B
m
E2
Es durfen mehrere Entities aus E1 zu mehreren Entities aus E2 in der jeweiligen Beziehung stehen.
Sei E1 = Student und E2 = Vorlesung, dann ist die Relation B \hort" ein Beispiel fur eine (n,m)Beziehung.
4
is a-Beziehung
E1
-
B
E2
Jedes Entity aus E1 ist Spezialisierung eines Entities aus E2
Sei E1 = Techniker und E2 = Angestellter, dann ist die Relation B \ist ein" ein Beispiel fur eine
(is a)-Beziehung.
Fur eine is a-Beziehung gilt
1. Jedes E1 2 E1 hat die Attribute der E2 2 E2 .
2. Ist E1 2 E1 , so ist ihm ein E2 2 E2 zugeordnet, das die gleichen Attributwerte hat.
Mit diesen Beispielen konnen wir ein komplexes Entity-Relationship-Diagramm konstruieren, wobei
die Schlu sselattribute unterstrichen sind.
'$
AngNr
&%
6
is a
Pilot
n
'$
'$
Name
Beruf
&%
Gehalt
&%
Angestellter
'$
AngNr
&%
kann iegen
m
'$
&%
6
is a
Techniker
n
kann warten
Maschine
1
m
iegt
1
n
Flug
1
um
hat gebucht
1
Abug
n
Passagier
5
3. Datenmodelle
Es gibt im wesentlichen drei verschiedene Modelle, und zwar das Netzwerk, das Hierarchische Modell
und das Relationale Modell.
3.1 Netzwerk
In einem Netzwerk gibt es Entity-Sets und (1,n)-Beziehungen.
Denition
Ist B E1 E2 eine (1,n)-Beziehung, so heit E1 Owner-Typ und E2 Member-Typ.
Eine graphische Veranschaulichung fur ein Netzwerk erfolgt durch das Bachmann-Diagramm.
Fur jedes Entity-Set wird ein Rechteck gezeichnet. Eine (1,n)-Beziehung wird durch einen Pfeil dargestellt.
Beispiel
Es werden die Vorlesungen Analysis I, Algebra I und so weiter angeboten. Die Vorlesung
Analysis I h
oren Hinz, Kunz, : : : Meier, und die Vorlesung Algebra I horen die Studenten Meier,
Kunz, : : : Egon. Dann sieht das Bachmann-Diagramm wie folgt aus:
j
? r
Meier
? r
Kunz
r r
Hinz
j? r r
Kunz
Analysis I
Algebra I
..?
.
..?
.
Meier
r
R
r
? r
..?
.
Egon
r
Implementierung von Beziehungen durch Zeigerketten (Lineare Liste)
Fur jede Beziehung benotigt man eine eigene Zeigerkette. Die Position eines Zeigers bestimmt die
Beziehung, die durch die entsprechende Zeigerkette dargestellt wird.
Probleme gibt es bei den (n,m)-Beziehungen. Diese werden aufgelost zu einer (1,n)-Beziehungen
und einer (1,m)-Beziehung.
Beispiel
In diesem Beispiel wollen wir wissen welche Studenten welche Vorlesungen besuchen. Da
ein Student mehrere Vorlesung horen kann, und in jeder Vorlesung mehrere Studenten sind,
handelt es sich um eine sogenannte (n,m)-Beziehung. Nach Auosen, dieser fur das Netzwerkmodell nicht zu verarbeitenden Beziehung, erhalten wir die Entity-Sets
Owner-Typ
Vorlesung
Member-Typ/Member-Typ
- Vorlesung/Horer 6
Owner-Typ
Horer
Fur das konkrete Beispiel Meier, Hinz und Kunz horen Analysis I und Meier, Hinz und Egon
horen Algebra I erhalten wir folgende Entities und Beziehungen:
?r r?
Analysis I
6
Algebra I
6
?r r
6
?r r r
r
Meier
r
Hinz
r
?r r Kunz
r
r? r Egon
?
r
6
6
?
?r r
6
Um zu starten, wird ein Einstiegspunkt benotigt. Dazu wird zu jeder Zeigerkette die zuletzt verwendete Adresse in einer Tabelle gehalten. Wenn (n,m)-Beziehungen so realisiert werden sollten,
hatte ein Member mehrere Owner, und dazu muten mehrere Zeiger fur dieselbe Beziehung bei
demselben Entity stehen. Somit ist es schwierig zu entscheiden, welcher Zeiger zu welcher Beziehung gehort.
Navigieren
Um die Horer der Vorlesung Analysis I auszugeben, ist die Zeigerkette startend bei Analysis I
zu durchlaufen. Bei jedem Member ist die andere Zeigerkette, die zum Horer gehort, solange zu
durchlaufen, bis der Owner gefunden wird. Dieser wird ausgegeben und der Durchlauf der 1.
Zeigerkette fortgesetzt. Breche ab, wenn die Kette zu Analysis I zuruckfuhrt.
Mehrstellige Beziehungen
Es sei die mehrstellige Beziehung
B E1 E2 : : : En
gegeben. Die im Netzwerkmodell nicht darstellbare (1,n)-Beziehung
6
E1
B
6
E2
6
En
wird durch Einfuhrung eines kunstlichen Entity-Types mit n Attributen wie folgt aufgelost.
Die Entities dieses kunstlichen Attributes bestehen aus den Zeigerkombinationen der Entities der
Ei's, die in Relation zueinander stehen. Man erhalt also fur (a; b; c) 2 B
7
kunstliches Entity
a
6
?
b
6
?
c
6
?
Bewertung
Der Zugri uber Zeigerketten ist schnell, aber die Zugrisroutinen sind vollig abhangig von der
Speichermethode. Das Netzwerkmodell entspricht also nicht dem 3-Ebenen-Modell. Denn eine
Anfrage erfolgt auf der physikalischen Ebene.
3.2 Hierarchisches Datenmodell (IMS von IBM)
Bei diesem Modell werden die Daten in Baumen abgespeichert. Man erhalt einen \Wald".
Auf der logischen Ebene werden Baume gebildet, deren Knoten Entity-Sets darstellen. Es gibt nur
(1,n)-Beziehungen, die Member-Typen sind Sohne der Owner-Typen. Tritt ein Entity-Set in mehreren
Beziehungen auf, so werden virtuelle Kopien deniert. Als Member-Set tritt ein Entity-Set nur einmal
auf sonst werden die virtuellen Kopien verwendet. Diese Kopien sind nie Owner-Typ einer Beziehung.
Auf der physikalischen Ebene werden bei jedem Entity variabel viele Zeiger zu Nachfolgern erlaubt.
Dafur ist die Menge der Nachfolger geordnet.
Datenstruktur
Die Datenstruktur wird durch einen in Informatik II vorgestellten Baum realisiert.
Darstellung eines Netzwerkes durch eine hierarchische Datenbank
1. Wahle ein Entity-Set als Wurzel des Baumes, wenn moglich ein solches, das nie als MemberTyp einer Beziehung erscheint.
2. Ordne alle die Entity-Sets als Sohne an, die als Member-Typ einer Beziehung zu diesem
gewahlten Entity-Set auftreten.
3. Versuche, jeden der Sohne als Owner-Typ und damit als Vater einer weiteren Beziehung
darzustellen und mache deren Member-Typ zu Sohnen.
4. Ist jedoch ein Member-Typ bereits im Wald aufgetreten, so ernde an dieser Stelle einen
virtuellen Member-Typ, dessen Entities aus Zeigern auf die bereits bestehenden Entities des
betrachten Entity-Sets bestehen. Diese virtuellen Entity-Sets werden nie Vater.
5. Kann man den Baum nicht vergroern, so suche weitere Entity-Sets, die noch nicht verwendet
wurden. Dann fahre fort mit 1. Sind alle Entity-Sets verbraucht, so hore auf.
Bewertung
Der Zugri bezu glich der jeweiligen Hierarchie ist schnell, der Zugri anhand von Eigenschaften,
die in den Blattern beschrieben sind, ist jedoch langsam. Auerdem besteht eine hohe Abhangigkeit der Anwenderprogramme von der Speicherung, das heit das 3-Ebenen-Modell wird nicht
ausreichend unterstutzt.
8
3.3 Relationales Modell (Codd 1971)
Das relationale Modell vermeidet die Verwendung von Zeigern. Die Beziehungen werden wie die Entites
behandelt. Die bei den relationalen Datenbanken verwendete Datenstruktur ist die Tabelle.
A1 A2 : : : An
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
a1 a2
an
.
.
.
Die Spalten der Tabellen tragen Attributnamen (A1 , A2 , : : : , An ), und jede Zeile ist ein Wertetupel.
Ein Tupel t = (a1; a2; : : :; an ) hat in der i-ten Spalte einen Eintrag ai aus dem Ai zugeordneten
Wertebereich.
Beispiel
Die Datenbank eines Unternehmens enthalt die Tabellen
folgenden Daten
LNR
L1
L2
L3
Lieferant
LName
LOrt
Meier
K
oln
Meier
Berlin
Schmitz
K
oln
TNR
T1
T2
T3
Teil
TName
Schraube
Mutter
Schraube
Lieferant, Teil
Gewicht
20
10
15
und
Lieferung
mit
Lieferung
LFNR TNR Menge
LF1
T1
1000
LF2
T2
500
LF3
T1
2000
Um die in einer Menge von Tabellen abgespeicherten Informationen abzurufen, kann man die Tabellen
verknupfen und gezielt Informationen heraussuchen. Dazu dient als Hilfsmittel eine relationale Algebra.
Wir konnen folgende Operationen auf Mengen von Tabellen anwenden, wobei die Ergebnisse wieder
Tabellen sind.
1. Schnitt, Vereinigung und Dierenz
Sind T1 und T2 Tabellen und haben fur alle i die Attribute Ai (T1) und Ai (T2) denselben Wertebereich, so kann man mit T1 und T2 die Operationen \\", \[" und \n" ausfuhren.
2. Projektion
Sei T eine Tabelle mit den Attributen A1 ; : : :; An und B1 ; : : :; Bk 2 fA1 ; : : :; Ang. Dann kann man
T auf (B1 ; : : :; Bk ) projizieren, das heit
1. Streiche jede Spalte Aj mit Aj 2= fB1 ; : : :; Bk g.
2. Sortiere die Spalten in der Reihenfolge B1 ; : : :; Bk .
3. Streiche Duplikate unter den Tupeln.
Die Projektion der Tabelle T auf die Attribute Ai1 ; : : :; Aik wird mit i1 ;:::;ik (T ) bezeichnet.
4. Selektion
Sei T eine Tabelle mit Attributen A1; : : :; An . Sei Di der Wertebereich von Ai und auf Di sei \",
\<", \=", \>" und \" deniert. Dann kann man eine Formel F bilden, indem man in jeder
Komponente i vorschreibt, welche Pradikate die Eintrage der gesuchten Tupel | formuliert in
den Vergleichen und Konstanten aus Di | erfullen sollen. Das Ergebnis ist die Menge der Tupel,
die allen Pradikaten genugt, also in obigem Beispiel beispielsweise alle Tupel aus Lieferant, fur
die der Ort den Eintrag Koln besitzt.
Die Selektion der Tabelle T bezuglich der Formel F wird mit F (T ) bezeichnet.
9
5. Naturlicher Verbund (\natural join")
Seien T1 und T2 Tabellen. T1 habe die Attribute A1 ; : : :; An ; B1 ; : : :; Bm und T2 habe die Attribute
C1; : : :; Cl; B1; : : :; Bm . Weiter sei Ai 6= Cj fur alle i und j . T1 ./ T2 ist eine Tabelle mit den
Attributen A1 ; : : :; An ; B1; : : :; Bm ; C1; : : :; Cl. Die Tupel von T1 ./ T2 erhalt man, indem man
zu jedem Tupel t1 2 T1 jedes Tupel t2 2 T2 aufsucht, dessen Eintrage auf B1 ; : : :; Bm mit den
Eintragen von t1 ubereinstimmen, und t1 auf C1; : : :; Cl durch die Eintrage von t2 bei diesen
Attributen verlangert. Wenn zu t1 kein passendes t2 existiert, wird aus t1 kein Tupel von T1 ./ T2
erzeugt.
In obigem Beispiel ergibt sich fur Lieferung ./ Teil
TNR
T1
T1
T2
./
Lieferung
Teil
TName
Gewicht LFNR
Schraube
20
LF1
Schraube
20
LF3
Mutter
10
LF2
Menge
1000
2000
500
Teil ./ Lieferant liefert hingegen das kartesische Produkt, da die beiden Tabellen keine gemeinsamen Attribute besitzen.
Es gilt unter anderem (T1 ./ T2) ./ T3 = T1 ./ (T2 ./ T3 ), das heit der \natural join" ist
assoziativ.
6. -Verbund
Die Tabelle T1 habe die Attribute A1 ; : : :; An und T2 habe die Attribute B1 ; : : :; Bm . Es seien
C1; : : :; Cl 2 fA1; : : :; Ang und D1 ; : : :; Dl 2 fB1 ; : : :; Bmg. Weiter gelte
Wertebereich(Ci) = Wertebereich(Di) und i 2 f; <; =; >; g fur alle i:
T1 ./ T2 entsteht aus den Tupel von T1 , indem aus T2 die Tupel t2 mit den Tupeln t1 2 T1
verbunden werden, bei denen der Eintrag ai (t1) von t1 bei Ci in der -Relation zu dem Eintrag
ai (t2) bei Di steht. Es ist auch moglich statt ai(t2 ) eine Konstante a zu wahlen.
Beispiel
Mittels eines -Joins konnen wir aus der Tabelle
Zugnummer
601
603
607
Ankunft
10:00
10:30
12:00
Abfahrt
10:15
11:00
12:15
eine Umsteigetabelle konstruieren.
Der Eintrag bei Ankunft mu kleiner als der bei Abfahrt sein. Man bilde also den Verbund
der Tabelle mit sich selbst, soda die \"-Beziehung erfullt ist.
Bewertung
Das relationale Modell erlaubt es eine Anfrage zu formulieren, ohne da man bereits angibt, wie
die Antwort zu realisieren ist (\deklarativ"). Damit kann die logische Datenbankstruktur getrennt
werden von der realen Implementation und die Datenunabhangigkeit nach dem 3-Ebenen-Modell
ist gewahrleistet.
Allerdings sind die relationalen Datenbanken vor allem bei Verwendung von Verbundoperationen
langsamer als die beiden anderen konkurrierenden Modelle.
10
4. Die Sprache SQL
Die relationale Datenbanksprache SQL wird weiterentwickelt zu SQL2 und SQL3. Fur Implementierungen durch mehrere Hersteller wird die Sprache durch eine ANSI-Norm beschrieben. Neuerdings
wird die Sprache objektorientiert weiterentwickelt.
4.1 Einige Befehle
CREATE TABLE Tafelname
(Attributname 1
[,Attributname 2
.
.
.
.
.
.
,Attributname n
Typ 1
Typ 2
Typ m
[NOT NULL]
[NOT NULL]
.
.
.
[NOT NULL]]);
Erlaubte Typen
In SQL gibt es die folgenden Typen
integer 2 [ 215 + 1; 215 1]
small integer 2 [ 231 + 1; 231 1]
decimal(m; n): m-stellige Zahl (m 15) mit n Nachkommastellen (0 n m)
oat 2 [5:4 10 79; 7:2 1075]
char(n): Zeichenkette fester Lange (n 254)
varchar(n): Zeichenkette variabler Lange (n 254)
longchar: Zeichenkette variabler Lange (bis 215 1 Symbole)
drei Graphik-Datentypen
Nur die festen Basistypen haben Vergleichsfunktionen \<", \", \<>", \>", \", \=". Nullwerte
sind erlaubt, auer wenn sie explizit durch \Not Null" verboten worden sind.
ALTER TABLE [Erzeuger] Tafelname
ADD
Attributname
Typ;
DROP TABLE Tafelname;
CREATE [UNIQUE] INDEX Indexname ON [Erzeuger.] Tafelname
(Attributname 1
[ASC|DESC]
[,Attributname 2
[ASC|DESC]
.
.
.
.
.
.
,Attributname n
[ASC|DESC]]);
Es wird ein B -Baum erzeugt zum Wertebereich W1 : : : Wn , wobei Wi der Wertebereich von
Attributname i mit lexikographischer Anordnung ist.
11
Der B-Baum ist eine Variation des B-Baumes, bei dem die Daten nur in Blattern gehalten werden.
Damit ergibt sich mehr Platz fur Zeiger in den inneren Knoten. Werden nur die Adressen bereits
vorhandener Daten abgespeichert, so kann ein solcher Zugrisweg jederzeit hinzugefu gt oder geloscht
werden.
Das Schlusselwort UNIQUE
Bei den angegebenen Attributnamen kann zu einem Wertetupel nur ein Datensatz existieren.
(zum Beispiel TelNr, Name, Gebdatum, Gehalt). Damit kann man sogenannte Primarschlussel
spezizieren.
Weitere SQL-Befehle sind
INSERT INTO [Erzeuger.] {Tafelname|Sichtname} [(Attributname)]
VALUES
(Daten);
DELETE FROM [Erzeuger.] Tafelname
[WHERE
Bedingung];
UPDATE [Erzeuger.] Tafelname SET
Attributname 1 = Ausdruck 1,
Attributname 2 = Ausdruck 2,
.
.
.
.
.
.
Attributname n = Ausdruck n
[WHERE Bedingung];
Beispiel
CREATE TABLE Professor
(Pnr
char(7)
NOT NULL,
Pname varchar(20) NOT NULL,
Ort
varchar(15) NOT NULL);
CREATE UNIQUE INDEX Profindex ON Professor (Pnr);
INSERT INTO Professor VALUES(``N44'',``Gauss'',``Bayreuth'');
Das Data Dictionary
Das Data Dictionary stellt eine Art Datenbank uber die Datenbank dar. Es gibt die Strukturen
SYSCATALOG: Fur jede Tabelle ein Tupel.
TNAME
Name der
Tabelle
CREATOR
BenutzerKennzeichen
TABLETYP
Basis oder
Sicht
NCOLS
Attributzahl
REMARKS
:::
ROWCOUNT
Tupelzahl
SYSCOLOUMS: Fur jedes Attribut jeder Tabelle ein Tupel.
TNAME
CREATOR
NAME
Attributname
COLNO
Attributnummer
12
COLTYPE
Wertebereichstyp
LENGTH
L
ange
REMARKS
:::
Weitere Tabellen beinhalten die Zugriswege, die Zugrisrechte und die Views.
:::
VIEWTEXT
Ausdruck, der das
View definiert
:::
Das SELECT-Kommando
Ein typisches Beispiel fur die SELECT-Anweisung ist
SELECT Professor_Ort,Student_Name
FROM Professor,Student
WHERE Professor_Ort = Student_Ort
AND Student_Fach = 'Mathematik'
ORDER BY Professor.Pname ASC;
Die allgemeine Semantik fur ein SELECT-Kommando lautet
all
select distinct
?
6
where Bedingung
<Erzeuger.>
alias Name
?
from ? ?
<Tafelname>
6 6 ,
select list
having Bedingung
group by order by ?
<Attributname>
<Attributname>
?
6 Nummer 6
,
asc
desc
? ; 6 6
wobei Bedingung fur
not 6
Vergleichs-Bed.
13
?6
-
and or steht. Der Ausdruck Vergleichs-Bed. wiederum steht fur
is not ? null Ausdruck
=
<>
<
>
Ausdruck
all
any
Dabei ist Ausdruck von der Gestalt
? Spaltenselektion
(
)
6 6 +
=
term
term
und Term steht fur
+
?6
<Spaltenname>
<constant> (
)
Ausdruck
Aggregat
Die Sprache SQL arbeitet mengenorientiert. Die Tupel werden anhand der Eintrage angesprochen.
In C hingegen werden Variablen oder Strukturen uber ihre Adressen angesprochen. Werden Werte
aus C-Variablen in SQL ubernommen, so geschieht dies mittels Einfugeoperationen. Soll umgekehrt
aus einer Tabelle ein Tupel in C benutzt werden, so mu fur dieses Tupel einzeln die Zuweisung an
Variablen erfolgen, die uber Adressen ansprechbar sind.
U bersetzung
Das Quellprogramm enthalt neben C-Anweisungen auch SQL-Anweisungen. Der Precompiler sucht
aus dem Quellprogramm die SQL-Anweisungen heraus und ersetzt sie durch den Aufruf von CBibliotheksfunktionen.
prog.pc
Precompiler
!
prog.c
Compiler
!
prog.o
!
SQL-Programmbibliothek !
14
9
>
>
>
=
>
>
>
;
Linker
!
prog
In einer Declare-Section werden Variablen sowohl dem C-Teil als auch dem SQL-Teil bekannt gemacht.
exec SQL begin declare section;
int
char
exec SQL end declare section;
:::
:::
Ein einfaches Einfugen geschieht zum Beispiel folgendermaen
exec SQL execute immediate
insert into Auftr
age
values (1027,'Jan. 7','Schmidt');
oder um ein Tupel aus C-Variablen einzufugen
exec SQL execute immediate
insert into Auftr
age
values (:Auftragsnummer,:Datum,:Name);
Ein prepare-Statement bewirkt, da ein Statement nicht bei jedem Auftreten interpretiert werden
mu.
exec SQL begin declare section
int Auftragsnummer,Menge;
char Datum[10],Name[20],Teil[10];
exec SQL end declare section;
exec SQL connect; /* vor auszuf
uhrendem SQL-Aufruf */
exec SQL prepare Auftr_Eing from /* Vorbereiten der Einf
uge-Operation */
insert into Auftr
age
values (:Auftragsnummer,:Datum,:Name);
exec SQL prepare Einf
ugen from
insert into Enth
alt
values (:Auftragsnummer,:Teil,:Menge);
Schreib("Eingabe von Auftragsnummer, Datum und Kunde: ");
Lies(&Auftragsnummer);
Lies(Datum);
Lies(Name);
exec SQL execute Auftr_Eing using :Auftragsnummer,:Datum,:Name;
Schreib("Eingabe von Teil-Mengen-Paaren (Abschlu mit 'Ende': ");
Lies(Teil);
while (strcmp(Teil,"Ende"))
{
Lies(&Menge);
exec SQL execute Einf
ugen using :Auftragsnummer,:Teil,:Menge;
Lies(Teil);
}
Um eine aus SQL zuruckgegebene Tabelle in C zu verarbeiten, wird eine Tupel-Variable eingefuhrt,
15
die die Tabelle wie ein Cursor durchlauft.
hselect statementi
exec SQL prepare S from
;
exec SQL declare C cursor for S;
exec SQL open C;
exec SQL whenever notfound goto Ende;
for (;;)
{
exec SQL fetch C into :A1,:A2, ,:An ;
/* Hier kann nun das Wertetupel (A1,A2,
}
Ende:
exec SQL close C;
:::
:::
: : : ,An)
verarbeitet werden */
4.2 Algebraische Optimierung von Anfragen
Wir haben zwei Moglichkeiten, die Ausfuhrung von Datenbank-Anfragen zu beschleunigen
a) Nur Benutzung der relationalen Algebra, und
b) Hinzunahme von Indexen, die im Hauptspeicher abgelegt werden.
Zunachst wollen wir uns mit der Nutzung der Moglichkeit a) befassen.
Die Ausdrucke werden durch Baume dargestellt. Die Blatter stellen die Relationen (Tabellen) dar,
auf die zugegrien wird. Die inneren Knoten stellen einzelne Operationen dar, mit denen die aus den
Nachfolgern bestehenden Datenmenge zu verarbeiten sind. Die Wurzel ist die Ergebnis-Relation.
Beispiel
Wir haben die Relationen Pers mit Attributen ANR, Name, Gehalt, Tel, Kind und Beruf sowie
Abt mit Attributen ANR, Ort, Manager und Aufgabe. Es soll folgende Anfrage beantwortet werden
\Finde Name und Gehalt aller Angestellten, die in Bindlach arbeiten".
SELECT Name,Gehalt
Projektion
FROM Pers,Abt
WHERE Pers.ANR = Abt.ANR
Verbund
AND Ort = 'Bindlach'
Selektion
Ein Anfrage-Baum sieht folgendermaen aus
A
Projektion Selektion Verbund @ Name,Gehalt
Ort = 'Bindlach'
Pers.ANR = Abt.ANR
Pers
@
@@
Abt
16
Direkte Abarbeitung dieses Baumes, wie er sich zum Beispiel aus einem Compiler ergeben wurde,
verursachte beim Verbund einen Aufwand von O(jPersj jAbtj).
Durch eine Veranderung der Reihenfolge der Operationen kann der Aufwand verringert werden.
Dazu ist der Baum in einen anderen zu transformieren, der weniger Aufwand bei der Abarbeitung
erfordert.
A
Projektion Verbund @ Name,Gehalt
Pers.ANR = Abt.ANR
Pers
@@
@
Selektion
Ort = 'Bindlach'
Abt
Um die Projektion mit Verbund zu vertauschen, mu in die Projektion das Verbundattribut mit
aufgenommen werden. Die ursprungliche Projektion ist wiederum auszufuhren, um das Verbundattribut zu eliminieren.
A
Projektion Verbund @ Name,Gehalt
Pers.ANR = Abt.ANR
Name,Gehalt,ANR
@
@@
Projektion
Projektion
Selektion ANR
Ort = 'Bindlach'
Pers
Beispiel
In der Tabelle
Pers
Abt
aus dem vorausgegangenen Beispiel sei zusatzlich noch das Attribut
17
Fremdsprache
vorhanden. Wir suchen alle englisch oder franzosisch sprechenden Mitarbeiter.
A
Union @ Fremdsprache = 'englisch'
@@
@
Selektion Selektion Pers
Fremdsprache = 'franz
osisch'
Pers
Hier erhalten wir kurzer
A
Selektion Fremdsprache = 'englisch'
oder
Fremdsprache = 'franz
osisch'
Pers
Assoziative Operatoren
Das Ergebnis der Operation R1 ./ R2 ./ R3 ./ R4 ist von der Klammerung unabhangig. Bezuglich
des Aufwands ergeben sich jedoch Unterschiede.
Beispiel
Fur die Berechnung von ((R1 ./ R2) ./ R3) ./ R4 erhalt man
A
./ @ @
./ @@R4
@ @@
@R
./@ @
R1
@@
R
2
18
3
Fur die Berechnung von (R1 ./ R2) ./ (R3 ./ R4) erhalt man hingegen
A
./ HH ./ @ @
@@
R
R
1
HH
HH
HH./ @ @
@@
R
R
2
3
4
Die Groe der Zwischenergebnisse (in obigen Bildern fett gezeichnet) entscheidet daruber,
welcher Baum gunstiger ist.
Heuristik fur die Abschatzung der Groe der Zwischenergebnisse
Es wird angenommen, da bei allen vier Relationen der Verbund uber dasselbe Attribut mit
j gleichwahrscheinlichen Werten gebildet wird, das heit
j jR1j jR2j jR3j jR4j :
Zum Beispiel hat R1 ./ R2 ca. jR1j jRj2 j Tupel. Insgesamt erhalten wir die Entscheidung uber
die Wahl der besseren Alternative aus der Ungleichung
jR1j jR2j jR3j jR3j jR4j
j
und damit einfacher aus
j
j
jR1j jR2j jR j :
j
4
A hnliches lat sich fur \[" und \\" durchfuhren.
Regeln zur Optimierung
1) Projektionen werden soweit wie moglich zu den Blattern gezogen.
2) Selektionen werden soweit wie moglich zu den Blattern gezogen.
3) Selektionen, die die gleiche Relation betreen, sowie entsprechende Projektionen werden zusammengefat.
4) Bei Folgen von Verbund- und Mengenoperationen wird die Reihenfolge nach der Machtigkeit
der beteiligten Relationen festgelegt.
5) Eventuell auftretende gemeinsame Teilbaume sind als ein gemeinsamer Baum zu berechnen.
Die zweite Moglichkeit zur algebrarischen Optimierung von Anfragen besteht in der Optimierung der
Baume fur die relationalen Ausdrucke unter Berucksichtigung der Zugriswege.
19
4.3 Methoden zur Beschleunigung des Zugris
Aufspaltung eines Blattknotens fur alle Relationen durch Anwendung eines Operators \Realisiere" auf
den Zugrisweg und die Relation
Angestellter
Realisiere @ wird ersetzt durch
Index
@
@@
Angestellter
Die Selektionen und Projektionen konnen auch hier mit dem Operator Realisiere vertauscht werden.
Somit ist der Baum formal transformierbar in einen Baum mit gunstigerem Zugrisverhalten.
Beispiel
Gesucht sind alle Programmierer mit einem Gehalt von mehr als 100000 (Mark) und mit einer
bestimmten Angestelltennummer, das heit
Selektion Beruf=`Programmierer' und
Gehalt>100.000 und
(ANR=`K50' oder ANR=`K55')
Pers
Sei bezu glich des Attributs Beruf ein Index I(Pers,Beruf) vorhanden. Dann konnen wir die obige
Anfrage umtransformieren zu
Selektion Gehalt>100.000 und
(ANR=`K50' oder ANR=`K55')
Realisiere @ Beruf=`Programmierer'
@@
@
Pers
Selektion
I(Pers,Beruf)
20
Ist weiterhin ein Index I (Pers, ANR) vorhanden, so verwende
A
Selektion Gehalt>100.000
Realisiere HH Pers
Beruf=`Programmierer'
HH
HHH
H\ HH HH
HHH
H
Selektion
I(Pers,Beruf)
ANR=`K55'
[@ @@
@
Selektion Selektion
ANR=`K50'
I(Pers,ANR)
I(Pers,ANR)
Wir brauchen also die Vereinigung zu dem Attribut A mit zwei Relationen, die beide einen Index
bezuglich A besitzen. Der Index liefert gerade die Adressen der Tupel, sortiert nach dem Wert des
Verbundattributes.
R2:A
R1:A
-
Beim aufsteigenden Durchlauf zweier sortierter Felder kann mit linearem Aufwand paarweise ver-
21
glichen werden (siehe Mergesort). Wir erhalten also fur das Beispiel von Seite 17
A
Projektion Name,Gehalt
1HH ANR
HHH
HH
HProjektion
Realisiere
@ @
@@
Projektion
ANR
I(Pers,ANR)
Name
Gehalt
ANR
Selektion Ort=`Bindlach'
Realisiere @ Pers
I(Abt,ANR)
@
@@
Abt
Operationen, die dieselbe Datei oder das selbe Zwischenergebnis betreen, lassen sich durch einen
entsprechend machtigen Operator zusammenfassen. Dadurch brauchen die Dateien nicht mehrfach
durchlaufen werden.
Ist kein Index vorhanden, so sortiere bezu glich des Verbundattributs.
Aus Informatik II wissen wir, da n Daten mit o(n log n) Zeitaufwand sortiert werden konnen. Der
Aufwand, um R1 und R2 zu verbinden, betragt ohne Sortierung jR1j jR2j. Mit Sortierung hingegen
ist der Aufwand
c1 jR1j{z log jR1}j + |c2 jR2j{z log jR2}j + |jR1j +
jR2}j
|
{z
Sortiere R1
Sortiere R2
Durchlaufe linear wie bei Index
Damit ist das Sortieren in den meisten Fallen gunstiger.
Daher stellt man einen Sortieroperator zur Verfugung, der dann eingesetzt werden kann, wenn kein
Index vorhanden ist. Beim Sortieren konnen doppelte Records leicht erkannt werden. Vor einer Verbundoperation sind die Doubletten zu entfernen. \Realisiere" erhalt die Daten, die bezuglich eines
Attributs sortiert sein konnen.
Beispiel
Sei (a1; : : :; an ) eine bestimmte Reihenfolge, und die Daten wie folgt auf der physikalischen Ebene
gespeichert.
a1 ; a4 ; a6
a2 ; a5
a3
Es lat sich nun vermeiden, dieselbe Datenseite mehrfach von der Platte einzulesen, indem man
die physikalische Adresse als Sortierkriterium verwendet und die Liste der zu holenden Tupel
22
danach sortiert. Wenn man die durch Sortieren bewirkte Permutation wieder ruckgangig macht,
so erhalt man die ursprungliche Reihenfolge zuruck.
23
5. Die physikalische Ebene
Zur Speicherung auf der pysikalischen Ebene werden die Verfahren verwendet, die in Informatik II
vorgestellt wurden. Schlagworte hierfur sind
Sortierte Daten,
binares Suchen,
interpolierendes binares Suchen,
Hashfunktionen,
B-Baume,
k-d-Baume und
Gridle.
5.1 Sortierte Daten
Die Daten werden blockweise sortiert auf Platte abgelegt. Beim Initialisieren wird jeder Block zu
80% ausgelastet. Es wird ein Index fur die Blockanfange angelegt.
Index sequentielle Zugri Metfoden
?
?
?
5.2 B-Baume
Die Datenstruktur der Bayer-Baume wurde bereits in Informatik II behandelt. Ein Knoten des
B-Baumes enthalt jeweils Vergleichswerte und Nachfolgerzeiger.
r
wi
r wi+1
j
Wenn in den Indexseiten des B-Baumes bereits vollstandige Datensatze liegen, so benotigen diese
viel Platz. Daher passen weniger Zeiger und Vergleichswerte auf eine Indexseite, und somit wachst
die Hohe des Baumes und die Anzahl der Seitenzugrie. Besser geeignet sind daher die sogenannten
B -Baume.
5.3 B-Baume
Hier werden nur in den Blattern vollstandige Datensatze gespeichert. Die Indexseiten enthalten
neben den Zeigern nur Vergleichswerte.
Beispiel
Zu speichern sind 1000000 Datensatze zu je 200 Bytes. Die Blockgroe sei 4096 Byte. Im
B-Baum stehen pro Datenseite mindestens 10 und hochstens 19 Datensatze. Die Hohe des
24
Baumes ist also 1 + log10(1000000) = 7. Das Schlusselwort habe 20 Byte, ein Zeiger 4 Byte.
Die Indexseiten haben 4096 Byte, also passen insgesamt 170 Vergleichswerte und 171 Zeiger,
(170 20 + 171 4 = 4084) auf eine Indexseite.
4 20 4 20 4
r
r
r
?
?
?
4 20 4
r
r
?
?
Somit konnen mindestens 86 und hochstens 171 Nachfolgerzeiger in einem Knoten gespeichert
werden. In den Blattern stehen 1000000 Satze. Die Hohe ist also 2+log 86 1000000
10 < 5, was der
Anzahl der Seitenzugrie pro Anfrage darstellt.
Indexbereich: 86 Satze
|
{z
}
1000000
10 \Zweige"
Datenbereich: 10 Satze
B-Baume in denen in den Blattern Zeiger stehen
Indexbereich
r Adressenr der Daten
r
r
)
s
s
Daten
Im B -Baum werden nur die Adressen der Daten abgelegt. Somit konnen die Seiten bei den Daten
voll ausgenutzt werden. Das bringt eine Ersparnis von ca.25% abzuglich 12% fur die Adressebene,
also werden etwa 13% gewonnen. Die Speicherung kann neu organisiert werden, es brauchen nur
die entsprechenden Adressen uberschrieben werden.
Problem bei mehreren Zugriswegen
Es existieren verschiedene Zeiger, die auf denselben Datensatz zeigen. Von diesem Datensatz
aus gesehen ist jedoch nicht bekannt welche Zeiger auf ihn zeigen, daher ergeben sich beim
Loschen dieses Datensatzes Komplikationen.
25
Erste Losung
Beim Datensatz wird ein Loschkennzeichen eingefuhrt, wodurch sich auf jedem Zugriweg
feststellen lat, ob der Datensatz gultig ist oder nicht. Allerdings fuhrt diese Methode langfristig zu einer Speicherplatzverschwendung, es ist daher von Zeit zu Zeit eine Reorganisation der
Datenbank notig, das heit es wird eine neue Datenbank ohne die geloschten Satze angelegt.
Zweite Losung
Um den Speicherplatzverbrauch fur geloschte Datensatze zu verrringern, kann man die eigentlichen Datensatze auf der untersten Ebene durch Zeiger auf die Datensatze ersetzen.
B-Baume
@@
r B1 @
Addressliste der Datensatze
r @
@@
r B2 r @@
-
w1
..
.
w2
..
.
w
..
.
-
Externer Speicher
NULL
r
-
r
i
-
Somit ist es moglich den physikalischen Speicherplatz zu verschieben oder zu loschen.
Als Alternative konnte man bei den Sekundarindexen statt der Datensatze den Schlusselwert,
unter dem der Datensatz im Primarindex gefunden wird, ablegen. Der Zugri bezuglich des
Sekundarindexes erfordert dann allerdings den Durchlauf beider Zugriswege und ist somit
zeitaufwendiger.
5.4 TID-Konzept (Tupel-Identier)
Ein Datensatz wird durch eine Adresse beschrieben, die sich in zwei Teile aufteilt
1. Adresse der Datenseite
2. Nummer der Adresse des Datensatzes in einem Adressfeld auf der Seite
r
Seite
r
Nummer (1 Byte)
-
-
r
6
26
:::
Datensatz
U berlauf einer Seite
Statt der Datensatze konnen auf der Datenseite wieder TIDs stehen.
r
TID
r
Erste Seite
- - r
r :::
6
U berlaufseiten
r
-
r
6
- Datensatz
:::
..
.
Fur alle realistischen Situationen wird bei U berlaufseiten fur das Aufsuchen eines Datensatzes
hochstens ein weiterer Seitenzugri erforderlich.
5.6 Dynamisches Hashen
Gegeben ist die Hashfunktion h: W ! A, dabei ist h(w) die Adresse fur den Datensatz (oder die
Datenseite), der beziehungsweise die mittels w gefunden werden soll.
Die Datenmenge kann stark wachsen, damit wachst die Anzahl der Kollisionen ebenfalls stark und
der Zugri auf einen Datensatz erfordert viele Seitenzugrie.
Ausweg
Es wird zu Beginn nur ein Teil der berechneten Hashadresse zur Datenadressierung verwendet.
h(w) = a| n an 1{z: : :ai+1} jai : : :a1a0
Hashadresse
Der Teil an an 1 : : :ai+1 wird als Hashadresse verwendet. Treten zu viele Seitenzugrie auf, so
nehme eine weitere Stelle hinzu.
00: : : 000
h(w)
- r
r
11: : : 110
00: : : 001
r
r
11: : : 111
27
-
-
6
Berechne fur die ubergelaufene Seite alle Hashwerte neu und teile die Seite entsprechend dieser
Adresse in die alte und eine neue Seite auf. Kopiere das vorhandene Adressfeld (00 : : : 000
bis 11 : : : 110) in den neu angelegten Bereich (00 : : : 001 bis 11 : : : 111) und uberschreibe fur
die U berlaufseite den Zeiger auf die alte Seite mit der neuen Adresse.
Lauft eine Seite uber, auf die bereits zwei Zeiger zeigen (dies ist durch A nderung einer Stelle in
der Hashadresse und Zeigervergleich feststellbar), so braucht das Adressfeld nicht verdoppelt
zu werden. Es wird nur die U berlaufseite entsprechend der Hashadresse gespalten und der
eine Zeiger im Adressfeld auf die neue Seite umgebogen.
5.7 Mehrdimensionale Anfragen
Es seien Datensatze w = (w1; w2; : : :; wk ) mit k Attributen gegeben. Gesucht werden alle Datensatze,
die Bedingungen der Form ui wi < oi fur i = 1; : : :; k genugen. Die Daten seien in B-Baumen
gespeichert. Dann gibt es zwei Moglichkeiten, eine solche Anfrage zu realisieren.
a) Fur jede Komponente existiert ein Baum
|
@@
@
@
{z
ui wi <oi
}
|
{z
@@
@
@
}
uj wj <oj
Alle Bedingungen sollen zugleich erfullt sein, daher ist der Schnitt der Losungsmengen zu betrachten. Das Problem bei dieser Methode ist, da die Zwischenlosungen eventuell sehr umfangreich
sein konnen.
b) Es existiert ein B-Baum fur jede Kombination von Attributen (z.B. in SQL Index bzgl. mehrerer
Attribute mit Reihenfolge und Sortierrichtung)
@@
@
@
Hier gibt es keine uberussigen Zwischenergebnisse, aber bei k Attributen gibt es 2k Teilmengen
der Attributmenge. Wenn man nicht vorher wei, in Bezug auf welche Kombination von Attributen
die Anfrage formuliert wird, wurden bei dieser Losung maximal 2k Zugriwege benotigt. Somit
ist diese Losung nur fur spezielle haug auftretende Anfragen brauchbar.
Wir interpretieren nun die Datensatze als Punkte in einem Vektorraum. Es ist
w = (w1; w2; : : :; wk ) 2 W1 W2 : : : Wk :
Ohne Beschrankung der Allgemeinheit sei Wi = IR fur alle i, damit ist w ein Punkt im IRk . Fur k = 2
28
erhalten wir die folgende Veranschaulichung
6
o2
rw = (w1 ; w2)
w2
u2
u1
w1
-
o1
Die Suchanfrage
u 1 w 1 o1
u 2 w 2 o2
beschreibt die Datenpunkte, die in einem Quader im Datenraum liegen.
Dies liefert uns nun einen anderen Ansatz fur mehrdimensionale Abfragen.
5.7.1 Gridle
Zerlege den Datenraum in Quader. Alle Punkte in einem solchen werden auf derselben Datenseite abgelegt. Die Intervallgrenzen mussen dazu entsprechend gewahlt werden, damit die Daten
gleichmaig uber die Datenseiten verteilt werden.
Bei einer Suchanfrage wird ein Suchquader deniert. Die darin liegenden Datenpunkte sind auf
den Datenseiten der den Suchquader schneidenden Datenquader zu nden.
6
o2
rw = (w1; w2)
w2
u2
u1
w1
o1
-
Es werden nur wenige Daten geholt, die der Anfrage nicht genugen.
Dieses Vorgehen ist allerdings nur bei statischen bekannten Datensatzen sinnvoll. Ziel ist eine
mehrdimensionale dynamische Datenstruktur, die beim Einfugen, Loschen und beim Zugri mit
dem Bayerbaum vergleichbar ist. Verfeinere dazu schrittweise eine grobe Zerlegung des Raumes,
29
solange bis die in den Quadern liegenden Datensatze jeweils auf eine Seite passen.
6
o2
r
r
w2
u2
u1
w1
-
o1
?
?
Ein einzelner Knoten sieht darin wie folgt aus
k
n1 : : :n
k
w11 : : :w1
n1
: : : w 1 : : :w
k
knk
n1 : : : n Zeiger auf Nachfolger
k
Beispiel
Die Seitengroe betrage 4096 Bytes und ein Zeiger benotige 4 Bytes. Pro Komponente i ist
eine Skala mit ni Vergleichswerten zu speichern. Wir haben also n1 : : : nk Sub-Quader
zu verwalten und somit n1 : : : nk Zeiger zu speichern. Auerdem sind die n1 + : : : + nk
Vergleichswerte zu speichern sowie k und n1 ; : : :; nk .
Sei jetzt k = 3, n1 = 10, n2 = 10 und n3 = 9 und ein Vergleichswert benotige 4 Bytes,
dann konnen wir auf einer Seite die 900 Zeiger unterbringen. Haben wir einen Baum der
Hohe 2 (das heit zwei Ebenen mit Knoten und eine Ebene mit Blattern), wobei in den
Blattern 200 Datensatze gespeichert werden konnen, so konnen wir 9002 200 = 162 000 000
Datensatze unterbringen.
Sei w = (w1; : : :; wk ). In jeder Komponente i gibt es zu jedem wi ein Intervall [wji ; wji +1) mit
wi 2 [wji ; wji +1). Also ist die Nummer des Intervalls in der i-ten Komponente bestimmt.
Jedem Indextupel (i1; : : :; ik ) wird ein Zeiger zugewiesen
f : [0; n1 1) [0; nk 1) ! [0;
k
Y
i=1
ni 1];
der auf dem Platz f (i1 ; : : :; ik ) abgelegt wird.
f (i1; : : :; ik) = i1 + i2n1 + i3n1 n2 + : : : + ik n1 n2 : : :nk
Behauptung: f ist bijektiv
Beweis
1
Der Urbildbereich und der Bildbereich sind gleichmachtig, es bleibt also nur die Surjektivitat
von f zu zeigen.
Q
Sei dazu j 2 [0; ki=1 ni 1].
30
Induktion nach k
k = 1: f = id
k > 1: Sei also l maximal mit Qlm=1 nm < j .
j = il+1 l
Y
m=1
0r
nm + r;
l
Y
m=1
nm
Fur r ist nach IV die gesuchte Darstellung bereits vorhanden.
j=
k
X
l=1
il lY1
m=1
nm
Damit ist ein mehrdimensionales Zeigerfeld eindimensional verwaltet! Ein Suchquader wird auf
seine Komponenten projeziert. Die Endpunkte bestimmen ein Intervall, das im Allgemeinen mehrere der Skalenintervalle schneidet. Es sind alle Kombinationen von Skalenintervallen in die Suche
einzubeziehen, die hier gefunden werden.
Die Struktur ist gut geeignet fur gleichverteilte Daten. Bei stark korrelierten Daten ergeben sich
viele Quader, die keine Daten enthalten.
r
r r
r
r rr r
r
r
r
r
rr
rr r
Die Einteilung der Quader ist immer so zu gestalten, da die Datenpunkte eines Quaders stets
auf eine Seite passen. Fur jeden Quader wird ein Zeiger benotigt, auch wenn er leer ist, das heit
keine Daten enthalt. Es kann also vorkommmen, da viele Zeiger nutzlos sind.
Ausweg
Die Zeiger brauchen nicht auf paarweise verschiedene Datenseiten zeigen!
Bedingung
Gebiete, auf die derselbe Zeiger zeigt, sollen Quader sein. Das heit leere Blocke werden nur
dann zusammengefat, wenn sie Quader geben.
Die Bedingung wird beim Aufbau eines solchen Verwaltungsbaumes sichergestellt.
Aufbau
Wenn ein Quader durch Einfugen zuviele Eintrage erhalt, so mu er zerlegt werden. Suche dazu
eine Komponente i auf. Fuge in die i-te Skala in das zu diesem Quader gehorende Intervall
eine neue Grenze (einen Skalenwert) ein. Zerlege alle Quader, die die gleiche Projektion auf
diese Komponente haben. Bei den Quadern, die nicht uberbelegt waren, wird bei den beiden
entstehenden neuen Quadern derselbe Zeiger eingetragen, den der Quader vorher hatte.
Strategie fur die Wahl der Komponente, in der aufgespalten wird
a) Durchlaufe die Komponenten zyklisch
b) Wahle so aus, da die Zerlegung moglichst in gleichgroe Teile erfolgt.
31
Strategie zur Auswahl der Grenze
Suche Intervallmitte auf (\Buddy-System").
Loschen
Es werden Datenpunkte entfernt. Sind Seiten unterbelegt, konnen die entsprechenden Quader
mit Nachbarn so verschmolzen werden, so da wiederum Quader entstehen.
Verschmelzungsregel
Es sind nur solche Verschmelzungen erlaubt, die zu Situationen fuhren, die auch durch
iteriertes Zerlegen hatten erreicht werden konnen.
Im Bild kommt es zu einer Verklemmungssituation, da der mittlere Quader mit keinem Nachbarn zu einem Quader verschmolzen werden kann!
Da die jeweils vorliegende Situation legal hervorgerufen wurde, ist immer ein solches Verschmelzen moglich.
Algorithmus (rekursiv)
Seien B1 , B2 Kandidaten, die auf Verschmelzbarkeit zu testen sind.
Bilde B := B1 [ B2 .
Starte mit R = ganzer Datenraum.
Wiederhole
Ist R = B , so gib \Verschmelzen erlaubt" aus und breche ab.
Sonst suche eine Zerlegung R = R1 [ R2, R1 \ R2 = ;, mit B R1 oder B R2. Ersetze R durch das Ri , das B enthalt. Falls diese Suche erfolglos ist, so gib
\Verschmelzen verboten" aus und breche ab.
Probleme, die dabei auftreten konnen
a) Wertebereiche, bei denen das Datenbanksystem nicht die Mitte eines Intervalls bestimmen kann.
Somit konnen nur Werte verwendet werden, die bei den vorliegenden Daten auftreten. Deshalb ist das Buddy-System nicht brauchbar! Man mu deshalb aus den
vorliegenden Werten geeignete auswahlen. Dieses Verfahren ist aber sehr aufwendig.
b) Doppelte Zeiger vermeiden!
Bemerkung
Die Zahl der Seitenzugrie ist entscheidend fur die Zeitkomplexitat. Der Aufwand fur das
Behandeln von Daten auf einer Seite ist zweitrangig.
32
5.7.2 Verbesserter Ansatz fur das Gridle
Es ist moglich, Quader durch Angabe von Unter- und Obergrenze auf einer Seite zusammen mit
dem zugehorigen Zeiger zu beschreiben.
r
r
r
r
r
r
r
r
r
r
Der Zugri erfordert dann bei jeder Seite sequentiellen Durchlauf der Quader, um den zugehorigen
Zeiger zu nden. Dieses Verfahren ist daher gut geeignet bei nicht gleichverteilten Daten.
Es tritt maximal linearer Aufwand bezuglich der Quaderanzahl auf, die Seitenzugrie werden nicht
beruhrt und unnutze Doppelzeiger vermieden.
Zusammenlegen von Datenseiten
Sollen Datenseiten verschmolzen werden, so entferne alle Daten aus einem umgebenden Quader des Baumes und fuge sie anschlieend wieder ein. Man hat eine bezuglich des Einfugealgorithmus optimale Reorganisation des betroenen Datenbereichs.
Aunden der Quader, die einen Suchquader schneiden
Durchlaufe die Hyperebenen, die Grenzen darstellen. Verwerfe jeden Wurfel, der auf einer
anderen Seite liegt als der Suchquader.
Beispiel
Es wurden Datensatzen mit 30 Komponenten benutzt, wobei 20 davon Suchkomponenten
waren. 15 Komponenten hatten feste und 15 hatten variable Lange. Die gesamte Datenbank
beinhaltete 100 000 Datensatze und umfasste 26 607 616 Bytes. Seitengroe war 4096 Bytes,
die Baumhohe 3. Die Seitenauslastung betrug 69% (dies ist ein typischer Wert, auch beim
B-Baum erhalt man Werte von 69{70%). Jeder Knoten hatte zwischen 8 und 43 Nachfolger.
Das Platzverhaltnis zwischen den inneren Knoten, die nur Vergleichswerte enthalten und den
Datenseiten betrug ca. 1 : 28.
Auf einer HP 845 wurden beim Anlegen der Datenbank 5500 Sekunden user-time und 500
Sekunden system-time gemessen. Bei einer Bereichsanfrage, bei der in jeder Komponente das
Intervall [0; 10000] verwendet wurde, betrug die Suchzeit zwischen 20 und 120 Sekunden (im
Mittel 70 Sekunden)
Anmerkung zur Verwendung variabel langer Komponenten
Die Verwendung variablel langer Datensatze stort die Theorie. Zum Beispiel kann wegen der
festen Seitengroe keine Mindestanzahl von Datensatzen pro Datenseite garantiert werden.
Daher mu beim Datensatz nun ebenfalls seine Lange mit abgespeichert werden.
Bei groen Datensatzen konnen die Seiten schnell gefullt sein. Werden also innere Knoten
mit Daten gefullt, so haben diese haug wenige Nachfolgerknoten. Auch aus diesem Grunde
wurde die Strategie gewahlt, wie beim B -Baum die Datensatze nur in Blattern zu halten. In
den inneren Knoten liegen nur Vergleichswerte aus einzelnen Komponenten.
Um zu vermeiden, da Vergleichswerte variabler Lange mehrfach auf einer Seite gespeichert
werden, kann man ein Feld von Vergleichswerten auf der Seite anlegen und nur deren Indizes
verwenden.
33
5.7.3 k-d-Baum
Um die Quader platzsparend auf einer Seite zu beschreiben, kann man k-d-Baume verwenden.
Fur zweidimensionale Datensatze lat sich das Prinzip folgendermaen veranschaulichen
6r
r
rC r r
Br
r Ar
E
r
r
D
F
r
r
B
r
-
r@
r@A
@rC
@
@
@@
@rD
@@rE
Fr
1. Komp
2. Komp
1. Komp
Die Vergleichskomponenten werden zyklisch durchlaufen und bei gleichverteilten Daten hat ein
k-d-Baum mit n Knoten eine Hohe von O(log n).
Beweis
Die hier verwendete Strategie ahnelt Quicksort. Siehe deshalb dortige Aufwandsabschatzung.
Beim k-d-Baum sind die Operation Einfugen und exaktes Suchen genauso wie beim eindimensionalen binaren Suchbaum.
Beim Loschen allerdings kann nicht wie beim eindimensionalen Baum der kleinste Nachfolger
im rechten Teilbaum (oder auch der grote Nachfolger im linken Teilbaum) an die Stelle des zu
loschenden Knotens gesetzt werden, um so zu erreichen, da ein Blatt zu loschen ist. Es mu
der Vergleichswert durch den kleinsten aller Blatter im rechten Teilbaum in dieser Komponente
ersetzt werden.
Eine Operation, die beim eindimensionalen binaren Suchbaum nicht praktikabel ist, ist die sogenannte \partial match query". Das heit, einen Datensatz zu suchen, von dem nur einige Komponenten bekannt sind, die ubrigen sind unbekannt. Sei der Datensatz w gesucht und der aktuelle
betrachtete Baumknoten enthalte einen Vergleichswert zur Komponente i.
a) Die i-te Komponente von w ist bekannt
Folge dem linken oder rechten Zeiger je nach Ausgang des Vergleichs (oder gebe den Inhalt
aus, falls gefunden).
b) Die i-te Komponente von w ist unbekannt
Es mussen beide Zeiger verfolgt werden.
Sei ein optimaler k-d-Baum gegeben mit 2kh 1 = n Knoten, das heit ein Baum minimaler Hohe.
Es seien t der k Komponenten in der Anfrage bekannt | wobei t < k ist, da sonst eine exakte
Suche vorliegt. Wir nehmen an, da die unbekannten Komponenten die ersten k t Komponenten
34
sind, dies ist der schlechteste Fall, da hier die meisten Vergleiche durchgefuhrt werden mussen.
r@
@
@
@@
r@
@r@
r@ @@r@
r@ @@r@
@
@
@
@
@@
@@
r
r@
r
@
r@
@r
r
@@r
@@r
@r
@@r
r@
r@
@
@@
@
@
r
@
r
@
r@r r@r
r @r
1
2
4
2
t
2
t
k
k
Fur den ersten Zyklus durch die Komponenten erhalten wir fur die Anzahl der Vergleiche
1 + 2 + 4 + : : : + 2k t + 2| k t + :{z: : + 2k }t ;
fur den nachsten
t
2k t
1 + 2 + 4 + : : : + 2k t + 2k t + : : : + 2k t
und insgesamt ergibt sich fur die Anzahl der Vergleiche
!
hX1
k t 1
2(k t)h 1 2k t 1 + t2k t 2
k
t
(
k
t
)
i
+
t
2
=
2
2 1
2k t 1
i=0
k t
= C 2(k t)h 1 = C 2 k hk 1
=C
k t
2kh k
!
1 = C (n + 1)1
t
k
1
t
5.7.4 Lomet-Salzberg
= O(n1 k ):
Es benden sich k-d-Baume auf den Seiten. Die Strategie Bereiche aufzuteilen ist gegenuber dem
Gridle verandert. Es braucht die Form von Quadern nicht erhalten zu bleiben. Dazu werden
mehrere Komponenten zugleich verwendet, um aus einem Gebiet ein Teilgebiet herauszulosen.
35
6. Entwurfstheorie relationaler Datenbanken
Wir wenden uns nun wieder der logischen Ebene des Datenbankentwurfs zu.
Sei A = fA1; : : :; An g eine Attributmenge und jedem A 2 A sei ein Wertebereich D(A) zugeordnet,
ohne Beschrankung der Allgemeinheit sei D(A) = Z .
Denition
Eine Relation R auf A besteht aus einer Menge von Abbildungen f : A ! ni=1 D(Ai) mit
f (Ai ) 2 D(Ai ) fur jedes i = 1; : : :; n. A = Attr(R) ist die Attributmenge von R. Die Tupel
werden also durch Abbildungen beschrieben.
S
Anmerkung
Bei den Abbildungen ist die Reihenfolge der Attribute nicht festgelegt. Bei den Relationen ist
die Reihenfolge der Abbildungen ebenfalls nicht festgelegt. Die Tabellen sind Darstellungen der
Relationen.
Schreibweise
Die Abbildungen einer Relation werden \Tupel" genannt.
Denition Naturlicher Verbund
Seien R1, R2 Relationen. Weiter sei A1 = Attr(R1) und A2 = Attr(R2). Dann heit
R1 ./ R2 := f : A1 [ A2 ! D(A) f jA1 2 R1 und f jA2 2 R2
[
A2A1 [A2
der naturliche Verbund von R1 und R2.
Denition Projektion
Sei R eine Relation mit A = Attr(R). Weiter sei B A. Dann heit
B (R) := f f jB j f 2 Rg
die Projektion von R auf B.
Die mengentheoretischen Operationen \[", \\" und \n" lassen sich ebenfalls denieren.
Durch Hinzufu gen und Loschen andert sich der Inhalt einer Datenbank. Beim Datenbankentwurf wird
eine zeitlich gegenuber den A nderungen invariante Denition von Relation vorgenommen. Es werden
Eigenschaften formuliert, die die jeweils gultigen Relationen besitzen mussen.
n
F (A) := R R Relation auf A mit jRj < 1
o
Denition Semantische Bedingung, Relationsschema
Eine Abbildung : F (A) ! fwahr; falschg heit semantische Bedingung auf A.
Sei eine Menge von semantischen Bedingungen auf A, dann heit
n
S (A; ) := R 2 F (A) (R) = wahr fur alle 2
Relationsschema auf A.
36
o
Beispiele
i) Prufung der Korrektheit einer Eingabe (z.B. kein 31. Februar bei Datumseingabe)
ii) Sei die Attributmenge
A = fKundenNr; Name; Anschrift; VersScheinNr; Sparte; Deckung;
;
;
;
;
Abschlussdatum Vertragsende SchadensNr Schadensh
ohe
;
;
g
Schadenstag Auszahlungsbetrag Agent
gegeben. Denkbar sind dann die semantischen Bedingungen
Schadenstag Vertragsende
Auszahlungsbetrag Deckung
Abschlussdatum
oder
\Wenn keine VersScheinNr existiert, darf auch
keine SchadensNr angelegt werden."
Denition Funktionale Abhangigkeiten
Seien X; Y A = Attr(R). Eine semantische Bedingung geschrieben X ! Y heit funktionale
Abhangigkeit. R erfullt X ! Y genau dann, wenn fur alle f1 ; f2 2 R gilt
f1 jX = f2 jX dann folgt f1 jY = f2 jY ;
das heit bei R sind die Eintrage auf Y bereits festgelegt durch die Eintrage auf X .
Beispiel
Im obigen Beispiel waren die folgenden funktionalen Abhangigkeiten denkbar
fKundenNrg ! fName; Anschrift; Agentg
fVersScheinNrg ! fKundenNrg
fSchadensNrg ! fVersScheinNr; Schadenshohe; Schadenstagg
Denition 1. Normalform
Eine Relation R ist in erster Normalform, wenn jeder Eintrag von R atomar ist, das heit ein
einzelner Wert des Wertebereichs.
Beispielsweise ist die folgende Tabelle nicht in erster Normalform
KundenNr
K1
Name
Otto
VersScheinNr
4711
4712
4713
37
SchadensNr
S1,S2,S3
S4,S5,S6
S7,S8,S9,S10
Fuhrt man eine \Normalisierung" durch, so erhalt man
KundenNr
K1
K1
K1
K1
K1
K1
K1
K1
K1
K1
Name
Otto
Otto
Otto
Otto
Otto
Otto
Otto
Otto
Otto
Otto
VersScheinNr
4711
4711
4711
4712
4712
4712
4713
4713
4713
4713
SchadensNr
S1
S2
S3
S4
S5
S6
S7
S8
S9
S10
Neuere Entwicklungen behandeln auch Datenbanken in NFNF (\Non-First-Normal-Form"), zum Beispiel das NF2 - oder das eNF2-Modell. Hier sollen jedoch im weiteren nur Tabellen in erster Normalform
betrachtet werden.
Nullwerte
Es kann vorkommen, da einige Eintragungen nicht vorgenommen werden konnen, da sie bisher nicht existieren oder nicht bekannt sind. Solche Werte heien Nullwerte und werden mit bezeichnet.
Beispiele
Im obigen Beispiel
Ein Kunde der Versicherung hat keinen Schaden gemeldet.
Ein potentieller Kunde braucht keinen Vertrag abgeschlossen zu haben.
Eine Telefonnummer braucht nicht zu existieren.
Beispiel
Sei R die folgende Relation uber fA; B; C g
A
a
B
C
c
Gesucht sind alle Tupel t mit t(B ) = b. Es gibt zwei Alternativen
a) Nur fur Tupel mit t(B ) = b wird die Bedingung als erfullt angesehen.
b) Auch Tupel mit t(B ) = erfullen die Bedingung.
Von Codd wurde eine dreiwertige Logik mit den Werten
eingefuhrt.
^
0
1
0
0
0
0
1
0
0
1
_
0 0 1
38
0
1
1
1
1
1
1
wahr
( 1),
not(0) = 1
not( ) = not(1) = 0
falsch
( 0) und A uerer Verbund
Bei Tupeln, die nicht in den Ausgangstabellen auftauchen, werden die Werte bei den nicht
erklarten Attributen mit aufgefullt.
A
1
2
4
6
7
B
4
2
1
1
3
./
C
1
2
3
4
B
1
2
2
5
=
A
1
2
2
4
6
7
B
4
2
2
1
1
3
5
C
2
3
1
1
4
(Solch ein auerer Verbund ist zum Beispiel auch in SQL moglich)
./ nicht assoziativ ist, denn fur
Ein Nachteil des aueren Verbundes ist, da R2
R1
A
1
B
2
B
2
gilt beispielsweise
B
2
A
1
C
4
./ (R2 ./ R3 )
R1 ./ R2) ./ R3
(R1 A
1
1
R3
C
3
A
C
3
4
1
1
B
2
2
C
3
4
Da im allgemeinen die Auswertreihenfolge vom Datenbank-System bestimmt wird, konnen
hier also Probleme auftreten.
Eine alternative Moglichkeit Nullwerte zu verarbeiten ist, sie als indizierte Werte 1 , 2 , : : : zu
betrachten. Die Nullwerte sind zunachst paarweise verschieden, nur wenn geschlossen werden kann,
da zwei Nullwerte gleich sein mussen werden sie identiziert. Zum Beispiel sind Nullwerte haug
als verschieden anzusehen, etwa Telefonnummer, Autokennzeichen, Kinder.
Fur funktionale Abhangigkeiten vereinbaren wir folgendes: Eine Relation R erfullt X ! Y , dann
wenn aus t1 jX = t2 jX folgt, da die Nullwerte von t1 und t2 auf Y ubereinstimmen.
Im weiteren werden wir alle Nullwerte als indizierte Nullwerte betrachten.
Schlussel
Sei S (A; ) ein Relationenschema. X A heit Schlussel von S (A; ), wenn gilt X ! A und fur
alle A 2 X darf X n fAg ! A nicht von allen R 2 S (A; ) erfullt werden.
Schlu ssel konnen verschieden viele Attribute enthalten.
Sei zum Beispiel A = fA; B; C; Dg und = fABC ! D; BD ! A; ABD ! C g, dann sind in
S (A; ) ABC und BD Schlu ssel. Fur ABC zeigt man dies so: Es gilt ABC ! A, aber nicht
AB ! A, AC ! A oder BC ! A, da zum Beispiel die Tabelle
A
1
1
B
1
1
C
0
1
D
0
1
erfullt aber nicht AB ! A. Fur AC ! A und BC ! A lassen sich ahnliche Gegenbeispiele
nden.
Die Anzahl der Schlussel kann exponentiell wachsen.
39
Beispiel
Sei wieder die Attributmenge
A = fKundenNr; Name; VersScheinNr; Sparte; Deckung; SchadensNr; Schadenstagg
und die folgende Tabelle gegeben
KundenNr
1
1
1
2
3
Name
Otto
Otto
Otto
Hinz
Hinz
VersScheinNr
4711
4712
4711
15
16
Sparte
Kfz
Kfz
Kfz
Kfz
Kfz
Deckung
1000000
1000000
1000000
1000000
1000000
SchadensNr
1
2
3
-----
Schadenstag
1.1.90
2.1.90
3.1.90
-----
Der einzig denkbare Schlussel ware SchadensNr, aber bei einem Schlussel durfen keine Nullwerte eingetragen werden.
Aus einer Menge funktionaler Abhangigkeiten lat sich eine Menge + funktionaler Abhangigkeiten
bestimmen, die logisch impliziert werden.
Beispiel
Sei A = fA; B; C g und = fA ! B; B ! C g. In
+
liegen zum Beispiel
A ! C; A ! BC; A ! AB; A ! A; A ! ;; A ! AC; A ! ABC
B ! BC; B ! ;; : : :
C ! C; C ! ;;
AB ! C; : : :
Schwierigkeiten bei groen Schemata
Informationen, die keinen Wert beim Schlussel besitzen, konnen nicht gespeichert werden.
Informationen, die an andere gekoppelt gespeichert sind, werden beim Loschen der anderen
Informationen mitgeloscht.
Dieselbe Information kann haug gespeichert werden mussen.
Daraus ergibt sich ein hoher Speicherverbrauch und Redundanz.
Eine Information soll moglichst nur an einer Stelle gespeichert werden. Bilde also mehrere Relationenschemata fur die verschiedenen Typen von Informationen.
Denition
Seien S1(A1 ; 1); : : :; Sn(An ; n ) Relationenschemata und : S1 Sn ! fwahr; falschg eine
semantische Bedingung auf (S1 ; : : :; Sn ).
Ist eine Menge semantischer Bedingungen auf (S1; : : :; Sn ), so heit
DS
= DS(S1; : : :; Sn; )
= f(R1; : : :; Rn) 2 S1 Sn j (R1; : : :; Rn ) = wahr fur alle 2 g
ein Datenbankschema.
Ein (R1; : : :; Rn) 2 DS heit Beispiel fur das Schema.
40
Beispiel
Seien die Attributmengen
A1 = fSchadensNr; Schadenstag; Schadenhohe; VersScheinNrg
A2 = fVersScheinNr; KundenNr; Sparte; Deckung; Abschlussdateng
A3 = fKundenNr; Name; Anschrift; Agentg
und die funktionalen Abhangigkeiten
1 = fSchadensNrg ! fSchadenstag; Schadenhohe; VersScheinNrg
2 = fVersScheinNrg ! fKundenNr; Sparte; Deckung; Abschlussdateng
3 = fKundenNrg ! fName; Anschrift; Agentg
gegeben. Daraus ergibt sich
Si = Si(Ai ; fig) sind Relationsschemata fur i = 1; 2; 3
DS = DS(S1 ; S2; S3; fvertr
aglichg) 3 (R1; R2; R3)
Bei einem solchen Schema konnen unabhangig Daten eingefu gt werden. Es braucht etwa kein
Schaden (beziehungsweise Vertrag) vorzuliegen, damit eine VersScheinNr (beziehungsweise
KundenNr) vergeben werden kann.
Vertraglichkeit
vertraglich mu so aussehen, da kein
(beziehungsweise
werden kann, zu dem kein Vertrag (beziehungsweise Kunde) existiert.
Schaden
Vertrag)
gespeichert
Fremdschlusselbedingung
Die Attributmenge Ai enthalte einen Schlussel X von S (Aj ; j ). Dann lautet die Fremdschlusselbedingung
t 2 Ri 2 S (Ai ; i) =) 9t0 2 Rj 2 S (Aj ; j ): tjX = t0 jX :
Das heit, falls in Ri ein Tupel t eingefugt werden soll, mu in Rj ein Tupel existieren, das in X
mit t ubereinstimmt.
Im obigen Beispiel ist VersScheinNr ein Fremdschlu ssel in A1 von A2 .
S
Sei A = ni=1 Ai , die Menge der funktionalen Abhangigkeiten X ! Y , fur die ein Ai existiert mit
X; Y 2 Ai und X ! Y 2 i. Betrachte nun die Abbildung
: S (A; ) ! S1 : : : Sn
S (A; ) 3 R 7! (A1 (R)); : : :; An (R) = (R1; : : :; Rn ):
Man sagt (R1; : : :; Rn) 2 S1 Sn erfullt die Universalrelationbedingung UR, wenn ein R 2 S (A; )
existiert mit (R) = (R1; : : :; Rn ).
Und (R1; : : :; Rn) 2 S1 Sn erfullt die schwache Universalrelationbedingung SUR , wenn ein
R 2 S (A; ) exstiert mit (R) (R1; : : :; Rn).
In der Theorie wird immer UR vorausgesetzt. Dann ist namlich
DS(S1 ; : : :; Sn ; fURg )
ein Datenbankschema.
Wir beschaftigen uns im folgenden mit der Frage welche Information in (R1; : : :; Rn ) enthalten ist.
n
n
Wir wissen bereits, da i./
R
auf
A
deniert
ist.
Gilt
aber
auch
R
=
./
R im allgemeinen?
i
=1
i=1 i
Die Inklusion \" gilt nach U bungsaufgabe 5 immer.
41
Beispiel
Seien die folgenden drei Relationen R, R1 und R2 gegeben, mit R1 = Nummer;LName;Ort (R) und
R2 = TNummer;TName;Ort(R). Sei
Nummer
L1
L2
L1
L3
LName
Meier
Meier
Meier
Schmidt
Nummer
L1
L2
L3
TNummer
T1
T2
T3
R
Ort
K
oln
Berlin
K
oln
K
oln
TNummer
T1
T2
T3
T1
R1
LName
Meier
Meier
Schmidt
R2
TName
Mutter
Bolzen
Schraube
TName
Mutter
Bolzen
Schraube
Mutter
Ort
K
oln
Berlin
K
oln
Ort
K
oln
Berlin
K
oln
Es folgt
Nummer
.
.
.
L3
LName
.
.
.
Schmidt
R1 ./ R2
Ort
.
.
.
K
oln
TNummer
.
.
.
T3
TName
.
.
.
Schraube
Der letzte Datensatz ist falsch, die Inklusion \" gilt also im allgemeinen nicht!
Denition
Gilt nun stets
fur
n
R = i./
R
=1 i
(R1; : : :; Rn ) 2 DS(S1 ; : : :; Sn; fURg) und R 2 S (A; ),
so besitzt DS einen verlustlosen Verbund bezuglich (A1 ; : : :; An ).
Bemerkung
Die Aussage, da
: S (A; ) ! DS(S1; : : :; Sn ; fURg)
injektiv ist, ist gleichbedeutend damit, da die Zerlegung von S (A; ) in
Verbund besitzt.
42
DS
einen verlustlosen
Beweis
Im obigen Beispiel ware dasselbe R1 und R2 resultiert, wenn in R das Tupel
L3 Schmidt K
oln T3 Schraube
vorgekommen ware. Das heit wir erhalten das gleiche Bild fur verschiedene Urbilder, somit ist
die Zerlegung nicht injektiv.
Algorithmus fur den Test auf verlustlosen Verbund bei funktionalen Abhangigkeiten
Gegeben sei S (A; ) mit einer Menge von funktionalen Abhangigkeiten und (A1 ; : : :; Am) mit
A=
m
[
i=1
Ai:
Ausgegeben werde, ob die Zerlegung von S (A; ) bezuglich (A1; : : :; Am ) verlustlos ist.
Erstelle dazu eine Tabelle T mit den Zeilen A1 ; : : :; Am und den Spalten A1; : : :; An , wobei
A = f A1 ; : : : ; An g, und mit Eintragen
falls Aj 2 Ai
T (Ai ; Aj ) = ab sonst.
i
Wiederhole bis sich T nicht mehr andert
Durchlaufe mit X ! Y
Falls zwei Zeilen Ak und Al existieren, deren Eintrage in den Spalten von X ubereinstimmen,
so setze deren Eintrage auf Y ebenfalls gleich. Dabei wird als Ergebnis a eingetragen, wenn
eine der Zeilen in der entsprechenden Spalte einen Eintrag a enthalt, sonst das b mit dem
kleineren der Indizes.
Genau dann, wenn die stabile Tafel eine Zeile enthalt, die nur Eintrage a besitzt, existiert ein
verlustloser Verbund.
Beispiel
Sei A = fA; B; C; D; E g und = fA ! C; B ! C; C ! D; DE ! C; CE ! Ag und
A1 = fA; Dg, A2 = fA; Bg, A3 = fB; E g, A4 = fC; D; Eg, A5 = fA; E g.
A1
A2
A3
A4
A5
A B
a b1
a a
b3 a
b4 b4
a b5
A1
A2
A3
A4
A5
A!C
A B C D E
a b1 b1 a b1
a a b1 b2 b2
b3 a b3 b3 a
b4 b4 a a a
a b5 b1 b5 a
43
C D E
b1 a b1
b2 b2 b2
b3 b3 a
a a a
b5 b5 a
A1
A2
A3
A4
A5
B!C
A B C D E
a b1 b1 a b1
a a b1 b2 b2
b3 a b1 b3 a
b4 b4 a a a
a b5 b1 b5 a
A1
A2
A3
A4
A5
C!D
A B C
a b1 b1
a a b1
b3 a b1
b4 b4 a
a b5 b1
D
a
a
a
a
a
E
b1
b2
a
a
a
A1
A2
A3
A4
A5
A
a
a
a
a
a
DE ! C
B C
b1 b1
a b1
a a
b4 a
b5 a
D
a
a
a
a
a
E
b1
b2
a
a
a
A
a
a
a
a
a
CE ! A
B C
b1 b1
a b1
a a
b4 a
b5 a
D
a
a
a
a
a
E
b1
b2
a
a
a
A1
A2
A3
A4
A5
Also handelt es sich um einen verlustlosen Verbund.
Beweis
Es ist R 2 S (A; ), das heit R erfullt alle X ! Y 2 . Wir haben zu zeigen, da \" gilt.
m
(R). Dann ist (a1; : : :; an) 2 R zu zeigen. Das Tupel
Sei dazu also (a1; : : :; an ) 2 i./
=1 Ai
a = (a1; : : :; an) wurde aus den Ai (R) durch Verbund erzeugt, daher existiert also in jedem
Ai (R) ein ti mit Ai (a) = ti. In R existiert somit zu jedem ti ein Tupel fi mit fijAi = ti , das
heit
ur Aj 2 Ai ;
fi (Aj ) = baijj f
sonst,
dabei ist bij ein bisher unbekannter Wert.
Wir haben somit f1 ; : : :; fn 2 R und R erfullt alle X ! Y 2 . Stimmen ein fk und ein fl auf
X uberein, so mussen sie auch auf Y ubereinstimmen. Damit konnen die Eintrage gleichgesetzt
44
werden, ist ein Eintrag dabei bekannt, das heit ein aj , so mu der unbekannte Wert im anderen
Tupel ebenfalls aj gewesen sein.
Besteht schlielich ein fi nur noch aus aj 's, so ist also fi = (a1; : : :; an ) 2 R.
Enthalte umgekehrt die stabile Tafel keine Zeile, die nur aus aj 's besteht. Dann besetze die Tafel
mit paarweise verschiedenen Werten. Es ergibt sich eine Relation,
die alle X ! Y 2 erfullt.
m
Fur diese Relation R ist (a1; : : :; an ) 2= R aber (a1; : : :; an) 2 i./
(R). In diesem Fall ist der
=1 Ai
Verbund also nicht verlustlos.
(Beim formalen Durchfuhren der Gleichsetzungen kann der Spaltenindex entfallen!)
Folgerung
Sei A = A1 [ A2 und eine Menge funktionaler Abhangigkeiten auf A. Ist
A1 \ A2 ! A1 n A2 2 +;
so gibt es einen verlustlosen Verbund der Zerlegung von S (A; ) bezuglich (A1 ; A2).
Beweis
Die Startbelegung der Tafel sieht folgendermaen aus
A1 \ A2 A1 n A2 A2 n A1
A1 a : : :a a : : :a b1 : : :b1
A2 a : : :a b2 : : :b2 a : : :a
Betrachten wir die Abhangigkeit A1 \ A2 ! A1 n A2 , so wird daraus
A1 \ A2 A1 n A2 A2 n A1
A1 a : : :a a : : :a b1 : : :b1
A2 a : : :a a : : :a a : : :a
Beispiel
Sei A = fLehrer; Kurs; Studentg und = fKurs ! Lehrerg. Dann lat sich nach obiger Folgerung jedes R 2 S (A; ) verlustos bezuglich (fKurs; Lehrerg; fKurs; Studentg) zerlegen.
Die Armstrong-Axiome
Um formal bestimmen zu konnen, welche funktionalen Abhangigkeiten von einer Menge funktionaler Abhangigkeiten logisch impliziert werden, kann man folgende drei Regeln verwenden.
Fur alle X; Y; Z A gilt
Ist Y X so gilt X ! Y .
(A1)
Gilt X ! Y so auch XZ ! Y Z .
(A2)
Gilt X ! Y und Y ! Z , so auch X ! Z .
(A3)
Diese Armstrong-Axiome sind korrekt und vollstandig.
Beweis
Die Korrektheit lat sich leicht zeigen, wir wollen uns hier mit der Vollstandigkeit beschaftigen.
Es ist zu zeigen, da sich jede funktionale Abhangigkeit X ! Y 2 + durch Anwenden der
Regeln (A1), (A2) und (A3) aus ableiten lat. Sei dazu
X + := fA A j X ! A ist durch (A1), (A2) und (A3) aus ableitbarg
45
Sei Y X +. Dann ist die Abhangigkeit X ! Y mit (A1), (A2) und (A3) ableitbar,
denn fur Y = fA1 ; : : :; An g wissen wir, da jedes X ! Ai ableitbar ist. Vergroere mit
Induktion fA1; : : :; Aig fur i = 1; 2; : : : bis Y erreicht ist. Dies funktioniert so: Aus X ! Ai
und X ! A1 : : :Ai 1 (IV) folgt mittels (A2) XX ! XAi und XAi ! A1 : : :Ai 1 Ai und
hieraus mit (A3) X ! A1 : : :Ai 1 Ai .
Sei nun Y 6 X +. Dann kann X ! Y keine logische Konsequenz der Abhangigkeiten in
sein, denn wir konnen eine Relation R denieren, die zwar alle Abhangigkeiten aus
erfullt, aber X ! Y nicht.
X+ A n X+
R = 1: : : 1 0: : : 0
1: : : 1
1: : : 1
Nach der Voraussetzung Y 6 X + erfullt R X ! Y nicht. Nun ist noch zu zeigen, da
R alle V ! W 2 erfullt. Sei dazu angenommen, da ein V ! W von R nicht erfullt
werde. Dann mu V X + sein, da sonst V ! W trivialerweise erfullt ware, da dann
R keine auf V gleichen Tupel enthielte. Weiter mu W 6 X + gelten, da sonst V ! W
erfullt ware.
Aus V X + erhalten wir mittels (A1) X + ! V und mit (A3) ergibt sich daraus X ! V .
Weiter folgt hieraus mit (A3) und V ! W die Abhangigkeit X ! W .
Wegen W 6 X + existiert ein Attribut A 2 W n X + . Damit gilt nach (A1) W ! A und
nach (A3) folgt damit X ! A, wobei A 2= X + .
Um dies zu zeigen haben wir nur (A1), (A2) und (A3) benutzt. Damit ist ein Widerspruch
gefunden, da R diese Abhangigkeit nicht erfullt.
Um zu entscheiden, ob X ! Y 2 + ist, braucht nur Y X + gepruft zu werden.
Algorithmus zur Berechnung von X +
Sei X (0) := X . Sei
X (i+1) := X (i) [ fA j Es exitiert ein Y ! Z 2 mit Y X (i) und A Z g
Ist X (i+1) = X (i) so ist X (i) = X + .
Beispiel
Sei A = fA; B; E; G; H; I g, = fAB ! E; E ! G; BE ! I; GI ! H g und X = AB . Der
Algorithmus liefert dann
X (0) = AB
?
?
?AB ! E
y
X (1)?= ABE
?
?E ! G
y
X (2) = ABEG
?
?
?BE ! I
y
X (3)?= ABEGI
?
?GI ! H
y
X (4) = ABEGIH
46
Der Algorithmus bricht nach diesem Durchgang ab, da bereits X (4) = A ist und somit nicht
mehr vergroert werden kann. Es ist also X + = A. Weiter ist A+ = A und B + = B . Somit
haben wir gezeigt, da X = AB Schlussel von S (A; ) ist.
Ableitungsgraphen
Sei A eine Attributmenge und eine Menge funktionaler Abhangigkeiten.
(1) Ist X A, so ist der Graph, der nur die Attribute aus X als Knoten und keine Pfeile enthalt, ein
Ableitungsgraph zu .
(2) Sind A1,: : : ,Ak Knoten eines Ableitungsgraphen G1 und ist A1 : : :Ak ! fC g [ Z 2 , so ist auch
G2 mit
Knoten(G2 ) = Knoten(G1) [ C
Pfeile(G2) = Pfeile(G1) [ fA1 ! C; : : :; Ak ! C g
ein Ableitungsgraph zu .
(3) Nur die mit (1) und (2) konstruierten Graphen sind Ableitungsgraphen zu .
Ist X die Menge der Knoten eines Ableitungsgraphen zu , auf die keine Pfeile zeigen, so heit X
Anfangsmenge. Ist Y Knoten(G), so heit G Ableitungsgraph zu X ! Y bezuglich . Es gilt
X ! Y 2 + genau dann, wenn es zu X ! Y einen Ableitungsgraph bezuglich gibt.
Beispiel
Seien A und wie in obigem Beispiel, dann konnen wir folgenden Ableitungsgraph konstruieren.
Wir verwenden dazu in dieser Reihenfolge die Regeln AB ! E , BE ! I , E ! G und GI ! H .
k
A
k
A
k
B
B
R Ek
k
k
k
A
A
R Ek
k
B
R I?k
R Ek
k
B
?
R Ik
- Gk
k
A
R Ek
k
B
R I?k
- Gk
- H?k
Dieser Graph ist ein Ableitungsgraph zu AB ! GH .
Welche Regeln werden benutzt um einen Ableitungsgraph zu konstruieren
Die Axiome
X!X
Ist X ! Y Z 2 G und Z ! CW 2 , dann gilt auch X ! ZC
Gilt X ! Y Z , so auch X ! Y
(B 1)
(B 2)
(B 3)
werden verwendet, um einen Ableitungsgraphen zu konstruieren. Damit wird X + mitbestimmt.
Behauptung
Die Axiome (B1), (B2) und (B3) sind aquivalent zu (A1), (A2) und (A3).
Beweis
47
Bi =) Ai
(B 3)
!X
X
X = Y Z (, X Y ) =) X ! Y , das heit (A1).
)
(B 2)
(B 3)
X
!
Y
XZ ! XZ =) XZ ! XY Z =) XZ ! Y Z; das heit (A2).
)
(B 2)
(B 3)
X
!
Y
Y ! Z =) X ! Y Z =) X ! Z; das heit (A3).
)
Ai =) Bi
Die Armstrongaxiome sind vollstandig, implizieren also alle gultigen Regeln.
Damit ist also die A quivalenz von
X!Y 2 +
zur Existenz eines Ableitungsgraphen fur X ! Y gezeigt.
Algorithmus zur Berechnung von X +
Die einfachste Version dieses Algorithmus durchlauft zu jedem A 2 X alle 2 und versucht X zu
vergroern, bis X nicht mehr wachst.
Die Ezienz kann verbessert werden durch
(1) Wurde U ! V 2 einmal benutzt, so wird diese Abhangigkeit nie wieder verwendet.
(2) Wann lat sich U ! V verwenden, um X i zu X i+1 zu vergroern?
U X i: Zahle die Attribute von U , die noch nicht erfat sind. Sobald diese Zahl auf 0 heruntergezahlt ist, diese Regel anwenden.
(3) Damit ohne Suchaufwand heruntergezahlt werden kann, wird zu jedem Attribut eine Liste mit
Verweisen auf die Regeln gefuhrt, bei denen es auf der linken Seite vorkommt.
48
Algorithmus Linclosure zur Berechnung der Hulle X + von X bezuglich
(1) Initialisierung
for each FD
do
begin
count (
) :=
for each (
)
add (
) to list( )
end
newdep = ;
update = ;
(2) Berechnung
while update = do
begin
w
ahle ein
update
entferne
aus update
for each
list( )
begin
W !Z2
W ! Z jW j
A2W
W!Z
A
X
X
6 ;
A2
A
W !Z2
A
count(W ! Z )
if count(W ! Z ) == 0
then
begin
add := Z n newdep
newdep = newdep [ add
update = update [ add
end
end
end
(3) Gebe newdep aus
Der Algorithmus leistet das gleiche wie der Tafelalgorithmus, ist also korrekt.
Aufwand
Sei n die Lange der Eingabe, das heit
n = jX j +
X
(jW j + jZ j)
W !Z 2
und X und wie immer. Dann ist der Aufwand von Linclosure O(n).
Beweis
Bei der while-Schleife zahlt man uber alle Schleifendurchga nge hinweg global, welcher Aufwand
insgesamt bei den Operationen anfallt. Da kein Suchen erforderlich ist, ist nur zu berucksichtigen,
wie oft Herunterzahlen und Vergroern notig ist. Schlimmstenfalls wird beim Herunterzahlen jede
linke Seite einer Abhangigkeit benotigt, das heit es fallt der Aufwand
X
W !Z 2
O(jW j)
an.
Bei add wird fur jedes A 2 Z Aufwand O(1) benotigt.
49
Die Berucksichtigung von Z erfordert den Aufwand O(jZ j) fur jede Abhangigkeit, die verwendet
wird, insgesamt wird also uber alle Abhangigkeiten hinweg der Aufwand
X
O(jZ j)
W !Z 2
notig.
Da das Initialisieren einen Aufwand der Groenordnung O(jX j) erfordert, folgt nach Aufsummierung die Behauptung.
Beispiel
Sei = fA ! D; AB ! E; BI ! E; CD ! I; E ! C g und X = fA; E g.
Die Initialisierung liefert:
newdep = fA; E g; update = fA; E g
list(A) = (A ! D; AB ! E ) count(A ! D) = 1
count(AB ! E ) = 2
list(B ) = (AB ! E; BI ! E ) count(BI ! E ) = 2
list(C ) = CD ! I
count(CD ! I ) = 2
list(D) = CD ! I
list(E ) = E ! C
count(E ! C ) = 1
list(I ) = BI ! E
Der Algorithmus macht folgendes:
A2
update = fE g.
A
fcount(A ! D) = 0, count(AB ! E ) = 1, add = fDg
newdep = fA; E; Dg, update = fE; Dg
W
ahle E 2 update, update = fDg
Durchlaufe list(E )
count(E ! C ) = 0
add = fC g
W
ahle
update,
Durchlaufe list( )
usw.
Ziel des Folgenden wird es nun sein, eine sinnvolle Abbildung
S (A; ) ! DS(S1; : : :; Sn; )
R ! (R1; : : :; Rn)
Ri = Ai (R)
zu nden. Die update-Operationen sollen auf den Ri vorgenommen werden. Dabei soll es ausreichen,
statt die lokalen Mengen i von Abhangigkeiten zu berucksichtigen.
Das Problem ist also zunachst die i zu bestimmen. Sei dazu = X ! Y eine Abhangigkeit auf A
und B A, so deniere
X ! Y auf B falls X; Y B
B (X ! Y ) := wahr
sonst,
und
B := fB ( ) j 2 + g = B ( )
ist die Menge der auf B implizierten funktionalen Abhangigkeiten.
50
Beispiel
Sei A = fA; B; C; D; E g und = fA ! E; B ! E; CE ! Dg und B = fA; B; C; Dg. Dann ist
B = fAC ! D; BC ! Dg, wobei die trivialen Abhangigkeiten weggelassen wurden.
Sei die Tabelle
A B C D
1 3 5 7
2 4 5 8
1 4 6 8
die die Abhangigkeiten in B trivialerweise erfullt, gegeben. Erfullt nun das Urbild uber A die
funktionalen Abhangigkeiten in ?
Wir mussen dazu das Relationenschema R kunstruieren. Sei also
A B C D E
1 3 5 7 x
R= 2 4 5 8 y
1 4 6 8 z
..
.
..
.
..
.
..
.
..
.
Aus A ! E folgt nun x = z , aus B ! E folgt y = z und daher aus CE ! D 7 = 8, also ein
Widerspruch, das heit die auf B implizierten Abhangigkeiten sind nicht notwendigerweise mit
den funktionalen Abhangigkeiten auf A vertraglich.
Sei auf A gegeben und A1 ; : : :; Am mit
m
[
i=1
Ai = A:
Weiter sei i = Ai ( ). Gegeben sei die Abbildung
: S (A; ) ! DS(S1(A1; 1); : : :; Sn(An ; n); 0):
Wegen UR existiert dann fur jedes (R1; : : :; Rn) 2 DS ein R 2 S (A; ) mit
Ri = Ai (R) und 0 = fUR g:
Falls dann R jedes 2 erfullt, so ist abhangigkeitserhaltend.
Man braucht also bei einer abhangigkeitserhaltenden Zerlegung nur die i lokal zu prufen, um sicherzustellen, da das globale R alle 2 erfullt.
Seien , 0 Mengen von funktionalen Abhangigkeiten auf A. Es gilt:
alle 0 2 0 werden von logisch induziert
0 () alle
2 werden von 0 logisch induziert.
Ein Verfahren zur Prufung
Berechne X + bezuglich . Sei 0 = X ! Y 2 0 . Falls Y X + bezuglich , so wird 0 von
impliziert.
Eine solche Problemstellung ist naturlich rechnerisch entscheidbar.
Gegeben seien nun 1 ; : : :; m . Fur alle i erfulle Ri die Abhangigkeiten aus i . Weiterhin existiere R
uber A mit der Eigenschaft Ai (R) = Ri.
51
Welche Abhangigkeiten erfullt nun R?
Sei (X ! Y )Ai 2 i .
Erfullt Ri die Abhangigkeit (X ! Y )Ai , so erfullt R die Abhangigkeit (X ! Y )A .
Sei
n
./
= f(X ! Y )A j Es existiert ein i mit X [ Y Ai und (X ! Y )Ai 2 i g:
i=1 i
Dann ist : S ! DS abhangigkeitserhaltend, wenn
n
i./=1
i
gilt. Mathematisch ausgedruckt heit dies
abhangigkeitserhaltend () surjektiv
hat verlustlosen Verbund () injektiv.
Welche Eigenschaften soll ein Datenbanksystem(DS) haben?
Ziel ist es, Redundanz zu vermeiden, das heit jede Information nur einmal zu speichern. Dies geschieht
uber die Denition von Normalformen.
Sei S (A; ) ein Relationenschema in 1. Normalform, wobei eine Menge von funktionalen Abhangigkeiten ist.
Denition
Eine Abhangigkeit X ! Y 2 + heit voll, wenn es kein Z = X gibt mit Z ! Y 2 + . Dann ist
Y voll von X abhangig. A heit Schlusselattribut, wenn ein Schlussel X von S (A; ) mit A 2 X
existiert.
Denition 2. Normalform
Jedes Nichtschlu sselattribut (NSA) ist von jedem Schlussel voll abhangig.
Denition
Eine Abhangigkeit der Form X ! Y 2 + , Y ! fAg 2 + , Y 6! X , A 2= X , A 2= Y heit
transitiv. A heit dann transitiv uber Y von X abhangig.
Denition 3. Normalform
Jedes NSA ist von jedem Schlussel nicht transitiv abhangig.
Denition Boyce-Codd-Normalform(BCNF)
Jedes Attribut ist von jedem Schlussel nicht transitiv abhangig.
Bemerkung
Es gelten die folgenden Implikationen:
R erfullt BCNF =) R erfullt 3NF
R erfullt 3NF =) R erfullt 2NF
R erfullt 2NF =) R erfullt 1NF
52
Beispiel
Sei
A = fLieferant; Teil; Anzahl; Ort; Entfernungg
und
= ffLieferant; Teilg ! fAnzahlg; fLieferantg ! fOrtg; fOrtg ! fEntfernunggg:
Dann hat S (A; ) als einzigen Schlussel X = fLieferant; Teilg.
Die funktionale Abhangigkeit fLieferantg ! fOrtg liegt in + , Ort ist ein NSA und es ist
fLieferantg = X . Also liegt keine 2NF vor. Dies verursacht die Redundanz, da der Wohnort
eines Lieferanten jedesmal erneut gespeichert wird, wenn eine Lieferung des Lieferanten erfolgt.
Setze
A1 = fLieferant; Teil; Anzahlg
1 = ffLieferant; Teilg ! fAnzahlgg
A2 = fLieferant; Ort; Entfernungg
2 = ffLieferantg ! fOrtg; fOrtg ! fEnfernunggg
Die Abbildung
S (A; ) ! DS(S1(A1 ; 1); S2(A2; 2 ); 0)
ist abhangigkeitserhaltend. A1 \A2 = fLieferantg und A2 nA1 = fOrt; Entfernungg und es gilt
A1 \ A2 ! A2 n A1 2 + ;
also ist der Verbund verlustlos. Weiterhin sind S1 und S2 in 2NF.
S1 ist daruberhinaus in 3NF, aber S2 nicht, da fLieferantg ! fOrtg, fOrtg ! fEnfernungg
eine transitive Abhangigkeit ist.
Sind mehrere Lieferanten am gleichen Ort, so wird die Entfernung dieses Ortes redundant gespeichert. Zerlege daher S2 weiter in
A21 = fLieferant; Ortg
21 = ffLieferantg ! fOrtgg
A22 = fOrt; Entfernungg
22 = ffOrtg ! fEnfernunggg
S21(A21; 21); S22(A22; 22); 0) ersetzt S2(A2 ; 2) abhangigkeitserhaltend und der Verbund ist
verlustlos.
Die Abbildung
S (A; ) ! DS(S1 (A1; 1 ); S21(A21; 21); S22(A22; 22); 0)
ist also ebenfalls abhangigkeitserhaltend, der Verbund ist verlustlos und die Schemata sind in 3NF
und in BCNF.
Ein Relationenschema in 3NF mu nicht notwendigerweise in BCNF sein, wie das folgende Beispiel
lehrt.
DS(
53
Beispiel
Sei
A = fHersteller; Modell; Geratenummerg
und
= ffHersteller; Geratenummerg ! fModellg; fModellg ! fHerstellergg:
Dann hat S (A; ) als Schlussel fHersteller; Geratenummerg und fModell; Geratenummerg. Jedes
Attribut ist Schlusselattribut, also liegt 3NF vor. Wegen der transitiven Abhangigkeit
fModell; Geratenummerg ! fModellg fModellg ! fHerstellerg
liegt aber keine BCNF vor. Die Redundanz besteht darin, da bei jedem Gerat eines Modelltyps
aufgelistet wird, wer Hersteller des Modells ist.
Setze
A1 = fModell; Geratenummerg
1=;
A2 = fModell; Herstellerg
2 = ffModellg ! fHerstellergg
Die Zerlegung
S (A; ) ! DS(S1(A1 ; 1); S2(A2; 2 ); 0)
hat einen verlustlosen Verbund, ist aber nicht abhangigkeitserhaltend, weil die ursprungliche funktionale Abhangigkeit fHersteller; Geratenummerg ! fModellg nicht mehr vorhanden ist. Eine
abhangigkeitserhaltende Zerlegung ist hier nicht moglich.
Ein Beispiel fur einen Widerspruch liefert die konkrete Tabelle
Hersteller
Opel
Ford
Opel
Ger
atenummer
1
1
2
Modell
Kadett
Fiesta
Kadett
die zerlegt wird in
Ger
atenummer
1
1
2
Modell
Kadett
Fiesta
Kadett
und
Modell
Kadett
Fiesta
Hersteller
Opel
Ford
In den zerlegten Tabellen kann man die Tupel (1; Taunus) und (Taunus; Ford) einfugen, wogegen in der oberen Tabelle kein entsprechendes Tupel (Ford; 1; Taunus) existieren darf, da
fHersteller; Geratenummerg sonst kein Schlussel mehr ware.
Algorithmus zur Zerlegung in BCNF-Schemata
Gegeben sei S (A; ) mit einer Menge von funktionalen Abhangigkeiten. Ausgegeben wird eine
verlustlose Zerlegung
DS(S1(A1 ; 1); : : :; Sn (An ; n ); 0)
mit der Eigenschaft, da alle Si (Ai ; i ) in BCNF sind.
54
Methode
1. Initialisiere DS(S1 ; 0), wobei S1 = S .
2. Ist Si ein Schema aus DS und nicht in BCNF, so sei X ! fAg 2 +i , X enthalte keinen
Schlu ssel von Si und es sei A 2= X .
Zerlege Si in Si1 und Si2
Ai1 = fAg [ X
i1 = Ai1 ( i )
Ai2 = Ai n fAg
i2 = Ai2 ( i )
Wiederhole dies solange, bis jedes Si in BCNF ist.
3. Gebe die Zerlegung aus.
Test auf BCNF
Falls X kein Schlussel von Ai ist, konnen wir A; B 2 Ai mit A 2 (Ai n fA; B g)+ bezuglich
nden. Damit folgt die transitive Abhangigkeit
Ai n fAg ! Ai n fA; Bg ! A:
|
{z
X
}
Dieses Kriterium lat sich verwenden, um eine Abhangigkeit X ! A fur die obige Zerlegung zu
nden.
Algorithmus
1. Falls Ai kein fA; B g mit A 2 (Ai nfA; B g)+ besitzt, so hat Si (Ai ; Ai ( )) bereits BCNF.
2. Nimm ein solches Paar fA; B g und setze Y = Ai n fB g.
3. Solange in Y ein Paar fA; B 0g mit A 2 (Y n fA; B 0 g)+ existiert:
setze Y = Y n fB 0 g.
4. Setze Ai1 = Y und Ai2 = Ai n fAg.
Das Schema Si1(Ai1 ; Ai1 ( i )) hat nun BCNF. Das Schema Si2 mu weiter untersucht und even-
tuell zerlegt werden.
Die Komplexitat ist polynomial (O(n4)) zur Lange n der Eingabe, da n-mal ein Attribut A entfernt
werden kann und jedesmal bei den verbleibenden Attributen alle Paare gebildet werden mussen.
Dabei ist dann Linclosure() aufzurufen.
Bemerkung
Nicht fur jede Komponente wird Ai ( ) bei jedem Zerlegungsschritt bestimmt.
Nur fur die BCNF-Komponente wird ein Schlussel ausgezeichnet: Ai = X [ fAg, falls X ! A
existiert mit einem Schlu ssel X von Si (Ai ; i ). Fur die weitere Zerlegung wird stets verwendet.
Die erreichte Zerlegung in BCNF-Schemata hat einen verlustlosen Verbund, ist aber nicht notwendig
abhangigkeitserhaltend.
Beweis Verlustloser Verbund
Dann gilt mit X ! fAg und A1 = X [ fAg, da X ! A1 2 + ist. Weiter ist A2 = A n fAg und
A1 \ A2 = X . Die Zerlegung bezuglich A1 und A2 ist also verlustlos und bei der Iteration wird
diese Eigenschaft erhalten.
55
Beispiel (eigentlich fur 3NF, da nur ein Schlussel vorhanden ist!)
Sei
und
A = fVorlesung; Lehrer; Stunde; Raum; Studentg
= ffVorlesungg ! fLehrerg
fStunde; Raumg ! fVorlesungg;
fStunde; Lehrerg ! fRaumg;
fStunde; Studentg ! fRaumgg
Dabei ist fStunde; Studentg Schlussel. Da fVorlesungg kein Schlu ssel ist, setze
A1 = fVorlesung; Lehrerg
1 = ffVorlesungg ! fLehrergg:
Setzt man
A2 = fVorlesung; Stunde; Raum; Studentg;
so ist fStunde; Studentg der einzige Schlussel.
Wegen
fVorlesung; Stundeg+ fVorlesung; Stunde; Lehrer; Raumg
verletzt fVorlesung; Stundeg ! fRaumg die BCNF-Bedingung, da das Attribut fRaumg uber
fVorlesung; Stundeg transitiv von fStunde; Studentg abhangig ist.
Spaltet man dieses Schema noch einmal auf in
A21 = fVorlesung; Stunde; Raumg
mit
21 = ffVorlesung; Stundeg ! fRaumg; fStunde; Raumg ! fVorlesunggg
und
A22 = fVorlesung; Stunde; Studentg
mit
22 = ffStunde; Studentg ! fVorlesunggg;
so sind die resultierenden Schemata in BCNF. Man beachte, da die Projektionen der i von +
herkommen.
Es wurde also anschaulich eine Zerlegung in Vorlesungs-, Horsaal- und Stundenplan vorgenommen.
Genauso hatte man bei A2 auch
A21 = fStunde; Raum; Studentg
wahlen konnen. Daraus ware ein Raumplan fur Studenten resultiert.
Daraus ersieht man, da nicht jede Zerlegung, die automatisch erzeugt wird, sinnvoll ist. Manuelles
Eingreifen ist hier notig.
Die Abhangigkeit
fStunde; Lehrerg ! fRaumg
bleibt bei dieser Zerlegung nicht erhalten. Es besteht also das Risiko, da bei ausschlielich lokaler
Beachtung der Abhangigkeiten global eine falsche Eintragung erzeugt wird, das heit in unserem
Beispiel eine \Doppelbelegung von Lehrern".
Statt BCNF lat sich die dritte Normalform erreichen. Dabei ist es moglich, sowohl abhangigkeitserhaltend als auch verlustlos zu zerlegen.
56
Idee \Synthesealgorithmus"
Die Menge der Abhangigkeiten wird auf eine Basismenge reduziert. Die bei den einzelnen
Abhangigkeiten verwendeten Attribute werden jeweils als Attributmenge eines Schemas aufgefat.
Denition
Sei eine Menge von funktionalen Abhangigkeiten.
heit nichtredundant genau dann, wenn 6 n f g fur alle 2 ist.
heit rechtsreduziert genau dann, wenn = X ! fAg fur alle 2 ist.
heit linksreduziert genau dann, wenn fur alle Regeln 2 mit = X ! Y gilt, da
6 ( n f g) [ fX n fAg ! Y g mit A 2 X ist.
Bemerkung
Die dritte Denition besagt, da auf keiner linken Seite ein Attribut fortgelassen werden darf.
Jede Menge aus funktionalen Abhangigkeiten ist aquivalent zu einer Menge 0 , die nichtredundant und reduziert ist.
Es kann vorkommen, da 1 2 ist und sowohl 1 als auch 2 nicht redundant und reduziert
sind, aber da j 1 j 6= j 2 j ist.
Beispiel
Sei
A = fA; B; C; D; E; F g
und
= fAB ! C; C ! A; BC ! D; ACD ! B; D ! EF; BE ! C; CF ! BD; CE ! AF g:
Im ersten Schritt spaltet man die rechten Seiten auf und erhalt als neue funktionale Abhangigkeiten
D ! E; D ! F; CF ! B; CF ! D; CE ! A; CE ! F:
Wegen C ! A ist CE ! A redundant. Weiterhin ist
CF CFD CFDA ABCDF (CF )+
bezuglich ohne CF ! B . Daher ist
n fCF ! Bg:
Es sind keine weiteren Abhangigkeiten redundant. Die funktionale Abhangigkeit ACD ! B kann
wegen C ! A reduziert werden auf CD ! B . Die Menge
1 = fAB ! C; C ! A; BC
! D; CD ! B; D ! E; D ! F; BE ! C; CF ! D; CE ! F g
ist nichtredundant und reduziert. Man kann aber stattdessen auch CE ! A, CF ! D und
ACD ! B weglassen.
57
Begrundung
Aus CF CFB BCFD folgt bereits CF ! D.
Ebenso kann wegen ACD ACDEF ACDEFB die Abhangigkeit ACD ! B weggelassen
werden.
Die Menge
2 = fAB ! C; C ! A; BC ! D; D ! E; D ! F; BC
! E; CF ! B; CE ! F g
ist also ebenfalls nichtredundant und reduziert, aber es gilt
j 1j = 9 6= 8 = j 2j:
Erster Synthesesalgorithmus
Gegeben sei S (A; ) mit einer nichtredundanten und reduzierten Menge von funktionalen
Abhangigkeiten und einem Schlu ssel X .
Ausgegeben werde ein Datenbankschema
S1 (A1; 1 ); : : :; Sm(Am;
DS(
m ); 0)
in 3NF und eine abhangigkeitserhaltende und verlustlose Zerlegung : S ! DS.
Methode
1. Durchlaufe fur i = 1; : : :; m 1 mit i = U ! V und setze Ai = U [ V und i = fi g.
2. Setze Am = X und m = ;.
3. Gebe die Si (Ai ; i ) aus.
Beweis
Nach Konstruktion ist die Zerlegung abhangigkeitserhaltend. Sie ist auch verlustlos, wie wir aus
dem Test auf verlustlosen Verbund ersehen konnen.
z
A1
..
.
Am
A}|m
{
A1 : : :Ar Ar+1 : : :An
a
a
a : : :a
bm : : :bm
Die Reihenfolge der Spalten entspricht der Reihenfolge, in der die Attribute bei der Berechnung
von A+m hinzugenommen werden. Da X = Am Schlu ssel ist, folgt A+m = A. Mit Induktion nach i
zeigt man, da das bm in der Spalte Ar+i durch a ersetzt wird. Wird i = U ! V verwendet, so
ist U fA1 ; : : :; Ar+i 1 g und V = fAr+i g und folglich wird bm in der r + i-ten Spalte durch a
ersetzt. Mit Induktion ergibt sich eine Zeile bestehend nur aus a's.
Beispiel
Sei A = fA; B; C g und = fAC ! B g. Dann liefert die Zerlegung der Tabelle R
A
B
C
a1 b c1
a2 b c2
58
die beiden Tabellen
R1
A
R1 ./ R2 liefert schlielich
B
B
und
a1 b
a2 b
A
B
a1
a1
a2
a2
R2
C
b c1
b c2
C
b
b
b
b
c1
c2
c1
c2
Dies ist nicht die ursprungliche Tabelle. Wir berechnen nun X (R)
A
C
a1 c1
a2 c2
und bilden X (R) ./ (R1 ./ R2 ) und erhalten wieder R. Der Schlussel bewirkt also die Entfernung
falscher Informationen.
Bemerkung
Ist ein 2 mit = X ! Y in S (A; ), wobei X Schlussel ist, so kann das Schema Am fur einen
gesonderten Schlussel entfallen.
Es bleibt zu zeigen, da jedes Si (Ai ; i ) in 3NF ist. Ist i = ; bei i = m, so liegt 3NF vor. Betrachte
nun i = fX ! fAgg, wobei Ai = X [ fAg. Sei angenommen, es gebe U ! V ! fB g mit V 6! U
und B 2= V und B 2= U in Si , das heit es liegt keine 3NF vor. Wir vergroern nun U zu
Z := U [ ((X n V ) n fBg):
Damit gilt ebenfalls Z ! V ! fB g, da Z ! U gilt. Weiter ist B 2= Z , B 2= V und V 6! Z .
Behauptung
Es ist Z ! X 2
folgt.
+.
Man beachte, da U Schlu ssel ist, was direkt aus der Denition von 3NF
Beweis
Es gilt Z ! fB g und Z ! (X n V ) n fB g und damit auch Z ! X n V . Mit Z ! V erhalten wir
schlielich Z ! X .
Also enthalt Z einen Schlussel von Si ; (Ai; i ).
Wegen B 2= Z und Z U gilt auch B 2= U .
Ware A 2 Z , so ware A 2= U , da A kein Schlusselattribut ist (Ware A Schlusselattribut, so
ware jedes Attribut von Ai Schlusselattribut und es lage 3NF vor.)
Also ist U = X , da A 6= B 2 X . Dies ist ein Widerspruch, da der Schlussel X keine echte
Teilmenge als Schlussel enthalten darf.
Also ist A 2= Z und somit Z X .
1. Ist B 6= A, so gilt wegen B 2 X , B 2= U und U Z X auch hier U = X . Widerspruch!
59
2. Sei also B = A. Wegen Z ! X , X ! Z und Z X ist Z = X . Es ist W X , da
A = B 2= W . Wir haben also
X = Z ! W ! fBg = fAg:
Kritik
Ware W = X , so konnte man X ! A durch W ! A ersetzen und ware nicht reduziert.
Das Ergebnis ist von der Auswahl der Schritte abhangig. Die Anzahl der Ergebnisschemata ist
ebenfalls nicht eindeutig. Als Ausweg streben wir eine Verbesserung der Theorie an.
Praktisch
Gegenuber der BCNF-Zerlegung ist zwar die Zerlegung in 3NF abhangigkeitserhaltend, dies kann
aber bedeuten, da mehr Einzelschemata benotigt werden. In der Praxis ist abzuwagen, wie wichtig
diese Eigenschaft ist.
Beispiel
Im Beispiel
A = fVorlesung; Lehrer; Stunde; Raum; Studentg
war bereits nichtredundant und reduziert. Wir erhalten
A1 = fVorlesung; Lehrerg
A2 = fStunde; Raum; Vorlesungg
A3 = fStunde; Lehrer; Raumg
A4 = fStunde; Student; Raumg:
fStudent; Stundeg war Schlussel von A, somit enthalt A4 einen Schlussel.
Wir erhalten gegenuber der BCNF-Zerlegung ein zusatzliches Schema, dafur ist die Zerlegung
abhangigkeitserhaltend.
Zur Struktur nichtredundanter U berdeckungen
Denition
Seien X; Y; A und eine Menge funktionaler Abhangigkeiten auf A.
X und Y heien aquivalent bezuglich (in Zeichen X Y ), wenn X ! Y 2
gilt.
Lemma
Seien 1 und 2 nichtredundant und
mit X U (bezuglich 1 und 2 ).
1
2 auf A. Ist X
Beweis
und Y ! X 2
+
! Y 2 1, so existiert ein U ! V 2
2
+
Da 1 2 ist, existiert ein Ableitungsgraph fur X ! Y bezuglich 2 , darin werden Abhangigkeiten aus 2 verwendet. Jede dieser wiederum lat sich aus 1 ableiten, das heit dazu existiert
ein Ableitungsgraph bezuglich 1 .
Es ergibt sich durch das Einsetzen ein Ableitungsgraph fur X ! Y bezuglich 1 . Wurde bei keiner
Ableitung eines U ! V aus 2 durch 1 die Abhangigkeit X ! Y verwendet, so liee sich in 1
die Abhangigkeit X ! Y entfernen. Dies ist ein Widerspruch zur Nichtredundanz von 1 .
60
Denition
Sei eine Menge funktionaler Abhangigkeiten auf A und X A. Wir denieren
E (X ) := fU ! V 2 j X U g
und
E := fE (X ) j E (X ) 6= ;g:
E ist eine Partition von . Nach dem Lemma gilt fur 1 und 2 mit
E 1 (X ) 6= ; () E 2 (X ) 6= ;
und somit
E
1
= E
2
1
2
:
Denition
Eine Menge von funktionalen Abhangigkeiten heit minimal, wenn fur alle 0 mit 0 0 j
j
gilt.
Bemerkung
Jedes minimale ist nichtredundant.
Ziel
Algorithmus, der zu gegebenem ein dazu aquivalentes minimales 0 erzeugt.
Denition
Sei eine Menge funktionaler Abhangigkeiten auf A und X; Y A.
X bestimmt das Y direkt unter (in Zeichen X ! Y ), wenn es eine nichtredundante Menge
0 gibt, bei der ein Ableitungsgraph fur X ! Y keine Abhangigkeit U ! V mit U X
benutzt, das heit E 0 (X ) wird nicht benotigt.
Lemma
Folgende Aussagen sind aquivalent
(i) X ! Y
(ii) Fur alle nichtredundanten 0 mit 0 existiert eine Ableitung fur X ! Y bezuglich 0 , die
kein Element aus E 0 (X ) verwendet.
Beweis
\(" Siehe Denition
\)" Seien 0 und 00 nichtredundant und es gelte
0 00. Fur X ! Y existiere ein Ablei0
tunggraph bezuglich , der keine Abhangigkeit aus E 0 (X ) verwendet.
Behauptung
Auch zu 00 existiert ein solcher Ableitungsgraph.
Beweis
Jede der verwendeten Abhangigkeiten aus 0 wird von 00 impliziert. Fur jede Regel
W ! Z 2 0 , die verwendet wird, bilde den Ableitungsgraphen bezuglich 00 und ersetze
den zu W ! Z gehorenden Teilgraphen durch diesen Ableitungsgraphen bezuglich 00.
Es ergibt sich ein Ableitungsgraph fur X ! Y bezuglich 00.
61
Behauptung
Der so konstruierte Ableitungsgraph verwendet keine Abhangigkeiten aus E 00 (X )
Beweis
Sei angenommen, da U ! V 2 E 00 (X ) verwendet wurde, um W ! Z 2 0 zu ersetzen.
Wenn wir U ! W 2 + zeigen konnen, so ist wegen U W + W ! U , damit W U
und W U W sowie schlielich W ! Z 2 E 0 (X ), was einen Widerspruch darstellt.
Wir haben also noch U ! W 2 + zu zeigen. Es wurde W ! Z benutzt um X ! Y
herzuleiten, also W X + und damit X ! W 2 + . Wegen U ! V 2 E 00 (X ) ist U X ,
insbesondere U ! X 2 + . Schlielich ist also U ! W 2 + .
Satz
Seien
1
und
2
minimal und
1 2 . Dann gilt
fur alle X A
jE 1 (X )j = jE 2 (X )j :
Lemma A
sei nichtredundant. Sei X ! Y 2 E (X ) und Y A mit Y X . Dann existiert eine Regel
Z ! W 2 E (X ) mit Y ! Z .
Beweis
Seien X1, X2 , : : : , Xn alle zu X aquivalenten Attributmengen. Dann existieren i0 und j0 mit
Y = Xi0 und X = Xj0 . Im allgemeinen ist nicht jedes Xi linke Seite eines 2 . Gesucht ist ein
Z 2 fXi j i = 1; : : :; ng, das als linke Seite auftritt und fur das Y ! Z .
Falls Y selbst als linke Seite auftritt, so wahle Z = Y (denn Y ! Y gilt immer).
Sei also Y keine linke Seite. Da Y Xi fur jedes i, kann man fur jedes Y ! Xi einen Ableitungsgraphen erstellen. Unter allen solchen Ableitungsgraphen wahle einen solchen aus, der minimale
Knotenzahl hat und bei dem Xi linke Seite ist. (Ein solches Xi mu wegen E (X ) 6= ; existieren.)
Behauptung
Dieser Ableitungsgraph verwendet kein 2 E (X ).
Beweis
Sei angenommen, da fur Y ! Z (Z linke Seite) ein Ableitungsgraph mit minimaler Knotenzahl ein U ! V 2 E (X ) verwendet. Dann ist dieser Ableitungsgraph auch einer fur Y ! U .
Es gibt ein A 2 V , das fur die Ableitung von Y ! U nicht gebraucht wird. Damit entsteht
durch das Entfernen von A ein Ableitungsgraph fur Y ! U , der weniger Knoten als der
ursprungliche besitzt, auerdem ist U ! V 2 E (X ), im Widerspruch zur Minimalitat des
Graphen. Dieses U ! V kann also nicht existieren, damit ist Y ! Z .
Lemma B
Sei minimal und X A. Dann existiert kein Y ! U 2 E (X ) und kein Z ! V 2 E (X ) mit
Y 6= Z und Y ! Z .
Beweis
Sei angenommen, es gebe Y ! U und Z ! V 2 E (X ) mit Y ! Z . Bilde einen Ableitungsgraph
fur Y ! Z , der keine Abhangigkeiten aus E (X ) verwendet. Dann konnen wir E (X ) abandern,
ohne den Ableitungsgraphen fur Y ! Z zu verandern. Bilde 0 aus durch Ersetzen von Y ! U
und Z ! V durch Z ! UV .
62
Behauptung
Es ist 0 Beweis
In ( 0)+ ist Z ! U und Y ! Z und damit Y ! U 2 ( 0)+. Auerdem ist wegen
Z ! UV 2 0 auch Z ! V 2 ( 0 )+, also impliziert 0 die Abhangigkeiten Y ! U und
Z !V.
Umgekehrt ist Z ! V 2 + , Y ! Z 2 + und Y ! U 2 + . Wegen Z X gilt Z ! Y ,
denn X Y . Hieraus folgt schlielich Z ! U 2 + und damit impliziert auch 0 .
Aus 0 folgt dann wegen j 0 j = j j 1 ein Widerspruch zur Minimalita t von .
Beweis des Satzes
Seien also 1 und 2 minimal mit 1 2 . Weiter sei X A. Sei angenommen, da
jE 1 (X )j < jE 2 (X )j :
|
Es sei
{z
=: m
}
|
{z
=: n
}
E 1 (X ) = fX1 ! X 1; : : :; Xm ! X m g
und
E 2 (X ) = fY1 ! Y 1; : : :; Yn ! Y ng:
Dann existiert ein Yj mit Yj 6= Xi fur alle i. (Sonst existieren k, l mit Yk = Yl , damit Yk ! Yl , im
Widerspruch zu Lemma B.)
Sei ohne Beschrankung der Allgemeinheit j = 1, das heit Y1 6= Xi fur alle i. Nach Lemma A
existiert ein Xi mit Y1 ! Xi . (Ohne Beschrankung der Allgemeinheit sei i = 1.) Bilde 02 durch
Ersetzen von Y1 ! Y 1 durch X1 ! Y 1 .
Aus Y1 ! X1 2 ( 02 )+ (Beweis wie oben) und X1 ! Y 1 folgt Y1 ! Y 1 2 ( 02 )+ . 2 impliziert
X1 ! Y 1 , da X1 Y1, denn 1 2 . Ist X1 = Yj 6= Y1 , so Y1 ! Y 1 und Y1 = Yj ! Y j , also
X1 ! Y1 , im Widerspruch zu Lemma B. Also ist X1 6= Yj fur alle j 6= 1.
Gegenuber 2 ist die Anzahl der linken Seiten, die gleich irgendeinem Xi sind um eins gewachsen.
Dies lat sich iterieren: Jedes Yj , das von allen Xi verschieden ist, kann man durch ein neues Xk
ersetzen. Dies fuhrt schlielich zum Widerspruch zu n > m.
Bemerkung
Die Abbildung
E 1 (X ) ! E 2 (X ); (Xi ! X i) 7! (Yj ! Y j ) mit Xi ! Yj :
ist eine Bijektion, wenn
1
und
2
aquivalent und minimal sind.
Begrundung
Zu Xi ! X i existiert nach Lemma A ein Yj mit Xi ! Yj und ein k mit Yj ! Xk . Dann ist (siehe
Xk fur i 6= k, im Widerspruch zu Lemma B. Wir erhalten also
U A) Xi !
Xi ! Yj =) Yj ! Xi :
Yk und somit Yj !
Yk , was wiederum einen Widerspruch
Ist Xi ! Yj und Xi ! Yk , so Yj ! Xi !
zu Lemma B darstellt.
Somit ist die obige Abbildung wohldeniert und bijektiv.
Man kann nach dem Beweis in E 1 (X ) jedes Xi ersetzen durch Yj mit Xi ! Yj , ohne
63
+
1
zu verandern.
Beispiel
Es sei
A = fFahrgestellnummer; KFZ-Kennzeichen; Halter; Schaden; Tag; Zeit; SchadensNrg:
Weiter seien
1 = ffFahrgestellnummerg ! fKFZ-Kennzeichen; Halterg;
fKFZ-Kennzeicheng ! fFahrgestellnummerg;
fSchadensNrg ! fKFZ-Kennzeichen; Tag; Zeit; Schadeng;
fKFZ-Kennzeichen; Tag; Zeitg ! fSchadensNr; Schadengg
und
2 = ffFahrgestellnummerg ! fKFZ-Kennzeicheng;
fKFZ-Kennzeicheng ! fFahrgestellnummer; Halterg;
fSchadensNrg ! fKFZ-Kennzeichen; Halter; Tag; Zeitg;
fTag; Zeit; Fahrgestellnummerg ! fSchadensNr; Schadengg:
Dann ist
E 1 (KFZ-Kennzeichen) = ffFahrgestellnummerg ! fKFZ-Kennzeichen; Halterg;
und
Satz
fKFZ-Kennzeicheng ! fFahrgestellnummergg
E 2 (KFZ-Kennzeichen) = ffFahrgestellnummerg ! fKFZ-Kennzeicheng;
fKFZ-Kennzeicheng ! fFahrgestellnummer; Haltergg
E 1 (SchadensNr) = ffSchadensNrg ! fKFZ-Kennzeichen; Tag; Zeit; Schadeng;
fKFZ-Kennzeichen; Tag; Zeitg ! fSchadensNr; Schadengg
E 2 (SchadensNr) = ffSchadensNrg ! fKFZ-Kennzeichen; Halter; Tag; Zeitg;
fTag; Zeit; Fahrgestellnummerg ! fSchadensNr; Schadengg:
Sei nichtredundant und nicht minimal. Dann existiert X A und Y ! U 2 E (X ) sowie
Z ! V 2 E (X ) mit (Y ! U ) 6= (Z ! V ), so da Y ! Z bezuglich .
Folgerung
Dann kann man in die beiden Abhangigkeiten Y ! U und Z ! V durch Z ! UV ersetzen.
Beweis des Satzes
Sei 0 und 0 sei minimal. Dann exitiert ein X A mit
jE 0 (X )j < jE (X )j :
|
Sei wieder
und
{z
=: m
}
|
{z
=: n
}
E 0 (X ) = fX1 ! X 1; : : :; Xm ! X m g
E (X ) = fY1 ! Y 1; : : :; Yn ! Y n g:
Fur alle Yj existiert dann ein Xi mit Yj ! Xi und wegen m < n existieren i, j und k mit j 6= k
und Yj ! Xi sowie Yk ! Xi. Weiter existiert ein h mit Xi ! Yh . Es ist entweder h 6= j (Dann
ist Yj ! Yh die gesuchte direkte Abhangigkeit) oder es ist h 6= k und Yk ! Yh ist die gesuchte
Abhangigkeit.
64
Algorithmus (zur Konstruktion einer minimalen Menge von funktionalen Abhangigkeiten, die zu
aquivalent ist)
1. Ersetze
durch 
aquivalentes nichtredundantes

0.
2. Bestimme alle Aquivalenzklassen von
E
0.
E X
Y !U
E X
Z!V
E X
Z , so
Ist (Y ! U ) 6= (Z ! V ) und Y !
Ersetze Y ! U und Z ! V durch Z ! UV
E
0( )
0 mit
3. Durchlaufe
0 ( ) mit
Durchlaufe
0 ( ) mit
Durchlaufe
4. Gebe das so ver
anderte
0
aus.
zu 1.
Initialisiere 0 :=
0
F
ur jedes
{
Bilde ( 0)+ := Linclosure(
X!Y 2
Ist
}
X
Y (X 0)+,
so
0
:=
X , 0 n (X ! Y ))
0 n (X ! Y )
Wir wollen nun den Zeitaufwand fur diesen Schritt abschatzen. Die Lange der Eingabe sei n, damit
hat Linclosure() den Aufwand O(n). Diese Funktion wird fur jedes 2 aufgerufen, also haben
wir hier einen Aufwand von O(j j n). Das Ersetzen der Abhangigkeiten hat einen Aufwand von
O(j j). Wir erhalten also einen Gesamtaufwand fur Schritt 1 von O(j j n).
zu 2.
Wir bilden eine Matrix M mit so vielen Zeilen, wie linke Seiten von Abhangigkeiten vorhanden
sind, und so vielen Spalten, wie Abhangigkeiten vorhanden sind. Die Eintrage m(X; U ! V ) sind
folgendermaen deniert
U X+
m(X; U ! V ) := 10;; falls
sonst.
Dann ist X U aquivalent zu
Es existieren V , Z mit m(X; U ! V ) = 1 und m(U; X ! Z ) = 1.
In diesem Schritt mu zur Konstruktion der Matrix j j-mal Linclosure() aufgerufen werden, der
Aufwand betragt daher O(j j n).
zu 3.
Wesentlicher Schritt ist hier der Test auf Y ! Z
Betrachte jedes E (X ) und jedes Y ! U 2 E (X )
Bilde (Y 00)+ := Linclosure(Y , n E (X ))
Modiziere dabei Linclosure() dahingehend, da auch fur die 2 E (X ) die Funktion count()
berechnet wird, also
0 =) Ist = R ! S , so ist R (Y 00)+:
Ist dann Z (Y 00)+ dann gilt Y ! Z .
Es werden also nur Abhangigkeiten in n E (X ) benotigt, um Y ! Z zu folgern, das heit Y ! Z .
count( ) =
65
Fur jedes Y ! U wird einmal der modizierte Linclosure()-Algorithmus aufgerufen, damit ist
der Aufwand O(j j n). Da der Aufwand fur das Ersetzen wieder O(j j) ist, haben wir fur den
Schritt 3 einen Gesamtaufwand von O(j j n)
Ist minimal, so sind die Abhangigkeiten moglicherweise noch um einzelne Attribute rechts oder links
zu verkurzen. Es ist jedesmal zu prufen, ob die bisherige Menge von Abhangigkeiten aquivalent ist
zu der, die durch das Ersetzen einer Abhanigkeit durch eine verkurzte entsteht. Fur jedes A, das an
irgendeiner Reduktion einer Abhangigkeit auftritt, ist jeweils Linclosure() zu rufen, damit betragt
dafur der Aufwand O(n2).
Ist minimal und reduziert, so kann man manchmal trotzdem noch ein kurzeres 0 nden.
Beispiel
Sei A = fA; B; C; D; E g und = fA ! B; B ! A; AC ! DE; BD ! C g. Es ist A B und wir
erhalten
Weiter ist AC BD und
A1 = fA; Bg und
A2 = fA; B; C; D; Eg und
Man kann hier B nicht aus A2 entfernen.
1 = fA ! B; B
2 = fAC
! Ag:
! ABCDE; BD ! ABCDE g:
Wahlt man jedoch das zu aquivalente 0 = fA ! B; B ! A; AC ! DE; AD ! C g, erhalt man
hier
A02 = fA; C; D; E g und 02 = fAC ! ACDE; AD ! ACDE g:
Die Ursache hierfur ist, da die Schlussel von S2 (A2; 2 ) geschickt gewahlt wurden.
Erinnerung
Ist X ! Z , X Z , so lat sich in Z ! U das Z durch X ersetzen ( dabei minimal).
Algorithmus
Fur jedes Xi ist (Xi)+ zu bilden, die grote Menge von Attributen, die von Xi direkt abhangig
ist.
Xi ! Zi () Zi (Xi)+
Ist Zi (Xi)+ , und jZi j minimal, so ersetze Xi durch Zi .
Denition
Seien X1; : : :; Xk ; Y A und R eine Relation auf A. R erfullt (X1; : : :; Xk ) ! Y , wenn gilt
Fur alle i, j erfullt R die Abhangigkeit Xi ! Xj
Fur alle i erfullt R die Abhangigkeit Xi ! Y
(X1; : : :; Xk ) ! Y heit zusammengesetzte funktionale Abhangigkeit.
Zu jeder Klasse E (X ) = fX1 ! Y1 ; : : :; Xk ! Yk g bilde
(X1; : : :; Xk ) !
k
[
i=1
Yi ;
dann bilden die zu einer Menge von funktionalen Abhangigkeiten gebildeten zusammengesetzten
funktionalen Abhangigkeiten eine ringformige Menge.
66
Beispiel
Sei = fA ! BC; B ! AD; AE ! I; BE ! IJ g, dann haben wir die ringformige Menge
f(A; B) ! ABCD; (AE; BE ) ! IJ g:
Fur das zu aquivalente 0 = fA ! AB; AB ! B; B ! ACD; AE ! IJ g erhalten wir
f(A; AB; B) ! CD; (AE ) ! IJ g:
Hier ist die Abhangigkeit AB ! B redundant, wir entfernen sie und erhalten
f(A; B) ! CD; (AE ) ! IJ g:
Denition
Eine ringformige Menge heit nichtredundant, wenn keine Abhangigkeit mehr entfernt werden
kann. Sie heit reduziert, wenn kein Attribut auf der linken Seite auf eine rechte Seite verschoben
werden kann und auf keiner rechten Seite mehr ein Attribut weggelassen werden kann.
Beispiel
Es sei
= fB1 B2 ! A; D1D2 ! B1 B2 ; B1 ! C1; B2 ! C2;
D1 ! A; D2 ! A; AB1 C2 ! D2; AB2 C1 ! D1g
Wegen (B1 B2 )+ = (D1D2)+ = A ist B1 B2 D1D2. Wir erhalten die ringformige Menge
f(B1B2 ; D1D2) ! A; (B1) ! C1; (B2) ! C2;
(D1) ! A; (D2) ! A; (AB1 C2) ! D2 ; (AB2C1) ! D1 g
Wegen (D1) ! A kann man aus der Abhangigkeit (B1B2 ; D1D2 ) ! A das Attribut A entfernen.
Wir konnen also (B1 B2 ; D1D2) ! A durch (B1 B2 ; D1D2 ) ! ; ersetzen.
Zweiter Synthesealgorithmus
1. Ersetze die Menge von funktionalen Abhangigkeiten durch eine reduzierte minimale
ringformige Menge, die zu aquivalent ist.
2. Fur alle (X1; : : :; Xk ) ! Y konstruiere Si = S (Ai ; i ) wobei
Ai =
und
k
[
j =1
Xj [ Y
i = fX1 ! Ai ; : : :; Xk ! Ai g;
das heit die Xi sind ausgezeichnete Schlussel von Si .
3. Falls kein Ai einen Schlussel fur S (A; ) enthalt, so ist ein weiteres Schema fur einen Schlussel
hinzuzunehmen, das heit Sm = S (X; ;), wobei X Schlussel ist.
(3. wird benotigt, um einen verlustlosen Verbund zu garantieren.)
Der Zeitaufwand fur diesen Algorithmus betragt O(n2), wobei n die Lange der Eingabe ist.
Satz
Durch den zweiten Synthesealgorithmus entsteht eine Zerlegung in Schemata Si in 3NF.
67
Beweis
Es sei Si zu (X1; : : :; Xk ) ! Y gebildet. Sei angenommen, da dieses Si nicht in 3NF ist. Sei also
X ! Z ! A, X Schlu ssel von Si, Z 6! X , A 2= Z und A 2= X .
Bilde einen Ableitungsgraphen fur Z ! A. Dieser verwendet kein U ! V 2 E (X ), denn sonst
X ! Z ! U ! X , also Z ! X im Widerspruch zu unserer Annahme.
Bilde 0 , indem A aus Y entfernt wird. Z ! A ist bezuglich 0 ableitbar, da zur Ableitung von
Z ! A kein Xi ! Y benutzt wurde. Da
Z
k
[
i=1
Xi [ Y
ist X ! Z und Xi ! Z fur alle i ableitbar, damit ist in 0 die Abhangigkeit Xi ! A ableitbar.
Wir haben also 0 gezeigt, also kann nicht reduziert gewesen sein.
Bemerkung
k
Xi [ Y ist der Schlu nicht moglich.
Falls Z 6
i=1
Beispiel
Sei A = fA; B; C g und = fA ! B; B ! C; C ! B g. Wir zerlegen in
A1 = fA; Bg 1 = fA ! Bg
A2 = fB; C g 2 = fB ! C; C ! Bg
Es gilt A ! C ! B und B 2= fC; Ag sowie C 6! A, also ist bei S (A1; 1) eine verdeckte transitive
S
Abhangigkeit gegeben, das heit eine transitive Abhangigkeit uber verschiedene Tabellen.
Da jedoch B C , ist in den Schemata keine Redundanz vorhanden.
Um die Frage nach der Allgemeingu ltigkeit dieser letzten Feststellung beantworten zu konnen, brauchen wir die sogenannten Mehrwertigen Abhangigkeiten.
Mehrwertige Abhangigkeiten
Beispiel
Gegeben sei die Tabelle
Vorlesung
Informatik
Informatik
Informatik
Mathematik
Mathematik
Lehrer
Kohl
Kohl
Kohl
Gauss
Gauss
Stunde
Mo 8-10
Di 8-10
Mi 18-19
Di 10-11
Mi 10-11
Raum
H1
H2
H7
H3
H3
Student
Vogel
Vogel
Vogel
Hinz
Hinz
Hinz mochte aber auch Informatik horen. Alle Tupel bei Vogel konnen ubernommen werden, wobei
68
Vogel durch Hinz zu ersetzen ist. Wir erhalten die Tabelle
Vorlesung
Informatik
Informatik
Informatik
Mathematik
Mathematik
Informatik
Informatik
Informatik
Lehrer
Kohl
Kohl
Kohl
Gauss
Gauss
Kohl
Kohl
Kohl
Stunde
Mo 8-10
Di 8-10
Mi 18-19
Di 10-11
Mi 10-11
Mo 8-10
Di 8-10
Mi 18-19
Raum
H1
H2
H7
H3
H3
H1
H2
H7
Student
Vogel
Vogel
Vogel
Hinz
Hinz
Hinz
Hinz
Hinz
Denition
Sei R eine Relation auf A und X; Y A. Dann erfullt R die mehrwertige Abhangigkeit X !! Y
genau dann, wenn fur alle t; s 2 R mit sjX = tjX ein u 2 R existiert mit ujX = sjX , ujY = tjY
und ujA (X [Y ) = sjA (X [Y ).
Im Beispiel ist X !! Y mit X = fVorlesungg und Y = fStunde; Raumg erfullt.
Bemerkung
Erfullt R die mehrwertige Abhangigkeit X !! Y , so folgt unmittelbar aus der Denition auch
X !! A (X [ Y ).
Bemerkung
Erfullt R die funktionale Abhangigkeit X ! Y , so auch die mehrwertige Abhangigkeit X !! Y .
Ist Z Y und erfullt R die mehrwertige Abhangigkeit X !! Y , so braucht R nicht X !! Z zu
erfullen.
Satz
Sei A = X [ Y [ Z mit X; Y; Z paarweise disjunkt. Dann erfullt R die mehrwertige Abhangigkeit
X !! Y genau dann, wenn R = X [Y (R) ./ X [Z (R), das heit, wenn ein verlustloser Verbund
bezuglich (X [ Y ) und (X [ Z ) vorliegt.
Beweis
\)" Per denition erfullt.
\(" X [Y (R) und X [Z (R) haben die Attributmenge X als Verbundattribute. Es sind also nur
Tupel zu betrachten, die auf X ubereinstimmen.
Seien dazu t; s 2 R mit sjX = tjX . Die Menge R = X [Y (fsg) ./ X [Z (ftg) enthalt u mit
ujX = sjX = tjX und ujY = sjY sowie ujZ = tjZ .
Wird also eine solche mehrwertige Abhangigkeit erkannt, so kann zerlegt werden!
Erinnerung (Test auf verlustlosen Verbund bei funktionalen Abhangigkeiten)
R erfullt R = X [Y (R) ./ X [Z (R) dann, wenn X ! Y oder X ! Z gilt.
Falls neben funktionalen Abhangigkeiten mehrwertige Abhangigkeiten erfullt sein mussen, so gilt diese
Aussage nicht mehr.
Beispiel
In der Tabelle
X
Y
Z
a : : :a b : : :b a : : :a
a : : :a a : : :a b : : :b
69
brauchen die mehrwertigen Abhangigkeiten nicht erfullt zu sein.
Auch wenn durch funktionale Abhangigkeiten keine Zerlegung mehr moglich ist, kann durch mehrwertige Abhangigkeiten eine weitere Verfeinerung der Zerlegung moglich sein.
Denition 4NF
Sei eine Menge von funktionalen und mehrwertigen Abhangigkeiten auf A. Ein Relationenschema
S = S (A; ) ist in 4NF genau dann, wenn aus X !! Y 2 + mit Y 6 X , X [ Y 6= A und Y 6= ;
folgt, da X einen Schlussel fur S enthalt.
Ziel des Folgenden wird es sein, einen Zerlegungsalgorithmus zu einer Zerlegung in 4NF-Schemata zu
nden.
Satz
Ist S in 4NF, so auch in BCNF.
Beweis
Sei S in 4NF, aber nicht in BCNF. Dann existiert X ! Y 2 + , wobei X keinen Schlussel von S
enthalt. Dann erfullt jedes R 2 S mit X ! Y auch X !! Y nach fruherer Bemerkung. Da 4NF
vorliegt, mu X einen Schlussel enthalten im Widerspruch zur Annahme.
Beispiel
Sei A = fA1 ; A2g und = f; !! fA1 gg. R erfullt dann ; !! fA1 g genau dann, wenn
R = fA1 g (R) ./ fA2 g(R) = fA1 g (R) fA2 g (R):
Es gibt aber Schemata, die in BCNF aber nicht in 4NF sind.
Beispiel
Gegeben sei die Tabelle
Angestellter
Hilbert
Hilbert
Turing
Turing
Pythagoras
Hilbert
Hilbert
Kind
Hilda
Hilda
Peter
Peter
Peter
Jochen
Jochen
Gebiet
Mathematik
Physik
Informatik
Mathematik
Mathematik
Mathematik
Physik
in dem keine nichttriviale Abhangigkeit erfullt wird. Das hierzu gebildete Schema ist also in
BCNF, aber es liegt keine 4NF vor, da fAngestellterg !! fKindg gilt, und fAngestellterg
kein Schlussel ist.
Wir erganzen nun den Zerlegungsalgorithmus in BCNF- zu einem Zerlegungsalgorithmus in 4NFSchemata.
Statt zu testen, ob X ! Y existiert, wobei X keinen Schlu ssel enthalt, teste, ob X !! Y existiert,
wobei X keinen Schlussel enthalt.
Wenn ja, so kann das entsprechende Schema S (Ai; i ) zerlegt werden in S (Ai1; i1) und S (Ai2; i2 ),
wobei Ai1 = X [ Y und Ai2 = Ai1 Y gilt. Weiterhin ist ij = Aij ( i ) fur j = 1; 2.
70
Denition
Sei S = S (A; ) und B A mit einer Menge von funktionalen und mehrwertigen Abhangigkeiten. Die Abhangigkeit = X !! Y 2 vererbt auf B die Abhangigkeit
B ( ) = X !! Y \ B; falls X B
wahr
Weiter setzt man
sonst.
B ( ) = fB ( ) j 2
+ g:
Bemerkung
Erfullt R die mehrwertige Abhangigkeit = X !! Y und ist X B, so erfullt B (R) auch B ( ).
In einer gegebenen Tabelle streicht man einfach die Spalten, die nicht zu B gehoren.
Um entscheiden zu konnen, ob eine gegebene mehrwertige Abhangigkeit X !! Y in + liegt, ist eine
ahnliche Konstruktion wie der zur Berechnung der Hulle bei funktionalen Abhangigkeiten mit dem
Linclosure-Algorithmus erforderlich.
Beachte
Aus X !! Y und Z = Y folgt nicht X !! Z .
A hnlich wie die Armstrong-Axiome gibt es auch hier ein Axiomensystem, das es erlaubt, zu entscheiden, welche mehrwertigen Abhangigkeiten logisch impliziert werden.
Fur alle W; X; Y; Z A gilt
Es gilt immer X !! X .
X !! Y impliziert X [ Z !! Y .
X !! Y und X !! Z impliziert X !! Y [ Z .
X !! Y und X !! Z impliziert X !! Y \ Z .
X !! Y und Y !! Z impliziert X !! Z Y .
X !! Y und Y [ W !! Z impliziert X [ W !! Z (Y [ W ).
X !! Y und Z = A fX; Y g impliziert X !! Z .
(M 1)
(M 2)
(M 3)
(M 4)
(M 5)
(M 6)
(M 7)
Weiterhin gelten noch die beiden sogenannten Koppelungsaxiome
X ! Y impliziert X !! Y .
X !! Y , Z ! W , W Y und Y \ Z = ; impliziert X ! W .
(C 1)
(C 2)
Satz
Diese Axiome sind korrekt und vollstandig.
Beispiel
Sei A = fA; B; C; D; E g und = fA !! BC; DE !! C g. Dann impliziert die mehrwertige
Abhangigkeit AD !! BE , denn aus A !! BC folgt mittels (M7) A !! DE . Zusatzlich haben wir
DE !! C , dies liefert mittels (M5) A !! C , hieraus folgt mit (M2) AD !! C und mittels (M7)
schlielich AD !! BE .
71
Es soll nun exemplarisch (M3) bewiesen werden
Sei R eine Relation die X !! Y und X !! Z erfullt. Seien t1 ; t2 2 R mit t1 jX = t2 jX .
Verwende X !! Y , das heit es existiert ein t3 2 R mit t1 jX = t2 jX = t3 jX , t3 jY = t1 jY und
t3 jV = t1 jV mit V := A n (X [ Y ).
Verwende nun X !! Z , das heit zu t1 und t3 existiert ein t4 2 R mit t4 jX = t1 jX , t4 jZ = t1 jZ
und t4 jW = t3 jW mit V := A n (X [ Z ).
Es ist
t1 jX = t2 jX
t4 jZ = t1 jZ
t4 jY \W = t3 jY \W = t1 jY also t4 jY [Z = t1 jY [Z
"
"
Schlielich haben wir noch
Def : v: t4
t3 jY
t2 jU = t3 jU = t4 jU ;
"
U V
"
U W
wobei U = A n (Y [ Z ) ist.
Statt alle MVD's aufzulisten, stelle Bausteine zur Verfugung, aus denen diese kombiniert werden
konnen.
Satz
Sei eine Menge aus funktionalen und mehrwertigen Abhangigkeiten und X; Y A. Genau
dann wird X !! Y von impliziert, wenn Y durch die Vereinigung ausgewahlter Elemente der
Abhangigkeitsbasis von X bezuglich gebildet wird. Dabei wird die Abhangigkeitsbasis von X
bezuglich folgendermaen erhalten.
1. Bilde eine Menge G, die aus allen Mengen Y besteht, die als rechte Seite einer Abhangigkeit
U !! Y auftreten, wenn man (M2) und (M7) auf anwendet.
2. Solange G noch nicht aus disjunkten Teilmengen besteht, ersetze Z1 und Z2 mit Z1 \ Z2 6= ;
durch Z1 n Z2, Z2 n Z1 und Z1 \ Z2 .
Beispiel zur Zerlegung in 4NF
Sei A = fVorlesung; Lehrer; Raum; Student; Stundeg und
= ffVorlesungg ! fLehrerg; fStundeRaumg ! fVorlesungg
fStunde; Lehrerg ! fRaumg; fStunde; Stundentg ! fRaumg
fVorlesungg !! fStunde; Raumgg
Der einzige Schlussel ist fStunde; Studentg. Vorlesung ist kein Schlussel, daher ist die 4NF
verletzt.
Wir zerlegen in
A1 = fVorlesung; Stunde; Raumg
A2 = fVorlesung; Lehrer; Studentg
A1 ist in 4NF und Schlussel sind fVorlesung; Stundeg und fStunde; Raumg. Hingegen ist
Vorlesung ! Lehrer 2 2 und Vorlesung kein Schl
ussel von S2 (A2 ; 2) und damit ist A2
nicht in 4NF. Wir zerlegen A2 weiter und erhalten
A21 = fVorlesung; Lehrerg
A22 = fVorlesung; Studentg
72
Hier ist 21 = fVorlesung ! Lehrerg und 22 = ; (das heit A22 ist Schlussel) und beide
Schemata sind in 4NF. A21 enthalt ein Attribut weniger als im alten Beispiel.
Problem
Wie sieht ein Synthesealgorithmus fur MVD's aus und auf welche Normalform sollen und konnen
MVD's gebracht werden? Sind eventuelle Zerlegungen abhangigkeitserhaltend?
Strategie
Verwende Synthesealgorithmus fur die funktionalen Abhangigkeiten. Bei der Schlusselmenge prufe,
ob dort mehrwertige Abhangigkeiten vorliegen und zerlege damit weiter.
Idee
Die mehrwertigen Abhangigkeiten bestehen meist, wenn Informationen unabhangig voneinander
sind und nur zufallig einige Attribute in mehreren Rollen auftreten.
Es kann vorkommen, da auf B A eine mehrwertige Abhangigkeit gilt, obwohl auf A keine mehrwertigen Abhangigkeiten existieren. Solche mehrwertigen Abhangigkeiten heien eingebettet.
Beispiel
BerichtNr
1
2
3
4
Projekt
Amalfi
Amalfi
Silberpfeil
Silberpfeil
Angestellter
Schmidt
Hinz
Schmidt
Hinz
Abteilung
Fertigung
Fertigung
Fertigung
Fertigung
Jeder Angestellte einer Abteilung ist an jedem Projekt der Abteilung beteiligt, das heit es gilt
Abteilung !
! Angestellter auf fProjekt; Abteilung; Angestellterg.
Wir hatten bisher, da R = A1 (R) ./ A2 (R) genau dann gilt, wenn die mehrwertige Abhangigkeit
A1 \ A2 !! A1 n A2 gilt. Hingegen ist mit mehrwertigen Abhangigkeiten keine Aussage uber die
Gultigkeit von
R = A1 (R) ./ A2 (R) ./ : : : ./ Ak 1 (R) ./ Ak (R)
moglich. Wir denieren deshalb eine neue Form von Abhangigkeiten.
Denition
Sei A =
m
m A und R eine Relation auf A. Dann erfullt R die Verbundabhangigkeit ./
A genau
i=1 i
i=1 i
S
dann, wenn gilt
m
(R):
R = i./
=1 Ai
Beispiel
Sei R das folgende Schema
Vertreter
Hinz
Hinz
Hinz
Kunz
Kunz
Schmidt
Produkt
Staubsauger
Mixer
F
ohn
Staubsauger
Heizofen
Heizofen
73
Firma
AEG
AEG
Siemens
AEG
IBM
Sonnenschein
Wir erhalten folgende Projektionen
Vertreter
Hinz
Hinz
Hinz
Kunz
Kunz
Schmidt
R1
Produkt
Staubsauger
Mixer
F
ohn
Staubsauger
Heizofen
Heizofen
Vertreter
Hinz
Hinz
Hinz
Kunz
Kunz
Schmidt
R2
Firma
AEG
AEG
Siemenz
AEG
IBM
Sonnenschein
Produkt
Staubsauger
Mixer
F
ohn
Staubsauger
Heizofen
Heizofen
R3
Firma
AEG
AEG
Siemenz
AEG
IBM
Sonnenschein
Hier ist keiner der moglichen Verbunde zweier Schemata verlustlos, denn
R1 ./ R2 3 (Hinz; Staubsauger; Siemenz) 2= R
R1 ./ R3 3 (Kunz; Heizofen; Sonnenschein) 2= R
R2 ./ R3 3 (Kunz; Mixer; AEG) 2= R;
jedoch gilt R = R1 ./ R2 ./ R3. Dabei erfullt R keine nichttriviale mehrwertige Abhangigkeit.
Wir konnen Regeln aufstellen, die sicherstellen, da jedes R zu dieser Attributmenge, die Verbundabhangigkeit erfullt
Arbeitet ein Vertreter fur zwei Firmen gleichzeitig, so durfen diese Firmen kein Produkt gleichzeitig
anbieten.
Wir zeigen nun, da diese Regel eine Verbundabhangigkeit impliziert. Sei also R in R1, R2 und R3
zerlegt und erfulle die Regel. Sei (a; b; c) 2 R1 ./ R2 ./ R3 , also (a; b) 2 R1, das heit (a; b; c0) 2 R
mit einem c0. Weiter ist (b; c) 2 R2, das heit (a0; b; c) 2 R mit einem a0 und schlielich (a; c) 2 R3,
das heit (a; b0; c) 2 R mit einem b0. Es genugt nun wegen R1 ./ R2 ./ R3 R zu zeigen, da
(a; b; c) 2 R gilt. Wir haben, da b von c und c0 hergestellt wird und, da a fur c und c0 gleichzeitig
arbeitet, dies liefert uns nach der Regel unmittelbar c = c0 und damit (a; b; c) 2 R.
Wenn ein Vertreter ein Produkt verkauft und der Vertreter fur eine Firma arbeitet, die dieses
Produkt herstellt, so verkauft er dieses Produkt fur diese Firma.
Die mehrwertige Abhangigkeit X !! Y ist Spezialfall einer Verbundabhangigkeit. Der Zerlegungsalgorithmus in 4NF ist zu erweitern auf alle vorkommenden Verbundabhangigkeiten.
Denition 5NF
Sei S = S (A; ) mit einer Menge von funktionalen Abhangigkeiten und Verbundabhangigkeiten
und seien X1 ; : : :; Xr die Schlussel von S .
Dann ist S in 5NF genau dann, wenn jede Verbundabha ngigkeit in + bereits von den Schlusselabhangigkeiten Xi ! A impliziert wird.
Beispiel Beispieldaten wie oben
Das Beispielschema
A = fVerteter; Produkt; Firmag
A1 = fVertreter; Produktg
A2 = fVertreter; Firmag
A3 = fProdukt; Firmag
3
erfullt die Verbundabha ngigkeit i./
A und keine echte Teilmenge von A ist Schlussel des Schemas.
=1 i
Dies aber bedeutet, da die Verbundabhangigkeit nicht von den Schlu sselabhangigkeiten impliziert
wird, das aber heit, da die 5NF verletzt wird.
3
Wir versuchen nun durch eine Zerlegung bezuglich i./
A Redundanz zu vermieden.
=1 i
74
Regel
Wenn ein Verteter fur eine Firma arbeitet, so bietet er auch jedes Produkt dieser Firma an.
Einfugen von x neuen Vertretern fur y neue Firmen mit je z Produkten
Es werden x beziehungsweise y beziehungsweise z neue Tupel in die Tabellen R1, R2 und R3
eingefugt. In R ergeben sich dadurch maximal x y + x z + y z neue Tupel.
Test auf Implikation einer Verbundabhangigkeit durch Schlusselabhangigkeiten
n
S (A; ) habe die Schlussel X1 ; : : :; Xr und die Verbundabhangigkeit = i./
A.
=1 i
Test auf Implikation von durch X1 ! A; : : :; Xr ! A
Sei T = fA1 ; : : :; An g.
Ersetze Y; Z durch Y [ Z , falls fur ein i Xi und Y; Z 2 T die Inklusion Xi Y \ Z gilt und
wiederhole diesen Schritt solange, bis sich T nicht mehr andert.
Ist T = fAg, dann wird logisch impliziert. (Es gilt sogar \genau dann, wenn").
Beweis fur Korrektheit
Benutze den Test auf Verlustlosen Verbund.
Bilde dazu eine Tabelle T mit Zeilen A1 ; : : :; Am und Spalten A1 ; : : :; An und mit Eintragen
Aj 2 Ai
T (Ai; Aj ) = ab falls
i sonst
Ist Xi Al \ Ap , so werden bei der Gleichsetzung der Eintrage im Algorithmus fur den Test
auf verlostlosen Verbund die Eintrage in den Spalten aus Al [Ap fur Al und Ap auf a gesetzt.
Falls durch Iteration eine Tafel mit nur a's in einer Zeile entsteht, liegt ein verlustloser Verbund
vor, das heit wird impliziert.
1. Bestimmung eines Schlussels
Setze X = A.
Durchlaufe X mit A und teste, ob (X n fAg)+ X .
Falls ja, so entferne A, das heit setze X = X n fAg.
Wiederhole dies, bis sich X nicht mehr andert.
2. Sei K die Menge der bekannten Schlussel.
Ist K 2 K und L ! R 2 , so bilde Z = (K n R) [ L
Bestimme mit 1. in Z enthaltene Schlu ssel.
Bezogen auf die Anzahl der Schlussel ist dies ezient.
Satz
m
Sei B A und = i./
A eine Verbundabhangigkeit auf A.
=1 i
Falls fur jedes A 2 A n B genau ein i existiert mit A 2 Ai , so impliziert auf B die Verbunm
dabhangigkeit i./
(A \ B).
=1 i
Das bedeutet, da der Zerlegungsalgorithmus in 4NF sich zu einem Zerlegungsalgorithmus in 5NF
erweitern lat.
Bemerkung
Ist S in 5NF, so auch in 4NF.
75
Beweis
Sei S in 5NF und 0 = fX1 ! A; : : :; Xr ! Ag. Sei X !! Y 2 + mit X !! Y nichttrivial,
so wird X !! Y auch von 0 impliziert.
Berechne zu X die Abhangigkeitsbasis bezuglich 0 .
Da 0 nur funktionale Abhangigkeiten enthalt, brauchen nur die Armstrong-Axiome verwendet
werden. Also wird X + = Linclosure(X; 0) gebildet. Wir wissen, da Y X + ist.
X = X (0) X (1) : : : X + wird durch Verwendung von Abhangigkeiten U ! V 2 0 gebildet.
Es existiert folglich eine funktionale Abhangigkeit U ! V 2 mit U X . Da U ! V 2 0 liegt,
ist U Schlussel. Es liegt also 4NF vor.
Der Chase-Proze
Denition
Sei A = fA1; : : :; An g und = f ai; bi j i 2 IN g ein Alphabet. Ein Tableau T ist eine Menge von
Tupeln t: A ! mit folgenden Eigenschaften
Falls t(Ai ) = aj fur alle t 2 T gilt, so ist i = j , das heit die i-te Spalte enthalt hochstens ai 's, und
t1 (Ai ) =
6 t2(Aj ) fur alle t1; t2 2 T , falls i =6 j , das heit kein Symbol aus tritt in verschiedenen
Spalten auf. Die Menge
T ) = f t(A) j A 2 A; t 2 T g
Bild(
heit die Menge der auftretenden Symbole. Jedes
: Bild(T ) !
m
[
i=1
D(Ai )
mit (t(A)) 2 D(A) fur alle A mit t(A) 2 Bild(T ) deniert eine Relation (T ) uber A.
Es folgt t(A) 2 D(A). Jedes c 2 Bild(T ) wird durch (c) ersetzt.
Denition
Sei R eine Relation uber A. Wir denieren die Menge T (R) durch
T (R) = f((a1); : : :; (an)) j (T ) Rg:
Beispiel
Gegeben sei die Relation R durch
R
A1 A2 A3 A4
1
2
1
2
4
3
4
3
A1
a1
b3
a1
A2
b1
a2
b5
und das Tableau T durch
76
T
5
5
5
6
8
7
7
7
A3
a3
a3
a3
A4
b2
b4
a4
Sei
a1 a2 a3 a4 b1 b2 b3 b4 b5
1
3
5
7
dann erhalten wir
4
8
2
7
4
(T )
A2 A3 A4
A1
1
2
1
4
3
4
5
5
5
8
7
7
und damit (T ) R. Betrachte nun
0
b1 b2 b3 b4 b5
a1 a2 a3 a4
2
4
5
7
damit erhalten wir
A1
2
1
2
3
7
1
8
3
0(T )
A2 A3 A4
3
4
3
5
5
5
7
8
7
das heit 0(T ) R. Schlielich erhalt man
A1
1
2
1
1
1
2
2
Denition
Sei A =
Satz
T (R)
A2 A3 A4
3
4
4
4
3
3
3
5
5
5
5
5
5
6
7
7
8
7
8
7
7
m A . Dann bezeichnet T
fA1 ;:::;Am g die Starttafel fur den Test auf verlustlosen Verbund.
i=1 i
S
m
(R) denieren dieselbe Abbildung.
TfA1 ;:::;Amg (R) und i./
=1 Ai
Beweis
Siehe Test auf verlustlosen Verbund.
Denition
Seien T1 und T2 Tableaus uber A.
Dann ist T1 T2 genau dann, wenn T1(R) T2(R) fur alle R uber A ist.
Es ist T1 T2 genau dann, wenn T1 T2 und T2 T1 ist.
77
Satz
Sei A = mi=1 Ai = kj=1 Bj
Dann sind aquivalent
S
S
m
k
(R) j./
(R) fur alle R uber A
(i) i./
=1 Ai
=1 Bj
(ii) TfA1 ;:::;Am g TfB1;:::;Bk g
(iii) Fur alle i existiert j mit Ai Bj oder anders geschrieben fA1; : : :; Am g fB1 ; : : :; Bk g.
m
k
(R) folgt R = j./=1
Bi (R)
(iv) Aus R = i./
=1 Ai
Beweis
(i) , (ii) Siehe voriger Satz.
m
k
(R). Dann ist R j./
(R). \" gilt immer.
(i) ) (iv) Sei R = i./
=1 Ai
=1 Bj
(iv) ) (i) Sei
m
dann ist
(R);
R0 := j./
=1 Aj
U A
m
m
m
(R) = i./
(R)
./
./
i=1 Ai
=1 Ai j =1 Aj
m
(R0)
= i./
=1 Bi
= R0 ;
also erfullt R0 die Voraussetzungen von (iv). Somit ist
m
k
(R) = R0 = i./
(R0):
R i./
=1 Ai
=1 Bi
k
an. Dies liefert
Wir wenden i./
=1 Bi
k
k
k
(R0) :
./
./
(
R
)
./
B
B
i
i
j =1 Bj
i=1
i=1
Schlielich erhalten wir
k
k
m
0) = R0 = ./
(R):
./
(
R
)
./
(
R
B
B
i
i
i=1
i=1
j =1 Aj
(i) ) (iii) Fur alle R gelte
m
k
(R) i./
(R):
./
i=1 Ai
=1 Bi
Wir konstruieren nun ein R, das fur den Beweis nutzlich ist. Seien dazu t1 ; : : :; tk Tupel mit
A 2 Bi
ti(A) = 01 falls
sonst.
Dann gilt nach der Denition des Verbundes
k
(R):
t0 := (0; : : :; 0) 2 i./
=1 Bi
78
Nach der Voraussetzung gilt somit auch
m
(R):
t0 2 i./
=1 Ai
Damit existiert fur alle Ai ein tj 2 R mit
Ai (tj ) = Ai (t0 ) = (0; : : :; 0)Ai :
Somit haben wir Ai Bj , da R nur aus t1 ; : : :; tk besteht.
k
(R).
(iii) ) (i) Exitiere nun fur alle i ein j mit Ai Bj . Sei R eine Relation uber A und t 2 j./
=1 Bj
Dann existieren t1 ; : : :; tk 2 R mit
Bj (t) = Bj (tj ) fur alle j:
Da zu jedem i ein j existiert mit Ai Bj , haben wir also, da zu jedem i ein tj 2 R existiert
mit
Ai (t) = Ai (tj ):
Dann ist aber
m
(R):
t 2 i./
=1 Ai
Beispiel
Seien A1 = fA1; A2g, A2 = fA2; A3g, A3 = fA3; A4g, B1 = fA1 ; A2; A3g und B2 = fA3; A4g
gegeben.
Dann gilt fA1 ; A2; A3g fB1; B2g.
Bemerkung
Die Aussagen des Satzes gelten auch wenn \" beziehungsweise \" durch \" beziehungsweise
\=" ersetzt werden.
Beispiel
Seien
A1 = fA1; A2; A3g A2 = fA1; A4g
B1 = fA1; A2; A3g B2 = fA3; A4g
Dann gilt fA1 ; A2; A3g fB1; B2; B3g.
Wir haben dann
A3 = fA1; A3; A4g
B3 = fA1; A3; A4g:
TfB1 ;B2 ;B3 g
A2 A3 A4
6=
a2 a3 b1
b3 a3 a4
b4 a3 a4
Nach dem Satz denieren die Tableaux aber dieselbe Abbildung T (R).
Jeweils das zweite Tupel hat nur dort Eintrage a, bei denen auch bereits ein anderes Tupel ebenfalls
Eintrage a besitzt, das heit A2 A3 beziehungsweise B2 B3. Alle Informationen zu Tupeln
A1
a1
a1
a1
TfA1 ;A2 ;A3 g
A2 A3 A4
a2 a3 b1
b2 b3 a4
b4 a3 a4
A1
a1
b2
a1
uber A2 sind bereits bei Tupeln, die uber A3 deniert sind vorhanden. Damit sind diese Tupel
entbehrlich.
79
Denition
t1 2 T subsummiert t2 2 T genau dann, wenn fur alle A gilt
t2 (A) = a =) t1 (A) = a:
Weiter denieren wir
o
n
sub(T ) := t 2 T es exisiert kein t0 2 T , das t subsummiert :
Es werden also die subsummierten Tupel gestrichen.
Schlielich denieren wir TfA1 ;:::;Am g TfB1;:::;Bk g genau dann wenn
sub(TfA1 ;:::;Am g ) = sub(TfB1;:::;Bk g )
gilt.
Denition
Sei V die Menge der Variablen von T und V 0 die Menge der Variablen von T 0. T 0 enthalt T genau
dann, wenn eine Funktion : V ! V 0 mit folgenden Eigenschaften existiert
a) Ist (v ) = so gilt fur alle Spalten A von T bzw. T 0: Steht v in der Spalte A von T , so steht
auch das in der Spalte A von T 0 .
b) Ist v = ai , so ist auch = ai .
c) Es ist (T ) T 0.
Es werden also den Variablen von T statt fester Werte die Variablen von T 0 zugeordnet.
Beispiel
Sei T das Tableau
A1
a1
b3
b4
A2 A3 A4
a2 b1 b2
a2 a3 b2
b5 a3 a4
Sei eine Abbildung mit (ai) = ai fur alle i und (b1) = a3 , (b2) = b1, (b3) = a1 (b4) = b2
und (b5) = a2. Dann ist (T ) das Tableau
A1 A2 A3 A4
a1 a2 a3 b1
a1 a2 a3 b1
gestrichen, da doppelt
b2 a2 a3 a4
Satz
T 0 enthalt T genau dann, wenn T > T 0 gilt.
Es werden nun zusatzliche Abhangigkeiten berucksichtigt. R S (A; ) werde betrachtet, das heit
alle betrachteten R erfullen .
Denition
Wir denieren T1 T2 genau dann wenn fur alle R 2 S (A; ) T1 (R) = T2 (R) gilt.
Tableaux werden durch aquivalente ersetzt, wobei berucksichtigt wird, welche Abhangigkeiten gelten.
Der Test auf verlustlosen Verbund startet mit einem Tableau und ersetzt dieses schrittweise durch
neue Tableaux, die bei Betrachtung der vorliegenden Abhangigkeiten dazu aquivalent sind.
80
Regeln fur das Ersetzen von Tableaux durch aquivalente unter Berucksichtigung von Abhangigkeiten
1. Eine Regel X ! Y erlaubt bei Tupeln, die auf X ubereinstimmen, die Eintrage auf Y gleich-
zusetzen. Dabei werden wenn moglich b's durch a's ersetzt. Ist bi mit bj gleichzusetzen, so
wahle bmin(i;j ) als neuen Eintrag.
m
2. Eine Regel i./
A erlaubt Tupel zu erzeugen. Sind t1; : : :; tm 2 T und ist fur i und j ti (Ai \
=1 i
Aj ) = tj (Ai \ Aj ), so fuge in T das Tupel t ein, das fur alle i t(Ai) = ti(Ai) erfullt. (Sind die
ti verbindbar, so mu das durch den Verbund entstehende Tupel in der Relation liegen.)
Es gilt: Erfullt R eine Abhangigkeit 2 , so ist T (R) = T 0(R), wobei T 0 aus T durch Anwenden
der zugehorigen Regel 1. oder 2. entsteht.
Beispiel fur Verbundregel
Wir wollen fur das Tableau
A1
t1 ! a1
t2 ! a1
t3 ! b3
A2
b1
a2
a2
A3
b2
b3
b3
A4
a4
b4
a4
./fA1 A2; A2A3; A3A4 g anwenden.
Die Tupel t2 , t2 und t3 sind verbindbar, daher mussen wir das Tupel t4 einfugen. Die Tupel t3 , t3
und t2 waren somit naturlich auch verbindbar. Wir erhalten das Tableau
A1 A2 A3 A4
t1 ! a1 b1 b2 a4
t2 ! a1 a2 b3 b4
t3 ! b3 a2 b3 a4
t4 ! a1 a2 b3 a4
Das Tupel t4 ist korrekt, da t4 jA1 A2 = t2 jA1 A2 , t4 jA2 A3 = t2 jA2 A3 und t4 jA3 A4 = t3 jA3 A4 ist.
Bilde nun ./fA1A2 A4 ; A1A3 A4 g, dann sind die Tupel t1 und t4 verbindbar, und wir fugen das
Tupel t5 ein
t1 !
t2 !
t3 !
t4 !
t5 !
Es gilt
Der Chase-Proze
A1
a1
a1
b3
a1
a1
A2
b1
a2
a2
a2
b1
A3
b2
b3
b3
b3
b3
A4
a4
b4
a4
a4
a4
t5 jA1A2 A4 = t1 jA1 A2 A4 und t5 jA1 A3 A4 = t4 jA1 A3 A4 :
Sei eine Menge von funktionalen und Verbundabhangigkeiten. Sei T ein Tableau uber A. Eine
Folge T = (T0; T1; : : :; Tr ) von Tableaux mit folgenden Eingenschaften
1. Fur alle i gilt Ti 6= Ti+1
2. Fur alle i entsteht Ti+1 aus Ti durch Anwenden einer Regel 1. oder 2. fur das Ersetzen von
Tableaux.
3. Tr lat sich durch Anwenden keiner -Regel fur 2 mehr verandern.
heit Chase-Folge .
81
Satz (ohne Beweis)
Es gilt
Jede Chase-Folge ist endlich.
Jede Chase-Folge zum gleichen T und endet beim gleichen Tr. (Church-Rosser-Eigenschaft)
Test auf X ! Aj 2
+
( enthalt neben funktionalen auch Verbundabhangigkeiten)
Als Starttableau wird
X
z
}|
{
A1 Ai Ai+k Aj An
TX = a1 ai ai+k aj an
b1 ai ai+k bl br
verwendet. Wende dann auf TX den Chase-Proze an. Sei TX das letzte Folge-Glied. Genau dann
gilt X ! Aj 2 + , wenn in der Spalte von Aj in TX nur aj steht.
Der Beweis hierzu ist trivial.
Beispiel
Sei A = fA; B; C; Dg und = fA ! D; ./ fABC; CDgg. Wird dann mit X = fB; C g und
Y = fDg die funktionale Abhangigkeit X ! Y impliziert?
Die Tabelle
TX
A B C D
a1 a2 a3 a4
b1 a2 a3 b2
wird durch Anwenden des Join-Operators zu
A
a1
b1
a1
b1
B
a2
a2
a2
a2
C
a3
a3
a3
a3
D
a4
b2
b2
a4
und wegen der funktionalen Abhangigkeit A ! D ergibt sich mit Regel 1. a4 = b2 und damit die
Tabelle
A B C D
a1 a2 a3 a4
b1 a2 a3 a4
impliziert also fB; C g ! fDg.
Folgerung
Sei
eine Menge von Verbundabhangigkeiten und X ! Y werde von
Y X.
Beweis
impliziert. Dann ist
Chase startet mit TX , wobei fur A 2 Y und A 2= X in der Spalte von A in der zweiten Zeile b
steht.
Verbundabhangigkeiten liefern aber nur neue Tupel, verursachen aber keine Gleichsetzungen, was
den Widerspruch liefert.
82
Berechnung einer Abhangigkeitsbasis fur mehrwertige Abhangigkeiten X !! Y
Sei eine Menge von funktionalen Abhangigkeiten und Verbundabha ngigkeiten. Sei X; Y A
und X + \ Y = ;. Dann gilt:
impliziert X !! Y genau dann, wenn chase (TX ) eine Zeile tY mit a-Eintragen genau auf
X + [ Y enthalt.
Beweis
\)" Um zu zeigen, da X !! Y gilt, verwende den Test auf verlustlosen Verbund.
Setze Z = A (X + [ Y ) und wahle A1 = X + [ Z und A2 = X [ Y .
Es ergibt sich
tA1
tA2
TfA1;A2 g
Y
Z
a1 : : :ai b1 : : :br ai+r+1 : : :an
a1 : : :ai ai+1 : : :ai+r br+1 : : :bs
X+
und durch den Chase-Proze
X+
Y
Z
tA1 a1 : : :ai
?
ai+r+1 : : :an
tA2 a1 : : :ai ai+1 : : :ai+r
?
Behauptung
TfA1;A2 g ) enthalt eine Zeile, die nur aus a's besteht.
chase(
Beweis
Verwende die Voraussetzung, da
X+
TX
A X+
a1 : : :ai ai+1 : : :an
a1 : : :ai c1 : : :cl
durch den Chase-Proze zu
tY
X+
Y
Z
a1 : : :ai ai+1 : : :ai+k ck : : :cl
wird.
Wenn in einer Relation zwei Tupel existieren, die auf X ubereinstimmen, so enthalt
diese Relation, falls sie genugt, auch das Tupel tY .
Deshalb kann man durch eine geeignete Abbildung : Var(TX ) ! Var(TfA1 ;A2 g ) mit
(ta) = tA2 und (tX ) = tA2 die a's und c's von TX so abbilden, da geeignete Tupel
einer Relation entstehen, die T genugt.
Da chase(TfA1 ;A2 g den Abhangigkeiten aus genugt, mu auch (tY ) darin enthalten
sein.
(tY ) besteht aber nur aus a's, deshalb enthalt es auch auf X + nur a's.
Da (ta ) = tA2 ist (aj ) = aj fur Aj 2 Y , was bedeutet, da (tY ) auf Y auch nur
a's enthalt.
83
Wegen (tX ) = tA2 werden die c-Eintrage ebenfalls zu a's.
Dies aber bedeutet, da (tY ) auf Z und somit auf ganz A nur a's enthalt.
\(" Man nimmt an, impliziere X !! Y .
Sei dann ohne Beschrankung der Allgemeinheit ./ fX + [ Y; X [ Z g 2 .
Betrachte chase(TX ), wobei wir zuerst ./ fX + [ Y; X [ Z g anwenden und so die neue
Tabelle
X
Y
Z
a a : : :a a : : :a
TX = tta aa :: :: :a
:a
b b : : :b b : : :b
X
t a : : :a a a : : :a b : : :b
erhalten.
Auf Z konnen durch funktionale Abhangigkeiten keine b's durch a's ersetzt werden, da
Verbundabha ngigkeiten nur neue Zeilen erzeugen.
Das aber heit, da t unverandert bleibt.
Folgerung
Zu X erhalt man aus chase (TX ) sofort alle mehrwertigen Abhangigkeiten der Form X !! Y .
Bilde Abhangigkeitsbasis durch den bereits fruher beschriebenen Algorithmus.
Beispiel
Sei = ffB g ! fC g; ./ fABC; CDE gg und X = fB g. Die Tabelle
TX
A B C D E
a1 a2 a3 a4 a5
b1 a2 b2 b3 b4
wird wegen der funktionalen Abhangigkeit B ! C zu
A B C D E
a1 a2 a3 a4 a5
b1 a2 a3 b3 b4
und diese wird durch Anwenden des Join-Operators zu
A
a1
b1
a1
b1
B
a2
a2
a2
a2
C
a3
a3
a3
a3
D
a4
b3
b3
a4
E
a5
b4
b4
a5
mit X + = fB; C g. Es ergeben sich schlielich die Abhangigkeiten X ! X + , fB g !! fAg und
fBg !! fD; E g.
Denition Nullwerte
Nullwerte sind nicht existierende oder nicht bekannte Werte.
Wir haben bereits fruher den \Platzhalter" betrachtet, der vom aueren Verbund benutzt wird.
Das Problem dabei war bisher, da nicht assoziativ ist. Als Ausweg fuhrt man nun induzierte
Nullwerte i ein. Wie verwendet man nun diese Nullwerte?
84
Man fuhrt eine sogenannte Universalrelation : R ! (R1; : : :; Rm) mit Ri = Ai (R) ein, speichert
die Ri lokal, macht alle Updates lokal und hot, da kein Widerspruch auftritt.
Man versucht, eine abhangigkeitserhaltende Zerlegung und einen verlustlosen Verbund zu erhalten.
Wenn die Universalrelationsbedingung gilt, so ist die Projektion bijektiv. Bei Nullwerten ist die
Universalrelationsbedingung verletzt, da zum Beispiel fur
R1
A B C
a1 b1 c1
a2 b2 c2
und
TX
A B D E
a1 b1 d1 e1
fA;B;C g(R1 ./ R2) 6= R1 gilt, das heit, es gehen Informationen verloren.
Allgemein wird bei zusatzlichen Tupeln durch die Verbundbildung Information vernichtet.
Welche Informationen sind aus einer Datenbank ableitbar, wenn unvollstandige Daten gespeichert
sind?
Ersetze in dieser Situation den Verbund durch den Chase-Proze.
1. Setze jedes Tupel eines jeden Ri durch paarweise verschiedene Nullwerte auf die gesamte
Attributmenge fort.
2. Interpretiere die echten Werte als a's und die Nullwerte als b's und fuhre den Chase-Proze
durch.
3. Entferne subsumierte Tupel.
Folgerung
Alle Tupel in der entstehenden Tafel, die keine Nullwerte enthalten, bilden exakt den Verbund
der Ri.
Ist X A, so sei Xt (T ) die Menge der Tupel aus T , die auf X keinen Nullwert haben, das heit,
die als Abbildung auf X eingeschrankt, total sind. Das hochgestellte t steht dabei fur total.
Xt (T ) enthalt die uber X vorhandenen Informationen.
Beispiel
Gegeben seien die Tabellen
A B C D
1
1
1
2
C G D E F
1
1
1
1
1
D E F B
1
und
1
1
B C F
85
1
sowie die funktionalen Abhangigkeiten DEF ! B und BC ! F .
Es resultiert die Tabelle
T
A B C D E F G
1
1
1
2 1 2 3
4 5 1 1 1 1 1
6 1 7 1 1 1 8
mit 5 = 1 wegen DEF ! B und 2 = 1 wegen BC ! F .
Es ergibt sich also
t
ABCDF
(T )
A B C D F
1
1
1
2
1
Da 4 und 6 nicht ersetzt wurden, erhalt man nur die erste Zeile als totales Tupel, was man
durch den Verbund nicht erreicht hatte!
Verfugbare Systeme
Es gibt keine Speicherung indizierter Nullwerte.
Es gibt keinen Chase-Proze.
Es werden zu den einzelnen Schemata Primarschlussel eingegeben.
Auf Schlusseln sind Nullwerte verboten.
Es gibt keine Prufung, ob eine Universalrelation existiert.
Ziel
Die Ri sollen moglichst unabhangig voneinander geandert werden konnen.
Frage
Wo werden durch eine A nderung eines Tupels Folgeanderungen notig?
enthalte stets nur funktionale und Verbundabhangigkeiten. X A. A nderung betree Eintrage auf
X . Der Chase-Proze liefert Gleichsetzungen, das heit Abanderung von Eintragen und evtl. Konikte
nur auf X + .
Fremdschlusselbedingung
Die Forderung
Ri ./ + Rj
Aj Ai
heit Fremdschlusselbedingung. Sie wird von einigen verfugbaren Systemen unterstutzt.
Versicherungbeispiel
Gegeben seien die folgenden funktionalen Abhangigkeiten
fSchadensNrg ! fVersNr; Schadenshoheg
fVersNrg ! fKundenNr; Sparteg
fKundenNrg ! fName; Anschrift; Agentg
fAgentg ! fBezirk; Chef; Statusg;
aus denen man die Schemata Si (Ai ; i) mit i = 1; 2; 3; 4 erhalt.
86
Fremdschlusselbedingung
Ein neuer Agent darf eingetragen werden ohne Nebenbedingung. Ein Kunde darf nur eingetragen werden, wenn ein zugehoriger Agent existiert (A4 A+3 ). Eine Versicherungsnummer
darf nur eingetragen werden, wenn Kundennummer und Agent existieren. Ein Schaden darf
nur eingetragen werden, wenn Versicherungsnummer, Kundennummer und Agent existieren.
Beantwortung von Anfragen
Zu X A werden alle Tupel aus Xt (T ) gebraucht, wobei T durch den Chase-Proze entstand. T
habe genau auf X keine Nullwerte. Dann gilt
t 2 Xt A ./X + Rj
j
Beweis
t wurde vom Chase-Proze aus Tupeln ti 2 Ri gebildet. Auerhalb von X + hat t nur Nullwerte.
Daher hat jedes ti auerhalb von X + nur Nullwerte. Es ist Ai X +. Da auf X + die darauf
totalen Tupel durch den Verbund erhalten werden folgt die Behauptung.
Die allgemeine Anfrage wird beantwortet durch
Xt
[ ./ Rj :
+
X Y Aj Y
Denition
Der Verbund
wobei
jS1
i=1
( ((R1 ./ R2) ./ R3) ./ ./ Rn 1 ) ./ Rn ;
Ai einen Schlussel von Sj (Aj ; j ) enthalt, heit Erweiterungsverbund.
Beim Erweiterungverbund werden die Zwischenergebnisse von der Tupelzahl her nie groer.
Beispiel
Seien die folgenden beiden Tabellen gegeben
Angestellter
Otto
Max
Geschichte
Arbeitgeber
fr
uherer Job
Post
Brieftr
ager
M
ullabf
uhr
Straenreiniger
Angestellter
Ferdinand
Otto
fr
uheres Gehalt
20000
30000
Fehlzeiten
Krankheit Sonderurlaub
12
2
10
7
Jedesmal ist Angestellter Schlu ssel. Hier ist die Fremdschlusselbedingung sinnlos.
Denition
Sei A =
n
n
genau eine Verbundabha ngigkeit j./
Ai und auf jedem Ai eine
=1
j =1
funktionale Abhangigkeit Xi ! Ai mit
1. (R1; : : :; Rn) 2 S1 (A1 ; 1) Sm (Am ; m ) =) chasef ./n Ai g erfullt .
S
Ai. Es gibe in
ist Xt
i=1
l (E ), wobei
i=1 X i
jedes Ei ein Erweiterungsverbund ist.
2. Fur alle X
=
Gelten diese Bedingungen, so heien S1 (A1 ; 1); : : :; Sm (Am ; m ) unabhangig.
S
87
Denition
(S1; : : :; Sm ) erfullt die Eindeutigkeitsbedingung, wenn folgendes gilt: Ist A 2 A+i , so gibt es genau
ein Aj mit der Eigenschaft, da Ai einen Schlussel K von Sj enthalt und A 2 Aj n K ist. Sj fugt
dem Aj das Attribut A hinzu. Wichtig: Das Attribut kann nur auf eine Weise zu dem Schema
hinzugefu gt werden.
Satz
Falls die Eindeutigkeitsbedingung gilt, sind die Schemata unabhangig.
Beispiel
.KreditNrKunde
Buchung
.
KontoNr
Ausweg
Rollenattribute: Kreditkunde, Sparkunde.
Sei X A1 [ A2 (R1 ./ R2) Es existiere ein A3 A+1 . Falls in R3 2 S3 (A3 ; 3) keine Tupel sind, die
mit einem Tupel aus R1 ./ R2 verbindbar waren, wird dieses Tupel durch einen weiteren Verbund mit
R3 vernichtet.
Bilde minimalen Erweiterungsverbund, das heit minimal mit der Eigenschaft, da die bereits vorhandenen Attribute X umfassen.
Um eine Anfrage zu X zu beantworten geht man nun wie folgt vor: Projiziere alle minimalen Erweiterungsverbunde, die zu X gebildet sind, auf X und gebe deren Vereinigung aus.
t
Algorithmus zur Berechnung von X chasef ./n Aig TfA1;:::;Ang(R) (das heit X -totale Projektion
i=1
der Datenbank)
(1) Sei V = fAi j X A+i g
(2) Solange Ai ; Aj 2 V existieren, so da die Attributmenge zum minimalen Erweiterungsverbund
von Aj bezuglich X das Ai enthalt, entferne Ai aus V .
(3) Bilde zu jedem Aj 2 V den minimalen Erweiterungsverbund Ej von Aj bezuglich X .
S
(4) Berechne Aj 2V Xt (Ej )
Beispiel
Gegeben seien die Attributmengen
A1 = fOrt; Abteilung; Projektg
A2 = fAbteilung; Projekt; Chefg
A3 = fOrt; Chef; Gruppenleiterg
mit den Abhangigkeiten
fOrt; Abteilungg ! fProjektg
fAbteilung; Projektg ! fChefg
fOrt; Chefg ! fGruppenleiterg:
Sei X = fOrt; Chefg. Gesucht ist Xt .
88
Der minimale Erweiterungverbund von A1 , der X umfasst ist A1 ./ A2 , der minimale Erweiterungsverbund von A3 , der X umfasst ist A3 und X A+3 . Bilde also Xt (R1 ./ R2) [ Xt (R3). Dies
ist das gesuchte Ergebnis.
89
A Literatur zur Vorlesung Informatik III
[1] T. Harder, Implemtierung von Datenbanksystemen, Hanser (1978), ISBN 3-446-12549-3.
[2] D. Maier, The theory of relational databases, Pitman (1983), ISBN 0-914894-42-0.
[3] K. Mehlhorn Sorting and Searching, Springer 1984.
[4] G. Schlageter/W. Stucky Datenbanksysteme: Konzepte und Modelle, Teubner Stuttgart (1983),
ISBN 3-519-12339-8.
[5] J. Ullmann Principles of Databases and Knowledge-Base Systems I,II, Computer Science Press
1988/89.
[6] G.Vossen Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme, AddisonWesley (1987), ISBN 3-925118-64-0.
[7] C.C. Yang Relational databases, Prentice-Hall, Englewood Clis (1986), ISBN 0-13-771858-6-025.
[8] R.Heuer Objektorientierte Datenbanken.
90
Herunterladen