Lösungen Übungsaufgaben aktuell
Short Description
Download Lösungen Übungsaufgaben aktuell...
Description
FH 0. Datenintegrität constraints : Übung / Prakt. constraints 1) Implementieren Sie folgende constraints auf der Muster-DB: Relation: Lieferant Lieferanten_nr primary key Name not null
alter table lieferanten add constraint lieferantennr_pk primary key(lieferanten_nr); alter table lieferanten modify (name not null);
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 1
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: Artikel Artikel_Nr prim key Lieferanten_Nr foreign key (Lieferant) Warengruppe Wert: 1-99, not null Mengeneinheit Wert: "g","kg","t","Stck" Verkaufspreis not null, Wert > 0 und > einkaufspreis Einkaufspreis Wert 0 und < 100 Bestand_Minimum Wert >= 0
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 2
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints
alter table artikel add constraint artikel_nr_pk primary key(artikel_nr); alter table artikel add constraint lieferanten_fk foreign key (lieferanten_nr) references lieferanten(lieferanten_nr) on update cascade on delete set null; alter table artikel add constraint warengruppe_check check (warengruppe between 1 and 99); alter table artikel modify (warengruppe not null); alter table artikel add constraint mengeneinheit_check check (mengeneinheit in ('g', 'kg', 't', 'Stck')); alter table artikel modify (verkaufspreis not null); alter table artikel add constraint verkaufspreis_check check (verkaufspreis > 0 and verkaufspreis > einkaufspreis); alter table artikel add constraint einkaufspreis_check check (einkaufspreis >=0 and einkaufspreis < verkaufspreis); alter table artikel add constraint lieferzeit_check check (lieferzeit > 0 and lieferzeit < 100); alter table artikel add constraint bestand_min_check check (bestand_minimum >=0);
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 3
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: ArtikelLager Artikel_Nr prim key, foreign key (Artikel) Lager_Nr
prim key, Wert >0
Bestand_Lager
alter table artikellager add constraint artikelnr_pk primary key(artikel_nr, lager_nr); alter table artikellager add constraint artikelnr_fk foreign key(artikel_nr) references artikel(artikel_nr) on update cascade on delete cascade; alter table artikellager add constraint lager_nr_check check(lager_nr > 0);
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 4
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation : Kunden Kunde_Nr prim key Name
not null
Plz_Strasse not null Land not null , Wert : "D", "A", "I", "CH", "GB" Ort not null Kundengruppe >=0, =0
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 5
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints alter alter alter alter alter
alter alter alter alter alter
table kunden add constraint kundenr_pk primary key(kunde_nr); table kunden modify (name not null); table kunden modify (plz_strasse not null); table kunden modify (land not null); table kunden add constraint land_check check (land in ("D", "A", "I", "CH", "GB")); table kunden modify (ort not null); table kunden add constraint kundengruppe_check check (kundengruppe >= 0 and kundengruppe = 0);
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 6
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: Auftraege Auftrag_Nr prim key Auftrag_Datum not null Kunde_Nr
foreign key (Kunden) , not null
Vertreter_Nr not null Rabatt_Prozent Wert >=0 und < = 50
alter table auftraege add constraint auftragnr_pk primary key(auftrag_nr); alter table auftraege modify (auftrag_datum not null); alter table auftraege add constraint kundenr_fk foreign key (kunde_nr) references kunden(kunde_nr) on update cascade on delete set default; alter table auftraege modify (kunde_nr not null); alter table auftraege modify (vertreter_nr not null); alter table auftraege add constraint rabatt_check check (rabatt_prozent between 0 and 50); Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 7
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: Auftragspositionen Auftrag_Nr prim key, foreign key (Auftrag) Position_Nr prim key, > 0 Position_aktiv not null, Wert 0,1 Artikel_Nr not null, foreign key (Artikel) Menge not null Preis not null, Wert >= 0 Berechnet Wert = 0); alter table auftragspositionen add constraint berechnet_check Datenbanken 2 check(berechnet < geliefert); - WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 9
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: Rechnungen Rechnung_Nr prim key Rechnung_Datum not null Kunde_Nr not null, foreign key (Kunde) Auftrag_Nr not null, foreign key (Auftraege) Datum_Faellig Wert NULL oder >= Rechnung_Datum Datum_Mahnung_1 Wert NULL oder >= Datum_Faellig / Rechnung_Datum Datum_Mahnung_2 NULL oder > Datum_Mahnung_1 (Wert nur wenn Datum_Mahnung_1 IS NOT NULL) Zahldatum NULL oder > Rechnung_Datum Bezahlt Wert 0,1
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 10
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints
alter table rechnungen add constraint rechnungnr_pk primary key (rechnung_nr); alter table rechnungen modify (rechnung_datum not null); alter table rechnungen modify (kunde_nr not null); alter table rechnungen add constraint kundenr_fk2 foreign key(kunde_nr) references kunden(kunde_nr) on update cascade on delete set default; alter table rechnungen modify (auftrag_nr not null); alter table rechnungen add constraint auftragnr_fk2 foreign key(auftrag_nr) references auftraege(auftrag_nr) on update cascade on delete set default; alter table rechnungen add constraint datum_faellig_check check(datum_faellig is null or datum_faellig >= rechnung_datum); alter table rechnungen add constraint mahnung1_check check(datum_mahnung_1 is null or datum_mahnung_1 >= nvl(datum_faellig, rechnung_datum)); Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 11
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints Relation: Bestellungen Bestell_Nr
prim key
Lieferanten_Nr not null, foreign key (Lieferanten) Lieferant_Name not null Bestelldatum
not null
Artikel_Nr
not null, foreign key
Menge
Wert > 0
alter table bestellungen add constraint bestellnr_pk primary key(bestell_nr); alter table bestellungen modify (lieferanten_nr not null); alter table bestellungen add constraint lieferantennr_fk foreign key(lieferanten_nr) references lieferanten(lieferanten_nr) on update cascade on delete cascade; alter table bestellungen modify (lieferanten_name not null); alter table bestellungen modify (bestelldatum not null); alter table bestellungen modify (artikel_nr not null); alter table bestellungen add constraint artikelnr foreign key (artikel_nr) references artikel(artikel_nr) on update cascade on delete set default;; alter table bestellungen add constraint menge_check check (menge > 0); Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 12
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints 2)
Ergänzen Sie die Hochschuldatenbank aus Kap. 5 um die nachfolgend genannten Integritätsbedingungen
Student Matrikelnr|Name|Fachbereich|Fachsemester|Geb_Dat|Geschlecht
Schlüssel: Matrikelnr, Geschlecht: w / m, Fachbereich: 1-9
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 13
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints create table student (matrikel_nr name fachbereich fachsemester geb_dat geschlecht
Datenbanken 2
char(12) primary key not null, char(25) not null, int not null check(fachbereich between 1 and 9), int not null check (fachsemester > 0), date not null, char(1) not null check (geschlecht = 'm' or geschlecht= 'w'));
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 14
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints
Dozent Name|Fachbereich|Lehrgebiet
Schlüssel: Name create table dozent (name char(20) not null primary key, fachber int not null check (fachber between 1 and 9), lehrgebiet char(20) );
Datenbanken 2
- WS 2013/2014 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 15
[..] 0. Datenintegrität constraints : Übung / Prakt. constraints
Vorlesung Vorl_Nr|Bezeichnung|Hoersaal|Plätze|Beginn_h|Ende_h|Dozent
Schlüssel: Vorl_Nr, Plätze: 20-500, Fremdschlüssel: Dozent auf Tabelle Dozent, Feld Name create table vorlesung (vorl_nr bezeichnung hoersaal plaetze
char(5) not null , char(20) , char(8) , int check (plaetze >= 20 and plaetze v (verheiratet) v -> g (geschieden) / w (verwitwet) w,g -> v
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 23
Teil 1. Datenintegrität Trigger : Übungen/Lösungen Aufgabe: Familienstand alter alter alter alter
table table table table
student student student student
add add add add
constraint constraint constraint constraint
pimkey primary key(matrikel_nr); fachb check(fachbereich in (1,2,3,4,5,9)); geschl check(geschlecht in ('m', 'w')); famstand check(familienstand in ('l', 'v', 'g', 'w'));
create or replace trigger familienstand after update of familienstand on student /* oder before ? Performance , constraints Fehler nach before !!! */ for each row begin if :new.familienstand in ('g', 'w') and :old.familienstand not in ('v') then raise_application_error(-20000, 'Aenderung in geschieden oder verwitwet nur von verheiratet erlaubt'); rollback; end if; if :new.familienstand in ('l') then raise_application_error(-20000, 'Aenderung in ledig nicht erlaubt'); rollback; end if; if :new.familienstand = :old.familienstand then raise_application_error(-20000, 'Aenderung nicht erlaubt'); rollback; end if; end; Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 24
Teil 1. Datenintegrität Trigger : Übungen/Lösungen
Aufgabe: Lagerplätze Es sei folgende Integritätsregel gegeben: „Zu jedem Artikel darf es nur maximal 5 Lagerplätze geben“ a) Diskutieren Sie, mit welchen Integritätsmechanismen diese Regel implementiert werden kann oder nicht b) Implementieren Sie die Regel
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 25
Teil 1. Datenintegrität Trigger : Übungen/Lösungen
Aufgabe: Lagerplätze
Regel ist dynamisch (erfordert Zählen der Lagerplätze). Constraints deshalb nicht möglich. Ein Trigger ist (immer) möglich. Before Trigger, da Integrität. Erfordert Zugriff auf die dem Trigger zugeordnete Tabelle, die ist gesperrt, daher Hilfstabelle und merken der betroffenen Artikel. Verarbeitung der Hilfstabelle in After-TriggerBefehlsorientiert, dann ist die Tabelle frei. Create table artikeltemp (artikel_nr varchar(27));
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 26
Teil 1. Datenintegrität Trigger : Übungen/Lösungen
Aufgabe: Lagerplätze
create or replace Trigger beschraenkte_lagerplaetze before insert on artikellager for each row begin insert into artikel_temp values (:new.artikel_nr); end;
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 27
Teil 1. Datenintegrität Trigger : Übungen/Lösungen
Aufgabe: Lagerplätze Trigger zählt die eingefügten Artikel (in Hilfstabelle), die mehr als 5 Einträge in Artikellager haben. Ist diese Zahl > 0, wird die Transaktion abgebrochen. create or replace Trigger beschraenkte_lagerplaetze_kontrolle after insert on artikellager Declare anzahl int; begin Select count(*) into anzahl from hilfstabelle h where (select count(*) from artikellager l where h.artikel_nr = l.artikel_nr) > 5; If anzahl > 0 then raise_application_error(-20000, ‘Ein Artikel hat mehr als 5 Lagerplätze ‘); end if; end; Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 28
Teil 1. Trigger PL/SQL: Übungen / Lösungen
Aufgabe: Anzahl Lagerplätze, Lösung MS-SQL-Server Nur befehlsorientierte After-Trigger definiert, aber Sammeln der vom Ereignis betroffenen Tupel in einer Tabelle inserted / bzw. deleted. Die wird mit einem Cursor durchlaufen und die Triggerhandlung je Tupel ausgeführt
CREATE TRIGGER [prueffuenfeintraege] ON dbo.artikellager FOR insert AS declare @artikel_nr char(27) declare articurs Cursor FOR select artikel_nr from inserted open articurs fetch next from articurs into @artikel_nr while @@fetch_status=0 begin if (select count(*) from artikel_lager where artikel_nr=@artikel_nr) >= 5 begin raiserror() rollback end fetch next from articurs into @artikel_nr end close artcurs deallocate articurs return Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 29
Teil 1. Trigger PL/SQL: Übungen Aufgabe: Bundesliga create table Spieler ( Nummer int primary key , Spielt_fuer_Ligamannschaft char(40) , Gehalt number(10,2)) create table Spieler_Position ( Person int references spieler(person), Position varchar(40), primary key (person, position) ); Integritätsregel: „Einem Spieler, der für die Ligamannschaft ‚Bayern’ spielt, darf nicht zugleich in der Position „Abwehr“ und „Angriff“ eingesetzt werden (Trigger auf Tabelle Spieler_Position).“ Realisieren Sie diese Regel in Oracle .
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 30
Teil 1. Trigger PL/SQL: Übungen Aufgabe: Bundesliga - Lösung Lösungsansatz: Zeilenorientierter Trigger, da Kenntnis der Daten sinnvoll. Aber: Zugriff auf Tabelle „Spieler_Position“ notwendig, die ist aber gesperrt. Daher speichern der betroffenen Tupel (Key) in Hilfstabelle durch zeilenorientierten Trigger und Prüfung der Regel in befehlsorientiertem after-Trigger (tabelle nicht mehr gesperrt).
create table hilf_spieler (spieler int); create trigger pruefe_nutzer_before before insert or update on Spieler_Position for each row begin insert into hilf_spieler values (:new.person); end;
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 31
Teil 1. Trigger PL/SQL: Übungen Aufgabe: Bundesliga - Lösung create trigger pruefe_nutzer_after after insert or update on Spieler_Position declare cnt int; cursor hilf_cur is select spieler from hilf_spieler; spieler_hilf int; mannschaft char(40); begin open hilf_cur; loop fetch hilf_cur into spieler_hilf; exit when hilf_cur %notfound; select Spielt_fuer_Ligamannschaft into mannschaft from spieler where person= spieler_hilf; if if (mannschaft=’Bayern’) select nvl(count(*),0) into cnt from spieler_position where person= spieler_hilf and position in (‚Abwehr’,’Angriff’); if (cnt > 1) raise_application_error(-20000,’Zu viele Positionen’); end if; end if; end loop; close hilf_cur; end; Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 32
Teil 1. Trigger PL/SQL: Übungen / Lösungen Aufgabe: Cursor / Stored Proc Bestellung Schreiben Sie eine gespeicherte Prozedur mit folgender Funktionalität: Durchlaufen Sie die Tabelle Artikel (cursor) . Für jeden aktiven Artikel, bei dem der Lagerbestand kleiner ist als der Mindestbestand, wird ein Eintrag (insert) in die Tabelle Bestellung vorgenommen. Der Artikel wird beim Hauptlieferanten in der im Feld „Bestellmenge“ angegebenen Menge bestellt. Bestelldatum ist das Tagesdatum, Lieferdatum 14 Tage später. Die Prozedur soll den Bestellwert (Summe EK-Preis*Bestellmenge über alle bestellte Artikel) als Output-Parameter zurückgeben.
Die Tabellenstrukturen seien wie folgt definiert: Artikel Artikel_nr Aktiv Bestand Mindestbestand Bestellmenge Hauptlieferant EKPreis Lieferant Lieferant_nr Name Bestellung Bestellnr Lieferant Name Bestelldatum Lieferdatum Artikel_nr Menge
Datenbanken 2
char(20) bit int int int int number
(Prim Key)
int char(30)
(Prim Key)
int int char(20) date date char(20) int
(primary key höchste bestehende Nummer um 1 erhöhen) ) (Nummer des Lieferanten (foreign key)) (Name des Lieferanten, redundante Speicherung)
(zu bestellende Menge) (foreign key auf Lieferant)
(foreign key auf Artikel) Anzahl der bestellten Artikel - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 33
Teil 1. Trigger PL/SQL: Übungen / Lösungen Aufgabe: Cursor / Stored Proc Bestellung create table artikel( artikel_nr varchar(20), aktiv number(1,0), bestand number, mindestbestand number, bestellmenge number, hauptlieferant number, ekpreis number(19,4), primary key(artikel_nr) ); create table lieferant( lieferant_nr number, name varchar(30), primary key(lieferant_nr)); create table bestellung ( bestellnr number, lieferant number, name varchar(20), bestelldatum date, lieferdatum date, artikel_nr varchar(20), menge number, primary key(bestellnr), foreign key(lieferant) references lieferant(lieferant_nr), foreign key(artikel_nr) references artikel(artikel_nr) ); Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 34
Teil 1. Trigger PL/SQL: Übungen / Lösungen Aufgabe: Cursor / Stored Proc Bestellung /* Alternative Lösung unter Nutzung des Oracle-Konzeptes „Sequence“ zur Erzeugung einer Folge von Bestellnummern*/ CREATE SEQUENCE bestellung_seq START WITH 1 INCREMENT BY 1 ; CREATE OR REPLACE PROCEDURE "ARTIKELBESTELLUNG" (bestellwert out number ) as begin declare artnr artikel.artikelnr%type; bestmenge number; preis number (10,2); liefnr number; name char(20); bestnr int; cursor artikelcursor is select artikelnr , bestellmenge, hauptlieferant, ekpreis from artikel where aktiv=1 and bestand < mindestbestand; begin bestellwert:=0; open artikelcursor; fetch artikelcursor into artnr, bestmenge, liefnr, preis; while artikelcursor%found loop bestellwert:=bestellwert + bestmenge*preis; select name into name from lieferant where lieferant_nr=liefnr; /* Verwende die Sequenz */ insert into bestellung values( bestellung_seq.nextval , liefnr, name, current_date, current_date+14, artnr, bestmenge) fetch artikelcursor into artnr, bestmenge, liefnr, preis; end loop; close artikelcursor end; end; Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 35
Teil 1. Trigger PL/SQL: Übungen / Lösungen Aufgabe: Cursor / Stored Proc Bestellung CREATE OR REPLACE PROCEDURE "ARTIKELBESTELLUNG" (bestellwert out number ) as begin declare artnr artikel.artikelnr%type; bestmenge number; preis number (10,2); liefnr number; name char(20); bestnr int; cursor artikelcursor is select artikelnr , bestellmenge, hauptlieferant, ekpreis from artikel where aktiv=1 and bestand < mindestbestand; begin bestellwert:=0; open artikelcursor; fetch artikelcursor into artnr, bestmenge, liefnr, preis; while artikelcursor%found loop bestellwert:=bestellwert + bestmenge*preis; select name into name from lieferant where lieferant_nr=liefnr; /* erhöhe bisherige höchste bestellnummer um 1, wird neue nummer */ select nvl(max(bestellnr),0)+1 into bestnr from bestellung; insert into bestellung values(bestnr, liefnr, name, current_date, current_date+14, artnr, bestmenge) /* Bestellnr ist nicht dabei, da identity field. Dürfen nicht in value aufgeführt werden */ fetch artikelcursor into artnr, bestmenge, liefnr, preis; end loop; close artikelcursor end; end; Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 36
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Komponisten Setzen Sie folgenden Sachverhalt in ein E-R-Diagramm um (inklusive Angabe der Attribute, Schlüssel, Type, Komplexitäten): In einer zu modellierenden Umwelt gibt es Personen, die die Rollen von Komponisten, Sängern, Orchesterdirigenten und Promotern spielen. Personen haben eine eindeutige ID. Komponisten schreiben Musikstücke. Ein Stück ist immer genau einem Komponisten zuzuordnen. Das Musikstück wurde in einem bestimmten Jahr von seinem Komponisten geschrieben. Es hat einen eindeutigen Titel sowie eine mehrwertige Beschreibung. Musikstücke lassen sich u.a. in die Kategorien Klassik und Moderne aufteilen. Klassische Musik wird für ein bestimmtes Instrument geschrieben. Moderne unterteilt man in Vocal und Instrumental. Moderne Musikstücke wurden u.U. mehrfach von unterschiedlichen Sängern (Vocal) bzw. Dirigenten (Instrumental) auf Tonträger aufgenommen. Die Aufnahme hat eine eindeutige ID, ein Aufnahmedatum und einen Produktionsort. Sänger haben immer genau einen Promoter, der aber mehrere Sänger betreuen kann.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 37
Teil 2. Datenbankentwurf : Übungen / Lösungen
Person
Aufgabe: Komponisten
ID
is a
Komponist
Promoter
Dirigent
(0,n)
Sänger
(0,n)
(0,n)
(1,1)
schreibt
ID Datum
betreut
macht
macht Ort
(0,n)
(1,1)
Ort
(1,1) Aufnahmen
Aufnahmen
Datum ID
(1,1)
(1,1) in in
(0,n)
(0,n)
Klassik
vocal
Instrument
instrumental is a
Moderne
is a (1,1) Musikstück
Titel
Datenbanken 2
Beschreibung
Jahr
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 38
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Stadtverwaltung Setzen Sie folgende Beschreibung in ein E-R-Diagramm incl. Komplexitäten um: In einer Stadtverwaltung arbeiten Personen (eindeutige Personalnummer, Name, Einstufung. Sie lassen sich in Arbeiter und Beamte klassifizieren. Arbeiter erhalten ein Gehalt in einer bestimmten Höhe, Beamte eine Vergütung. Sie haben zusätzlich eine Diensteinstufung, die mehrere Werte annehmen kann . Beamte können ernannt oder gewählt sein (politische Beamte). Jede Person ist genau einem Dezernat zugeordnet. Dezernate haben eine eindeutige Bezeichnung, jedem Dezernat sind mehrere Aufgabengebiete zugeordnet, In einem Dezernat können viele Personen arbeiten. Jedes Dezernat muss von genau einem politischen Beamten (Dezernent) geleitet werden, ein Dezernent kann nur ein Dezernat leiten.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 39
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Stadtverwaltung Personalnr Person
Name
(1,1)
Bezeichnung
(1,n)
Dezernat (1,1)
arbeitet in
Einstufung
Aufgabengebiet
is a
Arbeiter Gehalt
Beamte is-a
ernannt Datenbanken 2
Vergütung
leitet
Einstufung
gewählt
(0,1)
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 40
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Bundestag Setzen Sie folgende Beschreibung in ein E-R-Diagramm incl. Komplexitäten um: Im Bundestag sitzen Abgeordnete aus Wahlkreisen. Sie haben einen Namen, Geburtsdatum und sind durch die Wahlkreisnummer eindeutig identifiziert. Ferner müssen sie genau einer Partei angehören. Parteien haben einen eindeutigen Schlüssel (Bezeichnung) und eine Mitgliederzahl. Wahlkreise haben eine eindeutige Nummer und eine Bezeichnung. Jeder Wahlkreis entsendet genau einen Abgeordneten. Wahlkreise liegen in Städten, zu einer Stadt können mehrere Wahlkreise gehören. Städte haben eine eindeutige Bezeichnung und eine Einwohnerzahl. Abgeordnete stimmen ( u.U. mehrfach) über Gesetzesvorlagen ab. Gesetzesvorlagen haben eine eindeutige Identnummer und einen Inhalt. Das Abstimmungsergebnis ist je Abgeordnetem mit dem Datum und dem Abstimmungsverhalten (ja, nein, Enthaltung) zu speichern.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 41
Datenbankentwurf : Übungen / Lösungen
Name
Abgeord
n
1
zu
Nr
n
aus
Abstimm ung
Verhalten
Partei
(0,n)
(1,1) 1 (1,1)
(0,n)
Mitglieder
Bez
Gebdat
1 (1,1)
Wahlkreis
Bez
(1,1)
Datum
Liegt in
Aufgabe: Bundestag m
(1,n)
(0,n)
Stadt
Gesetzesvorlage Bez Ident
Einwohnerzahl
Inhalt Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 42
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Verkaufsartikel Setzen Sie folgende Beschreibung in ein E-R-Diagramm incl. Komplexitäten um: Eine Firma verkauft Artikel. Sie sind durch eine eindeutige Artikelnummer gekennzeichnet. Ferner haben sie eine Bezeichnung und einen Preis. Einige Artikel sind rabattfähig. Diese haben als weitere Attribute einen „maximalen Rabatt“. Weiterhin gibt es Artikelrabatte. Sie haben Gültigkeitsbereiche „gilt_von“ und „gilt_bis“ , „gilt_von“ kennzeichnet einen Rabatt eindeutig, außerdem haben sie den Rabattwert als Attribut. Rabattfähige Artikel müssen mindestens einen, sie können viele Artikelrabatte haben. Jeder Artikelrabatt muss genau einem Artikel zugeordnet sein. Die Firma hat Kunden (Kundennummer eindeutig und der Name). Kunden können aktiv oder inaktiv sein. Inaktive Kunden haben das Datum als Attribut, an dem sie inaktiv wurden. Einge aktive Kunden erhalten für ausgewählte, rabattfähige Artikel einen Kunden_Sonderrabatt. Ein Artikel kann Sonderrabatte für verschiedene Kunden haben, ebenso kann ein Kunde Sonderrabatte für mehrere Artikel erhalten Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 43
Teil 2. Datenbankentwurf : Übungen / Lösungen
Nummer Bez
Aufgabe: Verkaufsartikel
Kunden
KuNr
Artikel
Preis
Wert
Name
is a
is a M Maxrabatt
rabattfähig 1
n
Sonderrab
(0,n)
Preis
(1,n)
aktiv
(0,n)
seit
n
hat
(1,1)
Gilt von
Datenbanken 2
Inaktiv
Wert
Artikelrabatt
Gilt bis
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 44
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Fahrzeugpark Setzen Sie folgende Beschreibung in ein E-R-Diagramm incl. Komplexitäten um: In einem Unternehmen gibt es Fahrzeuge. Sie sind durch ihr Kennzeichen eindeutig identifizierbar. Ferner haben sie eine Leistungsstärke, einen Fahrzeugtyp und eine Erstzulassung. Weiterhin speichert man die für das Fahrtzeug erforderliche Führerscheinklasse. In dem Unternehmen sind Personen angestellt. Sie sind durch eine Personalnummer eindeutig gekennzeichnet. Sie verfügen über eine Adresse (Strasse, PLZ, Ort) und ein Eintrittsdatum. Einige Angestellte sind Fahrer, sie haben eine oder mehrere Führerscheine verschiedener Klassen. Je Fahrer werden die von ihm gefahrenen Stunden gespeichert. Jedem Fahrzeug ist genau ein Fahrer zugeordnet, einem Fahrer können mehrere, es muss kein Fahrzeug zugeordnet sein. Andere Angestellte sind Monteure. Sie haben eine bestimmte Qualifikation. Monteure können keine Fahrer sein. Fahrzeuge werden von Monteuren einer Inspektion (Wartung) unterworfen. Ein Fahrzeug kann beliebig oft gewartet werden. Diese Inspektion findet an einem bestimmten Tag statt und hat ein Inspektionsergebnis. Wenn ein Fahrer ein Fahrzeug benutzt, werden die Daten dieser Fahrt (Datum, Zielort, sowie Ort und Uhrzeit von evtl. mehreren Zwischenstopps) gespeichert.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 45
Teil 2. Datenbankentwurf : Übungen / Lösungen Kennzeichen Leistungsstärke
Erstzulassung
Personalnummer
Strasse
Adresse
Plz
Aufgabe: Fahrzeugpark
Fahrzeug
Fahrzeugtyp
(0,n)
(0,n)
(1,1)
Führerscheinklasse
Person Datum
Ergebnis
Ort Eintrittsdatum
is a Inspektion
fährt
(0,n)
(1,1)
Monteur
Ort
Tour/Fahrt Zwischenstop
betreut Qualifikation (1,1)
Uhrzeit
Abfahrtszeit Zielort
(0,n)
macht
(0,n)
Fahrer
Stunden Datenbanken 2
Führerschein
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 46
Teil 2. Datenbankentwurf : Übungen / Lösungen
Kennzeichen Leistungsstärke
Erstzulassung
Personalnummer
Strasse
Adresse
Plz
Aufgabe: Fahrzeugpark
Fahrzeug
Fahrzeugtyp
(0,n)
Person
(0,n) Datum
(1,1)
Ergebnis
Führerscheinklasse
Ort Eintrittsdatum
is a Inspektion
Monteur
Ort
Tour/Fahrt Zwischenstop
fährt
Qualifikation (0,n)
Uhrzeit
Datum
(0,n)
Fahrer
Zielort Stunden Datenbanken 2
Führerschein
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 47
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation in Relationen Überführen Sie die ER-Diagramme aus den bisherigen Aufgaben nach den vorgegebenen Regeln in relationale Strukturen.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 48
Teil 2. Datenbankentwurf : Übungen / Lösungen
Teil I: Datenbankentwurf Transformation: Komponisten Person(PID) Komponist(PersonID) Dirigent(PersonID) Saenger(PersonID, PromoterID) Promoter(PersonID) Musikstück(Titel, Jahr, Komponist_ID) Musikstück_Beschreibung (Titel, Beschreibung) Klassik(Titel, Instrument) Moderne(Titel) Vocal(ModerneID) Instrumental(ModerneID) InstrumentalAufnahmen(IID, Ort, Datum, DirigentID, InstrumentalID) VocalAufnahmen(VID, Ort, Datum, SaengerID, VocalID) Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 49
Teil 2. Datenbankentwurf : Übungen / Lösungen
Transformation: Stadtverwaltung Person(ID, Name, Einstufung, ArbeitetinDezBezeichnung) Arbeiter(PNR,Gehalt) Beamter(PNR,Vergütung) Beamter_Einstufung(BeamterPNR ,Diensteinstufung) Gewählt(BeamterPNR) Ernannt(BeamterNR) Dezernat(Bezeichnung,LeiterGewähltBeamterPNR) DezAufgabengebiet(DezBezeichnung ,Aufgabengebiet)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 50
Teil 2. Datenbankentwurf : Übungen / Lösungen
Transformation: Bundestag
Abgeordneter (Name, Gebdat, Wahlkreis_Nr, Partei_Bezeichnung) Wahlkreis (Wahlkreis_Nr, Wahlkreis_Bezeichnung, Stadt_Bezeichnung)
Partei(Bezeichnung,Mitglieder) Stadt(Bezeichnung,Einwohnerzahl) Gesetzesvorlage(Identnummer,Inhalt) Abstimmung(Wahlkreis_Nr_Abgeordneter, GesetzesvorlageIdentNr, Verhalten, Datum)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 51
Teil 2. Datenbankentwurf : Übungen / Lösungen
Transformation: Verkaufsartikel Artikel (Nr, Bez, Preis) Rabattfähig (Artikel_NR, maxrabatt) Kunden (KUNR, Name) Aktiv (KUNR) Inaktiv (KUNR, seit ) Sonderrabatt (RabattfaehigArtikelNR, AktivKUNR, Wert) Artikelrabatt (RabattfaehigArtikelNR ,Gilt_von ,Gilt_bis,Wert)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 52
Teil 2. Datenbankentwurf : Übungen / Lösungen
Transformation: Fahrzeugpark Person (PNR,Strasse,PLZ,Ort,Eintritt) Fahrer (PersonPNR,Stunden) Fahrer_FSKL (FahrerPNR,FSKL) Monteur (PersonPNR ,Qualifikation ) Fahrzeug (KZ, PS, FSKL, Typ, Erstzu, FährtFahrerPNR) Tour (TourNr, Fahrer_PNR , FahrzeugKZ, Datum, Zielort) Stops (TourNr ,Zeit, Ort) Inspiziert (MonteurPNR, FahrzeugKZ , Tag , Ergebnis)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 53
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 1 Überführen Sie folgendes Diagramm in eine relationale Struktur. Berücksichtigen Sie die Tatsache, dass nur sehr wenige Elemente von E1und E3 zueinander in der Beziehung R1 stehen
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 54
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 1 A1 A2 A3
R3 E1
m
n
A9
1
A5
E2
1 R1
A7
A4
n
R2 n
E3 A8
Datenbanken 2
A6
RE1(A1,A2,A3) RR3(A1,A2,A4) RR3a(A1,A2,A4,A9) RR1(A1,A2,A7) RE2(A4,A5) RE3R2(A7,A8,A4) RR2(A7,A6) - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 55
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 2 Überführen Sie dieses „Semantik“-lose E-R-Diagramm in eine relationale Struktur unter Kennzeichnung von Schlüsseln und Fremdschlüsseln. Gehen Sie davon aus, dass die Relationship R2 für beide Rollen obligatorisch ist. R3 sei für die Rolle E3 obligatorisch, für E2 optional.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 56
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 2 A1
A2
A3
A5
B1
m
E1
E2
1 n
R_R3B4 (A1,B4) C3
C2 Datenbanken 2
R3 R_E1E3R2R3 (A1,A2,A3,C1,C2,B1,B2) C1: Unique
E3 C1
1
B4
1
B3
n R1
R2
B2
R_E3C3 (A1,C3) R_E2 (B1,B2,B3) R_R1 (A1,B1,B2,A5) - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 57
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 3 Überführen Sie folgendes ER-Diagramm (ohne Semantik) gemäß den in der Vorlesung genannten Regeln (ohne Effizienzüberlegungen) in relationale Strukturen
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 58
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe: Transformation Semantikloses ER-Diagramm 3 A1
A2
E1
A3 m
A4
R1
R2 n
E3
Datenbanken 2
R_E1 (A1,A2,A3) R_E3 (A10,A11,A1,A2,A4) R_E2 (A4)
A11
A10
E2
1
1
n
n
R3
A6
R_E2_A6 (A4,A6) R_R3 (A1,A2,A4) - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 59
Teil 2. Datenbankentwurf : Übungen / Lösungen
Beispiel Generalisierung mit Trigger
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 60
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe Normalisierung FH Folgende relationale Strukturen seien entwickelt: (Schlüsselattribute jeweils unterstrichen, Fremdschlüssel kursiv): Student: MatrikelNr Name Strasse PLZ Ort Bundesland Nationalität Fachbereich Dozent: Name Fachbereich Vorlesung: VorlesungsNr Vorlesbezeichnung Fachbereichszuordnung DozentName Klausur: Matrikel_Nr Name Fachbereich Vorlesung Dozentname Datum Ergebnis Folgende Regeln gelten im Anwendungsbereich: 1) Eine Vorlesung wird von genau einem Dozenten gehalten 2) Dieser Dozent lässt auch die Klausur schreiben 3) Der Fachbereich des Dozenten stimmt mit der Fachbereichszuordnung einer Vorlesung überein 4) Klausuren werden nur semesterweise gespeichert, pro Semester pro Vorlesung eine Klausur Welche Normalformen werden verletzt (Begründung) ? Überführen Sie die Relationen in die dritte Normalform.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 61
Teil 2. Datenbankentwurf : Übungen / Lösungen
Student: MatrikelNr Name Strasse
PLZ
Ort
Bundesland Nationalität Fachbereich
3.NF verletzt: { PLZ } -> {Ort, Bundesland} Student: MatrikelNr Name Strasse PLZ PLZ_Bundesland: PLZ Ort Bundesland
Nationalität Fachbereich
Dozent: Name Fachbereich o.k. Vorlesung: VorlesungsNr
Vorlesbezeichnung Fachbereichszuordnung DozentName
3.NF verletzt: {Dozentname} -> {Fachbereichszuordnung} Vorlesung: VorlesungsNr
Datenbanken 2
Vorlesbezeichnung DozentName
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 62
Teil 2. Datenbankentwurf : Übungen / Lösungen
Klausur: Matrikel_Nr Name Fachbereich Vorlesung Dozentname
Datum Ergebnis
2.NF : {Matrikel_nr} -> {Name, Fachbereich} 2.NF : {Dozentname} -> {Fachbereich} 2.NF : {Vorlesung} -> {Dozentname, Datum} (pro Vorlesung nur 1 Klausur=1 Datum) (der Dozent, der die Vorlesung hält, prüft auch) Vorlesung: VorlesungsNr Vorlesbezeichnung DozentName Prüfungsdatum Klausur: Matrikel_Nr Vorlesung Ergebnis
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 63
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe Normalisierung Musik Folgende relationale Strukturen seien entwickelt: (Schlüsselattribute jeweils unterstrichen, Fremdschlüssel kursiv): Dirigent (PersonID Name Alter Nationalität Titel ) Opernhaus (Name Stadt Orchester_Bezeichnung ) Orchester ( OrchesterBezeichnung Mitgliederzahl Gründungsjahr Dirigent_Titel DirigentID ) Oper ( Titel , Komponist Jahr_Erstaufführung ) Aufführung ( Opernhaus Orchester OperTitel Dirigent Spielzeit Anzahlaufführungen) Regeln: 1) Es werden immer nur die Aufführungen einer Spielzeit pro Opernhaus gespeichert. 2) Innerhalb einer Spielzeit wechselt der Dirigent eines Orchesters nicht. 3) Innerhalb einer Spielzeit wechselt das Orchester eines Opernhauses nicht Welche Normalformen werden verletzt (Begründung) ? Überführen Sie die Relationen in die dritte Normalform.
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 64
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe Normalisierung Musik Dirigent (PersonID Name Alter Nationalität Titel ) Ist in 3. NF Orchester ( OrchesterBezeichnung Mitgliederzahl Gründungsjahr Dirigent_Titel DirigentID) 3.NF verletzt: {DirigentID } -> {Dirigent_Titel } Orchester (OrchesterBezeichnung Mitgliederzahl Gründungsjahr DirigentID )
Opernhaus (Name Stadt Orchester_Bezeichnung ) Ist in 3. NF
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 65
Teil 2. Datenbankentwurf : Übungen / Lösungen
Aufgabe Normalisierung Musik Oper ( Titel , Komponist Ist in 3. NF
Jahr_Erstaufführung )
Aufführung ( Opernhaus Orchester OperTitel Dirigent Spielzeit Anzahlaufführungen) 2.NF verletzt: {Orchester } -> {Dirigent} (da kein Wechsel des Dirigenten in Spielzeit) 2.NF verletzt: {Opernhaus } -> {Orchester} (da kein Wechsel des Dirigenten in Spielzeit) Aufführung ( Opernhaus OperTitel
Datenbanken 2
Spielzeit Anzahlaufführungen)
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 66
Teil 3. Physikalische Organisation : Übungen / Lösungen Hash-Organisation (1) Tragen Sie folgende Datensätze mit den entsprechenden Schlüsselwerten in eine Hash-Organisation ein, die folgende Eigenschaften hat: 7 Container, ein Container beinhaltet 2 Datensätze. Überlaufbereich ebenfalls 2 Datensätze pro Container 5 – 15 – 25 – 35 – 7 – 12 – 19 – 22 – 84 – 10 – 21 – 22 – 23 – 30
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 67
Teil 3. Physikalische Organisation : Übungen / Lösungen B0
35
7
U2
U1
19
B1
15
22
U3
U2
84
B2
23
30
U3
22
B3
10
U4
B4
25
U5
B5
5
12
U1
21
U6
B6
U7
Datenbehälter
Überlaufbehälter
Hash-Organisation (1)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 68
Teil 3. Physikalische Organisation : Übungen / Lösungen
Hash-Organisation (2) Tragen Sie die Schlüsselwerte 1, 2 18, 20, 4, 5, 13, 24, 31, 6, 19, 46, 12, 17 in eine Hash-Organisation mit Überlaufbereich ein, die über n = 11 Behälter verfügt (ein Datensatz je Behälter)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 69
Teil 3. Physikalische Organisation : Übungen / Lösungen B0
U0
13
U1 U3
B1
1
U4
U1
24
B2
2
U0
U2
31
U3
46
B3 B4
4
U4
12
B5
5
U5
17
B6
6
B7
18
U7
B8
19
U8
B9
20
U5
U2
U6
U9
B10
U10
Datenbehälter
Überlaufbehälter Hash-Organisation (2)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 70
Teil 3. Physikalische Organisation : Übungen / Lösungen
Aufbau ISAM-Datei Eine ISAM-Datei wird i.A. auf Basis einer vorhandenen Datenmenge sortiert aufgebaut und der Index angelegt. Danach wird die Organisation unter Verwendung von Überlaufbehältern erweitert. Sei eine ISAM-Organisation gegeben, in einen Datenblock passen 3 Datensätze, in einen Indexblock 2 Indexeinträge. Zu jedem Datenblock gibt es einen Zeiger auf genau einen Überlaufblock. Diese sind ggfs. untereinander verzeigert. Überlaufbehälter nehmen 2 Datensätze auf. Verteilen Sie folgenden Datensätze (sortiert!) auf die Datenblöcke und legen Sie den Index an. Lassen Sie je Datenblock einen Datensatz als Reserve frei: 5 – 25 – 7 – 42 – 36 – 9 – 18 – 21 – 55 – 41 – 38 – 59 – 67 Wie sieht die Datendatei und die Indexdatei nach Eingabe dieser Daten aus ? Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 71
Teil 3. Physikalische Organisation : Übungen / Lösungen I1 I2 I3 I4
7
B1
5
7
18
B2
9
18
25
B3
21
25
38
B4
36
38
42
B5
41
42
59
B6
55
59
67
B7
67
B8
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 72
Teil 3. Physikalische Organisation : Übungen / Lösungen Aufbau ISAM-Datei Fügen Sie nun folgende Werte ein und nehmen Sie die notwendigen Änderungen in Datendatei, Indexdatei und Überlaufbereich vor: 8 – 34 – 74 – 43 – 58 – 60 – 1 – 2 – 3 – 22 – 78 – 6 – 85
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 73
Teil 3. Physikalische Organisation : Übungen / Lösungen I1 I2 I3 I4
7
B1
1
5
7
18
B2
8
9
18
25
B3
21
22
25
38
B4
34
36
38
42
B5
41
42
59
B6
43
55
59
74
B7
60
67
74
85
B8
78
85
Datenbanken 2
2
3
6 58
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 74
Teil 3. Physikalische Organisation : Übungen / Lösungen Zugriffsbeschleunigung bei ISAM (1) Sei eine geblockte Dateistruktur gegeben. Blockgröße sei 8000 Bytes, Recordlänge 500 Bytes. Die Datei habe 800000 Records. Es sei ein sortierter, dichter Index angelegt, Schlüssellänge sei 15 Bytes, Verweislänge auf einen Record: 5 Bytes. In wie vielen Block-Zugriffen wird im Mittel der Datensatz zu einem Schlüssel gefunden, wenn die Suche im Index erfolgt. Lösung: Dichter Index: 1 Indexelement / Record -> 800000 Indexrecords. Index-Recordlänge : 20 , Blocklänge 8000 -> 8000 / 20 = 400 Indexrecords pro Block -> 800000 Recs / 400 = 2000 Indexblöcke -> im Mittel 1000 + 1 = 1001 Index-Block-Zugriffe (sequentiell 25 000 Zugriffe)
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 75
Teil 3. Physikalische Organisation : Übungen / Lösungen Zugriffsbeschleunigung bei ISAM (2) Sei eine geblockte Dateistruktur gegeben. Blockgröße sei 8000 Bytes, Recordlänge 500 Bytes. Die Datei habe 800000 Records. Es sei ein sortierter, dünner Index angelegt, Schlüssellänge sei 15 Bytes, Verweislänge auf einen Record: 5 Bytes. Lösung:
Blockgröße 8.000 : Recordlänge 500 800.000 Records : 16 Records /Block Dünner Index: 50.000 Datenblöcke
-> 16 Datenrecords / Block -> 50 000 Daten-Blöcke -> 50.000 Indexeinträge (1 Eintrag / Block) Indexlänge (15+5)=20 Bytes, Blockgröße 8.000 -> 400 Indexrecords / Block 50.000 Indexeinträge / 400 pro Block -> 125 Indexblöcke Die Suche erfolgt im Mittel in 63 Index-Block-Zugriffen (Index) + 1 Zugriff Datenblock Sequentiell 25 000 !
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 76
Teil 3. Physikalische Organisation : Übungen / Lösungen
Aufgabe B-Baum (1): Wie sieht ein B-Baum der Ordnung 1 nach der Eingabe folgender Schlüsselwerte aus: 30– 29 – 27 – 18 – 15 – 20 – 9 – 10 –11 –12 –13
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 77
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 30, 29, 27, spalten
Aufgabe B-Baum (1): 27
29
30
einfügen 18, 15, spalten 29
15
18
27
30
einfügen 20, 9, 10, 2x spalten
9
Datenbanken 2
10 15
18
29
20
27
30
einfügen 11, 12, spalten
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 78
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 11, 12, spalten Aufgabe B-Baum (1):
18
10 9
29 11
12 15
20
27
30
einfügen 13 18 10 9
Datenbanken 2
11
12
29 13
15
20
27
30
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 79
Teil 3. Physikalische Organisation : Übungen / Lösungen
Aufgabe B-Baum (2): Wie sieht ein B-Baum der Ordnung 1 nach der Eingabe folgender Schlüsselwerte aus: 1 – 2 – 3 – 4 – 5 – 20 – 19 – 18 – 17 – 16 – 6 – 12 – 41 - 35
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 80
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 1, 2
Aufgabe B-Baum (2): 1
2
einfügen 3 1 2
3
einfügen 4, 5 2
1
Datenbanken 2
4
3
5
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 81
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 20, 19
Aufgabe B-Baum (2): 4 2 1
19 3
5
20
einfügen 18, 17 4 2 1
Datenbanken 2
17 3
5
19 18
20
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 82
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 16, 6
Aufgabe B-Baum (2):
4
17
2 1
6
3
19
5
16
18
20
einfügen 12, 41, 35 4
17
2 1
Datenbanken 2
3
6 5
19 12
16
18
35 20
41
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 83
Teil 3. Physikalische Organisation : Übungen / Lösungen Aufgabe B-Baum (3): Erzeugen Sie den B-Baum erster Ordnung, der sich durch die Eingabe folgender Daten ergibt 10 – 15 – 12 – 5 – 11 – 3 – 1 – 25 – 2 – 13 – 14 – 17 – 19
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 84
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 10, 15, 12
Aufgabe B-Baum (3):
10 12 15
einfügen 5, 11 12 5
10 11
15
einfügen 3, 1 10 1
3
5
12 11
15
einfügen 25, 2, 13
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 85
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 25, 2, 13
Aufgabe B-Baum (3):
10
3 1
2
12 5
11
13 15 25
einfügen 14, 17, 19 10 3 1
Datenbanken 2
2
12 15 19 5
11
13
14
17 19 25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 86
Teil 3. Physikalische Organisation : Übungen / Lösungen Aufgabe B-Baum (3):
10
12
3 1
Datenbanken 2
2
15
5
19 11
13
14
17
25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 87
Teil 3. Physikalische Organisation : Übungen / Lösungen B*-Baum (1) Wie sieht ein B*-Baum der Ordnung 1 mit 2 Datensätzen pro Blatt nach der Eingabe folgender Schlüsselwerte aus: 30– 29 – 27 – 18 – 15 – 20 – 9 – 10 –11 –12 –13
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 88
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 30, 29, 27
B*-Baum (1)
29 27 29
30
einfügen 18 27 29
18
Datenbanken 2
27
29
30
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 89
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 15
B*-Baum (1)
27 18
15 18
29
27
29
30
einfügen 20 27 18
15 18
Datenbanken 2
20 27
29
29
30
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 90
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 9 B*-Baum (1)
27 15
9
15
18
18
20 27
29
29
30
einfügen 10 15 27
10
9
10
Datenbanken 2
18
15
18
29
20 27
29
30 - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 91
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 11 B*-Baum (1)
15 27
10
9
10
11
18
15
18
29
20 27
29
30
einfügen 12 15 27
10 12
9
10
11
12
Datenbanken 2
15
18
18
29
20
27
29
30 - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 92
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 13 B*-Baum (1)
15 27
10 12
9
10
11
12
Datenbanken 2
13 15
18
18
29
20 27
29
30
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 93
Teil 3. Physikalische Organisation : Übungen / Lösungen
B*-Baum (2)
Wie sieht ein B*-Baum der Ordnung 1 mit 2 Datensätzen pro Blatt nach der Eingabe folgender Schlüsselwerte aus: 1 – 2 – 3 – 4 – 5 – 20 – 19 –18 – 17 – 16 - 6 – 12 - 41 - 35
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 94
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 1,2
B*-Baum (2)
1
2
einfügen 3 2 1
2
3
einfügen 4 2 1
Datenbanken 2
2
3
4
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 95
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 5
B*-Baum (2) 1
2
2
4
3
4
5
einfügen 20
1
2
2
4
3
4
5
20
einfügen 19 4 2 1 Datenbanken 2
2
3
4
19 5
19
20 - SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 96
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 18 B*-Baum (2)
4 2
1
2
3
4
18 19 5
18
19
20
einfügen 17 4
18 17
2 1
Datenbanken 2
2
3
4
5
17
19 18
19
20
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 97
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 16 B*-Baum (2)
4
18 16
2 1
2
3
4
5
16
17 17
19 18
19
20
einfügen 6
16 4
18 6
2 1
2
Datenbanken 2
3
4
5
6
17 16
17
19 18
19
20
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 98
Teil 3. Physikalische Organisation : Übungen / Lösungen
B*-Baum (2) einfügen 12 16 4
18 6
2 1
2
3
Datenbanken 2
4
5
6
17 12 16
17
19 18
19
20
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 99
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 41 B*-Baum (2)
16 4
18
2 1
2
3
6
4
5
17
6
12 16
17
19 18
19
20 41
einfügen 35 16 4
18
2 1
2
3
Datenbanken 2
4
6 5
6
17 12 16
17
19 18
19
35 20
35
41
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 100
Teil 3. Physikalische Organisation : Übungen / Lösungen
B*-Baum (3)
Wie sieht ein B*-Baum der Ordnung 1 mit 2 Datensätzen pro Blatt nach der Eingabe folgender Schlüsselwerte aus: 10 - 15 - 12 - 5 - 11 - 3 – 1 - 25 – 2 – 13 – 14 – 17 - 19
Datenbanken 2
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 101
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 10,15
B*-Baum (3)
10 15
einfügen 12 12 10 12
15
einfügen 5 10 12 5
Datenbanken 2
10
12
15
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 102
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 11 B*-Baum (3)
10 12 5
10
11
12
15
einfügen 3 10 5 3
Datenbanken 2
5
12 10
11
12
15
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 103
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 1 B*-Baum (3)
10
3 1
3
12
5 10
5
11
12
15
einfügen 25 10 3 1
3
Datenbanken 2
5
12
5 10
11
12
15 25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 104
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 2 B*-Baum (3)
3
2 1
2
10
5 3
12
5
10
11
12
15 25
einfügen 13 3 2 1 Datenbanken 2
2
10 12 15
5 3
5
10
11
12
13 15
25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 105
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 14 B*-Baum (3)
10 3
2 1
2
14
5 3
Datenbanken 2
5
12 10
11
12
15 13 14
15
25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 106
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 17 B*-Baum (3)
10 3
2 1
2
14
5 3
Datenbanken 2
5
12 10
11
12
15 13 14
15
17 25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 107
Teil 3. Physikalische Organisation : Übungen / Lösungen einfügen 19 B*-Baum (3)
10 3
2 1
2
14
5 3
Datenbanken 2
5
15 19
12 10
11
12
13 14
15
17 19
25
- SS 2010 - © Prof. Dr. Klaus-Dieter Krägeloh - Folie 108
View more...
Comments