29
Einf¨ uhrung in Datenbanken (DBS1) Andreas Blunk arz 2006, Berlin Der vorliegende Text ist eine Zusammenfassung der wichtigsten Themen aus der Vor- lesung Einf¨ uhrung in Datenbanken (DBS1) im M¨ arz 2006. Ich habe die Zusam- menfassung zur Pr¨ ufungsvorbereitung benutzt und nach der Klausur den Abschnitt Pr¨ ufungsfragen erg¨ anzt. Dieser enth¨ alt alle Fragen aus der Klausur, die ich mir noch merken konnte. Diese Fragen k¨ onnen wirklich so gestellt werden. Inhaltsverzeichnis 1. Das Relationale Modell 3 1.1. Strukturelle Definitionen ............................ 3 2. Entwurf relationaler Datenbanken 5 2.1. Funktionale Abh¨ angigkeiten (FD) ....................... 5 2.1.1. Logische Folgerbarkeit ......................... 5 2.1.2. Die H¨ ulle ................................ 5 2.1.3. Formale Definition des Schl¨ ussels ................... 6 2.1.4. Armstrong-Kalk¨ ul ........................... 6 2.2. Normalisierung ................................. 7 3. Relationale Anfragesprachen 8 3.1. Operationen der Relationalen Algebra .................... 8 3.1.1. Grundoperationen ........................... 8 3.1.2. Weitere Operationen .......................... 8 3.2. Logik als Anfragesprache - der Relationenkalk¨ ul ............... 9 3.2.1. Well-Formed-Formula (WFF) ..................... 9 3.2.2. Interpretation von WFFs ....................... 9 3.2.3. Abbildung von WFF auf Wahrheitswerte W ............. 9 3.2.4. Das Dom¨ anenkalk¨ ul .......................... 9 3.2.5. RA nach DRC (am Beispiel) ..................... 10 3.2.6. Beschr¨ ankte Variablen in WFFs ................... 10 3.2.7. Sichere (safe) DRC-Formeln ...................... 10 1

Einfuhrung in Datenbanken (DBS1)blunk/pdf/dbs1_blunk.pdf · Einfuhrung in Datenbanken (DBS1) Andreas Blunk M arz 2006, Berlin Der vorliegende Text ist eine Zusammenfassung der wichtigsten

Embed Size (px)

Citation preview

Einfuhrung in Datenbanken (DBS1)

Andreas Blunk

Marz 2006, Berlin

Der vorliegende Text ist eine Zusammenfassung der wichtigsten Themen aus der Vor-lesung Einfuhrung in Datenbanken (DBS1) im Marz 2006. Ich habe die Zusam-menfassung zur Prufungsvorbereitung benutzt und nach der Klausur den AbschnittPrufungsfragen erganzt. Dieser enthalt alle Fragen aus der Klausur, die ich mir nochmerken konnte. Diese Fragen konnen wirklich so gestellt werden.

Inhaltsverzeichnis

1. Das Relationale Modell 31.1. Strukturelle Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Entwurf relationaler Datenbanken 52.1. Funktionale Abhangigkeiten (FD) . . . . . . . . . . . . . . . . . . . . . . . 5

2.1.1. Logische Folgerbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2. Die Hulle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.3. Formale Definition des Schlussels . . . . . . . . . . . . . . . . . . . 62.1.4. Armstrong-Kalkul . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2. Normalisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3. Relationale Anfragesprachen 83.1. Operationen der Relationalen Algebra . . . . . . . . . . . . . . . . . . . . 8

3.1.1. Grundoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.1.2. Weitere Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . 8

3.2. Logik als Anfragesprache - der Relationenkalkul . . . . . . . . . . . . . . . 93.2.1. Well-Formed-Formula (WFF) . . . . . . . . . . . . . . . . . . . . . 93.2.2. Interpretation von WFFs . . . . . . . . . . . . . . . . . . . . . . . 93.2.3. Abbildung von WFF auf Wahrheitswerte W . . . . . . . . . . . . . 93.2.4. Das Domanenkalkul . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.5. RA nach DRC (am Beispiel) . . . . . . . . . . . . . . . . . . . . . 103.2.6. Beschrankte Variablen in WFFs . . . . . . . . . . . . . . . . . . . 103.2.7. Sichere (safe) DRC-Formeln . . . . . . . . . . . . . . . . . . . . . . 10

1

Inhaltsverzeichnis

4. Anfragebearbeitung 114.1. Gesetze zur Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4.1.1. Joins und Produkte . . . . . . . . . . . . . . . . . . . . . . . . . . 114.1.2. Projektion und Selektion . . . . . . . . . . . . . . . . . . . . . . . 114.1.3. Selektion und Join . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.1.4. Selektion und Vereinigung / Differenz . . . . . . . . . . . . . . . . 124.1.5. Projektion und Join . . . . . . . . . . . . . . . . . . . . . . . . . . 124.1.6. Projektion und Vereinigung . . . . . . . . . . . . . . . . . . . . . . 124.1.7. Selektion und Produkt . . . . . . . . . . . . . . . . . . . . . . . . . 124.1.8. Umschreiben eines Produktes . . . . . . . . . . . . . . . . . . . . . 13

4.2. Beispiel fur eine Optimierung . . . . . . . . . . . . . . . . . . . . . . . . . 134.3. Nested-Loop-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

5. Speicherstrukturen 145.1. B-Baum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.2. B*-Baum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6. Transaktionskonzept 156.1. 2-Phasen-Sperrprotokoll (2PL) . . . . . . . . . . . . . . . . . . . . . . . . 156.2. Fehlererholung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

7. XML 177.1. DTD fur ein Adressbuch . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177.2. Die Verwendung von ID und IDREF . . . . . . . . . . . . . . . . . . . . . 17

A. Algorithmen 19A.1. Die Hulle (bezuglich einer Attributmenge) . . . . . . . . . . . . . . . . . . 19A.2. Schlusselkandidaten bestimmen . . . . . . . . . . . . . . . . . . . . . . . . 19A.3. Basis bzw. minimale Uberdeckung . . . . . . . . . . . . . . . . . . . . . . 21A.4. Lossless-Join-Zerlegung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22A.5. Dekomposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24A.6. Synthese . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

B. Prufungsfragen 25B.1. ER-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25B.2. Funktionale Abhangigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . 26B.3. Relationale Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26B.4. SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27B.5. B-Baum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27B.6. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28B.7. Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2

1. Das Relationale Modell

1. Das Relationale Modell

1.1. Strukturelle Definitionen

Die Domane ist der Wertebereich einer Relation. Man unterscheidet: intensionale (In-teger, Real, String) und extensionale (explizite Auflistung der Werte, z.B. Farbe = rot,grun, blau) Domanen.

Eine Relation ist eine Teilmenge des Kreuzproduktes von Domanen, d.h.

R ⊆ D1 ×D2 × . . .×Dn

Ein Element einer Relation wird als Tupel bezeichnet.

Beispiel:

• Domane D1 = { rot, grun, blau, gelb }• Domane D2 = { VW, Opel, Mercedes }• Relation R1 = { (VW,grun), (Opel,rot) }• ein Tupel von R1 ist (VW,grun)

Die sog. ”Spalten“ einer Relation werden als Attribute bezeichnet. Diese mussen in-nerhalb einer Relation eindeutig sein. Beispiel: Farbe, Autotyp

Eine Relation ist definiert durch ein Relationenschema

R(A1 : D1, . . . , An : Dn)

bestehend aus dem Relationennamen R, den Attributnamen Ai undden Domanennamen Di.

Die Extension einer Relation ist die Menge der momentanen Instanzen. Sie mussdem Relationenschema genugen und kann sich durch Operationen (Einfugen, Loschen)andern.

Beispiel:

• Domane ID Typ = { rot, grun, blau, gelb }• Domane Farbpalette = { rot, grun, blau, gelb }• Domane Autotypen = { VW, Opel, Mercedes }• Relationenschema

Auto(ID : ID Typ, Farbe : Farbpalette, Typ : Autotyp)

3

1. Das Relationale Modell

Ein Datenbankschema ist die Menge aller Relationenschemata.

Eine Relationale Datenbank ist ein Datenbankschema und alle Extensionen der zu-gehorigen Relationen.

Jedes Tupel kann als Abbildung

µ : {A1, . . . , An} → D1 ∪ . . . ∪Dn

aufgefasst werden mitµ(Ai)→ d ∈ Di

Beispiel:

• µ1 = (007, grun, Mercedes) ∈ R• µ1(ID) = 007

Sei S ⊆ {A1, . . . , An} Teilmenge des Relationenschemas R. Verallgemeinert man den Ab-bildungsgedanken fur Tupel, so bezeichnet µ[S] die Werte des Tupels µ in den AttributenAk ∈ S.

Beispiel: µ1[ID,Typ] = (007, Mercedes)

Ein Schlusselkandidat (bzw. Schlussel) von R ist jede Teilemenge K ⊆ {A1, . . . , An}der Attributmenge von R mit:

• Eindeutigkeit:Fur je zwei Tupel µ1, µ2 gilt: µ1 6= µ2 ⇒ µ1[K] 6= µ2[K]

• Minimalitat:Es gibt kein K ′ ⊂ K, das diese Eigenschaft besitzt.

Der Primarschlussel ist ein ausgezeichneter Schlusselkandidat (Entwurfsentscheidung).

Ein Superschlussel ist eine Teilmenge S ⊆ {A1, . . . , An} der Attributmenge von R,die einen Schlusselkandidaten K enthalt, d.h. K ⊆ S (jeder Schlusselkandidat ist auchSuperschlussel).

Ein Fremdschlussel ist wie folgt definiert:

• Seien R(A1, . . . , An) und S(B1, . . . , Bn) zwei Relationenschemata.

• Sei F ⊆ {B1, . . . , Bn} ein Schlusselkandidat fur S.

• Ist F ⊆ {A1, . . . , An}, so heißt F Fremdschlussel von S in R.

4

2. Entwurf relationaler Datenbanken

2. Entwurf relationaler Datenbanken

Wie konnen relationale DB-Schemata ohne Datenredundanz entworfen werden? WelcheDatenabhangigkeiten konnen auftreten?

2.1. Funktionale Abhangigkeiten (FD)

Sei R(A1, . . . , An) ein Relationenschema.

Sei X,Y ⊆ {A1, . . . , An}.

Y ist genau dann funktional abhangig von X

(X → Y )

wenn fur alle µ1, µ2 in der Extension von R gilt:

µ1[X] = µ2[X]⇒ µ1[Y ] = µ2[Y ]

Funktionale Abhangigkeiten sind Aussagen uber die Semantik der Daten (Meta- Infor-mationen), die aus der Anwendungswelt abgeleitet sind. Sie sind nicht beweisbar undnicht aus einer aktuellen Extension ableitbar.

Aber: Funktionale Abhangigkeiten schranken die moglichen Instanzen in einer Extensionein!

Hinweise:

• (X → Y ) wird auch als X dominiert Y gelesen

• (XY → ZW ) ist gleichbedeutend mit (XY → Z) und (XY →W )

2.1.1. Logische Folgerbarkeit

Sei F eine Menge von funktionalen Abhangigkeiten uber R.

Eine FD (X → Y ) folgt logisch aus F

F |= X → Y

wenn fur jede Instanz r der Extension von R gilt

r erfullt alle FDs f ∈ F ⇒ r erfullt X → Y

2.1.2. Die Hulle

Die Hulle von F ist definiert durch

F+ := {X → Y | F |= X → Y }

Lemma: F |= X → Y ⇔ X → Y ∈ F+

5

2. Entwurf relationaler Datenbanken

2.1.3. Formale Definition des Schlussels

Sei R(A1, . . . , An) ein Relationenschema und F eine Menge von FDs uber R.

• X ⊆ {A1, . . . , An} heißt Superschlussel, wenn gilt X → {A1, . . . , An} ∈ F+

• X heißt Schlusselkandidat, wenn X minimal mit der genannten Eigeschaft ist(also keine echte Teilmenge X ′ ⊂ X diese Eigenschaft erfullt).

2.1.4. Armstrong-Kalkul

Deduktionsregeln (Herleitungsregeln) dienen der Ableitung neuer FDs aus bereitsbekannten.

• Vollstandig, wenn alle logisch folgerbaren FDs auch hergeleitet werden konnen.

• Korrekt, wenn nur logisch folgerbare FDs hergeleitet werden konnen und keinefalschen FDs.

Das Armstrong-Kalkul ist ein logisches Kalkul und besteht aus

• einer Menge von Axiomen AX

• einem Herleitungsbegriff `, beschrieben durch eine Menge von Deduktionsregeln

Die konkreten Axiome und Deduktionsregeln des Armstrong-Kalkul fehlen hier.

Lemma: F ` X → Y ⇔ Y ⊆ X+F

6

2. Entwurf relationaler Datenbanken

2.2. Normalisierung

Eine Relation ist in 1. Normalform, wenn alle Attribute atomare Wertebereiche haben.Das heißt zusammengesetzte, mengenwertige oder geschachtelte Wertebereiche sind nichterlaubt.

Eine Relation ist in 2. Normalform, wenn alle Nichtschlusselattribute voll funktio-nal von jedem Schlusselkandidaten abhangen. Das bedeutet sie durfen nicht von einerTeilmenge eines Schlusselkandidaten abhangen, sondern nur vom ganzen Schlusselkan-didaten.

Eine Relation ist in 3. Normalform, wenn fur alle FD X → A mit A /∈ X gilt:A ist Schlusselattribut oder X ist ein Superschlussel fur A.

Diese Definition fur die 3. Normalform wurde direkt aus den Vorlesungsfolien entnom-men, da es teils widerspruchliche Definitionen in der externen Literatur und den Prak-tikumsfolien gab. Die obige Definition sollte also die korrekte sein.

Eine Relation ist in Boyce-Codd-Normalform, wenn alle Attribute nur direkt voneinem (oder mehreren) Schlusselkandidaten abhangen.

7

3. Relationale Anfragesprachen

3. Relationale Anfragesprachen

3.1. Operationen der Relationalen Algebra

3.1.1. Grundoperationen

• Vereinigung

• Differenz

• Kartesisches Produkt

• Projektion

• Selektion

3.1.2. Weitere Operationen

• Durchschnitt

• Division (Simulation des All-Quantor)

• Join (mit Condition)

• Natural-Join

• Semi-Join

8

3. Relationale Anfragesprachen

3.2. Logik als Anfragesprache - der Relationenkalkul

3.2.1. Well-Formed-Formula (WFF)

• jede atomare Formel

• wenn F1 und F2 WFFs sind, dann auch F1 ∧ F2 und F1 ∨ F2

• wenn F eine WFF ist, dann auch (F ) und ¬F

• wenn F eine WFF ist und x ∈ FV (F ), dann auch ∃x(F ) und ∀x(F )

F heißt geschlossen, wenn FV (F ) = ∅. Sonst heißt F offen.

3.2.2. Interpretation von WFFs

• Pradikate p = Relationen mit Namen P

• Konstanten sind Werte der jeweiligen Domane

• θ sind ausfuhrbare arithmetische Vergleiche (wie op)

3.2.3. Abbildung von WFF auf Wahrheitswerte W

W : WFF⇒ {true, false}Definition:

• W (p(c1, . . . , cn)) := true, wenn (c1, . . . , cn) ∈ p, sonst false

• W (c op d) := ”Ergebnis des Vergleichs“ mit op ∈ {=, 6=,≥, >,≤, <}

• W (F1 ∧ F2) = W (F1) ∧W (F2)

• W (F1 ∨ F2) = W (F1) ∨W (F2)

• W (¬F ) = ¬W (F )

• W (∃x(F ) = W (F (x/d1)) ∨ . . . ∨W (F (x/dn)) mit di aus der Domane {di, . . . , dn}

• W (∀x(F ) = W (F (x/d1)) ∧ . . . ∧W (F (x/dn)) mit di aus der Domane {di, . . . , dn}

Achtung: Der Wahrheitswert einer WFF kann von der zugrundeliegenden Domaneabhangen!

3.2.4. Das Domanenkalkul

Sei F (X1, . . . , Xn) eine WFF.

Der Ausdruck{(X1, . . . , Xn) : F (X1, . . . , Xn)}

ist eine Domanenkalkulanfrage (oder auch DRC-Query) mit der Antwortrelation

rF = {(a1, . . . , an) : W (F (a1, . . . , an)) = true }

9

3. Relationale Anfragesprachen

3.2.5. RA nach DRC (am Beispiel)

Relationaler Ausdruck:

ΠStName(σHorsaal = HS1(Prufung on Beteiligt))

DRC-Query:

FE = ∃Pr ∃H ∃T ∃P (Prufung(Pr,H, T ) ∧ Beteiligt(Pr, STN,P ) ∧ (H = HS1))

rF = {(STN) : W (FE(STN)) = true }

Alle Variablen, die nicht im Ergebnis erscheinen soll werden durch ∃ quantifiziert.

3.2.6. Beschrankte Variablen in WFFs

Sei F = F1 ∧ . . . ∧ Fn eine konjunktive WFF.

X heißt beschrankt, falls es ein Fi gibt, so dass eine der folgenden Bedingungen erfulltist:

1. X ∈ FV (Fi) und Fi ist eine nicht negierte atomare Formelder Form p(t1, . . . , X, . . . , tn)

2. Es gilt: Fi ≡ (X = a) oder Fi ≡ (a = X) mit a als Konstante.

3. Es gilt: Fi ≡ (X = Y ) oder Fi ≡ (Y = X) fur eine beschrankteVariable Y ∈ FV (F ).

3.2.7. Sichere (safe) DRC-Formeln

Eine Formel F heißt sicher (safe), falls gilt:

1. Es gibt keinen All-Quantor in F.

2. Bei jedem OR-Operator in F, der zwei Teilausdrucke F1∨F2 verbindet, muss gelten:FV (F1) = FV (F2)

3. Die freien Variablen jeder maximalen konjunktiven Teilformel F1 ∧ . . .∧Fn von Fsind beschrankt.

4. Die Negation darf nur in solchen Konjunktionen auftreten, in denen mindestensein Fi nicht negiert ist.

Maximale konjunktive Teilformeln sind alle Teilformeln einer durch “∧“ verbunde-nen Kette.

10

4. Anfragebearbeitung

4. Anfragebearbeitung

4.1. Gesetze zur Optimierung

Seien E1 und E2 Ausdrucke der relationen Algebra. E1 und E2 heißen aquivalant, fallssie die gleichen Operanden (Selektion, Join, Produkt, . . . ) benutzen und fur beliebigeInstanziierungen die gleiche Antwortrelation berechnen.

4.1.1. Joins und Produkte

Kommutativitat:

E1 onCond E2 ≡ E2 onCond E1

E1 × E2 ≡ E2 × E1

Assoziativitat:

(E1 onCond1 E2) onCond2 E3 ≡ E1 onCond1 (E2 onCond2 E3)

(E1 × E2)× E3 ≡ E1 × (E2 × E3)

4.1.2. Projektion und Selektion

Kaskade von Projektionen:

Π{B1,...,Bm}Π{A1,...,An}(E) ≡ Π{B1,...,Bm}(E)

falls {B1, . . . , Bm} ⊆ {A1, . . . , An}

Kaskade von Selektionen:

σCond1(σCond2(E)) ≡ σCond2(σCond1(E)) ≡ σCond1∧Cond2(E)

Vertauschen (1):

Π{A1,...,An}(σCond(E)) ≡ σCond(Π{A1,...,An}(E))

falls in Cond nur Attribute A1, . . . , An auftreten.

Vertauschen (2):

Π{A1,...,An}(σCond(E)) ≡ σCond(Π{A1,...,An,B1,...,Bm}(E))

falls in Cond die Attribute A1, . . . , An und B1, . . . , Bm auftreten.

11

4. Anfragebearbeitung

4.1.3. Selektion und Join

Vertauschen (Join):

σCond(E1 onCond1 E2) ≡ σCond(E1) onCond1 E2

falls in Cond nur Attribute aus E1 auftreten.

Vertauschen (Natural Join):

σCond(E1 on E2) ≡ σCond(E1) on σCond(E2)

4.1.4. Selektion und Vereinigung / Differenz

Vertauschen:

σCond(E1 ∪ E2) ≡ σCond(E1) ∪ σCond(E2)

σCond(E1 \ E2) ≡ σCond(E1) \ σCond(E2)

4.1.5. Projektion und Join

Vertauschen:

Π{A1,...,An,B1,...,Bm}(E1 onCond E2) ≡ Π{A1,...,An}(E1) onCond Π{B1,...,Bm}(E2)

falls in Cond nur Attribute A1, . . . , An und B1, . . . , Bm auftretenund A1, . . . , An nur in E1 und B1, . . . , Bm nur in E2 auftritt.

4.1.6. Projektion und Vereinigung

Vertauschen:

Π{A1,...,An}(E1 ∪ E2) ≡ Π{A1,...,An}(E1) ∪Π{A1,...,An}(E2)

falls A1, . . . , An Attribute in E1 bzw. E2 sind.

4.1.7. Selektion und Produkt

Zusammenfassen zum Join:

σCond(E1 × E2) ≡ E1 onCond E2

falls Cond von der Form (A op B) ist und A in E1 und B in E2 als Attributauftritt.

12

4. Anfragebearbeitung

4.1.8. Umschreiben eines Produktes

(E1 × . . .× En) ≡ (((E1 × E2)× E3) . . .× En)

und alle moglichen Permutationen.

4.2. Beispiel fur eine Optimierung

ΠBetreut.PrName, Betreut.StName(σCond(Betraut× Beteiligt× Prufung))

mit Cond = (Betreut.StName = Beteiligt.StName)and (Beteilgt.Pr = Prufung.Pr) and (Prufung.Horsaal = HS1)and (Prufung.Datum < 31.12.1994)

4.3. Nested-Loop-Join

Pseudocode:

FOR EACH r in R DOFOR EACH s in S DO

IF(r.B = s.B) THENOUTPUT (r,s)

END IFNEXT

NEXT

Kostenbetrachtung:

TR, TS := Anzahl der Tupel von R bzw. SPR, PS := Anzahl der Seiten von R bzw. S

βR = PRTR

(Tupel pro Seite von R)βS = PS

TS(Tupel pro Seite von S)

R on S : PR + TR · PS = PR + TR · βS · TS = PR + βS · TR · TSS on R : PS + TS · PR = PS + TS · βR · TR = PS + βR · TR · TS

PR + βS · TR · TS ≈ βSPS + βR · TR · TS ≈ βR

R on S wenn βS < βR und sonst S on R.

13

5. Speicherstrukturen

5. Speicherstrukturen

5.1. B-Baum

B-Baume minimieren die Anzahl der wahlfreien Zugriffe unter Ausnutzung der charak-teristischen Eigenschaften des Hintergrundspeichers. Sie speichern pro Baumknoten einevariable Anzahl von Schlusseln (statt nur eines einzelnen Schlussels beim Binarbaum).Mit der Schlusselanzahl steigt auch die Anzahl der Verweise auf Kindknoten pro Knoten(der Verzweigungsgrad) auf eine variable Anzahl mit festgelegtem Schwankungsbereichvon minimal t und maximal 2t (gegenuber zwei beim Binarbaum). Der Parameter tist wahlbar und wird verwendet, um die Datenstruktur so an die Blockgroße des Spei-chermediums anzupassen, dass ein Baumknoten maximal gerade einen kompletten Blockdes Speichermediums belegt. Der große Verzweigungsgrad reduziert die Baumhohe unddamit die Anzahl der kostspieligen wahlfreien Zugriffe. Die variable Schlusselmenge proKnoten vermeidet haufiges Balancieren des Baumes.

Alle Knoten außer der Wurzel haben

• mindestens t− 1 und hochstens 2t− 1 Schlussel

• und entsprechend mindestens t und hochstens 2t Kindverweise

Die Wurzel hat

• mindestens 1 und hochstens 2t− 1 Schlussel, wenn der Baum nicht leer ist

• und entsprechend mindestens 2 und hochstens 2t Kindverweise, wenn die Hohe desBaumes großer 0 ist

Eine ausfuhrliche Beschreibung ist in Wikipedia vorhanden:http://de.wikipedia.org/wiki/B-Baum

5.2. B*-Baum

Der B*-Baum ist eine Erweiterung des B-Baumes. Bei einem B*-Baum werden die eigent-lichen Datenelemente nur in den Blattknoten gespeichert, wahrend die inneren Knotenlediglich Schlussel enthalten. Dadurch kann der Verzweigungsgrad erhoht und damit dieBaumhohe verringert werden, weil in den Indexknoten mehr Platz zur Verfugung steht.

14

6. Transaktionskonzept

6. Transaktionskonzept

Ein Ablaufplan (Schedule) ist eine Folge von Aktionen, die durch Uberlappung derEinzelaktionen unter Beibehaltung der Reihenfolgen innerhalb jeder einzelnen Transak-tion ensteht.

Ein serieller Schedule ist ein Ablaufplan in dem sich Transaktionen nicht uberlappen.Eine Transaktion beendet alle ihre Operationen bevor eine andere Transaktion mit ihrenOperationen beginnt.

Ein Ablaufplan heißt serialisierbar, falls seine Wirkung aquivalent zu der Wirkungeines seriellen Schedule ist.

Ziel: Nur serialisierbare Schedules im DB-System zulassen.

Als Concurrency Control bezeichnet man Protokolle der Zugriffskontrolle im Mehr-benutzerbetrieb.

6.1. 2-Phasen-Sperrprotokoll (2PL)

Regeln:

• vor dem Lesen eines Objekt X muss die TA eine Lesesperre auf diesem Objektbesitzen

• vor dem Schreiben eines Objekt X muss die TA eine Schreibsperre auf diesemObjekt besitzen

• eine TA behalt ihre Sperren bis zu ihrem Ende

• 2 TA konnen nicht gleichzeitig unvertragliche Sperren auf dem gleichen Objektbesitzen (nur mehrfache Schreibsperren auf gleichem Objekt sind vertraglich)

Bemerkungen:

• erzeugt nur serialisierbase Schedules

• verschiedene Variationen (bezogen auf die Anzahl der Lese- und Schreiboperatio-nen)

• Deadlocks zwischen Transaktionen sind moglich

15

6. Transaktionskonzept

6.2. Fehlererholung

Im Fehlerfall mussen Transaktionen zuruckgesetzt werden und es muss die zuletzt gultigeVersion in der Datenbank wiederhergestellt werden.

Moglicherweise geht der Inhalt des Hauptspeichers verloren. In diesem Fall mussen genugInformationen bereitstehen um die Datenbanken wieder in einen konsistenten Zustand zuuberfuhren. Dazu werden auf einem Sekundarspeicher Informationen zur Fehlererholungangelegt. Dabei werden die durch eine Transaktion veranderten Daten in einem Loggespeichert (alte und neue Werte). Dieser Log dient auch der Archivierung (gesicherterZustand + Log = aktueller Zustand) und als Nachweis wer wann was verandert hat(gesetzliche Grunde).

Ablauf eines Fehlererholungsalgorithmus:

1. Normalbetrieb:

• beim Schreiben eines Wertes X: Schreibe alten und neuen Wert von X alsLog-Record in das Log

• beim EOT: Sicherstellen, dass alle Log-Records auf Platte geschrieben wurdenund schreibe COMMIT als Log-Record in das Log

2. Transaktionsfehler:

• lies Log und trage alten Wert fur Operationen ein, die von der TA ausgefuhrtwurden

• fuge ein ABORT in das Log ein

3. Systemfehler:

• lies das Log und bestimme die Menge der aktiven Transaktionen (kein COM-MIT) und die Menge der abgeschossenen Transaktionen (COMMIT vorhan-den)

• alle aktiven TA werden abgebrochen

• die neuen Werte der abgeschlossenen TA werden in die DB eingetragen

16

7. XML

7. XML

Eine Document Type Definition (DTD) legt die Struktur eines XML-Dokumentsrein syntaktisch fest (ahnlich einem Datenbankschema).

7.1. DTD fur ein Adressbuch

<!DOCTYPE addressbook [<!ELEMENT addressbook (projekt*)><!ELEMENT projekt (name, greet?, address*, (fax | tel)*, email*)><!ELEMENT name (#PCDATA)><!ELEMENT greet (#PCDATA)><!ELEMENT address (#PCDATA)><!ELEMENT fax (#PCDATA)><!ELEMENT tel (#PCDATA)><!ELEMENT email (#PCDATA)>

]>

7.2. Die Verwendung von ID und IDREF

<!DOCTYPE db [<!ELEMENT db (movie*, actor*)><!ELEMENT movie (title, director, cast, budget)><!ELEMENT actor (name, actedIn)><!ELEMENT title (#PCDATA)><!ELEMENT director (#PCDATA)><!ELEMENT budget (#PCDATA)><!ELEMENT name (#PCDATA)><!ATTLIST cast

id ID #REQUIRED><!ATTLIST actedIn

idrefs IDREF #IMPLIED>]>

• #REQUIRED bedeutet auf jeden Fall festzulegenund #IMPLIED bedeuted optional

• falls ein Attribut als ID definiert ist mussen alle assoziierten Werte unterschiedlichsein

• falls ein Attribut als IDREF definiert ist mussen die vergebenen Werte als ID einesAttributes existieren (IDREFs spezifiziert Null oder mehr IDs)

• ID und IDREF sind nicht getypt

17

7. XML

Eine Instanz der DTD konnte dann so aussehen:

<db><movie id=’m1’>

<title>Waking Ned Devine</titel><director>Kirk Jones III</director><cast idrefs=’a1 a3 a12’></cast><budget>100,000</budget>

</movie>...<actor id=’a1’>

<name>David Kelly</name><actedIn idrefs=’m1 m78’></actedIn>

</actor><actor id=’a3’>

<name>Ian Bannen</name><actedIn idrefs=’m1 m35’></actedIn>

</actor>...

</db>

18

A. Algorithmen

A. Algorithmen

A.1. Die Hulle (bezuglich einer Attributmenge)

Eingabe: FD-Menge F und Attributmenge XAusgabe: Hulle von F bezuglich X (X+

F )

Methode:

Solange es noch eine FD A → B gibt, bei der A in meiner Hulle enthalten ist und Bnoch nicht, dann nehme B in die Hulle mit auf.

Beispiel:

R = {A,B,C,D,E}F = {(AB → C), (B → D), (D → E)}X = {A,B}

Schrittweise Berechnung der Hulle:

1. X+F = X ∪ {C} ∪ {D} = {A,B,C,D}

2. X+F = X+

F ∪ {E} = {A,B,C,D,E}

A.2. Schlusselkandidaten bestimmen

Eingabe: FD-Menge F und Attributmenge V = {A1, . . . , An}Ausgabe: Ein Schlusselkandidat K ⊆ V .

Methode:

• Zunachst ist V selbst der Schlussel, also K = V (trivial).

• Gehe nacheinander alle Attribute Ai ∈ V durch und prufe ob V = (K \ {Ai})+F .

• Wenn ja, dann setze K = K \ {Ai}.

Problem:

Wenn man alle Schlusselkandidaten bestimmen will, so dauert die Berechnung mit demvorgestellten Algorithmus viel zu lange. Man kann unmoglich alle Teilmengen von Vauf Schlusselkandidaten untersuchen. Deshalb muss die Menge der zu untersuchendenSchlusselkandidaten eingeschrankt werden.

19

A. Algorithmen

Dazu soll der folgende Algorithmus dienen:

• Falls ein Attribut niemals auf der rechten Seite einer FD steht, dann muss es inallen Schlusselkandidaten enthalten sein.

• Untersuche alle X mit (X → Y ) ∈ F .

• Fur alle echten Teilmengen Z ⊂ X von X, prufe ob es eine FD (U → Z) ∈ F gibt.Falls ja, dann untersuche auch U ∪ (X \ Z).

Beispiel:

V = {A,B,C,D,E, F}F = {(AC → EF ), (BC → AD), (DEF → C)}

Alle Schlusselkandidaten mussen B enthalten!

Folgende Mengen mussen nun auf Schlusselkandidaten untersucht werden:

• ACB, BC, DEFB

• BDEF wegen (BC → AD) und (DEF → C)

• ADEFB wegen (AC → EF ) und (DEF → C)Aber: BDEF ⊆ ADEFB, also uberflussig

• DACB wegen (AC → EF ) und (DEF → C)Aber: BC ⊆ DACB, also uberflussig

• CBC wegen (AC → EF ) und (BC → A)Aber: CBC = BC, also uberflussig

• BCEF wegen (BC → D) und (DEF → C)Aber: BC ⊆ BCEF , also uberflussig

Ergebnis: Die Schlusselkandidaten sind BC und BDEF.

Diese Vorgehensweise erscheint nicht in den Vorlesungsfolien. Die Benutzung erfolgtdeshalb auf eigene Gefahr!

20

A. Algorithmen

A.3. Basis bzw. minimale Uberdeckung

Eingabe: Menge F von FDsAusgabe: Basis FC von F

Beispiel: F = {(A→ B), (B → C), (A→ C), (AB → C), (A→ BC)}

Methode:

Untersuche alle funktionalen Abhangigkeiten (α→ β) ∈ F :

1. Linksreduktion:

• Prufe welche Attribute A ∈ α uberflussig sind.

• Entferne A, falls β bereits in der Hulle von F uber α \ A enthalten ist, d.h.falls gilt β ⊆ (α \A)+F .

• im Beispiel ist das B in (AB → C) uberflussig, weil C ⊆ A+F = {A,B,C}

2. Rechtsreduktion

• Prufe welche Attribute B ∈ β uberflussig sind.

• Entferne B, falls B bereits in der Hulle von F \ (α→ β) ∪ (α→ β \B) uberα enthalten ist, d.h. falls gilt B ⊆ α+

F\(α→β)∪(α→β\B).

• im Beispiel ist das B in (A→ BC) uberflussig, weil B ⊆ {A,B,C}

3. Entferne alle uberflussigen funktionalen Abhangigkeiten X → ∅.

4. Fasse (α→ β), (α→ γ) zusammen zu (α→ β, γ).

21

A. Algorithmen

A.4. Lossless-Join-Zerlegung

Eine Lossless-Join-Zerlegung ist eine Zerlegung eines Relationenschema, so dass dabeikeine Informationen verloren gehen.

Test auf Informationserhaltung

Eingabe: ein Relationenschema R(A1, . . . , An), eine Zerlegung p = {R1, . . . , Rk} undeine Menge F von FDs

Ausgabe: True, falls p eine Lossless-Join-Zerlegung ist, False sonst.

Methode:

1. Hilfstabelle konstruieren:

Attribute A1, . . . , An1 ... n

Zerlegungen 1p = {R1, . . . , Rk} ... rij

k rkn

rij = aj , falls A ∈ Ririj = bij , falls A /∈ Ri

2. Wahle (X → Am) ∈ F .

Wiederhole bis keine Anderungen mehr erfolgen:

Falls in zwei Zeilen i1 und i2 die Werte von X ubereinstimmen, dann setze dieWerte von Am wie folgt:

Falls i1 = am dann i2 := am,falls i2 = am dann i1 := am,sonst i1 := i2.

3. Falls es eine Zeile (a1, . . . , an) gibt, dann gibt True zuruck, sonst False.

22

A. Algorithmen

Beispiel:

R := (Pr, Datum, Horsaal, StName, Platz)R1 := (Pr, Datum, Horsaal)R2 := (Pr, StName, Platz)

p := {R1, R2}

F := {(Pr→ Datum), (Pr→ Horsaal), (Pr,StName→ Platz)}

nach Schritt 1:

Pr Datum Horsaal StName PlatzR1 a1 a2 a3 b14 b15

R2 a1 b22 b23 a4 a5

nach Schritt 2:

(Pr→ Datum) ∈ F

Pr Datum Horsaal StName PlatzR1 a1 a2 a3 b14 b15

R2 a1 a2 b23 a4 a5

(Pr→ Horsaal) ∈ F

Pr Datum Horsaal StName PlatzR1 a1 a2 a3 b14 b15

R2 a1 a2 a3 a4 a5

nach Schritt 3:

True

23

A. Algorithmen

A.5. Dekomposition

Verlustlose Zerlegung eines Relationenschemas R in Teilrelationen,die in BCNF sind.

Die Abhangigkeitserhaltung ist nicht gewahrleistet!

Eingabe: Menge Z = {R}Ausgabe: Menge Z = {R1, . . . , Rn}

Solange noch Ri ∈ Z existieren, die nicht in BCNF sind, wiederhole folgendes:

• Falls gilt: es gibt eine FD α→ β in Ri mit α ∩ β = ∅ und ¬(α→ Ri).

• Dann zerlege Ri in Rj = α ∪ β und Rk = Ri \ β.

• Rj erhalt die funktionellen Abhangigkeiten FDj := {X → Y | X ∪ Y ⊆ Rj}und entsprechendes gilt fur die funktionellen Abhangigkeiten FDk von Rk.

• Entferne Ri aus Z und fuge Rj und Rk ein.

A.6. Synthese

Verlustlose und abhangigkeitserhaltende Zerlegung eines Relationenschemas Rin Teilrelationen, die in 3. NF sind.

Eingabe: Menge Z = {R}Ausgabe: Menge Z = {R1, . . . , Rn}

Methode:

• Bestimme die Basis Fc zu F .

• Fur jede FD (α→ β) ∈ Fc:– Erzeuge Relationenschema Ri = α ∪ β.

– Ri erhalt die funktionellen Abhangigkeiten FDi := {X → Y | X ∪ Y ⊆ Ri}

• falls der Schlusselkandidat k von R bezuglich Fc in keiner der Relationen Ri ent-halten ist, dann:

– Neues Relationenschema Rk := k

– FDk := ∅

• Elimiere Relationenschemata, die in anderen enthalten sind.

24

B. Prufungsfragen

B. Prufungsfragen

Dieses Kapitel ist keinesfalls vollstandig und dient nur als Erganzung zu den Prufungs-fragen aus dem Skript von N. Lohmann (WS 04/05). Sie sollten sich also beides ansehen!

B.1. ER-Modell

Gegeben sind Instanzen von Entitaten und Beziehungen (als Mengen).

A = {A1, A2, A3} B = {B1, B2} C = {C1}D = {D1, D2, D3} E = {E1, E2} F = {F2, F3}

Bez1 = {(A1, D2), (A2, D3), (A3, D1)} Bez2 = {(B1, C2, E1), (B2, C2, E1)}Bez3 = {(C1, F2), (C1, F3)}

Aufgaben:

1. Eintragen in ein ER-Model (siehe Abbildung)

2. Welche Constraints gelten fur die Generalisierung?(Hinweis: Wenn in den Instanzmengen der Spezialisierungen Elemente Ei und Fjmit i = j auftreten dann bedeutet das Overlapping! Dieser Sachverhalt war in derKlausur etwas komisch beschrieben und deshalb hab ich das leider nicht mitbe-kommen.)

3. Umformen in ein Relationales Modell

25

B. Prufungsfragen

Hinweis zur Umformung in ein Relationales Modell:

Sollte die folgende Form einer Beziehung vorliegen:

Dann kann man diese in ein einziges Relationenschema umformen: AD(h,g,o,p)

B.2. Funktionale Abhangigkeiten

• Was ist eine Lossless-Join-Zerlegung und was ist eine abhangigkeitserhaltende Zer-legung?

• Wie heißt der Algorithmus zur Zerlegung eines Relationenschema in 3. NF?

• Wie heißt der Algorithmus zur Zerlegung eines Relationenschema in BCNF?

B.3. Relationale Algebra

• Was versteht man unter einer minimalen Menge?

Losung: Eine minimale Menge ist eine Menge von Basisoperatoren aus denen alleanderen Operatoren gebildet werden konnen.

• Eine minimale Menge angeben!

• Operatoren nur mit Hilfe anderer Operatoren der RA darstellen(z.B. fur die Operatoren Durchschnitt und Division)

• Join-Graphen fur gegebene Join-Reihenfolgen zeichnen und benennen

• Gegeben ist eine Anfrage im DRC mit einer WFF.

– Beschreiben Sie in einem deutschen Satz was diese Anfrage macht.

– Ist die WFF sicher oder nicht sicher? Begrunden Sie!

26

B. Prufungsfragen

• Gegeben ist der Pseudocode fur einen Nested-Loop-Join. Geben sie den Pseudocodefur einen Semi-Join (R semi-join S) an (auf der Seite von R ist das Join-Symbolgeschlossen und bei S ist es offen - kann man hier leider nicht darstellen).

Dabei gibt es eine kleine Falle. Deshalb hier die Losung:

FOR EACH r in R DOFOR EACH s in S DO

IF(r.B = s.B) THENOUTPUT (r)BREAK

END IFNEXT

NEXT

Sehr wichtig ist es das BREAK nicht zu vergessen, weil sonst r wiederholt ausge-geben wird, falls mehrere Join-Partner s existieren!

B.4. SQL

Gegeben ist die Struktur von mehreren Tabellen in DDL.

• Welche Bedeutung haben die folgenden Constraints fur Eintrage in den jeweiligenTabellen:

– PRIMARY KEY(x,y)

– FOREIGN KEY station REFERENCES station(name)

• SQL-Anfragen formulieren. Dazu muss u.a. folgendes verwendet werden: Kartesi-sches Produkt, GROUP-BY mit HAVING und Sub-Queries (Unterabfragen)

B.5. B-Baum

Bei den Aufgaben zum B-Baum hatte ich nur 3 von 10 Punkten. Das, was ich aufWikipedia dazu gelesen hatte, konnte ich irgendwie nicht so richtig umsetzen.

• Zwei Eigenschaften von B-Baumen nennen.

• Wo finden Einfugeoperationen in einem B-Baum statt? (die Antwort ”in den Kno-ten“ fanden die nicht so toll)

• Gegeben ist die Hohe (h) und Breite (k) eines B-Baum. Wieviele Schlussel kannder Baum maximal enthalten?

• Entfernen eines Elements aus einem B-Baum.

27

B. Prufungsfragen

• Einfugen eines neuen Elements in einen B-Baum:

1. mit Einbeziehen des freien Platzes in Nachbarknoten

2. ohne Einbeziehen ...

Tja, hier wusste ich nicht so recht was die vom mir wollten. Punkt 1 hatte ichrichtig und den Punkt 2 wusste ich nicht.

B.6. XML

Eine Aufgabe aus der Klausur:

<!DOCTYPE db [<!ELEMENT db (flug | fluggesellschaft)*><!ELEMENT fluggesellschaft (name, kurzel)><!ELEMENT flug (flugnr, gesellschaft, start, ziel, uhrzeit)><!ELEMENT name (#PCDATA)><!ELEMENT flugnr (#PCDATA)><!ELEMENT gesellschaft (#PCDATA)><!ELEMENT start (#PCDATA)><!ELEMENT ziel (#PCDATA)><!ELEMENT uhrzeit (#PCDATA)><!ATTLIST start

iaca code CDATA #REQUIRED><!ATTLIST ziel

iaca code CDATA #REQUIRED><!ATTLIST name

www CDATA #IMPLIED>]>

• Fehler in einem XML-Dokument finden, d.h. Widerspruche zur DTD finden (hiernicht gegeben).

• ID und IDREF so in die DTD einfugen, dass gilt:

– kuerzel identifiziert eindeutig eine fluggesellschaft

– flugnr identifiziert eindeutig einen flug

– gesellschaft ist Fremdschlussel von fluggesellschaft in flug

• Die XML-DTD in ein Relationenschema transformieren. Folgendes muss gelten:

– die gegebenen Constraints durch Schlussel und Fremdschlussel werden einge-halten

– das Attribut aca code legt eindeutig den Start- und Zielflughafen fest (Attri-bute start und ziel)

– das Relationenschema befindet sich in 3. Normalform

28

B. Prufungsfragen

Ein Ansatz zur Umformung in ein Relationenschema:

fluggesellschaft(name, kuerzel, www)

flug(flugnr, gesellschaft, start iaca code, ziel iaca code, uhrzeit)FOREIGN KEY gesellschaft REFERENCES fluggesellschaft(kuerzel)FOREIGN KEY start iaca code REFERENCES flughafen(iaca code)FOREIGN KEY ziel iaca code REFERENCES flughafen(iaca code)

flughafen(iaca code, name)

Achtung: Keine Garantie auf Korrektheit! Also bitte nachprufen.

B.7. Transaktionen

• Fur welche Eigenschaften von ACID ist der Recovery-Manager bzw. derConcurrency-Control-Manager verantwortlich?

Losung:

– Recovery-Manager ist verantwortlich fur Durability und Consistency

– Concurrency-Control-Manager ist nur verantwortlich fur Isolation

• Die vier Regeln des 2-Phasen-Sperrprotokoll nennen.

• Ist ein gegebener Schedule serialisierbar? Man soll begrunden!

Ich hatte hier sowas geschrieben wie:T1 hat bereits Lesesperre auf X, dann kann T2 keine Schreibsperre anfordernDafur gabs 0 Punkte und den Kommentar ”Das ist nicht die Begrundung!“.

29