Einsatz und Realisierung von Datenbanksystemen - ERDB Übungsleitung Maximilian Bandle, Schüle , Josef Schmeißer
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Einsatz und Realisierung von Datenbanksystemen Einsatz und Realisierung von Datenbanksystemen ERDB Übungsleitung Maximilian {Bandle, Schüle}, Josef Schmeißer i3erdb@in.tum.de Folien erstellt von Maximilian Bandle & Alexander Beischl 1
Einsatz und Realisierung von Datenbanksystemen Organisatorisches Disclaimer Die Folien werden von der Übungsleitung allen Tutoren zur Verfügung gestellt. Sollte es Unstimmigkeiten zu den Vorlesungsfolien von Prof. Kemper geben, so sind die Folien aus der Vorlesung ausschlaggebend. Falls Ihr einen Fehler oder eine Unstimmigkeit findet, schreibt an i3erdb@in.tum.de mit Angabe der Foliennummer. ERDB 2020 - Tutorübung 4 2
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken ERDB 2020 - Tutorübung 3 3
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken Einführung EDB Extensionale DatenBasis • EDB/Faktenbasis ist die Menge der (Basis-Relationen) Relationen • Deduktion durch Datalog Datalog • (Data + Prolog -> Datalog) Regeln als Programm • Die IDB entsteht durch Anwenden der Datalog-Regeln auf die EDB IDB ➡ Erzeugt weitere Menge von Relationen Intensionale DatenBasis (hergeleitete Relationen) ERDB 2020 - Tutorübung 3 4
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken Regeln Basisrelationen: vorlesungen(VorlNr, Titel, SWS, PersNr) professoren(PersNr, Name, Rang, Raum) Regelerzeugung und Join: sokLV(T,S) :-vorlesungen(_,T,S,P ), professoren(P, ’Sokrates’,_,_ ), S>2. ERDB 2020 - Tutorübung 3 5
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken Syntax Zeichenketten: Worte mit kleinem Beginn oder in Anführungszeichen Variablen: Worte mit großem Buchstaben als Beginn Relation: daten(feld1,feld2,feld3) Regeln: name(Param1, …) :- Ausdruck. Punkt immer als Abschluss Logische Verknüpfung: Komma => Und Semikolon oder Regel mehrfach definieren => Oder Prädikate: , ==, \= Negation: not(Ausdruck) Steht am Ende und benutzt nur beschränkte Variablen ERDB 2020 - Tutorübung 3 6
A_2.2_Zertifikat_f_195_188r_nicht_in.tum.de_Adresse Ein Schlüsselpaar für OpenPGP können Sie sich jederzeit selbst und für jede E-Mail- hlüsselpaar Ein Adressefür zulegen. Schl OpenPGP üsselpaar können für Besch OpenPGPSieSie äftigen Einsatz sich und sichjederzeit kRealisierung önnen Sie näher selbst sich mit von und fürselbst jederzeit OpenPGP, Datenbanksystemen jede und damit E-Mail- für jede Sie Ihre E-Mail- E-Mails ver- zulegen. schlBesch Adresse üsseln äftigen könnenSie zulegen. Besch und sich näherSie äftigen schicken mit OpenPGP, Siesich Ihremnäher mit Tutor damit Sie Ihre OpenPGP, eine verschl E-Mails damit üsselte Sie ver- und Ihre E-Mails signierte ver- E-Mail. ln können schl und schicken üsseln Ihr Tutor können erkl Sie undIhrem ärt Ihnen Tutor schicken während dereine Sie Ihrem verschl Tutor Übungsstunde, üsselte eine und anverschl welchesignierte üsselte E-Mail. AdresseundSie signierte Ihre E-Mail E-Mail. schi- or erklärt Ihr ckenIhnen Aufgabe 1 Tutor sollenw ährend erkl ärtwo und der sieÜbungsstunde, Ihnen während den an welche der Übungsstunde, entsprechenden Adresse Sie Ihre an welche ö↵entlichen Schl E-Mail Adresse üssel schi- Sie erhalten.Ihre DafE-Mail schi- ür erhalten len undSiewo cken sie den sollen einen entsprechenden und ö↵entlichen Schl wo sie den entsprechenden Bonuspunkt. üssel erhalten. ö↵entlichen Dafür Schlüssel erhaltenDafür erhalten erhalten. n Bonuspunkt. Sie einen Bonuspunkt. Hausaufgabe 6 Gegeben sei die folgende Segler-Boots-Reservierung Datenbank: 6 Gegeben 6sei die Hausaufgabe folgende Gegeben seiSegler-Boots-Reservierung Datenbank: Datenbank: die folgende Segler-Boots-Reservierung %segler(SID,SNAME,EINSTUFUNG,ALTER) r(SID,SNAME,EINSTUFUNG,ALTER) %segler(SID,SNAME,EINSTUFUNG,ALTER) %boot(BID,BNAME,FARBE) BID,BNAME,FARBE) %boot(BID,BNAME,FARBE) %reservierung(SID,BID,DATUM) vierung(SID,BID,DATUM) %reservierung(SID,BID,DATUM) Beantworten Sie die folgenden Anfragen in Datalog und testen Sie unter (http://datalog. orten Sie die folgenden Beantworten db.in.tum.de/, Sie Anfragen die folgenden Examples in=> Datalog Anfragen undintesten Sie und Datalog unter Segler-Boots-Reservierung): (http://datalog. testen Sie unter (http://datalog. tum.de/, Examples =>Examples db.in.tum.de/, Segler-Boots-Reservierung): => Segler-Boots-Reservierung): 1. Geben Sie die Farben aller Boote, die von ’Lubber’ reserviert wurden aus. ben Sie die 1. Farben aller Boote, die vonBoote, ’Lubber’ reserviert wurden aus. wurden aus. 2. Geben Geben Sie Sie die alleFarben Segler aller aus, die einedie von ’Lubber’ Einstufung von reserviert mindestens 8 oder das Boot 103 ben Sie 2. alleGeben SeglerSie reserviert aus, dieSegler alle haben. eine Einstufung aus, die eine von mindestens Einstufung von8 mindestens oder das Boot 103 das Boot 103 8 oder erviert haben. 3. reserviert Geben Siehaben.die Namen aller Segler aus, die mindestens zwei Boote reserviert haben. ben Sie die 3. Namen aller Segler aus, dieSegler mindestensdie zwei Boote reserviert haben. 4. Geben Geben Sie Sie die alle Namen Segler aus,allerdie nochaus,nie ein mindestens zwei Boote rotes Boot reserviert reserviert haben. haben. ben Sie alle 4. SeglerSie aus,alle dieSegler noch aus,nie ein dierotes nochBoot reserviert haben. 5. Geben Geben Sie alle Segler aus, die mehr nie20 als ein rotesalt Jahre Boot sindreserviert haben. und kein rotes Boot reserviert ben Sie alle Segler Sie 5. Geben haben. aus,alle dieSegler mehr alsaus,20die Jahre mehraltalssind und kein 20 Jahre alt rotes Bootkein sind und reserviert rotes Boot reserviert ben. 6. haben. Geben Sie die Ids der Segler aus, deren Einstufung besser als die eines Seglers mit ben ERDB Sie 6. die 2020Ids derSieSegler - Tutorübung Geben Namen 3 Ids die ’Horatio’ aus,der ist. deren SeglerEinstufung aus, derenbesser als die besser Einstufung eines Seglers als die mit eines Seglers mit7
Ein Schlüsselpaar für OpenPGP können Sie sich jederzeit selbst und für jede E-Mail- hlHausaufgabe üsselpaar Adresse für 6 OpenPGP Gegeben zulegen. können Besch sei dieSie äftigen sich sichjederzeit folgende Einsatz Sie und selbst und fürdamit Segler-Boots-Reservierung nähervonmit Realisierung OpenPGP, Datenbanksystemen jede E-Mail- Datenbank: Sie Ihre E-Mails ver- zulegen. schlBesch üsselnäftigen könnenSie undsich näher mit schicken OpenPGP, Sie Ihrem Tutordamit Sie Ihre eine verschl E-Mails üsselte undver- signierte E-Mail. ln können und schicken Ihr Tutor Sie Ihrem erklärt Ihnen während %segler(SID,SNAME,EINSTUFUNG,ALTER) Tutor dereine verschlüsselte Übungsstunde, an und welchesignierte AdresseE-Mail. Sie Ihre E-Mail schi- or erklärt cken Ihnen Aufgabe 1 sollen während und woder %boot(BID,BNAME,FARBE) sieÜbungsstunde, den entsprechenden an welche Adresse Schl ö↵entlichen Sie Ihre üsselE-Mail schi-Dafür erhalten erhalten. len undSiewo sie den einen entsprechenden ö↵entlichen Schlüssel erhalten. Dafür erhalten Bonuspunkt. %reservierung(SID,BID,DATUM) n Bonuspunkt. Hausaufgabe 6 Gegeben sei die folgende Segler-Boots-Reservierung Datenbank: 6 Beantworten Gegeben Siefolgende sei die die folgenden Anfragen in Datalog und Segler-Boots-Reservierung testen Sie unter (http://datalog. Datenbank: db.in.tum.de/, Examples => Segler-Boots-Reservierung): %segler(SID,SNAME,EINSTUFUNG,ALTER) r(SID,SNAME,EINSTUFUNG,ALTER) 1. Geben Sie die Farben aller Boote, die von ’Lubber’ reserviert wurden aus. %boot(BID,BNAME,FARBE) BID,BNAME,FARBE) %reservierung(SID,BID,DATUM) 2. Geben Sie alle Segler aus, die eine Einstufung von mindestens 8 oder das Boot 103 vierung(SID,BID,DATUM) reserviert haben. Beantworten Sie die folgenden Anfragen in Datalog und testen Sie unter (http://datalog. orten Sie 3.dieGeben folgendenSie die Namen aller Anfragen Segler aus, die Sie mindestens zwei Boote reserviert haben. db.in.tum.de/, Examplesin=> Datalog und testen unter (http://datalog. Segler-Boots-Reservierung): tum.de/,4.Examples Geben Sie => alle Segler aus, die noch nie ein rotes Boot reserviert haben. Segler-Boots-Reservierung): 1. Geben Sie die Farben aller Boote, die von ’Lubber’ reserviert wurden aus. ben Sie dieGeben 5. FarbenSie alleBoote, aller Segler dieaus,von die ’Lubber’ mehr als reserviert 20 Jahre alt sind und wurden aus.kein rotes Boot reserviert 2. haben. Geben Sie alle Segler aus, die eine Einstufung von mindestens 8 oder das Boot 103 ben Sie allereserviert Segler aus, die eine Einstufung von mindestens 8 oder das Boot 103 haben. 6. Geben Sie die Ids der Segler aus, deren Einstufung besser als die eines Seglers mit erviert haben. 3. Namen Geben Sie die Namen ’Horatio’ ist. aller Segler aus, die mindestens zwei Boote reserviert haben. ben Sie die Namen aller Segler aus, die mindestens zwei Boote reserviert haben. 4. Geben 7. Geben Sie Sie alle die Segler Ids deraus, die noch Segler nie einEinstufung aus, deren rotes Boot besser reserviert als haben. die aller Segler mit ben Sie alleNamenSegler ’Horatio’ aus, die noch nie ein rotes Boot reserviert haben. ist. aus, die mehr als 20 Jahre alt sind und kein rotes Boot reserviert 5. Geben Sie alle Segler ben Sie alle Segler Sie haben. 8. Geben aus,den die Namen mehr alsund 20 Jahre Alter alt dessind und kein ältesten rotes Seglers aus.Boot reserviert ben. 6. Geben Sie die Ids der Segler aus, deren Einstufung besser als die eines Seglers mit ben ERDB Sie die 2020 Ids der’Horatio’ Segler - Tutorübung Namen 3 aus, ist. deren Einstufung besser als die eines Seglers mit 8
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken Tool zum Üben https://datalog.db.in.tum.de ERDB 2020 - Tutorübung 3 9
Einsatz und Realisierung von Datenbanksystemen Deduktive Datenbanken Rekursion Datenbasis: direkt(Start, Ziel, Linie) Ziel: indirekt(Start, Ziel, Stops) 1. Basisfall => Fülle die Relation mit Anfangswerten indirekt( Start, Ziel, Stops ) :- direkt( Start, Ziel, _), Stops = 0. 2. Rekursion => Nutze die Relation selbst und erweitere sie indirekt( Start, Ziel, StopsNeu ) :- indirekt( Start, Station, Stops ), direkt( Station, Ziel, _), StopsNeu = Stops + 1. ERDB 2020 - Tutorübung 3 10
griechischen Götter und Helden: Die Datalogaufgaben können auf http://datalog.db.in.tum.de/ getestet werden. Auf der Seite könnt Sie dann unter Einsatzexamples KindEltern einen und Realisierung vonentsprechenden Datenbanksystemen Datensatz laden. An das Ende der EDB könnt ihr dann Vaterneue IDB Mutter Kind Regeln definieren diese KindEltern und Vater dann Mutter in Kind dem Que- Zeus zu dem ry Eingabefeld abfragen. Zusätzlich Leto in der Apollon Vorlesung vorgestellten Zeus Leto Syntax Apollon hier Aufgabe 2 Zeus Leto noch eine kurz Übersicht der Vergleichsoperatoren: Artemis X < Y, Y Zeus > X Leto(kleiner, Kronos Rheia größer), Artemis Hades X =< Y, X >= Y (kleiner gleich, Kronosgrößer Rheia gleich),Hades X = Y, X\ Zeus = Y (gleich, Maia ungleich), Hermes not(pred(X, Y )) (existiert nichtZeus pred(X,Y)). Maia Hermes Koios Phoebe Leto Koios Phoebe Leto Atlas Pleione Maia Kronos Rheia Poseidon Hausaufgabe 1 Atlas Pleione Maia Kronos Rheia Zeus Kronos Rheia ägung Gegeben sei die nachfolgende KindEltern-Auspr Poseidon für den Stammbaum-Ausschnitt der Formulieren Sie folgende Anfragen in Datalog und testen Sie unter (http://d griechischen Götter und Helden:Kronos Rheia in.tum.de/):Zeus a) Bestimmen Sie alle Geschwisterpaare. Formulieren Sie folgende Anfragen in Datalogb)und testen Ermitteln Sie Sie Paareunter (http://datalog.db. von Cousins und Cousinen beliebigen Grades. D finden Sie auf Wikipedia. in.tum.de/): KindEltern c) Geben Sie alle Verwandtschaftspaare an. Überlegen Sie sich eine geeigne Vater Mutter a) Bestimmen Sie alle Geschwisterpaare. Kind von Verwandtschaft und setzen Sie diese in Datalog um. Zeus Leto Apollon d) Bestimmen Sie alle Nachfahren von Kronos. Formulieren Sie die Anfrage b) Ermitteln Sie Paare von Cousins und Cousinen dass sie unter PostgreSQLGrades. beliebigen ausführbar Die Definition Zeus Leto so Artemis ist (online testen unter: http:// finden Sie auf Wikipedia. com mit der Datenbank PostgreSQL statt MySQL, das Schema Textfel Kronos Rheia leer lassen, Hades müssen aber trotzdem auf ’Build Schema’ drücken). Sie könn c) Geben Sie alle Verwandtschaftspaare Zeus an. Maia Überlegen Sie sich als Common Table Hermes einedefinieren Expression geeignete Definition und dann nutzen: von Verwandtschaft und setzenKoiosSie Phoebe diese in DatalogLeto um. d) Bestimmen Sie alle NachfahrenAtlasvon Kronos. Pleione Formulieren Maia Sie die Anfrage 1 auch in SQL, so dass sie unter PostgreSQL ausführbar Kronos ist (online Rheia Poseidon testen unter: http://sqlfiddle. com mit der Datenbank PostgreSQL Kronos Rheia statt MySQL, Zeusdas Schema Textfeld können sie leer lassen, müssen aber trotzdem auf ’Build Schema’ drücken). Sie können die Daten als Common Formulieren Table Expression Sie folgende Anfragen indefinieren und testen Datalog und dann nutzen: Sie unter (http://datalog.db. ERDB 2020 - Tutorübung 4 in.tum.de/): 11
Einsatz und Realisierung von Datenbanksystemen Aufgabe 1 WITH RECURSIVE kindEltern ( vater , mutter , kind ) as ( VALUES ( ' Zeus ' , ' Leto ' , ' Apollon ') , ( ' Zeus ' , ' Leto ' , ' Artemis ') , ( ' Kronos ' , ' Rheia ' , ' Hades ') , ( ' Zeus ' , ' Maia ' , ' Hermes ') , ( ' Koios ' , ' Phoebe ' , ' Leto ') , ( ' Atlas ' , ' Pleione ' , ' Maia ') , ( ' Kronos ' , ' Rheia ' , ' Poseidon ') , ( ' Kronos ' , ' Rheia ' , ' Zeus ') ), parent ( eltern , kind ) as ( select vater , kind from kindEltern UNION select mutter , kind from kindEltern ) select * from parent where eltern = ' Zeus ' Hausaufgabe 2 Bleiben wir bei dem bekannten Universitätsschema: ERDB 2020 - Tutorübung 4 12
), parent ( eltern , kind ) as ( select vater , kind Einsatz from kindEltern und Realisierung UNION von Datenbanksystemen select mutter , kind from kindEltern ) select * from parent where eltern = ' Zeus ' Aufgabe 3 Hausaufgabe 2 Bleiben wir bei dem bekannten Universitätsschema: Assistenten ( PersNr , Name , Fachgebiet , Boss ) hoeren ( MatrNr , VorlNr ) pruefen ( MatrNr , VorlNr , PersNr , Note ) Vorlesungen ( VorlNr , Titel , SWS , gelesenVon ) Professoren ( PersNr , Name , Rang , Raum ) voraussetzen ( Vorg , Nachf ) Studenten ( MatrNr , Name , Semester ) Formulieren Sie folgende Anfragen in Datalog und testen Sie sie: a) Geben Sie alle Professoren an, die mindestens eine Prüfung abgehalten haben. b) Übersetzen Sie folgenden Ausdruck des Domänenkalküls in Datalog. Machen Sie sich der Bedeutung des Ausdrucks bewusst. {[t] |9 v,s,g([v,t,s,g] 2 Vorlesungen ^ 9 v2([v,v2] 2 voraussetzen ^ 9 s2,g2([v2,‘Wissenschaftstheorie’,s2,g2] 2 Vorlesungen)))} c) Joinen Sie nachfolgende Datalog-Anfrage so, dass Titel ausgegeben werden. Was be- deutet diese Anfrage? geschwisterVL ( N1 , N2 ): - voraussetzen (V , N1 ) , voraussetzen (V , N2 ) , N1 < N2 . nahverwandtVL ( N1 , N2 ): - geschwisterVL ( N1 , N2 ). nahverwandtVL ( N1 , N2 ): - geschwisterVL ( M1 , M2 ) , voraussetzen ( M1 , N1 ) , voraussetzen ( M2 , N2 ). ERDB 2020 - Tutorübung 4 13
der Bedeutung des Ausdrucks bewusst. Einsatz und Realisierung von Datenbanksystemen {[t] |9 v,s,g([v,t,s,g] 2 Vorlesungen ^ 9 v2([v,v2] 2 voraussetzen ^ 9 s2,g2([v2,‘Wissenschaftstheorie’,s2,g2] 2 Vorlesungen)))} Aufgabe 4 c) Joinen Sie nachfolgende Datalog-Anfrage so, dass Titel ausgegeben werden. Was be- deutet diese Anfrage? geschwisterVL ( N1 , N2 ): - voraussetzen (V , N1 ) , voraussetzen (V , N2 ) , N1 < N2 . nahverwandtVL ( N1 , N2 ): - geschwisterVL ( N1 , N2 ). nahverwandtVL ( N1 , N2 ): - geschwisterVL ( M1 , M2 ) , voraussetzen ( M1 , N1 ) , voraussetzen ( M2 , N2 ). Hausaufgabe 3 Geben Sie Datalog Regeln an, die Studenten (Namen angeben) finden, die von einem Prüfer geprüft worden, der selbst nicht die geprüfte Vorlesung gehalten hat. Das korrekte Ergebnis für diese Anfrage ist Russels Prüfling, Carnap. Führen Sie die Anfrage im Datalog Tool aus! 2 ERDB 2020 - Tutorübung 4 14
Einsatz und Realisierung von Datenbanksystemen Aufgabe 5 Hausaufgabe 4 U-Bahnen sind toll! Nehmen wir als Faktenbasis die U-Bahnstationen der Linie U2 Rich- tung Messestadt West und der Linie U6 Richtung Klinikum Großhadern. direkt ( Von , Ziel , Linie ). Formulieren Sie ein Datalog-Prädikat, das Ihnen von Garching-Forschungszentrum aus kommend die erreichbaren Stationen inklusiver der Anzahl der Stationen angibt. Testen Sie es! Hausaufgabe 5 Definieren Sie das Prädikat sg(X,Y) das für “same generation” steht. Zwei Personen ge- hören zur selben Generation, wenn Sie mindestens je ein Elternteil haben, das derselben Generation angehört. ERDB 2020 - Tutorübung 4 15
Einsatz und Realisierung von Datenbanksystemen Fragen? ERDB 2020 - Tutorübung 4 16
Sie können auch lesen