Übungsblatt 10 - Informatik

Werbung
Universität Augsburg, Institut für Informatik
Prof. Dr. W. Kießling
Dr. A. Huhn, F. Wenzel, M. Endres
Wintersemester 2010/2011
21. Jan. 2011
Lösungsblatt 10
Datenbanksysteme I
Aufgabe 1: B*-Bäume
a) Nach dem Einfügen von 15, 13 und 30
b) Nach dem Einfügen von 23
c) Nach dem Löschen von 42
1
Aufgabe 2: Kostenbasierte Optimierung
Lösungsvorschlag:
a) Da VNummer ein Primärschlüssel ist und damit automatisch ein Primärindex erstellt wird, ergibt sich IV N ummer =
TV orlesung ⇒ GV N ummer = 1 ⇒ HV N ummer = 1
b) C1 = Bestand:
= 800
• Passender Nicht-Cluster-Index: HBestand = TILiteratur
20 = 40
Bestand
• Literatur als kompakter Heap: HLiteratur = BLiteratur = 50
C2 = Bedarf:
• Literatur als kompakter Heap: HLiteratur = BLiteratur = 50
• Nichtpassender Nicht-Cluster-Index: HBedarf = TLiteratur
=
2
800
2
= 400
c) Ausführungszeit:
• Best-Case: 40 * 8ms = 320ms
• Worst-Case: 400 * 8ms = 3200ms
Aufgabe 3: SQL: DDL und DML
Lösungsvorschlag:
CREATE TABLE Bundeslaender
(Name VARCHAR(20) PRIMARY KEY, Einwohner INTEGER NOT NULL CHECK (Einwohner >
0));
CREATE TABLE Wahlkreise
(Nr INTEGER PRIMARY KEY, Bezeichnung VARCHAR(20),
Bundesland VARCHAR(20) REFERENCES Bundeslaender);
CREATE TABLE Wahlbezirke
(Nr INTEGER PRIMARY KEY,
Wahlberechtigte INTEGER NOT NULL CHECK (Wahlberechtigte > 0),
Wahllokal VARCHAR(20),
Wahlkreis INTEGER REFERENCES Wahlkreise ON DELETE CASCADE);
CREATE TABLE Parteien
(Name VARCHAR(20) PRIMARY KEY, Mitglieder INTEGER NOT NULL CHECK (Mitglieder >
0));
CREATE TABLE Direktkandidaten
(SozialVNr VARCHAR(20) PRIMARY KEY, Name VARCHAR(20),
Partei VARCHAR(10) REFERENCES Parteien ON DELETE SET NULL,
Wahlkreis INTEGER REFERENCES Wahlkreise ON DELETE CASCADE);
CREATE TABLE Erststimmen
(Wahlbezirk INTEGER NOT NULL REFERENCES Wahlbezirke ON DELETE CASCADE,
Jahr INTEGER NOT NULL,
Kandidat VARCHAR(20) NOT NULL REFERENCES Direktkandidaten ON DELETE CASCADE,
Stimmen INTEGER NOT NULL CHECK (Stimmen >=0), PRIMARY KEY (Wahlbezirk, Jahr,
Kandidat));
CREATE TABLE Zweitstimmen
(Wahlbezirk INTEGER NOT NULL REFERENCES Wahlbezirke ON DELETE CASCADE,
Jahr INTEGER NOT NULL,
Partei VARCHAR(10) NOT NULL REFERENCES parteien ON DELETE CASCADE,
Stimmen INTEGER NOT NULL CHECK (Stimmen >=0), PRIMARY KEY(Wahlbezirk, Jahr,
Partei));
2
Herunterladen