You are on page 1of 54

Datenbanksysteme

Mitschrift WS 09/10
Mitschrift von Christopher Kropp
Version vom 18. Dezember 2009
Inhaltsverzeichnis i
Inhaltsverzeichnis
1 Einleitung 1
2 Abstraktionsebenen in Datenbanksystemen 2
3 Darstellungstechniken fr Datenbanksysteme 3
3.1 Hash-Verfahren: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.1 Beispiele fr Hash-Funktion . . . . . . . . . . . . . . . . . . . . . . . 3
3.1.2 Suche nach Eintrag . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.3 Einfgen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.1.4 Lschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.2 ISAM (Indexed-sequential access method) . . . . . . . . . . . . . . . . . . 5
3.3 B-Bume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.3.1 Suche nach s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3.2 Einfgen von s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3.3 Lschen von Schlsseln . . . . . . . . . . . . . . . . . . . . . . . . . 8
4 Logik-Programmierung fr Datenbestnde 9
4.1 Beispiel: Wegsuche in gerichteten Graphen . . . . . . . . . . . . . . . . . . 9
4.2 Beweissuchbaum (BSB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
5 Entity-Relationship-Modell 15
5.1 bergang zum relationalenModell . . . . . . . . . . . . . . . . . . . . . . . 16
6 Relationen-Algebra 19
6.1 Join, Equi-Join, Natural-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6.2 Baumform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7 Relationen-Kalkl 24
7.1 Verhalten: Relationen-Kalkl - Relationen-Algebra . . . . . . . . . . . . . . 25
8 Die Abfragesprache SQL 26
8.1 Historie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.2 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.3 Schemadenition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
8.4 Schema-nderung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Inhaltsverzeichnis ii
8.5 Einfgen von Tupeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.6 Elementare SQL-Anfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8.7 Anfragen zu mehreren Relationen . . . . . . . . . . . . . . . . . . . . . . . 28
8.8 Untersttzung natrlicher Joins . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.9 Geschachtelte SQL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . 29
8.10 Verwendung von NOT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . 30
8.11 Kompliziertes SQL-Beispiel / Doppelt geschachtelt . . . . . . . . . . . . . . 31
8.12 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.13 Nullwerte in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
8.14 nderung an Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.15 Sichten (views) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.16 Aggregation in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
9 QBE Query by example 35
10 Implementierung von Abfragen 37
10.1 Regeln fr quivalente Umformungen . . . . . . . . . . . . . . . . . . . . . 38
10.2 B-Baum fr Attributsortierung . . . . . . . . . . . . . . . . . . . . . . . . . . 41
11 Entwurfstheorie fr relationale DB-Systeme 43
11.1 Schlssel-Begriff (im Rahmen von FD) . . . . . . . . . . . . . . . . . . . . . 44
11.2 Regeln fr F
+
: Armstrongs Axiome . . . . . . . . . . . . . . . . . . . . . . . 44
11.3 Verlustlosigkeit von Zerlegungen . . . . . . . . . . . . . . . . . . . . . . . . 47
11.4 Bewahrung von Abhngigkeiten (Preservation of Dependency) (Hllentreue) 48
11.5 Verlustlos ohne FDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
12 Relationale Normalformen 50
1 Einleitung 1
1 Einleitung
Inhalte:
Geeignete Datenstrukturen
Modellierung von Objekten
Formale Abfragesprachen
Entwurf von Schemata (Normalformen)
Optimierte Abfragemethoden
Paralleler Zugriff
(verteilte DBS)
Software, die Zugriff auf DB gestattet, heit DB Management System (DBMS). Benutzen
der Schnittstelle der DBMS ist eine high-level Sprache zur Denition und Manipulation.
High-level: Abstand zur physischen Darstellung des Programms ist grer als bei C, C++
und Java. Sowohl Aspekte der Nutzung als auch der Implementierung.
2 Abstraktionsebenen in Datenbanksystemen 2
2 Abstraktionsebenen in
Datenbanksystemen
1. Physikalische Ebene: Ablage von Bytes auf Platte (Datenstrukturen-Thema)
2. Logische Ebene: Darstellung in sog. Schema (Tabellen, Ringe, Mengen)
3. Schichten: Auszge aus Tabellen, je nach Benutzergruppe
Physikalische Datenabhngigkeit: nderbarkeit von Ablage (1.) unter Beibehalten von
(2./3.) Benutzer darf nichts merken: (Dies wird meist erreicht, nur nicht im Fehlerfall, bei
dem ein Fehler durch alle Schichten schlgt)
Anforderung der Ebene (2.): Unterscheidung von:
a) Data Denition Language (DDL) (kann interaktiv sein oder eingebettet in Program-
miersprache)
b) Data Manipulation Language (DML)
3 Darstellungstechniken fr Datenbanksysteme 3
3 Darstellungstechniken fr
Datenbanksysteme
Erweiterte Behandlung dieses Kapitels: https://fs.ai.rub.de/dokuwiki/faecher:datenstrukturen
Problem: Viele Daten! - Vorteil: Struktur der Datenstze oft einheitlich
Speziell: Wrterbuchproblem(Dictionary) mit Einfgen/Lschen/Finden mit best. Schls-
sel soll schnell gehen
Einfgen Hintereinander bringt zu langsame Zugriffe weil alles durchsucht werden mss-
te (> 10
8
Stze). Wichtige Verfahren:
1. Open Hash
2. ISAM
3. B-Baum
3.1 Hash-Verfahren:
Daten werden in Eimer (bucket) gelegt. Jeder Eimer besteht aus einem oder mehreren
Speicherblcken (z.B. 16 KB Stanford, 2 KB Microsoft Ofce Access). Hash-Funktion
berechnet aus Schlssel v die Eimernummer h(v).
3.1.1 Beispiele fr Hash-Funktion
Einfache Hash-Funktion
Vorgehen:
Fasse den Schlssel s als Bitfolge auf
Teile Folge in Stcke der Lnge l auf
Addiere die Stcke
Dividiere die Summe durch Eimeranzahl a
Verwende den Rest als Eimernummer h(v)
3 Darstellungstechniken fr Datenbanksysteme 4
Diese einfache vertretbare Art eine Hash-Funktion zu bilden, der als String gegeben ist,
weist keine besonders hohe Qualitt der Gleichverteilung auf.
Beispiel: Gegeben: a = 4, l = 3, s = 101 011 001 110
Dann ist h(v) = (5 + 3 + 1 + 6) mod 4 = 3
Java-Hashcode-Funktion
Bessere Verteilung beispielsweise durch Java-Hashcode-Funktion fr Strings: Fr einen
String s=c
0
,. . . ,c
n1
bilde

n
v=1
c
i
37
i
(gem Java-Doc) (Java-Hashcode-Funktion viel
schneller dadurch, dass einmal berechnete Werte gespeichert und nicht erneut berechnet
werden mssen)
0
1
2
3
b
1
b
3
b
2
b
4 b
5
b
6
Eimer-
Verzeichnis
Blcke u derselben Eimer i sind ber Verweis vom Verzeichnis erreichbar (ber Verket-
tung). Sie enthalten nur Schlssel s mit h(s)=i. Manche Blcke werden intern vergeben,
manche extern. So weit man kann wird versucht die Blcke im Hauptspeicher (intern)
untergebracht. Soweit dieser voll ist, werden extern evtl. auf Festplatte Blcke angelegt.
3.1.2 Suche nach Eintrag
Suche im 1. Block nach Eintrag. Diese Suche in dem ersten Block knnen einem ei-
genen Wrterbuch unterliegen und beispielsweise mit BinSearch durchgefhrt werden.
Falls nicht da, gehe ber Verweis in der Kopnformation des Blocks zum nchsten Block
desselben Eimers, usw.
3.1.3 Einfgen
Zunchst wie zuvor. Falls Eintrag gefunden, melde Fehler (s kommt mindestens dop-
pelt vor). Hier ggf. Fallunterscheidung, falls Element schon da ist (falls noch durch keine
andere Instanz bernommen). Sonst lege Eintrag in nicht vollen Block des Eimers h(s)!
Falls alle voll, hole leeren Block, fge Eintrag in diesen; setze Verweis von letztem Block
der Kette auf diesen! (oder auch: Lokalittsprfung mit neuem Block jeweils vorne, da
Wahrscheinlichkeit hoch ist, dass dieser demnchst wieder verwendet wird)
3 Darstellungstechniken fr Datenbanksysteme 5
3.1.4 Lschen
Wenn in einem Block nur noch 1 Eintrag ist und dieser entfernt wird, sollte Block an
Dateiverwaltungssystem zurckgehen.
...
...
...
...
Mller, Meier Schulze Becker
Mller, Meier Schulze Becker
---
Blcke mit Kopnformation die auf weiteren Block verweist. Blcke beinhalten hier und
sehr viel leerem Platz. Wenn aus einem Block mit nur einem Eintrag der letzte Eintrag
entfernt wird, wird Block an Dateiverwaltungssystem zurckgegeben. Durch Rckgabe
an Dateiverwaltungssystem steht der Block diesem wieder zur Verfgung.
3.2 ISAM (Indexed-sequential access method)
Breit in Datenstrukturen behandelt
Standardverwaltung fr MySQL
Entwickelt fr IBM-Grorechner aus 60er Jahren
Abgelst in kommerziellen Systemen durch B-Bume, damals B-Bume und AVL-
Bume noch nicht bekannt
Extrem unausgeglichen
Im Mittel nicht ganz schlecht
Gut fr statische DB-Systeme (bei denen nicht stndig etwas ndert, wie beispiels-
weise Telefonbuch)
Wir brauchen Index, der fr jeden Block b
i
den kleinsten Schlssel s
i
angibt. Seien s
i
,. . . ,s
n
kleinste Schlssel der Blcke b
1
,. . . ,b
n
. Dann muss gelten, dass in Block b
i
nur Schlssel
s mit s
i
s s
i+1
(eventuell unsortiert zwischen s
i
und s
i+1
, da Bearbeitung innerhalb
eines Blocks gegenber hin und herspringen zwischen Blcken nicht ins Gewicht fllt).
Zum Finden eines Schlssels s gengt eine Suche im Index (resident) nach dem richtigen
Block und eine Suche in diesem Block.
ISAM lsst sich auf 2 Stufen verallgemeinern. Im Block steht wieder Index, der direkt
oder indirekt auf Blcke mit Daten verweist (vgl. I-node / Unix le system).
Problem: Wenn Datenblock voll bzw. leer ist, muss auch Index gendert werden.
3 Darstellungstechniken fr Datenbanksysteme 6
Beispiel: Index
120
43
40
19
2
2 8 17
22 30 19 37 21
40
48 43 50
120 300 250
S
o
r
t
i
e
r
t
nderung des Index z.B. bei Entfernen des Schlssels 40
120
43
19
2
Bei Einfgen von 23: Neuen Block anfordern (oder: Umfllen)
3.3 B-Bume
Baumstrukturen mit den Eigenschaften:
1. Alle Wege von Wurzel zu Blatt sind gleich lang
2. Fr feste Zahl d sind an jedem inneren Knoten zwischen d (untere Grenze) und
2d 1 (obere Grenze) Verweise zu Kindern (an Wurzel jedoch 2)
3. Die Schlssel sind an den Blttern aufsteigend sortiert und verkettet.
Technisch: Bei den Kind-Verweisen sind (auer beim jeweils linkesten) auch die
kleinsten Schlsselwerte (ksw) genannt, die so erreichbar sind.
Innere Knoten:
ksw
17
ksw
18
3 Darstellungstechniken fr Datenbanksysteme 7
Blatt:
s Nutzlast
vorheriger
nchster
3.3.1 Suche nach s
In Wurzel und inneren Knoten stehen kleinste Schlsselwerte von Teilbumen.
ksw
2
, . . . ,ksw
i
, . . . Vergleiche sie nacheinander (oder via bsearch) mit s. Sobald ksw
j
> s
folge dem ( j 1)-Kindverweis!
Li May
Mai
3.3.2 Einfgen von s
Betrachte zunchst Knoten auf zweituntersten Ebene unter dem s dem Wert noch hin-
gehrt! Falls dort noch Platz frei ist (falls Verweisanzahl < 2d 1), dann fge s ein und
verschiebe den Rest entsprechend! Falls kein Platz, verteile die jetzt 2d Eintrge, auf 2
Knoten mit je d Eintrgen!
8 12 14 15 8 15 12 10 24 17 10 17
wird
aber
wird
(d=2)
Im letzten Fall entsteht ein Verweis nach s auf der nchst hheren Baumstufe. Dort kann
auch schon voll sein. Dann: Auch weiter oben Knoten splitten!
Einfgen von c bewirkt
a c
B
1
B
2
B
3
B
5
K''
K'
B
4
b
K
3 Darstellungstechniken fr Datenbanksysteme 8
a b c d
B
1
B
2
B
3
B
4
B
5
K'
K''
K
Sonderfall: Falls Wurzel mehr als 2d 1 Knoten bekme, wird sie geteilt, und die beiden
neuen Knoten werden an neue Wurzel gehngt.
3.3.3 Lschen von Schlsseln
Wenn ein Knoten auf zweitunterste Ebene durch Lschen weniger als d Eintge bekme,
streben wir Ausgleich mit einemNachbarn an, der mehr als d Eintrge hat. Falls Nachbarn
auch nur d haben, dann verschmelze Knoten mit d1 und Knoten mit d zu einem mit 2d1!
Lschung kann sich auch nach oben fortpanzen.
4 Logik-Programmierung fr Datenbestnde 9
4 Logik-Programmierung fr
Datenbestnde
Zum Begriff der Logikprogrammierung:
1. Die bentigte Information wird durch Formeln eines Kalkls beschrieben (sowohl
die Anweisungen als auch Daten)
2. Ein einzelner Programmlauf ist Reakion auf Eingabe, die ebenfalls im logischen
Kalkl vorliegt
3. Die Ausgabe beinhaltet, ob die Eingabeformel erfllbar ist
4. Der Weg von der Eingabe zur Ausgabe ist durch ein Beweisverfahren festgelegt,
das Resolutionsverfahren
5. Die Ausdrucksfhigkeit ist grundstzliche vergleichbar mit der von imperativen Spra-
chen (C, C++, Java)
if durch Fallunterscheidungen
while durch Rekursion
Datentypen durch Bume
4.1 Beispiel: Wegsuche in gerichteten Graphen
Darstellung (Fakten): Kanten (a, b), (a, c), (b, c), (b, d), (c, d), (c, e), (d, e), (e, a)
a b
c
d e
Verbal
1. Fr alle X fhrt ein Weg von X nach X
2. Fr alle X, Y und Z gilt: Wenn eine Kante von X nach Z fhrt und ein Weg von Z nach
Y, dann fhrt ein Weg von X nach Y
4 Logik-Programmierung fr Datenbestnde 10
Notation
weg(X,X).
weg(X, Y) kante(X, Z) weg(Z, Y) (wobei nicht g.d.w. ist, sondern hinreichende Bedin-
gung)
X, Y, Z sind variabel. Allquantizierung (. . . fr alle X,. . . ) nicht explizit notiert
Anfragen
1. weg(a, e)? Gibt es Weg V, a nach e?
2. weg(a, X)? Gibt es Knoten X, von a aus erreichbar?
3. kante(Z, d) kante(Z, e)? Gibt es Z, von dem Knoten nach d und auch nach e fhren?
Diese Eingabe-Aussagen sind existenziell quantiziert (Gibt es X, so dass. . . ?)
Antworten
1. ja
2. X = a, X = e, . . .
3. Z = c
Ablauf
Wie Beantwortet das System die Anfrage (1.)?
Aussage weg(a, e) ist nicht als solche ein Faktum.
Kann sie durch Einsetzen von Konstanten fr Variablen entstehen? Nein, denn weg(X, X)
erlaubt nur identische einsetzung beider Variablen- Vorkommen.
Ist Verwendung einer Regel mglich? Ja; Bei Einsetzen X := a, Y := e haben wir
weg(a, e) kante(a, Z) (Z, e)
als instanzierte Regel.
Wir haben: weg(a, e) gilt, wenn kante(a, Z) weg(Z, e). Frage: Existiert ein solches Z? Zwei
Teile: Zunchst kante(a, Z) erzetze Z := b ergibt kante(a, b)? Das gilt: Es bleibt weg(b, e)?
Gem Regel
kante(b, U) (U, e)
Einsetzen U := c kante(b, c) ist o.k., gilt weg(c, e)?
(Dritte) Anwendung der Regel: kante(c, T) weg(T, e)? Erfllbar mit T := e, weil
kante(c, e) weg(X, X)
4 Logik-Programmierung fr Datenbestnde 11
Wie ist Auswahl bei mehreren Mglichkeiten?
a) bei Anfragen mit mehreren Teilen
b) bei mehreren passenden Regeln oder Fakten
bliche Systeme probieren Regeln in textlicher Reihenfolge aus und setzen zurck (back-
track), wenn Sackgasse auftritt.
Im vorigen Beispiel: Die textliche Reihenfolge sei jetzt:
I) weg(X, Y) kante(X, Z) weg(Z, Y)
II) weg(X, Y)
weg(e, e)? (am Ende der vorigen Herleitung) fhrt dann zu: kante(e, Z) weg(Z, e)? Einset-
zen Z := a: kante(e, a) weg(a, e) (weg(a, e) ist wieder Anfang)!
Damit alles von vorne. Grundsatz: Programmierer ist fr Reihenfolge der Regeln zustn-
dig.
4.2 Beweissuchbaum (BSB)
Beweisuchbaum zeigt mgliche Alternativen durch Verzweigung auf
weg(a,e)
weg(c,e) weg(e,e)
kante(a,Z)
v
weg(Z,e)
kante(b,Z)
v
weg(Z,e) kante(c,Z)
v
weg(Z,e)
kante(e,Z)
v
weg(Z,e)
weg(b,e)
weg(d,e) weg(d,e)
weg(a,e)
weg(b,e)
Erfolg
unendliche Schleife, s.o.
Wahl der Alternativen, ohne in unendliche Schleife zu gleangen, ist abhngig von textl.
Reichenfolge der Regeln und Fakten.
Negative Anfrage
Prinzip: negation by failure
Wir lassen aus Graphen die Kante(e,a) weg. Sei Anfrage weg(c, a)?
4 Logik-Programmierung fr Datenbestnde 12
Verfahren
Eine Nebenrechnung bearbeitet die positive Anfrage weg(c, a)? Ist sie lsbar, lautet die
Antwort auf die ursprngliche Frage: Nein. Scheitet sie, so ist die Antwort: Ja.
BSB fr Nebenrechnung:
weg(c,a)
weg(e,a)
kante(c,X)
v
weg(X,a)
kante(e,Y)
v
weg(Y,a) kante(d,Y)
v
weg(Y,a)
weg(e,a) weg(d,a)
Memo
failure
von links oben ist
bekannt, dass das
nicht mehr geht
Ursprnglicher Graph ohne (c,d), (a,b):
a b
c
d
e
Anfrage: weg(c, d)?
Intuitiv: Ja
BSB:
weg(c,d)
weg(a,d)
kante(c,X)
v
weg(X,d)
kante(e,Y)
v
weg(Y,d)
kante(a,Z)
v
weg(Z,d)
weg(e,d)
weg(c,d)
unendliche Schleife!
4 Logik-Programmierung fr Datenbestnde 13
Programmtechnische Lsung
Jeden Knoten nur einmal bercksichtigen!
(Ab hier nicht prfungsrelevant!)
[] sei leere Liste (kein Datalog-Feature). Fr X Variable oder Konstante sei [X/L] die Liste
mit X als vorderstem Element und L als Restliste. (Abkrzung fr [a/[b/[. . . //[]]] auch
einfach [a, b, . . .])
Standardprdikat in (L,Z) ist erfllt, wenn Z Element der Liste L ist.
Def.: in([X/L], X). in([X/L], Z) in(L, Z).
Idee fr Wegsuche: Verwende drittes Argument, das die Liste der bisher durchsuchten
Knoten darstellt. Schon durchsuchter Knoten wird dann nicht nochmal berechnet.
Verbal: Es gibt Weg von X nach Y ohne Verwendung von Knoten in der Liste L, wenn
(hinreichend) es Kante von X nach Z gibt, Z nicht in der Liste L steht und es einen Weg
von Z nach Y ohne Verwendung von X oder einem Element von L gibt.
weg(X, Y) weg([], X, Y).
weg(L, X, X).
weg(L, X, Y) kante(X, Z) in(L, Z) ([X/L], Z, Y).
BSB fr voriges weg(c, d)?
weg([],c,d)
weg([e,c],a,d)
kante(c,Z)
v
weg([],Z)
weg([c],e,d)
Dies scheitert, da gilt: in([e,c],c)
weg(c,d)
v
weg([c],Z,d)
kante(e,Z)
v
weg([c],Z)
v
weg([e,c],Z,d)
kante(a,Z)
v
weg([e,c],Z)
v
weg([a,e,c],Z,d)
[c/[]]
(Jetzt wieder relevant!)
Allgemeine Vorgehensweise:
Goal? liefert ja, wenn BSB mindestens einen erfolgreichen Pfad besitzt (anderer
Pfad evtl. unendlich) und dieser gefunden wird
Goal? liefert ja, wenn BSB endlich und Suche erfolglos ist
4 Logik-Programmierung fr Datenbestnde 14
Offensichtliche Asymmetrie zwischen pos. und neg. Anfrage!
5 Entity-Relationship-Modell 15
5 Entity-Relationship-Modell
Welt aus Entities (Gegenstand, Einheit), Beziehung zwischen diesen, Attributen und
Entities oder Beziehungen, Rollen. Typen von Entities durch Rechtecke dargestellt,
Beziehungstypen durch Rauten und Kanten von diesen zu gewissen Rechtecken.
Studierender
hrt
Vorlesung
voraus-
setzen
liest
Professor/-in prft
Name
Sem.
Matr.-Nr.
Note
nachher vorher
SWS
Titel
Vorl.-Nr.
Name
Raum
Pers.-Nr.
Attributtypen durch Ovale und Kanten von diesen zu Rechtecken und Rauten. Schlsse-
lattribute werden unterstrichen.
Alle Daten einer Anwendung sollten einem ER-Schema entsprechen.
Stud., Vorl., Prof. sind E-Typen mit Attributen, von denen jeweils eines der Schlssel
ist.
prft ist ternrer R.-Typ (d.h. drei Kanten zu Entity-Typen) mit einem eigenen Attribut.
hrt, liest binre R.-Typen.
Fr Entity-Typen als Mengen E
1
, E
2
, . . . erfllt (konkrete) Beziehung R zwischen diesen
R E
1
E
2
. . . E
n
(E
i
= E
j
erlaubt)
n heit Grad der Beziehung (n = 2). Ein Element(e
1
, . . . , e
n
) R heit Instanz, wobei e
i
E
i
mit 1 i n.
vorher, nachher sind die Rollen, erste bzw. zweite Komponenten zu sein (v
1
, v
2
Vorl.).
Funktionalitt bei binren Beziehungen R:
5 Entity-Relationship-Modell 16
1 : 1 - Beziehung, falls zu jedem e
1
E
1
hchstens ein e
2
mit (e
1
, e
2
) R existiert und
umgekehrt
1 : N - Beziehung, falls zu jedem e
2
E
2
hchstens ein e
1
E
1
mit (e
1
, e
2
) R existiert
N : 1 - Beziehung, analog zu 1 : N fr e
1
E
1
N : M - Beziehung, wenn keine Restriktionen vorliegen
Grak: Im E-R-Schema in allen Obigen
E R
1
E
2
Auf Element-Ebene: Jede Kante sei Instanz
1:1 1:N M:N
5.1 bergang zum relationalen Modell
D
1
, D
2
, . . . , D
n
(domains) seien Wertebereiche mit atomaren Elementen (z.B. Zahlen oder
Zeichenketten). Dann ist Relation R Teilmenge des kartesischen Produkts der n Domnen
(D
i
= D
j
erlaubt).
R D
1
D
2
. . . D
n
(Das Schema der Relation ist die Folge (D
1
, . . . , D
n
).)
Ein Element e R heit Tupel.
Darstellung von R oft als Tabelle:
Fach Name Semester
Hans Mathe 4
Ute BWL 6
.
.
.
.
.
.
.
.
.
Ziel: E-R-Schemata in From von Relationen ausdrcken! (Unterscheidung zwischen Wer-
tebereich D
i
selbst und dem Attributnamen mit Wertebereich D
i
wird oft vernachlssigt.)
Entities: Durch Tupel aus Attributwerten darstellen!
Also bei Vorlesung: (150225, 4, DB-Systeme), (030025, 2, Lehrprinzipien), . . .
Der Schlssel ist zumeist ein Attributwert.
Beziehungen: Der allgemeine Fall ist wie folgt darstellbar (semi-formal):
5 Entity-Relationship-Modell 17
E
R
2
E
n
E
1
A
21
A
2k
2 ... ...
...
A
n1
A
nk
n ... ...
...
A
11
A
1k
1 ... ...
...
A
1
R
A
k
R
R
Die A
R
1
, . . . , A
R
k
R
seien die Attribute der Beziehung (z.B. Note beim Prfen). Stelle je Instanz
der Beziehung als Tupel von Attributwerten dar:
a
11
, . . . , a
1k
1

Schlssel vonE
1
, a
21
, . . . , a
2k
2

Schlssel vonE
2
, . . . , a
n1
, . . . , a
nk
n

Schlssel vonE
n
, a
R
1
, . . . , a
R
k
R

Attribute vonR
Beispiel: Prof. prft Vorl. bei Stud. mit Note. Konkretes Tupel in R
pr f t
:
( 4711

Personal-Nr. als Schlssel frE


1
, 030253

Vorl.-Nr. als Schlssel frE


2
, 98765

Matr.-Nr. als Schlssel frE


n
, 0.7

Note (eigentliche Nutzlast)


)
Die Schlsselattribute der Entity-Typen nennt man auch Fremd-Schlssel (foreign key) in
Relation R (wie oben).
Allgemein bilden die Fremdschlssel zusammen den Schlssel dieser neuen Relation.
Aber wichtige Spezialflle: Bin. 1 : N-Beziehung: z.B. Prof. liest Vorlesung.
Wenn jede Vorlesung nur von einer Person gehalten wird (Vorschrift?), gengt hier offen-
bar Vorlesungsnummer als Schlssel. Andere mgliche Situation: Wenn (nach DPO?) es
zu gegebener Studienrichtung und gegebener Vorlesung nur einen Prfer geben darf, ist
schon Vorlesungsnummer mit Matrikelnummer Schlssel der Relation R
pr f t
.
Weitere Operationen: Wir haben jetzt:
Vorlesung Vorlesungsnummer SWS Titel
Professor Personalnummer Name Raum
lesen Personalnummer Vorlesungsnummer
5 Entity-Relationship-Modell 18
Dann ist folgende Vereinfachung mglich:
Vorlesung Vorlesungsnummer SWS Titel Personalnummer
Professor [wie gehabt oben]
Idee: Relationen mit gleichen Schlsselattributen knnen zusammengefasst werden!
Regel: Zu zwei Relationen mit Schemata (D
1
, . . . , D
i
, D
i+1
, . . . , D
n
) bzw. (D
1
, . . . , D
i
, D
n+1
, . . . , D
m
)
wo in beiden Fllen Werte D
1
. . . D
i
Schlssel darstellen, kann neue Relation mit
Schema (D
1
, . . . , D
i
, D
i+1
, . . . , D
n
, D
n+1
, . . . , D
m
) gebildet werden.
Beispiel:
R
1
(A,a,17)
(B,b,4)
(B,a,52)
(A,b,5)
R
2
(A,a,)
(B,a,)
(A,a,)
Jeweils erste beiden Komponenten bilden Schlssel.
= R
1
(A,a,17,)
(B,b,4,)
(B,a,52,)
(A,b,5,)
Schlsselbegriff: In Schema (D
1
, . . . , D
i
, . . . , D
n
) stellt Teilfolge D
1
, . . . , D
i
einen Schlssel
der Relation R dar, wenn es zu jedem Tupel (d
1
, . . . , d
i
) D
1
... D
i
hchstens ein Tupel
(d
1
, . . . , d
i
, . . . , d
n
) R geben kann.
6 Relationen-Algebra 19
6 Relationen-Algebra
Relation R A
1
. . . A
x
, k-Stelligkeit (arity), R endlich; Komplement von R undeniert.
Komponenten: durch eine Zahl (i mit 1 i k), [oder durch Namen des Attributs (A
1
, A
2
, . . .)]
bezeichnet.
5 Grundoperationen gengen fr alle Datenbankzugriffe:
1. Vereinigung: R S mit R, S von gleicher Stelligkeit
2. Differenz: R\S mit R, S von gleicher Stelligkeit
3. Kartesisches Produkt: R S alle Tupel (a
1
, . . . , a
k
, b
1
, . . . , b
l
) fr (a
1
, . . . , a
k
) R,
(b
1
, . . . , b
l
) S . Stelligkeit k + l - keine Markierung zwischen a
k
und b
l
.
4. Projektion: Streichen und/oder Umordnen von Spalten einer Tabelle: Sei R k-stellig.
Wir denieren
i
1
,...,i
m
(R) wobei 1 i
j
k fr alle j und auerdem alle i
j
verschieden,
als Projektion von R auf Komponenten i
1
, . . . , i
m
.
i
1
,...,i
m
(R) ist m-stellig mit der eigen-
schaft, dass es zu jedem (a
1
, . . . , a
m
)
i
1
,...,i
m
(R) ein k-Tupel (k m) (b
1
, . . . , b
k
) R
gibt mit a
j
= b
i
j
( j = 1, . . . , m).
Beispiel: Fr R 4-stellig mit Tupeln (b
1
, . . . , b
k
) enthlt
3,1
(R) die 2-Tupel (b
3
, b
1
). Kon-
kret: (a, b, c, d) (c, a)
Mit Namen: Wenn (A, B, C, D) Schema von R ist, gilt
C,1
(R) =
3,1
(R).
Beispiel: (Name, Adresse, Gehalt):
Gehalt,Name
(. . .) = (5000, Fritz), (7000, Franz), . . .
5. Selektion: Auswahl von Zeilen, die Bedingungen erfllen: Die Bedingung muss als
Formel F gegeben sein, bestehend aus
a) Konstanten oder Komponentennummern (hilfsweise Namen)
b) Vergleichsoperatoren <, =, >, , ,
c) und (), oder (), nicht ()
Dann ist
F
(R) die Menge der Tupel t R, fr die F wahr ist, wenn jede Komponen-
tennummer i in F durch die i-te Komponente von t ersetzt wird.

2>3
: Tupel, bei denen 2. Komponente grer als 3. ist
Mit Konstanten:
3=10000
(R),
Vorname=Fritz
(R)
Beispiel:
6 Relationen-Algebra 20
A B C
a b c
d e f
c b d

A,C
(R)
a c
d f
c d

B=b
(R)
a b c
c b d
6.1 Join, Equi-Join, Natural-Join
Spezielle Selektion auf kartesischen Produkten
Beispiel:
R
A B C
1 2 3
4 5 6
7 8 9
S
D E
3 1
6 2
R S klar.
Sei R r-stellig, S s-stellig. Wir formulieren Selektionen solcher Tupel in R S , bei denen
die i.-Komponenten des R-Teils und die j.-Komponenten des S -Teils in bestimmten Ver-
hltnissen stehen.
Genauer: Der -join von R und S auf Spalten i und j (Notation: R S ), wobei Vergleich
(=, <, . . .) ist, ist

i(r+j)
(R S )
6 Relationen-Algebra 21
Im Falle, dass = =, spricht man von Equi-Join (statt i, j sind auch Attributnamen zuls-
sig).
Im Beispiel: Was ist R
B<D
S ?
A B C D E
1 2 3 3 1
1 2 3 6 2
7 5 6 6 2
Im Beispiel: Was ist R
B=E
S ?
A B C D E
1 2 3 6 2
Natural-Join (hier vereinfacht):
Seien die Spalten benannt und der Attributname der letzten Spalte von R identisch mit
dem der letzten Spalte von S . (Sonstige Namen verschieden.) Dann ist R S gleich

1,2,...,r+s1
(
r=(r+s)
(R S ))
In RS werden die Tupel selektiert, deren Werte in den gleich benannten Spalten (R.A, S.A)
von R und S gleich sind. Diese projezieren wir, so dass letzte Spalte (nun ja unntig) weg-
fllt.
Beispiel:
R
A B
a b
d b
m n
S
C B
f b
l n
p q
Dann ist
r=(r+s)
(R S ) = ???
Durch
A,B,C
dann R S .
Verallgemeinerung auf mehrere gleich benannte Spalten klar; ebenso auf Attributnamen,
die nicht in letzter Spalte stehen.
6 Relationen-Algebra 22
Natural-Join (Praxis):
liest(PNr, VNr) Prof (PNr, Name, Raum)
PNr kommt in beiden vor; deswegen Bildung von Tupeln in Natural-Join der Form
(p, v, n, r)mit(p, v) liest(p, n, r) Prof.
6.2 Baumform
(der Rel.-Algebra, Schlssel egal)
Gegeben seien Schemata:
Prof. (PNr, Name, Raum)
Vorles. (VNr, SWS, Titel)
hrt (MNr, VNr)
Stud. (MNr, Name, Sem.)
liest (PNr, VNr)
Wie formulieren wir: Die Dauerstudenten eines Prof. namens Sokrates?

Name

Sem. '20'

hrt
Stud.

VNr.

Name = 'Sokrates'
3.)
2.)

1.)
liest
Prof.
Erklrung der Join-Kanten im RA-Beispielbaum:
1. Join unten: J
1
mit Schema (PNr, VNr, Name, Raum). Dabei PNr, Name, Raum von
Prof.-Tupel mit Name Sokrates, VNr. von liest-Tupeln mit gleicher PNr.
Dann: Projektion auf Menge der VNr aus J
1
.
6 Relationen-Algebra 23
2. Join mitte: J
2
mit Schema (VNr, MNr). Dabei VNr aus J
1
, MNr aus hrt-Tupel mit
solcher VNr.
3. Join oben: J
3
mit Schema (VNr, MNr, Name, Sem.). Dabei VNr, MNr aus J
2
, Name,
Sem. aus Stud.-Tupel mit solcher MNr.
Selektion (20), dann Projektion auf Namen.
Freie Variable: . . .jemand. . .
Gebundene Variable: . . .er. . .
In Logik prziser:
frei: . . . x . . .
gebunden:
a) Es gibt ein x, so dass . . .
b) Fr alle x gilt, . . .
c) x . . . x . . .
Da ein Variablenname V mehrfach identisch vorkommen kann, sprechen wir auch von
freien bzw. gebundenen Vorkommen (occurrences) von v.
7 Relationen-Kalkl 24
7 Relationen-Kalkl
Vorbemerkungen zur Aussagen-/Prdikatenlogik (propositional/predicate logic)
A = B (wenn A, dann B) ist deniert als A B
Beispiel: Wenn Kln in Holland liegt, dann ist 2 + 2 = 5
x, x (es gibt x . . ., fr alle x . . .) . - Abkrzung auch x A gilt D!
Korrekt ist x (x A = P), x ((x A) P)
Falsch wre: x (x A P)
Beginn Relationen-Kalkl
(technisch allgemeiner als Prolog) Ausdrck im RK sind von der Gestalt t/(t) wobei t
Tupelvariable (fr feste Stelligkeit), bestehend aus Atomen und Operatoren.
Atome in knnen von drei Arten sein:
1. R(s) mit R Relations-Name und s Tupelvariable
Bedeutung: s ist Tupel in Relation R
Beispiel: S tud(s)
2. s[i]u[ j] mit s, u Tupelvariablen und Vergleichsoperator (d.h. <, =, , . . . usw.)
3. s[i]a (oder as[i]) wobei s[i], wie zuvor und a ist Konstante
Beispiel: x[4] =

4711

Noch ungenau: Var. ist gebunden, wenn sie in einem umfassenden Ausdruck direkt hinter
einem oder einem steht, sonst frei.
Wir denieren Formeln und die freien und gebundenen Vorkommen von Variablen in den
Formeln.
1. Jedes Atom ist Formel. Alle TV in einem Atom sind darin frei.
2. Wenn
1
und
2
Formeln sind, dann auch
1

2
,
1

2
,
1
(und/oder/nicht).
Wenn ein Vorkommen einer TV t in
1
oder
2
frei bzw. gebunden ist, ist s dies auch
in so gebildeten Formel.
3. Wenn Formel, dann auch (s)(). vorkommen von s, die in frei sind, sind in
(s)() gebunden. Andere Vorkommen von TV in frei oder gebunden sind
auch in (s)() frei bzw. gebunden. Bedeutung: Es gibt Wert f .s, so dass, wenn wir
7 Relationen-Kalkl 25
diesen Wert fr die freien Vorkommen v.s in einsetzen, die Formel wahr ist.
Beispiel: (s)(Prof (s) S tud(s)) ist Aussage. Es gilt s, dass Prof. und Stud. ist.
4. Wenn Formel, dnn auch (s)(). Bindungsregel wie in (3).
Bedeutung: Egal, welchen Wert (v. passender Stelligkeit) wir f . die freien Vorkom-
men von s in ersetzen, die Formel ist immer wahr.
Beispiel: (s)(s[4] 16): 4. Komponente immer 16.
5. Technisch: Klammern - ja nach Bedarf - sind erlaubt. Ohne Klammern wird wie folgt
zusammengefasst: zuerst "=, <, >, . . ., dann , , . . . dann , , .
6. Nichts sonst ist eine Formel.
Ein Audruck im RK hat die Gestalt t mit Formel, wobei t einzige freie TV in
ist.
7.1 Verhalten: Relationen-Kalkl - Relationen-Algebra
Satz von Codd: Beide sind quivalent.
Vereinigung: tR(t) S (t) entspricht R S (gleicher Stelligkeit).
Differenz: tR(t) S (t) entspricht R \ S (gleicher Stelligkeit).
Karthesisches Produkt: R, S seien von Stelligkeit r bzw. s. (Notation t
(i)
besage,
dass t i-stellig sei.) R S entspricht:
t
r+s
(u
(r)
)(v
(s)
)(R(u) S (v) t[1] = u[1] . . . t[r] = u[r]
. . . t[r + 1] = u[1] . . . t[r + s] = u[s])
Projektion:
i
1
,i
2
,...,i
k
(R) entspricht:
t
(k)
(u)(R(u) t[1] = u[i
1
] . . . t[k] = u[r
k
])
Selektion:
F
(R) entspricht:
tR(t) F

wobei F

aus F entsteht, indem jedes i durch t[i] ersetzt wird.


8 Die Abfragesprache SQL 26
8 Die Abfragesprache SQL
reale Version des Relationen-Kalkls
8.1 Historie
System R von IBM ab 1970, SEQUEL, SQL (Structered Query Language)
danach auch andere Anbieter (z.B. Oracle, Informix)
seit ca. 1980 SQL-Standards der ANSI (Pendant zu DIN) und ISO (International Orga-
nisation of Standardisation)
8.2 Datentypen
Character (n) bzw. CHAR(n): Zeichenkette mit n Zeichen
char varying (n) bzw. VARCHAR(n): Zeichenkette mit maximal n Zeichen
NUMERIC(p, s): Dezimalzahl mit p Stellen und davon s Nachkommstellen
INTEGER bzw. INT: wie oben, jedoch ohne Nachkommastellen festgelegter Stel-
lenzahl
FLOAT: (Systemabhngiger) Standardtyp fr Gleitkommazahlen
BLOB bzw. RAW: Binary large object, z.B. eine ganze Datei
8.3 Schemadenition
Befehl der Form create TABLE, z.B.
create TABLE Professor(
PersNr INTEGER NOT NULL,
Name VARCHAR(40) NOT NULL,
Raum CHAR(8)
);
Liste von Attributsnamen und zugehrigen Datentypen durch Kommata getrennt
NOT NULL fordert, dass diese Komponente einen Wert enthalten muss (Integritts-
bedingung)
8 Die Abfragesprache SQL 27
erzeugt Tabelle Professor
Professor:
PersNr Name Raum
8.4 Schema-nderung
1. zustzliches Attribut mit ALTER TABLE . . . add . . ., z.B.:
ALTER TABLE Professor ADD(
Rang char(2)
);
2. vorhandenes Attribut ndern mit ALTER TABLE . . . modify . . ., z.B.
ALTER TABLE Professor modify(
Name VARCHAR(50) NOT NULL
);
8.5 Einfgen von Tupeln
Eingabetupel als Folge von Attributwerten entsprechend der Schemadenition, z.B.
INSERT INTO Professor VALUES(
4711, Dsentrieb, NA 8-50, C4
);
8.6 Elementare SQL-Anfragen
Prinzip: Angabe von Attributfolgen von den Relationen, die diese Attribute enthalten und
eine Selektionsbedingung
Beispiel:
SELECT PersNr, Name FROM Professor
WHERE Rang = C4
;
Gib die Personalnummern und Namen der Professoren mit Rang C4
8 Die Abfragesprache SQL 28
Ergebnis: 1503 Hugo
4711 Dsentrieb
8810 Duck
Erzwingen einer bestimmten Sortierung der Ausgabe durch ORDER BY, z.B.
SELECT ...
FROM ...
WHERE ...
ORDER BY PersNr ASC
;
Ausgabetupel nach Personalnummer aufsteigend (asc (ascending=aufsteigend) sor-
tiert (absteigende Sortierung durch desc (descending)).
Anmerkung: Im Unterschied zum reinen Relationen-Kalkl liefert SQL auch mehrfache
identische Tupel (z.B. bei Nicht-Schlssel-Attributen). Um dies zu unterdrcken, verwen-
de SELECT DISTINCT anstatt SELECT.
8.7 Anfragen zu mehreren Relationen
(vgl. der Relationen-Algebra bzw. des Relationen-Kalkls)
Beispiel: Nehme zu Relation Vorlesung hier zustzliches Attribut gelesen von an, des-
sen Wert die Personalnummer des Dozenten enthlt. Dann ist folgende SQL-Anfrage
mglich:
SELECT Name, Titel
FROM Professor , Vorlesung
WHERE PersNr = gelesen von
AND Titel = Theorie des Stabhochsprungs
;
mgliches Ergebnis: (Mller, Theorie des Stabhochsprungs)
Prozedual bedeutet das in etwa:
1. Bilde karthesisches Produkt von 2 Relationen
2. berprfe jedes Tupel des Produkts auf die Erfllung der WHERE-Bedingung und
whle die Zeilen, die sie erfllen
3. Projeziere auf die hinter SELECT genannten Spalten
in Relationen-Algebra she das so aus:

Name,Titel
(
PersNr=gelesenvonTitel=

...
(Prof essor Vorlesung))
8 Die Abfragesprache SQL 29
Allgemeiner
SELECT A
1
, . . . , A
n
FROM R
1
, . . . , R
k
WHERE P
hat RA-Bedeutung:

A
1
,...,A
R
n
(
P
, (R
1
. . . R
k
)) (EQUI-JOIN)
Anmerkung: Wenn alle Attribute gewnscht sind, ist die Form SELECT * erlaubt.
Wenn der WHERE-Teil weggelassen wird, dann wird alles ausgelesen (selektiert).
8.8 Untersttzung natrlicher Joins
Bisher haben wir stillschweigend angenommen, dass Attributsnamen eindeutig sind. Beim
Natural Join brauchen wir aber gerade gleichnamige Attribute in 2 Relationen. Deshalb
ist die Unterscheidung R
1
.A R
2
.A sinnvoll notwendig.
Beispiel:
SELECT Name, Titel
FROM Student, hrt, Vorlesung
WHERE Student.MatrNr = hrt.MatrNr
AND hrt.VorlNr = Vorlesung.VorlNr
;
Ergebnis: Mller Mathe
Meier Physik
Schulz Trampolin
. . . . . .
Alternative Mglichkeit in SQL
lokale Namen fr Relationen vergeben
SELECT s.Name, v.Titel
FROM Student s, hrt h, Vorlesung v
WHERE s.MatrNr = h.MatrNr
AND h.VorlNr = v.VorlNr
;
beachte hnlichkeit zu Relationen-Kalkl!
8.9 Geschachtelte SQL-Anweisungen
Als Bedingung in einer WHERE-Klausel kann stehen
EXISTS (<SELECT-Answeisung >)
Das bedeutet, dass die WHERE-Bedingung dann zutrifft, wenn die innere SELECT-Anweisung
mindestens 1 Tupel liefert. (blich: Freie Variabeln im inneren SELECT
8 Die Abfragesprache SQL 30
Beispiel: Bei Professor und Studenten seien Attribute gebDatum vorhanden.
Studenten, die lter sind als der jngste Professor
SELECT s.*
FROM Student s WHERE EXISTS (
SELECT p.*
FROM Professor p
WHERE p.gebDatum > s.gebDatum
);
Wir sehen hier, dass jeweils 1 Tupel der Relation s in der WHERE-Klausel festgehalten
werden muss und fr dieses Tupel alle Tupel der Relation p durchlaufen werden mssen
(Operationale Semantik).
Manche Anfragen sind leichter ungeschachtelt zu schreiben:
Beispiel: Eine Relation Mitarbeiter habe u.a. die Attribute PersNr, GebDatum und BossNr
(= PersNr des Vorgesetzten)
Gib die Mitarbeiter, die lter als ihr Boss sind
SELECT * FROM Mitarbeiter a
WHERE EXISTS (
SELECT * FROM Mitarbeiter p
WHERE a.BossNr = p.PersNr
and a.GebDatum < p.GebDatum
);
Alternative mit join
SELECT a.*
FROM Mitarbeiter a, Mitarbeiter p
WHERE a.BossNr = p.PersNr
AND a.GebDatum < p.GebDatum
);
wre als Umformungsregel verallgemeinerbar!
8.10 Verwendung von NOT EXISTS
Bedingung ist erfllt, wenn die innere SELECT-Anweisung die leere Menge liefert. (Kein
Safety-Problem in SQL!)
Beispiel: Professoren, die keine Vorlesung halten
SELECT Name
FROM Professor
WHERE NOT EXISTS (
SELECT * FROM Vorlesung
WHERE gelesenVon = PersNr
);
8 Die Abfragesprache SQL 31
8.11 Kompliziertes SQL-Beispiel / Doppelt geschachtelt
Beispiel: Studenten, die alle 4-stndigen Vorlesungen hren
Wir konstruieren von innen nach auen:
1. Zu einem festen Studenten s und einer festen Vorlesung v liefert die folgende Anfra-
ge entweder ein oder kein Tupel, je nachdem ob s v hrt oder nicht:
S el
1
:
(SELECT * FROM hrt h
WHERE h.VorlNr = v.VorlNr
AND h. MatrNr = s.MatrNr
)
2. Zu einem festen Studenten s liefert die folgende Anfrage diejenigen Vorlesungen,
die 4-stndig sind und die s nicht hrt:
S el
2
:
(SELECT *
FROM Vorlesung v
WHERE v.SWS = 4
AND NOT EXISTS Sel_1
)
3. Die folgende Anfrage liefert diejenigen Studenten, bei denen die Abfrage S el
2
die
leere Menge liefert, sprich bei denen es keine 4-stndige Vorlesung gibt, die der
Student s nicht hrt:
SELECT *
FROM Student s
WHERE NOT EXISTS (Sel_2)
;
Anmerkung: Solche Anfragen sind im Allgemeinen langsam, da sie nicht optimiert wer-
den!
Anwendungsbeispiel dazu:
s v h
Tim 101 7
101 7
p q
8 Die Abfragesprache SQL 32
Studenten, die alle 4-stndigen Vorlesungen hren im Relationen-Kalkl.
tS tud(t) (v)(Vorl(v) (v
S WS
4) (h)(hrt(h) h
PNr
= t
MNr
h
VNr
= v
VNr
))
De Morgan fr (v)
(v)(Vorles(v) v
S WS
= 4 (h)(hrt(h) . . .)))
8.12 Division
RA:
S tud (hrt/
VNr
(
S WS =

4
(Vorles)))
8.13 Nullwerte in SQL
(Undenierte Ergebnisse)
Wenn Angabe nicht bekannt, kann trotzdemmit ihr gerechnet werden (vgl. IEEE-Arithmetik
in der technischen Informatik).
1. Arithmetische Ausdrcke werden NULL, wenn mindestens einer der Operanden
NULL ist.
NULL + 1 ist NULL, NULL 0 ist NULL, . . .
2. Vergleiche werden UNKNOWN, wenn mindestens einer der Operanden NULL ist
(logischer Wert).
3. not, and, or fr UNKNOWN
nor
T F
u u
F T
AND T u F
T T u F
u u u F
F F F F
or T u F
T T T T
u T u u
F T u F
8 Die Abfragesprache SQL 33
4. In einer WHERE-Klausel sind nur Tupel gltig, bei denen T herauskommt.
Attributwerte und Vergleichsergebnisse sind testbar auf NULL bzw. UNKNOWN.
Beispiel:
WHERE Gehalt IS NULL
8.14 nderung an Daten
INSERT fr einzelne Tupel ist bekannt (s.o) INSERT von Mengen geht ber SELECT.
INSERT INTO hrt
SELECT MNr, VNr FROM Stud, Vorl WHERE Titel = "Logik"
DELETE FROM Stud WHERE Semeser
DELETE FROM Stud WHERE Semester > 30
Attribut einzeln:
UPDATE Stud SET Semester = Semester +1
(Attributen wird durch UPDATE . . . SET neuer Wert gegeben.)
8.15 Sichten (views)
Beliebige durch SELECT gebildete Tupelungen knnen mit Namen (und neuen Attribut-
bezeichnungen) versehen werden. Sie sind dann wie Relationen verwendbar.
Sinn u.a.: Verbergen von Attributen vor bestimmten Benutzern.
Format:
create view Mitarb_nach_auen as SELECT Name, e-mail FROM
Mitarbeiter
Views auch fr Joins:
create view Prof_Vorl as SELECT Name, VNr FROM Prof, Vorl WHERE
PNr = gelesenVon
8.16 Aggregation in SQL
SELECT count (P.Name) FROM Prof.P WHERE P.Fachbereich=Mathe; //
Anzahl der Profs
SELECT count (DISTINCT P.Name) FROM Prof.P WHERE P.Fachbereich=
Mathe; //Anzahl der Namen von Profs
Entsprechend:
SUM([DISTINCT] Attrib)
8 Die Abfragesprache SQL 34
AVG([DISTINCT] Attrib)
MAX(Attrib)
MIN(Attrib)
Weitere Varianten hiervon durch grouping by-Angaben. Beispiel: Anzahlen in allen
Fachbereichen, durch eine SELECT-Anweisung.
9 QBE Query by example 35
9 QBE Query by example
SQL in Fenstern
Schema eines Fensters in QBE:
Rel.-Name Attribut-Name
1
Attribut-Name
2
Attribut-Name
3
Bedingungen und Kommandos
_Name ist Variable, Name ist Konstante
p._Name ist Ausgabe-Befehl (print) fr _Name.
Beispiel: Vorlesungen mit mehr als 3 SWS
Vorl VNr Titel SWS
p._titel >3
Condition Bxes: Vergleiche ausgelagert.
Name der Studierenden mit hherer Semester-Anzahl als Li.
Stud MNr Name Semester
Li _a
p._t _b
conditions
a<b
Verneingungszeichen in 1. Spalte fordert, dass Relation kein Tupel mit genannter Eigen-
schaft enthlt (not exist).
Beispiel: Name der Studierenden mit max. Semester-Anzahl (Es gibt niemanden mit gr-
erer Semester-Anzahl als _s).
9 QBE Query by example 36
Stud Name Semester . . .
>_s
p._n _s
Einfgen(INSERT) und Lschen (DELETE) sind hnlich.
Grobe Skizze zur Implementierung von QBE (nach Ullmann) Fr jede Zeile in jedem
Fenster einer QBE-Angabe verwende eigene Tupelvariable, die t
1
, . . . , t
k
bei k solchen
Zeilen (R
1
, . . . , R
k
seien Relationen zu diesen Zeilen.) Erzeuge geschachtelte Schleife der
Form:
for each t
1
R
1
do for each t
k
R
k
do Prfe, ob alle Bedingungen der k Zeilen mit den
Werten t
1
, . . . , t
k
erfllt sind, insbesondere Gleichheit von Werten aufgrund Gleichnamig-
keit von Variablen! Wenn ja, fge die Werte der p.-Angaben zur Ausgabe hinzu!
Fhre diese Schleife aus!
Mgliche Optimierung: Whrend der Compile-Zeit Schleife so abndern, dass inners-
te foreach-Anweisung nicht fr alle Tupel ausgefhrt werden, sonder nur fr solche, die
Aussicht auf Erfolg haben. (Ansonsten ist Ausfhrungszeit nach oben abgeschtzt (be-
schrnkt) durch n
k
, wobei n Topelanzahl der grten Relation ist.)
Beispiel: Prozedur fr ein Join-Beispiel: for each t
1
Vorlesung do for each t
2
Prof do if
t
1
.Titel = Logik AND t
1
.gelesenVon = t
2
.PNr then print (t
2
.Name);
Optimierung: In B-Baum von Vorlesung suche Logik! In B-Baum von Prof suche nach
PNr. dazu!
Beispiel fr Condition Box: for each t
1
Stud do for each t
1
Stud do if t
1
.Semester
< t
3
.Semester AND t
1
.Name = Li then print (t
2
.Name)
10 Implementierung von Abfragen 37
10 Implementierung von Abfragen
Ballung (Clustering) hnlicher Daten: Bei
SELECT * FROM R WHERE A = x
ist die (plattenmige) Nhe von allen Tupeln mit A = x von Vorteil. Da oft nicht bekannt
ist, nach welchen Attributen gesucht wird, ist der Nutzen von Ballung begrenzt. Nur bei
vorhandener Einsicht, wonach meistens gefragt wird, lsst sich Ballung vorteilhaft einset-
zen.
Skizze der Vorgehensweise:
Deklarative Anfrage
(in SQL, QBE, ...)
Parser,
Auflsung von Views
Anfrage-
Optimierer
Code-Erzeugung oder
interpretive Ausfhrung
Interner Ausdruck
(z.B. in RA)
Auswertungsplan
Auswertungsplan ist eine von oft vielen Alternativen. Auswahl erfordert Kostenmodelle,
Informationen ber aktuelle Gre der Relationen und Heuristiken ber Ntzlichkeit ge-
wisser Umformungen.
Beispiel: SQL-Anfrage der Form
SELECT Titel
from Prof, Vorles
WHERE Name = Zweistein AND PNr = gelesenVon
In graphischer RA-Notation also
10 Implementierung von Abfragen 38

Titel

Name = 'Zweistein' PNr = gelesenVon

Prof Vorles
Es sei quantitativ bekannt: 8 Professoren, 12 Vorlesungen. Also Produkt bildet 96 Tupel.
Davon whlt wenige aus, projiziert auf den Titel.
Andere Form derselben Anfrage:

Titel

PNr = gelesenVon

Prof
Vorles
PNr = gelesenVon
Quantitativ: Prfe 8 Prof.-Tupel, dann bilde 12 Produkttupel. Dann , wenige Schritte.
Schieben einer Selektion ( Sigma-Pushing) tiefer in dem Baum ist eine der wichtigsten
Optimierungen. Voraussetzung ist quivalenz von altem und neuem Ausdruck.
10.1 Regeln fr quivalente Umformungen
R
1
, R
2
, R
3
, . . . seien Relationen mit Attributmengen a
1
, a
2
, a
3
, . . .
p, q Bedingungen (in der Form
p
)
l
1
, l
2
, l
3
spezielle Attributmengen (in der Form
l
)
attrib(p) Menge der in p vorkommenden Attribute. Es gelten die Regeln (auer denen der
Aussagenlogik und der elementaren Mathematik):
1. Selektionen sind vertauschbar

p
(
q
(R)) =
q
(
p
(R))
2. Durch und verknpfte Selektionen lassen sich durch mehrere Selektionen ausdrcken:

pq
(R) =
q
(
p
(R))
10 Implementierung von Abfragen 39
3. Geschachtelte Projektionen sind krzer durch

l
1
(
l
2
(R)) =
l
1
(R)), falls l
1
l
2
4. Selektion und Projektion sind tauschbar, falls die Projektion keine Attribute der Se-
lektion entfernt.

l
(
p
(R)) =
p
(
l
(R)), falls attrib(p) l
5. Selektion kann an k.Produkt vorbeigeschoben werden, wenn sie nur Attribute des
einen Faktors verwendet

p
(R
1
R
2
) =
p
(R
1
) R
2
, falls attrib(p) a
1
(analog fr a
2
)
6. Selektionen sind mit / vertauschbar

p
(R S ) =
p
(R)
p
(S ),
p
(R S ) =
p
(R)
p
(S )
7. Selektion und kartesisches Produkt knnen zu Join zusammengefasst werden, wenn
die Selektions-Bedingung eine Join-Bedingung ist.

R
1
,A
1
R
2
,A
2
(R
1
R
2
) = R
1

R
1
,A
1
R
2
,A
2
R
2
(Beim natrlichen Join trifft dies technisch nicht zu, da es Stelligkeit verwendet)
8. Joins erlauben
R
1

p
(R
2

q
R
3
) = (R
1

p
R
2
)
q
R
3
sofern die zu prfenden Attribute in den jeweiligen Operanden vorhanden sind:
att(p) a
1
a
2
, att(q) a
2
a
3
Beispiel: Sei SQL-Anfrage
SELECT s.Semester FROM Stud s, hrt h, Vorles v, Prof p
WHERE p.Name = Li AND
v.gelesenVon = p.PNr and
v.VNr = h.VNr and
h.MNr = s.MNr;
Graphisch:
10 Implementierung von Abfragen 40

s.Semester

p.Name = 'Li' ...


v
p
h
s
v

Dann ersetzen wir (Regel 7) Operationsfolgen


Bed.
(AB) jeweils durch Ausdruck A
Bed.
B
v
s
v.VNr = h.VNr p.Name = 'Li'
p

s.MNr = h.MNr
h

s.Semester
p.PNr = v.gelesenVon

Fr diese Joins lsst sich dann noch Regel 8 nutzen. Man whlt (heuristisch) diejenige
mgliche Join-Operation als erste, deren Ergebnis vermutlich am kleinsten ist.
Daten ber Relations-Gren (und weiteres) sind ntig. Produkt s h htte an RUB 10
9
Tupel, der Join
s.MNr=h.MNr
ca. 10
5
Eintrge. Hingegen: Wenn Li eindeutig ist, liefert

p.PNr=v.gelesenVon
nur so viele Tupel wie ein Professor an Vorlesungen hlt.
Gnstiger ist folgender RA-Ausdruck:
p.PNr = v.gelesenVon
v
s
v.VNr = h.VNr
p.Name = 'Li'
p

s.Semester
s.MNr = h.MNr

10 Implementierung von Abfragen 41


Zusammenfassung:
Aufbrechen von Selektionen werden zu Einzelselektionen
Verschiebung der Selektionen nach unten (-Pushing)
Bildung von Joins statt karthesischem Produkt mit folgender Selektion, soweit mg-
lich
gnstige Wahl der Reihenfolge von Joins im Falle von (R
1

p
R
2
)
q
R
3
Weiterer Schritt: Idee der Index-Joins (physische Optimierung)
Naiver Weise muss bei Join-Bildung R
A=B
S zu jedem Tupel R jedes Tupel S betrach-
tet werden, also sind #R und #S Schritte ntig. Wenn jedoch Datenstruktur vorhanden, die
gestattet, bei Vergabe eines Attributwertes die Tupel mit diesem Wert schnell zu nden
(Index, z.B. ISAM, B-Baum), dann ist Equi-Join schneller.
Methode NimmTupel t von R. Suche (ber Index) nach Tupel t

von S , dessen B-Komponente


gleich der A-Komponente von t! Falls vorhanden, verknpfe t, t

! Betrachte weitere solcher


Tupel von S ! Wiederhole so lange noch Tupel in R vorhanden!
10.2 B-Baum fr Attributsortierung
Grak:
A
8
7
0
7
10
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
B
5
6
7
7
11
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
B-Baum
Dadurch zur O(#R log
k
(#S )) Schritte. Prinzipiell mgliche, dass fr alle Attribute eigene
Indizes bestehen (Einzeltupel statt mehrerer B-Bume).
Tupel-Referenz t
i
: t
1
(Fritz,21,. . .), t
2
(Franz,23,. . .), t
3
(Frieda,22,. . .), t
4
(Ernst,28,. . .)
Baum f.Name
Baum f.Alter
t
4
t
2
t
3
t
1
... ... ...
t
1
t
3
t
2
t
4
... ... ...
(...)
(...)
10 Implementierung von Abfragen 42
Entscheidungen, zu welchen Attributen Indizes anzulegen sind, ist Platzfrage und Zeitfra-
ge, weil Tupel jeweils in allen Indizes eingehngt werden mssen, etc.
Kostenmodelle: Wichtigste Kosten sind Hintergrundzugriffe.
Def.: Selektivitt einer Selektion mit Bedingung p auf R:
sel
p,R


p
(R)
R
Einfache Abschtzungen: Wenn A Schlssel-Attribut, dann ist
sel
R.A=c

1
R
,
Bei Gleichverteilung mit i verschiedenen Werten ist
sel
R.A=c

1
i
(aber: Zipf s.u.)
Fr vorgegebene
Ac
(R) mit A Attribut, c Konstante, Vergleich (<,>,=,. . .) seien die Kos-
ten von zu bestimmen. Wenn fr R.A ein B-Baum existiert und Eintrge gem diesem
geballt (clustered) sind, dann kostet diese Selektion t +(sel
Ac,R
(R) b
R
) Hintergrundzugriffe,
wobei t Tiefe des Baums (oft 3) und b
v
Anzahl der Blcke (pages) fr die Relation R.
Grund: t fr Abstieg in B-Baum, danach so viele weitere Blcke wie dem Anteil der selek-
tierten Tupel an der Relation entspricht.
Zipf-Verteilung: Empirisch gilt, dass die Selektivitt

A=c
i
(R)
R
des i-hugsten Attributwertes c
i
etwa nach der Zipf-Verteilung
1

i
abnimmt.
11 Entwurfstheorie fr relationale DB-Systeme 43
11 Entwurfstheorie fr relationale
DB-Systeme
Motivierendes Beispiel: Betrachte Schema LA (lieferbare Artikel) in Kaufhaus: LA(Artikel, Preis, LName, LAdresse)
Dabei gelte, dass LName des Attributs LAdresse eindeutig bestimmt.
Alternativ sind zwei Schemata LA

(Artikel, Preis, LName) und L(LName, LAdresse) vorstell-


bar. Dann lsst sich LA als LA

L zurckgewinnen.
Ziel des Kapitels: Errterung solcher Alternativen mit dem Ziel qualitativ optimaler Sche-
mata. Sei R(A
1
, . . . , A
n
) ein Relationen-Schema. X,Y seien Untermengen von A
1
, . . . , A
n
.
Wir sagen X Y (X bestimmt Y funktional), wenn jede konkrete Relation r mit dem
Schema R folgende Eigenschaf hat:
Es kommt nicht vor, dass zwei Tupel in v gleiche Werte fr alle Attribute in X, aber
unterschiedliche Werte fr ein oder mehrere in Y haben.
Schreibweise: A
1
, . . . , A
n
abgekrzt fr A
1
, . . . , A
n
; XY abgekrzt A.X Y bei Mengen von
Attributen. Wir nennen die Beziehung X Y auch funktionale Abhngigkeit (funktional
dependency, FD).
Kommentar zum FD-Begriff: Eine FD X Y stellt in der Praxis eine Bedingung fr die
Gltigkeit einer Ausprgung dar. Nur solche Ausprgungen (interne) V von R sind gltig,
in denen diese Einschrnkung durchweg gilt.
Sie kann natrlicher, juristischer oder sonstiger Art sein:
a) Jede Person hat nur 1 Geburtsdatum
b) Jeder Professor hat nur 1 Besoldungsgruppe
Sicht beinhaltet, dass uflligebhngigkeiten unbercksichtigt bleiben.
z.B.: Firma ( mit < 367 Mitarbeitern) kann Eigenschaft erfllen, dass alle unterschiedl.
Geburtstag haben. Eine FD GebTag Person ist nicht sinnvoll.
Einfache Eigenschaften: Wenn A B, B C FD in Schema R(A, B, C), dann ist auch
A C eine FD in R.
(Simpler) Beweis: Wir nehmen an, A B, B C seien FD, die zwei Tupel t
1
, t
2
seien
identisch in A, verschieden in C. Wenn sie in B verschieden sind, dann zu A B; Wenn
sie in B gleich sind, dann zu B C . Sei F eine Menge von FD fr R und X, Y Attribut
mengen. F impliziert X Y (F = X Y), wenn jede Relationer r, die alle FD aus F
11 Entwurfstheorie fr relationale DB-Systeme 44
erfllt, auch X Y erfllt.
Beispiel: A B, B C = A C (s.o.). Wie schreiben F
+
(Abschluss von F) fr die
Menge X Y (F = X Y).
Beispiel: Sei R = ABC und F = A B, B C. Zu F
+
gehren: ABC BC, AB BC,
A C, BC B, B C, ABC BC, B , C C, . . . Nicht dazu gerhrt B A.
Beispiel:
11.1 Schlssel-Begriff (im Rahmen von FD)
Sei R Schema in A
1
, . . . , A
n
und FD-Menge F, X A
1
, . . . , A
n
: Dann ist X Schlssel von R,
wenn:
1. X A
1
, . . . A
n
F
+
(Abhngigkeit aller Attribute von X)
2. Es gibt kein Y X mit Y A
1
, . . . A
n
F
+
(Minimalitt) . . . R kann mehrere Schlssel haben. Meist nennt man einen den Primrschlssel,
die anderen Kandidatenschlssel. Obermengen von Schlsseln nennt man auch Super-
schlssel (Im obigen Beispiel ist A Schlssel, AC Superschlssel).
Beispiel: (idealisierte) PLZ:
Stadt, Str. PLZ
PLZ Stadt
PLZ und Stadt seien die FD in R
(Praxis: Uni-Str. Bochum hat 44789, 44799, 44801; Uni selbst 44780)
Dann sind Stadt, Str. oder Str., PLZ Schlssel von R.
11.2 Regeln fr F
+
: Armstrongs Axiome
Wir setzen universelle Attributmenge U voraus. Dann gelten folgende Regeln fr FD-
Menge F
+
A
1
(Reexivitt): Falls Y X U, dann ist X Y in F
+
A
2
(Augmentierung): Falls X Y F
+
und Z U, dann XZ YZ F
+
A
3
(Transitivitt): Wenn X Y und Y Z F
+
, dann auch X Z.
Aus A
1
. . . A
3
folgen weitere Regeln.
Bei R(XYZ . . .) gilt: FD = Y Z = XY Z. Folgt das aus A
1
. . . A
3
?
Y Z = XY XZ (A
2
)
= X (A
3
)
= XZ Z (A
2
)
11 Entwurfstheorie fr relationale DB-Systeme 45
= XY Z (A
3
)
a) Vereinigung X Y, X Z = X YZ
b) Quasi-Transitivitt X Y, WY Z = XW Z
c) Zerlegung: gilt X Y und Z Y, dann auch X Z.
Berechnung des Abschlusses X
+
aus FD-Menge F und Attributmenge X U (endlich).
X
+
(Abschluss von X) ist Attributmenge A, so dass X A aus F folgt.
Iteriere wie folgt: X
(0)
ist X
X
(i+1)
ist X
(i)
A Es gibt Y Y F mit Y X
(i)
, A Z
Da X = X
(0)
. . . X
(i)
. . . U mit U endlich, bringt X
(i+1)
irgendwann nichts Neues mehr.
Dann X
(i)
= X
+
.
Beispiel:
Es gelte X = BD und FD = AB C, C A, BC D, ACD B, D EG, BE C, CG
BD, CE AG.
X
(0)
= BD
X
(1)
= BDEG wegen D EG
X
(2)
= BCDEG wegen BE C
X
(3)
= ABCDEG wegen CE AG, damit ist BD Schlssel
Weitere Begriffe: F, G seien FD-Mengen. F, G heien quivalent, wenn F
+
= G
+
. Wir sa-
gen auch F berdeckt G (und umgekehrt).
F heit minimal, wenn gilt:
1. Jede rechte Seite einer FD in F ist einzelnes Attribut.
2. Kein X A in F ist entbehrlich (D.h. fr kein X A ist F quivalent zu F \ X A.)
3. Fr kein X A in F und Z X ist (F \ X A) Z A quivalent zu F
Beispiel: Wie Zuvor: X = B, D, gesucht: X
+
Verkettung der Einzelbuchstaben:
11 Entwurfstheorie fr relationale DB-Systeme 46
Z
A
C
B
ACD
D
B
C
C
1
1
2
3
1
2
2
2
B
C
E
G
E
C
A
D
B
EG
C
BD
AG
1
2
3
4
5
6
7
8
r
X
+
efziente Datenstruktur der FD (functional dependency):
Alle Vorkommen von Attribut A auf linker Seite sind verkettet. Listenkpfe enthalten Mar-
kierung m[a]. Regeln r enthalten Zhler Z[r] der noch nicht betrachteten Attribute auf
linker Seite.
fr alle A X tue
m [A ] = true
Fge A in Schlange Q
solange Q tue
Nimm ein Attribut A Q
fr alle Vorkommen von A in Regeln r (gem Liste) tue
Z [r ] Z [r ] - 1
wenn Z [ r ] == 0 dann
fr alle Attribute B auf rechter Seite von r tue
wenn m [ B ] == false dann
m [B ] == true
Q.Einfgen(B)
Lauf:
2
1
2
3
1
2
2
2
1
2
3
4
5
6
7
8
1
0
1
2
0
1
1
1
0

0
0
0
Schlange + Markierung
BDEGCA
F heit minimal, wenn:
1. X A F A Attribut
11 Entwurfstheorie fr relationale DB-Systeme 47
2. Kein X A ist entbehrlich
3. Fr kein X A und Z X gengt Z A schon. Satz: Jede FD-Menge F ist
quivalent zu einer minimalen F

.
Idee: Nach Zerlegungsregel bilde alle X A fr X Y und A Y!
Rauswurf von Regeln und Krzung linker Seiten fhrt zu 2. und 3.
11.3 Verlustlosigkeit von Zerlegungen
Zu drei Schemata R, R
1
, R
2
seien a, a
1
, a
2
die Attribut-Mengen. Wenn gilt a = a
1
a
2
, nennen
wir (R
1
, R
2
) Zerlegung von R. (Meist a
1
a
2
)
Fr Ausprgungen r von R denieren wir Projektionen: r
1

a
1
(r), r
2

a
2
(r)
Wenn fr alle Ausprgungen r von R gilt, dass r = r
1
r
2
, dann heit die Zerlegung
verlustlos.
Sinn: Alle r sollen rekonstruierbar sein durch ihrer Projektion.
Beispiel: Nicht verlustlose Zerlegung. Schemata: Einkauf, La_Ku, Ku_Wa mit Attributmen-
gen a
1
= Laden, Kunde, a
2
= Kunde, Ware, a = Laden, Kunde, Ware.
(La_Ku, Ku_Wa) ist Zerlegung von Einkauf. Konkrete Ausprgung r.
Laden Kunde Ware
Kaufhof Hans Schuhe
Kaufhof Lotte Brot
Bckerei Hans Brot
La _Ku
Kaufhof Hans
Kaufhof Lotte
Bckerei Hans
Ku _Wa
Hans Schuhe
Lotte Brot
Hans Brot
Aber v
1
v
2
v, deshalb nicht verlustlos. In v
1
v
2
ist auch (Kauf hof , Hans, Brot),
(Bckerei, Hans, S chuhe) beide falsch.
Hinreichendes Kriterium fr Verlustlosigkeit: Sei (R
1
, R
2
) Zerlegung von R, wobei eine FD-
Menge F
R
existiert.
Wenn entweder (a
1
a
2
) F
+
R
oder (a
1
a
2
) a
2
F
+
R
, dann ist (R
1
, R
2
) verlustlos. Andere
Formulierung: Bei Vorgabe von F
R
muss entweder a
1
(a
1
a
2
)
+
oder a
2
(a
1
a
2
)
+
gelten.
Im Beispiel: Weder Kunde Laden noch Kunde Ware.
Positive Beispiele:
Lie f er(Artikel, LName, LAdresse)
AL(Artikel, LName)
LL(LName, LAdresse)
Wenn gilt LName LAdresse, ist (AL, LL) eine verlustlose Zerlegung von Lie f er.
Eltern(Vater, Mutter, Kind)
VK(Vater, Kind)
11 Entwurfstheorie fr relationale DB-Systeme 48
MK(Mutter, Kind)
Da Kind Vater (und Kind Mutter), ist (VK, MK) verlustlos. (Allerdings: Wenn
beide funktionale Abhngigkeit a
1
, a
2
, bringt Zerlegung keinen Platzgewinn).
Vorles(Prof , VTitel, S WS )
PV(Pro f , VTitel)
VS (VTitel, S WS )
Wenn gilt: VTitel S WS , ist (PV, VS ) verlustlos.
11.4 Bewahrung von Abhngigkeiten (Preservation of
Dependency) (Hllentreue)
Sei R zerlegt in (R
1
, R
2
) mit Attributen a
1
, a
2
. Weiter sei FD-Menge F
R
vorhanden.
Wir denieren: F
R
1
(analog F
R
2
) als Teilmenge von F
+
R
:
F
R
1
(X Y) F
+
R
X Y a
1

Wir nennen (R
1
, R
2
) hllentreu, wenn gilt:
F
+
R
= (F
R
1
F
R
2
)
+
11.5 Verlustlos ohne FDs
Zerlegung von Kenntnis(PNr, S prache, ProgS pr) in Schemata (PNr, S prache) und (PNr, ProgS pr)
PNr Sprache ProgSpr
4711 Latein C
4711 Englisch C
4711 Latein Java
4711 Latein Java
4712 Deutsch Perl

a
1

a
2

(4711, Latein) (4711, C)
(4711, Englisch) (4711, Java)
. . . . . .
(4712, Deutsch) (4712, Perl)
11 Entwurfstheorie fr relationale DB-Systeme 49
Aber: Mehrwertige Abngigkeit ist vorhanden.
F
R
1
= (X Y) F
+
R
X Y a
1
, . . .
Hllentreu:
F
+
R
= (F
R
1
F
R
2
)
Beispiel einer zwar verlustlosen, aber nicht hllentreuen Zerlegung.
Schema: Adresse(S tr., Ort, Land, PLZ). Es gelte die FD-Menge (idealisiert):
f d
1
: PLZ Ort Land
f d
2
: S tr. Ort Land PLZ
Zerlegung (R
1
, R
2
) = ((PLZ, S tr.), (PLZ, Ort, Land)) Wegen f d
1
ist sie verlustlos. Aber f d
2

F
R
1
F
R
2
, da Attribute von f d
2
mehr in a
1
noch in a
2
allein enthalten. Nicht hllenlos.
Ausprgung:
Ort Land Str. PLZ
Frankfurt He Goethestr. 60313
Frankfurt He Zum Bergwerk 60437
Frankfurt Br Goethestr. 15234
Projektion auf R
1
, R
2
klar Problem: Die f d
2
kann in den Projektkionen unbemerkt verletzt
werden, da f d
2
weder in R
1
noch in R
2
prfbar ist.
Verletzt: funktioniert bei Join-Bildung nicht (Hier wegen f d
2
)
Neues Tupel (12345, Goethestr.) in R
1
und (Frankfurt, Br, 12345) in R
2
wren nicht (bzw.
ist nach Join) als Verletzung von f d
2
erkennbar. Zu gegeb. Str., Ort, Land gbe es zwei
PLZ.
12 Relationale Normalformen 50
12 Relationale Normalformen
1. Normalform: Alle Attributwerte elemntar: Kein Tupel (Fritz, 21, S port, Musik)
Anmerkung: In jngerer Zeit auch geschachtelte Relationen diskutiert (bei OODMS).
2. Normalform: Verbreitete Def.: Wir sagen, sei voll funktional abhngig von ( No-
tation ), wenn gilt:
a)
b) ist minimal ( \ A fr alle A )
Informell: Schema R mit FD-Menge F
R
ist in 2. NF wenn jedem Nichtschlsselele-
ment A a voll funktional abhngig in jedem Schlssel von R.
Formell: Die Schlssel in R seien die Attribut-Mengen k
1
, . . . , k
i
. Sei K
1
. . .
i
Wir nennen A K prim, A K nichtprim. 2. NF bedeutet dass

j
.
A fr alle Schlssel
j
und alle nicht primen A
Beispiel einer Verletzung der 2. NF: Rel. Name_und_Belegung
MNr VNr Name
123 201 Mickey
503 201 Mickey
503 203 Mickey
870 311 Goofy
870 370 Goofy
Schlssel ist MNr, VNr. Name hngt nicht voll funktional von ihm ab, da ja schon
MNr Name. Lsung: Verlustlos zerlegen in hrt(MNr, VNr) und Stud(MNr, Na-
me). Dann gilt 2. NF.
Sinn der Zerlegung: Name ist in hrt unntig.
3. Normalform: R mit Attribut-Menge A ist in 3. NF, wenn fr alle FD A B mit A,
B A gilt, dass
a) B A oder
b) A ist Superschlssel von R oder
c) B ist prim
12 Relationale Normalformen 51
Wir skizzieren: Wie zu Schema R eine verlustlose, hllenlose Zerlegung (R
1
, . . . , R
n
)
gebildet werden kann, so dass alle R
i
auerdem in 3. NF sind (1 i n).
Zu R und FD-Menge F
R
sei bereits eine kanonische berdeckung F
c
vorhanden.
F
c
heit kanonische berdeckung von F
R
, wenn gilt:
a) F
+
c
= F
+
R
b) Alle linken Seiten kommen nur in einer FD ( ) F
c
vor. (Durch
statt , )
c) In F
c
gilt in keiner FD mit berssigen Attributen in oder . D.h. fr
alle A ist (F
c
\ ( ) (( \ A) ))
+
F
+
c
Fr alle R in ist (F
c
\ ( )
( ( \ B)))
+
F
c

You might also like