Aufgabe 1: Informationsmodellierung (1)

Ähnliche Dokumente
Modul Grundlagen von Datenbanken Wintersemester 2014/2015

Modul Grundlagen von Datenbanken Wintersemester 2017/2018. Probeklausur XX , 12:00 Uhr, ESA X + Y. Musterlösung

Modul Grundlagen von Datenbanken Wintersemester 2013/2014. Probeklausur , Uhr, ESA A + B. Musterlösung

DB I S. 1 Referentielle Aktionen [10 P.] Gegeben sei folgende Datendefinition:

DB I S. 1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Person(PNR, Vorname, Nachname, Geburtsdatum, Wohnort Ort.

Grundlagen von Datenbanken. B-Bäume, B*-Bäume Normalisierung

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Grundlagen von Datenbanken. Referentielle Aktionen, Sichten, Serialisierbarkeit und Locking

Oracle 10g Einführung

1 Referentielle Aktionen

Semesterklausur. Hinweise:

Praktische SQL-Befehle

Universität Augsburg, Institut für Informatik WS 2007/2008 Prof. Dr. W. Kießling 18. Jan Dr. A. Huhn, M. Endres, T. Preisinger Übungsblatt 12

Datenbanken. Zusammenfassung. Datenbanksysteme

Finalklausur zur Vorlesung Datenbanksysteme I Wintersemester 2003/2004 Prüfer: Prof. R. Bayer, Ph.D. Datum: Zeit: 16.

Übung Datenbanksysteme Updates, Integritätsbedingungen, funktionale Abhängigkeiten

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

DB-Datenbanksysteme. DB SQL-DML 1 Mario Neugebauer

Wiederholung VU Datenmodellierung

Datenbanken (Bachelor) (SPO2007) WS 2009/10

Datenbanksysteme 2013

Wiederholung VU Datenmodellierung

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Benutzen Sie zur Lösung der folgenden Aufgaben ausschließlich die in der Vorlesung vorgestellten Operatoren der Relationenalgebra!

Grundlagen von Datenbanken

A Datendenition in SQL ( Punkte)

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Kapitel 8: Datenintegrität

Übersicht der wichtigsten MySQL-Befehle

Datenbanken 1. Sommersemester Übung 1

Lösungen der Übungsaufgaben von Kapitel 10

Datenbanksysteme I WS 18/19 Teillösung Übungsblatt 4-6

Labor 3 - Datenbank mit MySQL

Semesterklausur Wiederholung

(4 Punkte) Aufgabe 1: Relationenalgebra - Relationenkalkül

Microsoft Access 2010 SQL nutzen

SQL: Weitere Funktionen

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6 - Musterlösung

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Wirtschaftsinformatik 7a: Datenbanken. Hochschule für Wirtschaft und Recht SS 16 Dozent: R. Witte

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Datenbanken im WI-Unterricht mit

Es geht also im die SQL Data Manipulation Language.

SQL structured query language

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

4.14 Integrität und Trigger

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Gruppe B Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

Die Anweisung create table

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Beispiel zur referentiellen Integrität

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Kapitel 7: Referentielle Integrität

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

dbis Praktikum DBS I SQL Teil 2

SQL Data Manipulation Language (DML) und Query Language (QL)

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Integritätsbedingungen / Normalformen- Beispiel: Kontoführung

Übung ERM. Beispiel: Erstellung einer relationalen Datenbank

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Semesterklausur Datenbanksysteme 1 SS 2015

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Aufgabe 1: Integrität

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Übungsblatt 10: Lösungsvorschlag

Abfragen (Queries, Subqueries)

Relationentheorie grundlegende Elemente

Gruppe A Bitte tragen Sie SOFORT und LESERLICH Namen und Matrikelnr. ein, und legen Sie Ihren Studentenausweis bereit.

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

Vorlesung Datenbank-Entwurf Klausur

Abschlussprüfung im Fach Datenbanken am

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Datenbanken (Übung 12)

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Datenbanken: Datenintegrität.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

4. Datenbanksprache SQL

SQL. SQL: Structured Query Language. Früherer Name: SEQUEL. Standardisierte Anfragesprache für relationale DBMS: SQL-89, SQL-92, SQL-99

SQL und MySQL. Kristian Köhntopp

Übung PL/SQL Trigger Lösungen

10. Übungsblatt. Für die Übung am Donnerstag, 15. Januar 2009, von 15:30 bis 17:00 Uhr in 13/222.

5. Datendefinition in SQL

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Kapitel 3: Datenbanksysteme

6. Datendefinition in SQL

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

KonzMod-Braindump. von Ersties für Ersties. vom 15. Februar 2012

Datenbank Grundlagen. Performanceuntersuchungen

Universität Augsburg, Institut für Informatik WS 2009/2010 Prof. Dr. W. Kießling 06. Nov Dr. A. Huhn, F. Wenzel, M. Endres Lösungsblatt 2

Transkript:

Aufgabe 1: Informationsmodellierung (1) Krankenhaus-Anwendung Objekte des Anwendungsbereichs - Behandlung: Beh.Nr, Datum - Krankheit: WHOID, Name, Symptome - Medikament: ZNr, Name - Personen: PID, Vorname, Nachname, Geb.Datum - Angestellter: Gehalt, Einstell.Datum, Vertragsende - Arzt: Fachgebiet - Hilfskraft: Ausbildung - Patient: Gewicht, Größe, Krankenkasse, Adresse (Straße, HNr, PLZ, Ort) Bedingungen und Beziehungen - Arzt und Hilfskraft sind Angestellte, Angestellte und Patienten sind Personen - Hilfskräfte können maximal einem Arzt zugeordnet sein, einem Arzt können wiederum mehrere Hilfskräfte zugeordnet werden - Ein Medikament kann gegen eine oder mehrere Krankheiten einsetzbar sein und für eine Krankheit gibt es beliebig viele Medikamente. - Ein Medikament kann Wechselwirkungen mit anderen Medikamenten haben. - Ein Medikament kann in beliebig vielen Behandlungen benutzt werden, aber an einer Behandlung muss mindestens ein Medikament genutzt werden. - Eine Behandlung erfolgt immer für einen Patienten aufgrund einer Krankheit durch einen Arzt. Ein Arzt kann dabei beliebig viele Behandlungen durchführen, für eine Krankheit kann es beliebig viele Behandlungen geben und ein Patient wird mindestens einmal behandelt. 1

Aufgabe 1: Informationsmodellierung (2) Gehalt Einst. Datum Angestellter Vertr. Ende Ausbild. Hilfskraft [0,1] ZNr Name Medik. [1,*] [0,*] [0,*] wechselwirkt mit [0,*] PID arbeitet für wirkt gegen wird benutzt Vorname Nachname Geburtsdatum Person Fachgeb. Gewicht Arzt [0,*] [0,*] Sympt. [0,*] [0,*] Krankheit WHOID Name Straße [1,*] HNr Adresse Patient [1,*] wird behandelt [1,1] gegen Behandlung PLZ Ort Krankenkasse Größe Beh.Nr. Datum 2

Aufgabe 2: Abbildung ER nach RM (1) E1 R1 E2 Relation 1 Relation 2? Relation 3 Abbildungsregeln 2 Entity-Mengen mit (n:m)-verknüpfung: Relationship als eigene Relation notwendig 1 Entity-Menge mit (n:m)-verknüpfung: Relationship als eigene Relation notwendig, Umbenennung erforderlich! 2 Entity-Mengen mit (1:n)-Verknüpfung: ohne eigene Relation darstellbar 1 Entity-Menge mit (1:n)-Verknüpfung: ohne eigene Relation darstellbar, Umbenennung erforderlich! 3

Aufgabe 2: Abbildung ER nach RM (2) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet 4

Aufgabe 2: Abbildung ER nach RM (3) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet Person(PID, Vorname, Nachname, Partei Partei.Name) Partei(Name, Mitgliederzahl) 5

Aufgabe 2: Abbildung ER nach RM (4) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet Partei(Name, Mitgliederzahl, Fraktion Fraktion.Name) Fraktion(Name, Sitze) 6

Aufgabe 2: Abbildung ER nach RM (5) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet Fraktion(Name, Sitze) koaliert_mit(partner1 Fraktion.Name, Partner2 Fraktion.Name) 7

Aufgabe 2: Abbildung ER nach RM (6) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet Person(PID, Vorname, Nachname) Abgeordneter(PID Person.PID, Wahlkreis) 8

Aufgabe 2: Abbildung ER nach RM (7) Name Mitgliederanzahl PID Vorname Nachname Partei 1 n ist 1 Mitglied Person ist Mitglied ist ein Amt n n koaliert mit Fraktion Abgeordneter m ist Mitglied n Ausschuss m Name Sitze Wahlkreis ID Grösse Fachgebiet Abgeordneter(PID Person.PID, Wahlkreis) Ausschuss(ID, Größe, Fachgebiet) ist_mitglied(abgeordneter Abgeordneter.PID, Ausschuss Ausschuss.ID, Amt) 9

Aufgabe 2: Abbildung ER nach RM (8) Resultierendes relationales Datenbankschema: Person(PID, Vorname, Nachname, Partei Partei.Name) Abgeordneter(PID Person.PID, Wahlkreis) Partei(Name, Mitgliederzahl, Fraktion Fraktion.Name) Fraktion(Name, Sitze) Ausschuss(ID, Groesse, Fachgebiet) ist_mitglied(abgeordneter Abgeordneter.PID, Ausschuss Ausschuss.ID, Amt) koaliert_mit(partner1 Fraktion.Name, Partner2 Fraktion.Name) 10

Aufgabe 3: Relationale Algebra Schema Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) Betrag Zeit EMail PNr ANr Alter n bietet m Bez Person Artikel Name 1 n n 1 verkauft Menge wirbt Startpreis 11

Aufgabe 3: Relationale Algebra a) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Artikel (ANr,Bezeichnung), auf welche eine Person mit dem Namen Müller geboten hat, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) 12

Aufgabe 3: Relationale Algebra a) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Artikel (ANr,Bezeichnung), auf welche eine Person mit dem Namen Müller geboten hat, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) 13

Aufgabe 3: Relationale Algebra a) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Artikel (ANr,Bezeichnung), auf welche eine Person mit dem Namen Müller geboten hat, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) ANr,Bezeichnung ( Name 'Müller' (Person) PNr Bieter Gebot Artikel ANr Artikel) 14

Aufgabe 3: Relationale Algebra b) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Personen (PNr), welche noch keinen Artikel mit der Bezeichnung Buch verkauft haben, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) 15

Aufgabe 3: Relationale Algebra b) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Personen (PNr), welche noch keinen Artikel mit der Bezeichnung Buch verkauft haben, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) 16

Aufgabe 3: Relationale Algebra b) Anfrage in der Relationalen Algebra Geben Sie einen Relationenalgebra-Ausdruck an, der alle Personen (PNr), welche noch keinen Artikel mit der Bezeichnung Buch verkauft haben, ausgibt. Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) PNr (Person) - Verkäufer ( Bezeichnun g ' Buch' (Artikel)) 17

Aufgabe 3: Relationale Algebra c) Anfrage in der Relationalen Algebra Geben Sie eine SQL-Anweisung an, welche die gleiche Ergebnismenge liefert wie der folgende Relationenalgebra-Ausdruck: Name (( Person Gebot Artikel) ( PNr (Person))) PNr Bieter Artikel ANr Werber PNr Verkäufer PNr 18

Aufgabe 3: Relationale Algebra c) Anfrage in der Relationalen Algebra Geben Sie eine SQL-Anweisung an, welche die gleiche Ergebnismenge liefert wie der folgende Relationenalgebra-Ausdruck: Name (( Person Gebot Artikel) ( PNr (Person))) PNr Bieter Artikel ANr Werber PNr Verkäufer PNr SELECT DISTINCT p1.name FROM Person p1, Gebot g, Artikel a, Person p2 WHERE p1.pnr=g.bieter AND g.artikel=a.anr AND p2.pnr=a.verkäufer AND p2.pnr=p1.werber; 19

Aufgabe 3: Relationale Algebra c) Anfrage in der Relationalen Algebra Geben Sie eine SQL-Anweisung an, welche die gleiche Ergebnismenge liefert wie der folgende Relationenalgebra-Ausdruck: Name (( Person Gebot Artikel) ( PNr (Person))) PNr Bieter Artikel ANr Werber PNr Verkäufer PNr SELECT DISTINCT p1.name FROM Person p1, Gebot g, Artikel a, Person p2 WHERE p1.pnr=g.bieter AND g.artikel=a.anr AND p2.pnr=a.verkäufer AND p2.pnr=p1.werber; 20

Aufgabe 3: Relationale Algebra d) Anfrage in der Relationalen Algebra Der kleinste in der Datenbank gespeicherte Startpreis eines Artikels beträgt 10 und der größte 159. Bestimmen Sie die Selektivität der Selektion Startpreis 46 unter der Annahme einer Gleichverteilung. Bei Gleichverteilung: SF = Anteil an Elementen, die die Bedingung erfüllen SF = (Anzahl an Preisen größer gleich 46) / (Anzahl an Preisen) SF = 114/150 = 0.76 21

Aufgabe 3: Relationale Algebra d) Anfrage in der Relationalen Algebra Der kleinste in der Datenbank gespeicherte Startpreis eines Artikels beträgt 10 und der größte 159. Bestimmen Sie die Selektivität der Selektion Startpreis 46 unter der Annahme einer Gleichverteilung. Bei Gleichverteilung: SF = Anteil an Elementen, die die Bedingung erfüllen SF = (Anzahl an Preisen größer gleich 46) / (Anzahl an Preisen) SF = 114/150 = 0.76 22

Aufgabe 3: Relationale Algebra d) Anfrage in der Relationalen Algebra Der kleinste in der Datenbank gespeicherte Startpreis eines Artikels beträgt 10 und der größte 159. Bestimmen Sie die Selektivität der Selektion Startpreis 46 unter der Annahme einer Gleichverteilung. Bei Gleichverteilung: SF = Anteil an Elementen, die die Bedingung erfüllen SF = (Anzahl an Preisen größer gleich 46) / (Anzahl an Preisen) SF = 114/150 = 0.76 Häufig wird vereinfacht berechnet: SF = (maxsel-minsel)/(max-min) = (159-46)/(159-10)=113/149=0.758 23

Aufgabe 4: SQL (1) Schema Person(PNr, Name, EMail, Alter, Werber Person.PNr) Artikel(ANr, Bezeichnung, Menge, Startpreis, Verkäufer Person.PNr) Gebot(Bieter Person.PNr, Artikel Artikel.ANr, Zeit, Betrag) Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 24

Aufgabe 4: SQL (2) Die PNr, die EMail und alle gebotenen Beträge der Personen namens Harry nach PNr absteigend sortiert. SELECT p.pnr, p.email, g.betrag FROM Person p, Gebot g WHERE g.bieter = p.pnr AND p.name = 'Harry' ORDER BY p.pnr DESC Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 25

Aufgabe 4: SQL (3) Die PNr, der Name sowie der in allen Geboten abgegebene Gesamtbetrag jeder Person, die älter als 30 Jahre alt ist SELECT p.pnr, p.name, SUM(g.Betrag) as Gesamtbetrag FROM Person p, Gebot g WHERE p.alter > 30 AND g.bieter = p.pnr GROUP BY p.pnr, p.name; Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 26

Aufgabe 4: SQL (4) Die Namen und EMails aller Personen, die noch nie geboten haben. SELECT DISTINCT p.name, p.email FROM Person p WHERE p.pnr NOT IN( SELECT g.bieter FROM Gebot g) SELECT DISTINCT p.name, p.email FROM Person p WHERE NOT EXISTS( SELECT * FROM Gebot g WHERE g.bieter=p.pnr) Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 27

Aufgabe 4: SQL (5) Die ANr, die Bezeichnung und den Startpreis jedes Artikels, dessen Verkäufer von einer Person mit dem Namen Bond geworben wurde. SELECT a.anr, a.bezeichnung, a.startpreis FROM Person p1, Person p2, Artikel a WHERE a.verkäufer = p1.pnr AND p1.werber = p2.pnr AND p2.name = 'Bond' Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 28

Aufgabe 4: SQL (6) Die PNr und das durchschnittliche Alter der von ihm geworbenen Personen für jeden Werber, der maximal 10 Personen geworben hat. SELECT p.werber, AVG(p.Alter) as Durchschnittsalter FROM Person p GROUP BY p.werber HAVING(COUNT(*)<=10) Betrag Zeit EMail PNr ANr Alter n bietet m Bez Name Person 1 n n 1 verkauft Artikel Menge wirbt Startpreis 29

Aufgabe 5: Änderungen auf Sichten CREATE VIEW Rockmusiker AS SELECT * FROM Musiker WHERE Genre = 'Rock CREATE VIEW Altrocker AS SELECT * FROM Rockmusiker WHERE Alter > 50; CREATE VIEW Pensionäre AS SELECT * FROM Altrocker WHERE Status = 'Ruhestand'; Superreiche: Vermögen>100M Altrocker: Alter > 50 Rockmusiker: Genre = Rock Musiker Pensionäre: Status = Ruhestand CREATE VIEW Superreiche AS SELECT * FROM Rockmusiker WHERE Vermögen > 100M; 30

Aufgabe 5: Änderungen auf Sichten UPDATE Rockmusiker SET Alter = 49 WHERE Alter = 51 AND Status ='aktiv' AND Vermögen < 50M Pensionäre: Status = Ruhestand Superreiche: Vermögen>100M Altrocker:Alter > 50 Rockmusiker: Genre = Rock Musiker Konf. 1 Konf. 2 Konf. 3 Konf. 4 Rockmusiker - - CASC - Altrocker - CASC - - Pensionäre - - - CASC Superreiche - - CASC - a) Ja / R Ja / R Ja / R Ja / R 31

Aufgabe 5: Änderungen auf Sichten INSERT INTO Superreiche VALUES (12,'Madonna',50,'Pop',500M,'aktiv') Pensionäre: Status = Ruhestand Superreiche: Vermögen>100M Altrocker:Alter > 50 Rockmusiker: Genre = Rock Musiker Konf. 1 Konf. 2 Konf. 3 Konf. 4 Rockmusiker - - CASC - Altrocker - CASC - - Pensionäre - - - CASC Superreiche - - CASC - b) Ja / - Ja / - Nein Ja / - 32

Aufgabe 5: Änderungen auf Sichten UPDATE Rockmusiker SET Status = 'aktiv WHERE Name = 'Beatles' AND Alter > 60 AND Vermögen > 200M Pensionäre: Status = Ruhestand Superreiche: Vermögen>100M Altrocker:Alter > 50 Rockmusiker: Genre = Rock Musiker Konf. 1 Konf. 2 Konf. 3 Konf. 4 Rockmusiker - - CASC - Altrocker - CASC - - Pensionäre - - - CASC Superreiche - - CASC - c) Ja / R,A,S Ja / R,A,S Ja / R,A,S Ja / R,A,S 33

Aufgabe 5: Änderungen auf Sichten UPDATE Pensionäre SET Alter = 48 WHERE Vermögen > 200M Pensionäre: Status = Ruhestand Superreiche: Vermögen>100M Altrocker:Alter > 50 Rockmusiker: Genre = Rock Musiker Konf. 1 Konf. 2 Konf. 3 Konf. 4 Rockmusiker - - CASC - Altrocker - CASC - - Pensionäre - - - CASC Superreiche - - CASC - d) Ja / R,S Nein Ja / R,S Nein 34

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O i) Schlüsselkandidaten: (Attributkombinationen die eindeutig und minimal sind) SK1: N,D SK2: S,D 35

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O i) Schlüsselkandidaten: (Attributkombinationen die eindeutig und minimal sind) SK1: N,D SK2: S,D 36

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O i) Schlüsselkandidaten: (Attributkombinationen die eindeutig und minimal sind) SK1: N,D SK2: S,D 37

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O i) Schlüsselkandidaten: (Attributkombinationen die eindeutig und minimal sind) SK1: N,D SK2: S,D ii) Nicht-Primärattribute: (Attribute die in keinem Schlüsselkandidaten vorkommen) NP1: O NP2: T NP3: Z 38

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O iii) Normalformen: - 1NF: JA, da ALLE Attribute atomar sind (siehe Aufgabenstellung) - 2NF: JA, da kein Nicht-Primärattribut partiell von einem der Schlüsselkandidaten abhängt (!! S ist kein Nicht-Primärattribut) - 3NF: NEIN, da O und Z über T transitiv von dem Schlüsselkandidaten N,D abhängen 39

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O iii) Normalformen: - 1NF: JA, da ALLE Attribute atomar sind (siehe Aufgabenstellung) - 2NF: JA, da kein Nicht-Primärattribut partiell von einem der Schlüsselkandidaten abhängt (!! S ist kein Nicht-Primärattribut) - 3NF: NEIN, da O und Z über T transitiv von dem Schlüsselkandidaten N,D abhängen 40

Aufgabe 6: Normalformen R(N,O,D,T,Z,S) Fkt. Abhängigkeiten FA1: N S FA2: T O, Z FA3: N,D T FA4: S,D N FA5: Z O iii) Normalformen: - 1NF: JA, da ALLE Attribute atomar sind (siehe Aufgabenstellung) - 2NF: JA, da kein Nicht-Primärattribut partiell von einem der Schlüsselkandidaten abhängt (!! S ist kein Nicht-Primärattribut) - 3NF: NEIN, da O und Z über T transitiv von dem Schlüsselkandidaten N,D abhängen 41

Aufgabe 7: Transaktionen (1) A) Bestimmen Sie bei den folgenden drei Schedules S 1, S 2 und S 3 jeweils, ob diese serialisierbar sind oder nicht. Begründen Sie Ihre Antwort, indem Sie entweder alle äquivalenten, seriellen Transaktionsreihenfolgen (z.b. T 1 T 2 T 3 ) oder einen auftretenden Konfliktzyklus angeben. Erinnerung: Die parallele Ausführung einer Menge von Transaktionen ist serialisierbar, wenn es eine serielle Ausführung derselben TA-Menge gibt, die den gleichen DB-Zustand und die gleichen Ausgabewerte wie die ursprüngliche Ausführung erzielt 42

Aufgabe 7: Transaktionen (2) A) i) S 1 = r 1 (y) r 2 (z) w 3 (y) w 2 (x) r 3 (y) r 1 (y) r 3 (x) r 1 (y) 1 2 r 1 (y) r 2 (z) w 2 (x) 3 w 3 (y) r 3 (y) r 3 (x) Aus 1 ergibt sich: T 1 vor T 3 Aus 2 ergibt sich: T 3 vor T 1 Aus 3 ergibt sich: T 2 vor T 3 S 1 ist nicht serialisierbar! 43

Aufgabe 7: Transaktionen (3) A) ii) S 2 = r 1 (z) r 3 (x) r 2 (x) r 1 (y) w 2 (z) r 3 (y) w 3 (y) r 1 (z) 1 r 1 (y) 2 r 2 (x) w 2 (z) r 3 (x) r 3 (y) w 3 (y) Aus 1 ergibt sich: T 1 vor T 2 Aus 2 ergibt sich: T 1 vor T 3 S 2 ist serialisierbar: T 1 T 2 T 3 oder T 1 T 3 T 2 44

Aufgabe 7: Transaktionen (4) A) iii) S 3 = w 2 (y) r 3 (z) r 1 (x) r 1 (y) w 3 (x) w 3 (z) 1 r 1 (x) r 1 (y) w 2 (y) 2 r 3 (z) w 3 (x) w 3 (z) Aus 1 ergibt sich: T 2 vor T 1 Aus 2 ergibt sich: T 1 vor T 3 S 3 ist serialisierbar: T 2 T 1 T 3 45

Aufgabe 7: Transaktionen (5) B) Geben Sie eine Operation von T 2 zum Zeitschritt 3 an die für T 1 ein non-repeatable Read verursacht Zeitschritt T1 T2 1 SELECT SUM(Gehalt) FROM Personal WHERE Abteilung = Treadstone ; 2 SELECT AVG(Alter) FROM Personal; 3 4 SELECT SUM(Gehalt) FROM Personal WHERE Abteilung = Treadstone ; 5 COMMIT; 6 COMMIT; Erinnerung: Voraussetzung für non-repeatable Read ist eine Abhängigkeit der Form r 1 (X) w 2 (X) 46

Aufgabe 7: Transaktionen (6) B) Lösung: Update oder Delete eines gelesenen Datensatzes Zeitschritt T1 T2 1 SELECT SUM(Gehalt) FROM Personal WHERE Abteilung = Treadstone ; 2 SELECT AVG(Alter) FROM Personal; 3 UPDATE Personal SET Gehalt = Gehalt*2 WHERE Abteilung = Treadstone ; 4 SELECT SUM(Gehalt) FROM Personal WHERE Abteilung = Treadstone ; 5 COMMIT; 6 COMMIT; Warum kein Insert - Insert Phantomproblem 47

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) 48

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) Schlüsselwert 3 (Splitten) 49

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) Schlüsselwert 17 (einfaches Einfügen) 50

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) Schlüsselwert 83 (einfaches Einfügen) 51

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) Schlüsselwert 33 (Splitten) 52

Aufgabe 8: Einfügen und Löschen in B-Bäumen a) Einfügen: Gegeben ein Baum der Klasse τ(1,2) Schlüsselwert 79 (Splitten) 53

Aufgabe 8: Einfügen und Löschen in B-Bäumen b) Löschen: Gegeben ein Baum der Klasse τ(2,3) 54

Aufgabe 8: Einfügen und Löschen in B-Bäumen b) Löschen: Gegeben ein Baum der Klasse τ(2,3) Schlüsselwert 17 (Ausgleichen) 55

Aufgabe 8: Einfügen und Löschen in B-Bäumen b) Löschen: Gegeben ein Baum der Klasse τ(2,3) Schlüsselwert 96 (Ausgleichen) 56

Aufgabe 8: Einfügen und Löschen in B-Bäumen b) Löschen: Gegeben ein Baum der Klasse τ(2,3) Schlüsselwert 18 (Mischen) 57

Aufgabe 8: Einfügen und Löschen in B-Bäumen b) Löschen: Gegeben ein Baum der Klasse τ(2,3) Schlüsselwert 16 (Ausgleichen) 58

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (1) Wie groß ist die Differenz der Anzahl an Datensätzen der jeweiligen Bäume? Maximal gefüllter B-Baum 1 Wurzel mit 6 Einträgen Datensätze befinden sich in ALLEN Knoten 8 * 6 = 48 Datensätze 7 Blattknoten mit je 6 Einträgen 59

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (1) Wie groß ist die Differenz der Anzahl an Datensätzen der jeweiligen Bäume? Minimal gefüllter B*-Baum 1 Wurzel mit 1 Eintrag 2 innere Knoten mit je 2 Einträgen Datensätze befinden sich in NUR in den Blattknoten 6 * 3 = 18 Datensätze 6 Blattknoten mit je 3 Einträgen 60

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (1) Wie groß ist die Differenz der Anzahl an Datensätzen der jeweiligen Bäume? Maximal gefüllter B-Baum Minimal gefüllter B*-Baum 48 Datensätze 18 Datensätze Der Unterschied beträgt 30 Datensätze 61

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (2) Wenn man sequentiell alle Datensätze aus einem der beiden Bäume lesen möchte, wieviele verschiedene Knoten (Seiten) muss man in dem jeweiligen Baum lesen? Maximal gefüllter B-Baum Man muss ALLE Knoten lesen 8 Knoten 62

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (2) Wenn man sequentiell alle Datensätze aus einem der beiden Bäume lesen möchte, wieviele verschiedene Knoten (Seiten) muss man in dem jeweiligen Baum lesen? Minimal gefüllter B*-Baum Man muss ALLE Blattknoten lesen. Dafür muss man einmal den Baum der Höhe nach durchlaufen 6 Blätter + 2 innere Knoten = 8 Knoten 63

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (3) Wenn man wahlfrei einen Datensatz aus einem der beiden Bäume lesen möchte, wieviel Knoten (Seiten) muss man im jeweiligen Baum maximal lesen? Maximal gefüllter B-Baum Man muss den Baum im schlechtesten Fall von Wurzel zu Blatt durchlaufen 2 Knoten 64

Aufgabe 9: Berechnungen in B- und B*-Bäumen a) Gegeben seien ein maximal gefüllter B-Baum der Klasse τ(3,2) und ein minimal gefüllter B*-Baum der Klasse τ(2, 3, 3). (3) Wenn man wahlfrei einen Datensatz aus einem der beiden Bäume lesen möchte, wieviel Knoten (Seiten) muss man im jeweiligen Baum maximal lesen? Minimal gefüllter B*-Baum Man muss den Baum immer von Wurzel zu Blatt durchlaufen 3 Knoten 65

Aufgabe 9: Berechnungen in B- und B*-Bäumen b) Gegeben sei ein B*-Baum der Klassse (k, k*, h). Innerhalb des zugehörigen (fiktiven) DBS wird vereinfachend eine Seitengröße von 800B (L=800B) angenommen. Die weiteren Kenngrößen sind dabei wie folgt festgelegt: l M = 4B l K = 5B l D = 160B l P = 6B Die inneren Baum- und Blattknoten entsprechen jeweils genau einer Seite. Wie groß sind demnach k und k*? 66

Aufgabe 9: Berechnungen in B- und B*-Bäumen b) Gegeben sei ein B*-Baum der Klassse (k, k*, h). Innerhalb des zugehörigen (fiktiven) DBS wird vereinfachend eine Seitengröße von 800B (L=800B) angenommen. Die weiteren Kenngrößen sind dabei wie folgt festgelegt: l M = 4B l K = 5B l D = 160B l P = 6B Die inneren Baum- und Blattknoten entsprechen jeweils genau einer Seite. Wie groß sind demnach k und k*? 67

Aufgabe 9: Berechnungen in B- und B*-Bäumen b) Gegeben sei ein B*-Baum der Klassse (k, k*, h). Innerhalb des zugehörigen (fiktiven) DBS wird vereinfachend eine Seitengröße von 800B (L=800B) angenommen. Die weiteren Kenngrößen sind dabei wie folgt festgelegt: l M = 4B l K = 5B l D = 160B l P = 6B Die inneren Baum- und Blattknoten entsprechen jeweils genau einer Seite. Wie groß sind demnach k und k*? 68

Aufgabe 9: Berechnungen in B- und B*-Bäumen b) Gegeben sei ein B*-Baum der Klassse (k, k*, h). Innerhalb des zugehörigen (fiktiven) DBS wird vereinfachend eine Seitengröße von 800B (L=800B) angenommen. Die weiteren Kenngrößen sind dabei wie folgt festgelegt: l M = 4B l K = 5B l D = 160B l P = 6B Die inneren Baum- und Blattknoten entsprechen jeweils genau einer Seite. Wie groß sind demnach k und k*? 69

Aufgabe 9: Berechnungen in B- und B*-Bäumen b) Gegeben sei ein B*-Baum der Klassse (k, k*, h). Innerhalb des zugehörigen (fiktiven) DBS wird vereinfachend eine Seitengröße von 800B (L=800B) angenommen. Die weiteren Kenngrößen sind dabei wie folgt festgelegt: l M = 4B l K = 5B l D = 160B l P = 6B Die inneren Baum- und Blattknoten entsprechen jeweils genau einer Seite. Wie groß sind demnach k und k*? 70

Zusatzinfo: Doppelter Überlauf (Splitfaktor m=2) Split von 2 auf 3 Knoten wenn zwei Nachbarknoten voll sind Verschiedene Implementationen/Variationen denkbar Variation der Klausur: 1. Lesen des rechten Nachbarns 2. Entweder Ausgleichen oder gemeinsamer Split Ausnahme: Der ganz rechte Knoten einer Ebene hat keinen rechten Nachbarn => Verwendung des linken Nachbarns Bei dreifachem Überlauf (Splitfaktor m=3) werden immer beide Nachbarknoten angeschaut. Reihenfolge erst links, dann rechts. Implementationsspezifisch: Behandlung der Knoten mit nur einem Nachbarn (kommt in der Klausur nicht vor) 71

Aufgabe 10: Referenzielle Aktionen (1) 1. Welche Anforderung erfüllt ein (bzgl. der referentiellen Aktionen) sicheres Schema? 72

Aufgabe 10: Referenzielle Aktionen (1) 1. Welche Anforderung erfüllt ein (bzgl. der referentiellen Aktionen) sicheres Schema? Bei einem sicheren Schema ist das Ergebnis einer Änderungsoperation unabhängig von der Reihenfolge, in der die referentiellen Aktionen ausgeführt werden; es treten also keine reihenfolgeabhängigen Ergebnisse auf. 73

Aufgabe 10: Referenzielle Aktionen (2) 2. Ist das vorliegende Schema sicher? Ja. 74

Aufgabe 10: Referenzielle Aktionen (2) 75

Aufgabe 10: Referenzielle Aktionen (3) 3. Geben Sie eine Folge von SQL-DDL-Anweisungen an, welche die Schemaänderung realisiert und dabei die Löschung der Relation selbst vermeidet. CREATE TABLE Artikel ( Titel VARCHAR(50) PRIMARY KEY, Datum DATE NOT NULL, Hauptautor INTEGER NOT NULL, veröffentlicht VARCHAR(50) NOT NULL, CONSTRAINT fkhauptautor FOREIGN KEY (Hauptautor) REFERENCES Wissenschaftler(SVNr) ON DELETE CASCADE, CONSTRAINT fkveröffentlicht FOREIGN KEY (veröffentlicht) REFERENCES Zeitschrift(Name) ON DELETE CASCADE ); 76

Aufgabe 10: Referenzielle Aktionen (3) 3. Geben Sie eine Folge von SQL-DDL-Anweisungen an, welche die Schemaänderung realisiert und dabei die Löschung der Relation selbst vermeidet. ALTER TABLE Artikel DROP CONSTRAINT fkveröffentlicht; ALTER TABLE Artikel ADD CONSTRAINT fkveröffentlicht FOREIGN KEY (veröffentlicht) REFERENCES Zeitschrift(Name) ON DELETE RESTRICT; 77

Aufgabe 10: Referenzielle Aktionen (4) 4. Ist das geänderte Schema sicher? Nein Reihenfolgeabhängige Ergebnisse treten auf, wenn der zu löschende Wissenschaftler Hauptherausgeber einer Zeitschrift ist, die ausschließlich Artikel veröffentlicht hat bei denen dieser Wissenschaftler Hauptautor ist. 78

Aufgabe 10: Referenzielle Aktionen (4) 79

WE WANT YOU! GDB-Übungsgruppenleiter für das WS 2019/2020 gesucht! email an panse@informatik.uni-hamburg.de 80