Diskussion: Personal (1) ( ) ER Diagramm: ER-Diagramm: Abteilung [0, n] ist beschäftigt in [0, 1] Person Umsetzung ins Relationenmodell? Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Diskussion: Personal (2) ( ) Zusätzliche Regel: In jeder Abteilung (Person) muss mindestens eine beschäftigt sein ([1 ([1, N]) Umsetzung g ins Relationenmodell? Zusätzliche Regel: Jeder Angestellte (Person) muss in einer Abteilung beschäftigt sein ([1 ([1, 1]) Umsetzung ins Relationenmodell? Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Die relationale Algebra Selektion Pojektion x Kreuzprodukt K d kt Join (Verbund) Umbenennung Semi-Join (linker) Semi-Join (rechter) li k ä linker äußerer ß J i Join rechter äußerer Join Allg. Mengenoperationen Allg Mengenoperationen: Differenz Division g g Vereinigung Durchschnitt Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Beispiel Mengendurchschnitt Finde die PersNr aller C4 C4-Professoren, Professoren die mindestens eine Vorlesung halten. PersNr(PersNrgelesenVon(Vorlesungen)) PersNr(Rang=C4(Professoren)) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Relationaler Tupelkalkül Eine Anfrage im Relationenkalkül hat die Form {{t P(t)} ( )} mit t Tupelvariable und P Prädikat einfaches i f h Beispiel: B i i l C4-Professoren {p p Professoren p p.Rang g = 'C4'}} Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Relationenkalkül: Beispiel Studenten S d miti mindestens i d einer i V Vorlesung l von Curie {{s s Studenten h hören(s.MatrNr=h.MatrNr v Vorlesungen(h.VorlNr Vorlesungen(h VorlNr=v v.VorlNr VorlNr p Professoren(p. PersNr=v.gelesenVon p.Name p Name = 'Curie')))} Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Dieselbe Anfrage in SQL … … belegt die Verwandtschaft select s. s* from Studenten s where exists ( select h.* from hören h where h.MatrNr = s.MatrNr and exists ( select * from Vorlesungen v where v.VorlNr = h.VorlNr and exists ( select * from Professoren p where p.Name =‚Curie' and p.PersNr= P N v.gelesenVon l V ))) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Relationaler Domänenkalkül Anfrage g im Domänenkalkül hat die Form: {[v1, v2, . . . , vn] | P(v1, . . . , vn)} mit v1 v1, . . . , v2 Domänenvariablen und P Prädikat Beispiel: MatrNr und Namen der Prüflinge von Sokrates {[m, n] | ([m, n, s] Studenten p, p vv, g ([m ([m, p p, v, v g] prüfen a, r, b ([p, a, r, b] Professoren a = ‘Sokrates’)))} Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Ausdruckskraft Die drei Sprachen • relationale Algebra • relationaler l ti l Tupelkalkül, T lk lkül eingeschränkt i h ä kt auff sichere i h Ausdrücke • relationaler l ti l D Domänenkalkül, ä k lkül eingeschränkt i h ä kt auff sichere Ausdrücke sind i d gleich l i h mächtig ä hti {n | ¬(n Professoren)} z.B. ist nicht sicher, da das Ergebnis unendlich ist Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Fertigungsdatenbank e t gu gsdate ba ANR ABTEILUNG (ANR, (ANR ANAME, ANAME AMNR) ABTEILUNG [0,1] [1,n] HAT HATMANAGER SETZTSETZT EIN ABT-PERS MASCHINEN (MANR, MFABRIKAT, MTYP, ANR) [0,1] [1,1] [0,1] PERSONAL (PNR, PNAME, PBERUF, ANR) [0,n] PNR MANR PERSONAL [0,n] TNR MASCHINEN [0,m] TEILE [0,n] [0,m] ISTGEEIGNETFÜR-DIE-HERSTELLUNG STELLUNGVON KANNBEDIENEN TEILE (TNR (TNR, TBEZ, TBEZ TGEWICHT) KANN-BEDIENEN (PNR, MANR) GEEIGNET-FÜR-DIE-HERSTELLUNG-VON (MANR, TNR) [0,n] [0,m] PRODUKTION (DATUM) [0,p] PRODUKTION (PNR, MANR, TNR, DATUM, MENGE) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 SQL - DRL Webschnittstellen für SQL: • www-db www-db.in.tum.de/ in tum de/~muehe/sql/: muehe/sql/: Universitätsdatenbank, Handelsdatenbank Tabellen anlegen möglich werden automatisch über Nacht gelöscht eigenes Löschen nicht möglich • http://hyper-db http://hyper db.de/interface.html de/interface html Universitätsdatenbank, TPC-H Schema Query-Ausführungspläne Query Ausführungspläne Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Handelsdatenbank Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Gerüst SQL-Anfrage select <Attributliste> 5 from <Relationenliste> 1 [where <Prädikatsliste> 2 group g p by y <Attributliste> 3 having <Prädikatsliste> 4 order d by b <Attributliste> A ib li 6 fetch first <Anzahl Ergebnistupel> ] Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 7 18.11.2013 Einfaches Beispiel Anfrage: "Gib mir die gesamte Information über alle Professoren„ P f Professoren select * from Professoren PersNr Name Rang 2136 2137 2126 2125 2134 2127 2133 Curie Kant Russel Sokrates Augustinus Kopernikus Popper C4 C4 C4 C4 C3 C3 C3 Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Ergebnis PersNr Name Rang 2136 2137 2126 2125 2134 2127 2133 Curie Kant R Russel l Sokrates A Augustinus ti Kopernikus P Popper C4 C4 C4 C4 C3 C3 C3 Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Attribute selektieren Anfrage: "Gib mir die PersNr und den Namen aller Professoren„ select PersNr, Name f from P f Professoren PersNr 2136 2137 2126 2125 2134 2127 2133 Professoren Name Rang Curie Kant Russel Sokrates Augustinus g Kopernikus pp Popper Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 C4 C4 C4 C4 C3 C3 C3 18.11.2013 Ergebnis PersNr Name 2136 2137 2126 2125 2134 2127 2133 Curie Kant R Russel l Sokrates A Augustinus ti Kopernikus P Popper Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Duplikateliminierung • Im Gegensatz zur relationalen Algebra (Mengen!) eliminert SQL keine Duplikate • Falls Duplikateliminierung erwünscht, erwünscht muss das Schlüsselwort distinct benutzt werden • Beispiel: Anfrage: „Welche Ränge haben Professoren?„ select distinct Rang from Professoren Ergebnis: Rang C3 C4 Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Where Klausel: Tupel selektieren Anfrage: g "Gib mir die PersNr und den Namen aller Professoren, die den Rang C4 haben„ select PersNr Name PersNr, from Professoren where Rang= ´C4´; E b i Ergebnis: PersNr 2125 2126 Name Sokrates Russel 2136 2137 Curie K t Kant Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Where Klausel: Prädikate • Prädikate in der where-Klausel können logisch kombiniert werden mit: AND OR AND, OR, NOT • Als Vergleichsoperatoren können verwendet werden: =, <,<=, >,>=, between, like Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Beispiel für between Anfrage: g "Gib mir die Namen aller Studenten, die zwischen 1987-01-01 und 1989-01-01 geboren wurden„ select Name from Student where Geburtstag between 1987-01-01 and 1989-01-01; Anfrage äquivalent zu: select l t Name N from Student where Geburtstag >= 1987-01-01 and Geburtstag <= 1989-01-01; Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 String Vergleiche String-Vergleiche • Stringkonstanten müssen in einfachen Anführungszeichen eingeschlossen sein Anfrage: Gib mir alle Informationen über den Professor "Gib mit dem Namen Kant„ select * from Professoren where Name = ’Kant’; Kant ; Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Suche mit Jokern (Wildcards) Anfrage: "Gib mir alle Informationen über Professoren, deren Namen mit einem K anfängt“ anfängt select * from Professoren where Name like ’K%’; Mögliche Joker: • _ steht für ein beliebiges Zeichen • % steht für eine beliebige Zeichenkette (auch der Länge 0) Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Nullwerte • In SQL gibt es einen speziellen Wert NULL • Dieser Wert existiert für alle verschiedenen Datentypen und repräsentiert Werte, die • unbekannt oder • nicht verfügbar oder • nicht anwendbar sind. • Nullwerte können auch im Zuge der Anfrageauswertung entstehen • Auf NULL wird mit is NULL geprüft: Beispiel: select * o Professoren o esso e from where Raum is NULL; Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Nullwerte cont. • Nullwerte werden in arithmetischen Ausdrücken durchgereicht: mindestens ein Operand NULL Ergebnis ebenfalls NULL • manchmal sehr überraschende Anfrageergebnisse, wenn Nullwerte vorkommen, z.B.: select count (*) f from St d t Studenten where Semester < 13 or Semester > = 13 • Wenn es Studenten gibt, deren Semester-Attribut den Wert NULL hat, werden diese nicht mitgezählt • Der Grund liegt in dreiwertiger Logik unter Einbeziehung von NULL-Werten: Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Auswertung bei Null-Werten • SQL: dreiwertige Logik, mit den Werten t true, f l und false d unknown k • unknown liefern Vergleichsoperationen zurück, wenn mindestens i d t eines i ih ihrer A Argumente t NULL iist. t • In einer where-Bedingung werden nur Tupel weitergereicht, für di di die die B Bedingung di t true i t Insbesondere ist. I b d werden d Tupel, T l für fü di die die Bedingung zu unknown auswertet, nicht ins Ergebnis aufgenommen. g • Bei einer Gruppierung wird NULL als ein eigenständiger Wert aufgefasst g und in eine eigene g Gruppe pp eingeordnet. g • Logische Ausdrücke werden nach den folgenden Tabellen berechnet: Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Dreiwertige Logik-Tabellen Logik Tabellen and true unknown false true true unknown false unknown unknown unknown false false false false false or true unknown false true true true true unknown true unknown unknown false true unknown false not true false unknown unknown false Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 true 18.11.2013 Professoren Vorlesungen Studenten Rang Raum MatrNr Name Semester VorlNr PersNr Name 2125 Sokrates C4 226 24002 Xenokrates 18 2126 Russel C4 232 25403 Jonas 12 2127 Kopernikus C3 310 26120 Fichte 10 2133 C3 52 26830 Aristoxenos 8 2134 Augustinus C3 309 27550 Schopenhauer 6 2136 Curie C4 36 28106 3 2137 Kant C4 7 29120 Theophrastos 2 29555 2 Popper voraussetzen Carnap Feuerbach hören Vorgänger Nachfolger Titel SWS gelesen Von 5001 00 G d Grundzüge 4 2 3 2137 5041 Ethik 4 2125 5043 Erkenntnistheorie 3 2126 5049 Mä tik Mäeutik 2 2125 4052 Logik 4 2125 5052 Wissenschaftstheorie 3 2126 5216 Bi thik Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 4630 Di 3 Kritiken Die K itik 4 2137 MatrNr VorlNr 26120 5001 27550 5001 27550 4052 28106 5041 28106 5052 PerslNr Name Fachgebiet Boss 28106 5216 3002 Platon Ideenlehre 2125 28106 5259 3003 Aristoteles Syllogistik 2125 prüfen 29120 5001 3004 Wittgenstein Sprachtheorie 2126 MatrNr VorlNr PersNr Note 29120 5041 3005 Rhetikus Planetenbewegung 2127 5001 5041 5001 5043 5001 5049 5041 5216 5043 5052 5041 5052 5052 5259 Assistenten 28106 5001 2126 1 29120 5049 3006 Newton Keplersche Gesetze 2127 25403 5041 2125 2 29555 5022 3007 Spinoza Gott und Natur 2126 27550 4630 2137 2 25403 5022 Anfragen über mehrere R l ti Relationen: Kreuzprodukt K d kt • Falls mehrere Relationen in der from from-Klausel Klausel auftauchen auftauchen, werden sie mit einem Kreuzprodukt verbunden • Beispiel: Anfrage: "Gib alle Professoren und Vorlesungen aus„ select * from Vorlesung, Professor; Ergebnis??? Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Anfragen über mehrere R l ti Relationen: J i Joins • Kreuzprodukte machen meistens keinen Sinn Sinn, interessanter sind Joins • Joinprädikate J i ädik t werden d iin d der where-Klausel h Kl l angegeben: select * from Vorlesung, Professor where h gelesenVon l V = PersNr; P N Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Anfragen über mehrere R l ti Relationen: J i cont. Joins t Welcher Professor liest "Mäeutik"? select Name, Titel from Professoren, Professoren Vorlesungen where PersNr = gelesenVon and d Titel Tit l = ‘Mä ‘Mäeutik‘; tik‘ Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Beispiel Professoren VorlNr PersNr Name Rang Raum 5001 2125 Sokrates C4 226 5041 2126 Russel C4 232 5049 2137 Kant C4 Vorlesungen Titel SWS gelesen Von Grundzüge g 4 2137 Ethik 4 2125 Mäeutik 2 2125 4 2137 7 4630 Die 3 Kritiken Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 PersN r 2125 Name Sokrates Rang C4 Raum 226 VorlNr 5001 Titel Grundzüge g SWS gelesen Von 4 2137 1225 Sokrates C4 226 5041 Ethik 4 2125 2125 Sokrates C4 226 5049 Mäeutik 2 2125 2126 2126 Russel Russel C4 C4 232 232 5001 5041 Grundzüge Ethik 4 4 2137 2125 2137 Kant C4 7 4630 Die 3 Kritiken 4 2137 gelesen Von 2125 Auswahl PersN r 2125 Name Rang Raum VorlNr Titel SWS Sokrates C4 226 5049 Mäeutik 2 Projektion Name Sokrates Titel Mäeutik Namenskollision • gleichnamige Attribute in verschiedenen Relationen müssen aufgelöst werden Beispiel: Welche Studenten hören welche Vorlesungen? select Name, Titel from Studenten, Studenten hören hören, Vorlesungen where Studenten.MatrNr = hören.MatrNr and hören.VorlNr ö = Vorlesungen.VorlNr; Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Namenskollision cont. cont Welche Studenten hören welche Vorlesungen? Alternativ: select s.Name,, v.Titel from Studenten s, hören h, Vorlesungen v where s. s MatrNr = h. h MatrNr and h.VorlNr = v.VorlNr Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014 18.11.2013 Professoren Vorlesungen Studenten Rang Raum MatrNr Name Semester VorlNr PersNr Name 2125 Sokrates C4 226 24002 Xenokrates 18 2126 Russel C4 232 25403 Jonas 12 2127 Kopernikus C3 310 26120 Fichte 10 2133 C3 52 26830 Aristoxenos 8 2134 Augustinus C3 309 27550 Schopenhauer 6 2136 Curie C4 36 28106 3 2137 Kant C4 7 29120 Theophrastos 2 29555 2 Popper voraussetzen Carnap Feuerbach hören Vorgänger Nachfolger Titel SWS gelesen Von 5001 00 G d Grundzüge 4 2 3 2137 5041 Ethik 4 2125 5043 Erkenntnistheorie 3 2126 5049 Mä tik Mäeutik 2 2125 4052 Logik 4 2125 5052 Wissenschaftstheorie 3 2126 5216 Bi thik Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 4630 Di 3 Kritiken Die K itik 4 2137 MatrNr VorlNr 26120 5001 27550 5001 27550 4052 28106 5041 28106 5052 PerslNr Name Fachgebiet Boss 28106 5216 3002 Platon Ideenlehre 2125 28106 5259 3003 Aristoteles Syllogistik 2125 prüfen 29120 5001 3004 Wittgenstein Sprachtheorie 2126 MatrNr VorlNr PersNr Note 29120 5041 3005 Rhetikus Planetenbewegung 2127 5001 5041 5001 5043 5001 5049 5041 5216 5043 5052 5041 5052 5052 5259 Assistenten 28106 5001 2126 1 29120 5049 3006 Newton Keplersche Gesetze 2127 25403 5041 2125 2 29555 5022 3007 Spinoza Gott und Natur 2126 27550 4630 2137 2 25403 5022