Lösungen Übungsaufgaben aktuell

January 26, 2018 | Author: Anonymous | Category: Ingenieurwissenschaften, Informatik, Datenbank
Share Embed Donate


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

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF