Crashkurs: Relationale Datenbanksysteme 13.10.2004 Felix Naumann Überblick – Vormittag z Motivation z z Warum sind RDBMS und XML Systeme für die Informationsintegration wichtig? RDBMS – Relational Database Management System z z z z Relationale Datenbanken Relationales Modell (Datenmodell) Relationale Algebra (Datenanfrage) SQL (Anfragesprache) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 2 1 Überblick – Nachmittag z RDBMS z z z Anfragebearbeitung Anfrageoptimierung XML z z Grundkonzepte XML Schema 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 3 Quellen z RDBMS Folien u.a. in Anlehnung an z z VL “Data Warehousing”, Prof. Leser VL “Einführung in Datenbanken”, Prof. Freytag 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 4 2 Was ist Informationsintegration? z Informationsintegration ist die Zusammenführung von Daten und Inhalt verschiedener Quellen zu einer einheitlichen Informationsmenge. z Informationsintegration ist die korrekte, vollständige und effiziente Zusammenführung von Daten und Inhalt verschiedener, heterogener Quellen zu einer einheitlichen und strukturierten Informationsmenge zur effektiven Interpretation durch Nutzer und Anwendungen. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 5 Integrierte Informationssysteme Anfrage Integriertes Informationssystem Oracle, DB2… 13.10.2004 Dateisystem Web Service Anwendung Felix Naumann, CK Informationssysteme, WS 04/05 HTML Form Integriertes Info.-system 6 3 Motivation – RDBMS Am weitesten verbreitetes Datenbankmodell Oracle, DB2… Oft selbst ein RDBMS Gut verstanden, weitgehend erforscht Anfrage Integriertes Informationssystem Dateisystem 13.10.2004 Web Service Anwendung HTML Form Integriertes Info.-system Felix Naumann, CK Informationssysteme, WS 04/05 7 Motivation – XML Anfrage Integriertes Informationssystem Oracle, DB2… Dateisystem Transformation nach XML 13.10.2004 Web Service HTML Form Anwendung Input/Output XML Gute XML Werkzeuge (SAX/DOM) Felix Naumann, CK Informationssysteme, WS 04/05 Integriertes Info.-system Einfache Kommunikation, Interoperabilität 8 4 Was sind Daten? z Digitale Repräsentation von z z z z z z Dingen Entitäten Wissen Information in der wirklichen Welt. Kernfragen: z z z z Welche Daten speichere ich? Wie speichere ich die Daten? Wie frage ich Daten ab? Wie erledige ich all dies effizient? 13.10.2004 Unterstützung durch Datenbanksystem Felix Naumann, CK Informationssysteme, WS 04/05 9 Datenbanksysteme z Bestandteile z Datenbank z z z Die Daten selbst + Metadaten (Beschreibung der Daten) Datenbankmanagementsystem (DBMS) z z Softwarekomponente zum Zugriff auf eine oder mehrere Datenbanken. Server-basiert 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 10 5 DBMS Beispiele z DBMS z z z z z z z Oracle, DB2 Informix, Sybase NCR Terada, SQLServer PostGreSQL, Interbase mySQL, ... Data Warehouses z z Alle großen Softwaresysteme nutzen ein, mehrere oder sehr viele DBMS z z z z OLTP OLAP 13.10.2004 SAP Siebel SRS Sogar das geplante Microsoft Windows FileSystem (Longhorn) Felix Naumann, CK Informationssysteme, WS 04/05 11 DBMS Aufgaben z z z Unterstützung des Datenmodells Bereitstellung einer Anfragesprache (DDL & DML) Robustheit z z z z Speicherverwaltung Transaktionsmanagement z z z Wahrung der Datenintegrität (Konsistenz etc.) Abfangen von Systemfehlern Auch im Mehr-Benutzer-Betrieb Effiziente Anfragebearbeitung Userverwaltung & Zugangskontrolle 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 12 6 Schichtenmodell (ANSI/X3/SPARC) Externes Schema 13.10.2004 Externes Schema Externes Schema Sichten (Anwendungen, Nutzer) Konzeptionelles Schema Logisches Modell (Tabellen, Attribute, Anfragen Internes Schema Physisches Modell (Indexierung, Speicherung) Felix Naumann, CK Informationssysteme, WS 04/05 13 Schichtenmodell z Interne (physische) Sicht z z z Konzeptionelle (logische) Sicht z z z z Speichermedium (Tape, Festplatte) Speicherort (Zylinder, Block) Unabhängig von physischer Sicht Definiert durch Datenmodell Stabiler Bezugspunkt für interne und externe Sichten Externe (logische) Sicht z z z Anwendungsprogramme Nur auf die relevanten Daten Enthält Aggregationen und Transformationen 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 14 7 Schichtenmodell – Objekte z Interne (physische) Sicht z z Dateien Konzeptionelle (logische) Sicht z Schema z z Relationen, Typen, Integritätsbedingungen Externe (logische) Sicht z „Views“ 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 15 Schichtenmodell – Beispiel (Vorschau) z Konzeptionelle (logische) Sicht z z Externe (logische) Sicht z z CREATE TABLE Book( ISBN VARCHAR(100) Title VARCHAR(100) Price DECIMAL(6,2)) CREATE VIEW cheapBooks AS ( SELECT * FROM Book WHERE Price < 10,00 ) Interne (physische) Sicht z CREATE INDEX BookIndex ON Book (ISBN) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 16 8 Datenbankentwurf Konzeptioneller Entwurf 1. z z z ER-Modell & ER-Diagramm Relationenmodell ... Physischer Entwurf 2. z HW und SW abhängig 3. Konzeptioneller Entwurf der externen Anwendungen z Konzeptioneller Entwurf ist unabhängig vom physischen Entwurf! 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 17 Überblick z RDBMS – Relational Database Management System z Relationale Datenbanken z Relationales Modell (Datenmodell) z Relationale Algebra (Datenanfrage) z SQL (Anfragesprache) z Anfragebearbeitung z Optimierung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 18 9 Relationales Modell z Auch z z z Relationenmodell Relationales Datenmodell Ziele z z Daten-Unabhängigkeit Trennung vom hierarchischen und NetzwerkModellen 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 19 Relationales Modell – Definitionen z Domäne z z z z Integer, Real, String {rot, grün, blau} Relation (Tabelle) z z z Seien D1,..,Dn Domänen Relation R ist Teilmenge aus D1×D2 ×... ×Dn ...vom Grad n 13.10.2004 Tupel (Zeile) z z z Attribut (Spalte) Relationenschema z z Ein Element aus R R(A1:D1, ..., An:Dn) Kardinalität z |R| ist die (aktuelle) Anzahl der Tupel in R Felix Naumann, CK Informationssysteme, WS 04/05 20 10 Relationales Datenmodell – Extension z Extension einer Relation z z z z Die Menge der momentanen Tupel Kann sich durch Operationen ändern Kann als Tabelle dargestellt werden Beispiel z z Domänen: D1 = Integer, D2 = String, D3 = String, D4 = Integer Relationenschema: Mitarbeiter(P_ID: D1, Vorname: D2, Nachname: D3, Alter: D4 ) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 21 Relationales Datenmodell Spalten/Attribute Mitarbeiter P_ID Zeilen/ Tupel Nachname Alter 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 Andreas Zwickel 44 7 ... 13.10.2004 Vorname ... ... Felix Naumann, CK Informationssysteme, WS 04/05 ... 22 11 Relationales Datenmodell vs. XML z Relationen sind Mengen z z Keine Duplikate z z Tupel sind ungeordnet z z Attributwerte sind Atomar z 13.10.2004 XML ist Graphbasiert Duplikate erlaubt (bzw. nicht definiert) In XML Dokumenten ist Reihenfolge wichtig Elemente sind geschachtelt Felix Naumann, CK Informationssysteme, WS 04/05 23 Relationales Modell – Definitionen z Datenbankschema z z Menge von Relationenschemata Relationale Datenbank z Datenbankschema und alle zu dem Schema gehörenden Extensionen 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 24 12 Relationales Modell – Schlüssel z z Sei R(A1:D1, ..., An:Dn) ein Relationenschema und sei S ⊆ {A1, ..., An} S ist Schlüssel, falls z z Eindeutigkeit: Falls zwei Tupel such unterscheiden, unterscheiden sie auch in den Attributen des Schlüssels. Minimalität: Es gibt kein S‘⊆ S, welches Eindeutigkeit erfüllt. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 25 Relationales Modell – Schlüssel P_ID Vorname Nachname Alter 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 7 Andreas Müller 44 11 Peter Schmidt 32 Schlüssel: {PID}, {Vorname, Nachname} Nicht Schlüssel (z.B.): 13.10.2004 {Vorname}: Nicht eindeutig {Vorname, Alter}: Nicht eindeutig {PID, Vorname}: Nicht minimal {Vorname, Nachname, Alter}: Nicht minimal Felix Naumann, CK Informationssysteme, WS 04/05 26 13 Relationales Modell – Schlüssel z Primärschlüssel z z Ein „ausgezeichneter“ Schlüssel Schlüssel als Meta-Information z z Kann nicht aus Extension abgelesen werden Wichtige Entwurfsentscheidung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 27 Relationales Modell – Fremdschlüssel z z Seien R(A1, ..., An) und S(B1, ..., Bm) zwei Relationenschemata. Sei F ein Schlüssel für S z z Also F = {Bd1, ..., Bdl} ⊆ {B1, ..., Bm} Falls zusätzlich F ⊆ {A1, ..., An}, heißt F Fremdschlüssel von S in R. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 28 14 Relationales Modell – Fremdschlüssel mitarbeiter p_id vorname nachname alter 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 7 Andreas Zwickel 44 ... ... ... ... projekte proj_id p_id name 1 DWH BMW 2 1 eCommerce Metro 5 7 SAP RAG 13.10.2004 ... ... proj_id ist Schlüssel kunde 1 ... p_id ist Schlüssel ... p_id ist Fremdschlüssel Felix Naumann, CK Informationssysteme, WS 04/05 29 Relationales Modell – Integritätsbedingungen z z z z z Jede Relation hat mindestens einen Schlüssel. Attribute im Schlüssel dürfen nicht NULL sein. Attributwerte in Domäne Zu jedem Fremdschlüsselwert muss es einen entsprechenden Schlüsselwert geben. Zusicherungen (Assertions) z Das Alter von Angestellten ist immer >15. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 30 15 Relationales Modell – Schemata 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 31 Relationales Modell – Schemata 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 32 16 Pause Überblick z RDBMS – Relational Database Management System z Relationale Datenbanken z Relationales Modell (Datenmodell) z Relationale Algebra (Datenanfrage) z SQL (Anfragesprache) z Anfragebearbeitung z Optimierung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 34 17 Relationale Algebra z z Anfragesprache 5 Grundoperationen z z z z z Vereinigung Differenz Kartesisches Produkt Projektion Selektion z Abgeleitete Operationen z z z Join, Natural Join, Semi-Join Division Schnittmenge Operationen bilden von Relation zu Relation ab (Abgeschlossenheit). Operationen können zu Ausdrücken zusammengesetzt werden. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 35 Relationale Algebra – Vereinigung z z R∪S Attribute von R und S z z z Gleiche Anzahl Gleiche Domänen Ergebnis z z z z Mengentheoretische Vereinigung gleiche Struktur wie R bzw. S Duplikat-frei |R ∪ S| ≤ |R|+|S| 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 36 18 Relationale Algebra – Vereinigung Mitarbeiter m p_id 1 2 vorname Peter nachname Müller Stefanie Meier alter m∪e 32 p_id vorname nachname alter 34 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 7 Andreas Zwickel 44 Employees e p_id vorname nachname 5 Petra 7 Andreas Zwickel 13.10.2004 Weger alter 28 44 Felix Naumann, CK Informationssysteme, WS 04/05 37 Relationale Algebra Vereinigung z Jetzt: Kleine Vorschau, warum Informationsintegration so schwierig ist z z z z Anderes Schema Null Werte Gleiche IDs Gleiche real-world Objekte 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 38 19 Relationale Algebra – Vereinigung Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 2 Stefanie Meier 34 Anderes Schema: Employees e p_id vorname nachname 5 Petra 7 Andreas Zwickel 13.10.2004 Weger m ∪ e nicht definiert! age 28 44 Felix Naumann, CK Informationssysteme, WS 04/05 39 Relationale Algebra – Vereinigung Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 7 Andreas Zwickel 34 5 7 Petra Weger Andreas Zwickel 13.10.2004 m∪e p_id vorname nachname alter 1 Peter Müller 32 7 Andreas Zwickel 34 28 5 Petra Weger 28 NULL 7 Andreas Zwickel NULL Employees e p_id vorname nachname Null-Werte alter Felix Naumann, CK Informationssysteme, WS 04/05 40 20 Relationale Algebra – Vereinigung Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 7 Stefanie Meier 34 Employees e p_id vorname nachname 5 Petra 7 Andreas Zwickel 13.10.2004 Weger age 28 44 IDS: Schlüsseleigenschaft gilt nicht mehr! m∪e p_i vorname nachname alter 1d Peter Müller 32 7 Stefani e Petra Meier 34 5 Weger 28 7 Andreas Zwickel 44 Felix Naumann, CK Informationssysteme, WS 04/05 41 Relationale Algebra – Vereinigung m∪e Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 8 Andreas Zwickel 44 Employees e p_id vorname nachname 5 Petra 7 Andreas Zwickel 13.10.2004 Weger age 28 44 p_i d vorname nachname alter 1 Peter Müller 32 8 Andreas Zwickel 44 5 Petra Weger 28 7 Andreas Zwickel 44 IDS: Schlüsseleigenschaft gilt zwar, aber Duplikate! Felix Naumann, CK Informationssysteme, WS 04/05 42 21 Relationale Algebra – Differenz z z R/S Attribute von R und S z z z Gleiche Anzahl Gleiche Domänen Ergebnis z z z Mengentheoretische Differenz gleiche Struktur wie R bzw. S |R| - |S| ≤ |R / S| ≤ |R| 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 43 Relationale Algebra – Differenz Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 7 Andreas Zwickel 34 Employees e p_id vorname nachname 7 Andreas Zwickel 13.10.2004 m/e p_id vorname nachname alter 1 Peter Müller 32 alter 34 Felix Naumann, CK Informationssysteme, WS 04/05 44 22 Relationale Algebra – Kartesisches Produkt z z R×S Attribute z z z Unterschiedliche Anzahl Unterschiedliche Domäne Ergebnis z z z z Keine doppelten Attributnamen Alle Kombinationen von Tupeln in R und S Größe: |R| ⋅ |S| Eher von theoretischem Interesse 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 45 Relationale Algebra – Kartesisches Produkt mitarbeiter projekte p_id vorname nachname alter proj_id p_id 1 Peter Müller 32 1 1 DWH name kunde 2 Stefanie Meier 34 2 1 eCommerce Metro BMW mitarbeiter x projekte p_id vorname nachname alter proj_id p_id 1 Peter Müller 32 1 1 DWH 1 Peter Müller 32 2 1 eCommerce Metro 2 Stefanie Meier 34 1 1 DWH 2 Stefanie Meier 34 2 1 eCommerce Metro 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 name kunde BMW BMW 46 23 Relationale Algebra – Projektion z z z z ∏proj(R) Sei R(A1, ..., An) ein Relationenschema. Proj = {Aj1, ..., Ajn} ⊆ {A1, ..., An} Ergebnis z z z Hat Struktur Aj1, ..., Ajn Es können Duplikate entstehen, die entfernt werden müssen. | ∏proj(R) | ≤ |R| 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 47 Relationale Algebra – Projektion mitarbeiter mitarbeiter p_i vorname 32 1d Peter 34 2 Stefani e p_id vorname nachname alter 1 Peter Müller 2 Stefanie Meier nachnam e Müller alte 32r Müller 34 Πvorname,nachname(mitarbeiter) Πnachname(mitarbeiter) vorname nachname Peter Müller nachnam e Müller Stefanie Meier 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 48 24 Relationale Algebra – Selektion z z z σcond(R) Sei R(A1:D1, ..., An:Dn) ein Relationenschema cond ist „Selektionsbedingung“ z Form: „Ai op Aj“ oder „Ai op const“ z z z z Boolescher Ausdruck z z Ai, Aj ∈ {A1, ..., An} Di = Dj, und const ∈ Di Op ∈ {=,≠,≤,≥,<,>} Junktoren: UND, ODER, NICHT Ergebnis z Alle Tupel aus, die cond erfüllen z Gleiche Struktur wie R z |σcond(R)| = sfcond ⋅ |R| ≤ |R| 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 49 Relationale Algebra – Selektion mitarbeiter σalter>33(mitarbeiter) p_id vorname nachname alter p_id vorname 1 Peter Müller 32 2 Stefanie Meier 34 2 Stefani e Meier 34 7 Andreas 44 5 Petra Weger 28 σalter>33, nachname = „Meier“(mitarbeiter) 7 Andreas Zwickel 44 p_id vorname 2 Stefanie Meier nachname alter Zwickel nachname alter 34 σalter= p_id(mitarbeiter) p_id 13.10.2004 vorname Felix Naumann, CK Informationssysteme, WS 04/05 nachname alter 50 25 Relationale Algebra – Join z z z R ><cond S Seien R(A1:D1, ..., An:Dn) und S(B1:E1, ..., Bm:Em) Relationenschemata. cond ist „Joinbedingung“ z z z Wichtigster, schwierigster Form: „Ai op Bj“ und somit interessantester z Op ∈ {=,≠,≤,≥,<,>} Operator! z Di und Ej „kompatibel“ Boolescher Ausdruck z Junktoren: UND, ODER, NICHT R ><cond S = σcond(R X S) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 51 Relationale Algebra – Join mitarbeiter projekte p_id vorname nachname alter proj_id p_id 1 Peter Müller 32 1 1 DWH 2 Stefanie Meier 34 2 1 eCommerce Metro 5 Petra Weger 28 5 7 SAP 7 Andreas Zwickel 44 name kunde BMW RAG mitarbeiter ><p_id = p_id projekte p_id vorname nachname Alter proj_id p_id 1 Peter Müller 32 1 1 DWH 1 Peter Müller 32 2 1 eCommerce Metro 7 Andreas Zwickel 44 5 7 SAP 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 name kunde BMW RAG 52 26 Relationale Algebra – Schnittmenge z z R∩S Attribute von R und S z z z Ergebnis z z z z Gleiche Anzahl Gleiche Domänen Mengentheoretische Schnittmenge gleiche Struktur wie R bzw. S Duplikat-frei R ∩ S = R / (R / S) 13.10.2004 nachdenken! Felix Naumann, CK Informationssysteme, WS 04/05 53 Relationale Algebra – Schnittmenge Mitarbeiter m p_id vorname nachname alter 1 Peter Müller 32 7 Andreas Zwickel 34 Employees e p_id vorname nachname 5 Petra 7 Andreas Zwickel 13.10.2004 Weger m∩e p_id vorname nachname alter 7 Andreas Zwickel 34 alter 28 34 Felix Naumann, CK Informationssysteme, WS 04/05 54 27 Relationale Algebra – Weitere Operatoren z Join Varianten z z z z z Semi-Join Natural Join θ-Join Outer Join (Left-, Right- und Full-Outer Join) Division 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 55 Relationale Algebra - Anfragen mitarbeiter p_id vorname nachname alter 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 Andreas Zwickel 44 7 ... ... ... Vor- und Nachname aller Mitarbeiter älter als 40? ... Πvorn., nachn.(σ“alter > 40“(mitarbeiter)) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 56 28 Relationale Algebra - Anfragen mitarbeiter p_id vorname nachname alter 1 Peter Müller 32 2 Stefanie Meier 34 5 Petra Weger 28 7 Andreas Zwickel 44 ... ... ... projekte proj_id p_id name 1 1 DWH 2 1 eCommerce 5 7 ... 13.10.2004 ... Πm.nachn.,p.name (σ“m.p_id = p.p_id“(mit. x proj.)) kunde BMW SAP ... Nachname und Projektname aller Mitarbeiter Πm.nachn.,p.name (mit. ><m.p_id = p.p_id proj.) Metro RAG ... ... Πm.nachn.,p.name(mit. >< proj.) Felix Naumann, CK Informationssysteme, WS 04/05 57 Überblick z RDBMS – Relational Database Management System z Relationale Datenbanken z Relationales Modell (Datenmodell) z Relationale Algebra (Datenanfrage) z SQL (Anfragesprache) z Anfragebearbeitung z Optimierung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 58 29 SQL – Structured Query Language z z z z Erstmals: System R, IBM Almaden ANSI-SQL (89), SQL-2(92), SQL-3(98) Sehr weit verbreitet. Deklarativer Charakter: z z z Fünf Grundbefehle: z z Was soll das DBMS zeigen? Nicht: Wie soll das DBMS das zu Zeigende finden (prozedural)? Create, Insert, Update, Delete, Select DDL versus DML 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 59 SQL – Anfragen z Grundform z z SELECT FROM WHERE Ri1.A1, Ri2.A2, …, Rim.Am Ri1, Ri2, …, Rim <cond> Beispiel z SELECT FROM WHERE 13.10.2004 Vorname, Nachname mitarbeiter Alter > 40 Felix Naumann, CK Informationssysteme, WS 04/05 60 30 SQL – Beispiele z z z z SELECT FROM SELECT FROM WHERE SELECT FROM SELECT FROM WHERE 13.10.2004 Name Projektion projekt Selektion * project Kartesisches Budget < 40.000 Produkt mitarbeiter.Nachname, projekt.Name mitarbeiter, projekt mitarbeiter.Nachname, projekt.Name mitarbeiter, projekt Join mitarbeiter.p_id = projekt.p_id Felix Naumann, CK Informationssysteme, WS 04/05 61 SQL – Beispiele z z z SELECT FROM WHERE AND SELECT FROM WHERE SELECT FROM WHERE AND 13.10.2004 mitarbeiter.Nachname, projekt.Name mitarbeiter, projekt mitarbeiter.p_id = projekt.p_id projekt.Budget < 40.000 m.Nachname, p.Name mitarbeiter m, projekt p Abkürzung m.p_id = p.p_id m.Nachname mitarbeiter m, projekt p m.p_id = p.p_id Es muss nicht jede p.Budget < 40.000 Relation im SELECT auftauchen. Felix Naumann, CK Informationssysteme, WS 04/05 62 31 SQL – Weitere Funktionen z DISTINCT ORDER BY UNION, DIFFERENCE, INTERSECTION Schachtelung Aggregation GROUP BY z Alle sind für die Informationsintegration wichtig. z z z z z 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 63 SQL – Beispiele z z SELECT DISTINCT mitarbeiter.Vorname FROM mitarbeiter, projekt WHERE mitarbeiter.p_id = projekt.p_id AND projekt.Budget < 40.000 SELECT m.Nachname, p.Name FROM mitarbeiter m, projekt p WHERE m.p_id = p.p_id ORDER BY p.budget ASC (bzw. DESC) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 64 32 SQL – Beispiele z SELECT FROM WHERE AND UNION SELECT FROM WHERE AND 13.10.2004 mitarbeiter.Vorname, projekt.Name mitarbeiter, projekt mitarbeiter.p_id = projekt.p_id projekt.Budget < 40.000 mitarbeiter.Vorname, projekt.Name mitarbeiter, projekt mitarbeiter.p_id = projekt.p_id projekt.Budget > 100.000 Felix Naumann, CK Informationssysteme, WS 04/05 65 SQL – Beispiele z z SELECT FROM WHERE AND m.Vorname, p.Name mitarbeiter m, projekt p m.p_id = p.p_id p.partner IN (SELECT company.Name FROM company WHERE company.country = “DE”) Schachtelung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 66 33 SQL – Beispiele z Aggregation z z z z AVG, COUNT, SUM, MIN, MAX SELECT FROM SELECT FROM WHERE AND SELECT FROM 13.10.2004 AVG(Budget) projekt SUM(p.Budget), MAX(p.Budget) mitarbeiter m, projekt p m.p_id = p.p_id m.Nachname = “Schmidt” COUNT(*) mitarbeiter Felix Naumann, CK Informationssysteme, WS 04/05 67 SQL – Beispiele z z SELECT m.Nachname, SUM(p.Budget) FROM mitarbeiter m, projekt p WHERE m.p_id = p.p_id GROUP BY m.Nachname SELECT m.Nachname, AVG(p.Budget) FROM mitarbeiter m, projekt p WHERE m.p_id = p.p_id GROUP BY m.Nachname HAVING MIN(p.Budget) > 50,000 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 68 34 SQL – DDL z z DDL: Data Definition Language Definition von z z z Tabellen, Indexen, Views, ... Administration: Tablespaces, Segmente, Parameter Benutzerverwaltung: User, Gruppen, Rechte, ... CREATE TABLE mitarbeiter ( p_id NUMBER, vorname VARCHAR2(100), nachname VARCHAR2(100), alter NUMBER(2) CHECK (alter>0 AND alter<150), adresse VARCHAR2(1000) ); 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 69 DQL – DDL z Datentypen z z z z z z INTEGER, SMALLINT REAL, DOUBLE, NUMERIC(a,b), DECIMAL(a,b) CHAR(n), VARCHAR(n) BIT DATE, TIME, TIMESTAMP, INTERVAL Attributnamen eindeutig 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 70 35 Datentypen z z CHAR(n) z n maximal 256 VARCHAR(n) z n maximal 4000 z Falls n > 254: Kein z z z z z z Group By Order By DISTINCT Mengenoperationen (UNION, DIFFERENCE, INTERSECTION) BLOB z Binary large object z Max 2GB Binärdaten CLOB z Character large object 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 71 SQL – Insert z z Einfügen von Werten in Tabelle Prinzipiell ein Tupel pro Insert: INSERT INTO mitarbeiter VALUES (1, ‚Peter‘, ‚Müller‘, 38, ‚10101 Berlin‘); INSERT INTO projekte (proj_id,p_id,name) VALUES (1, 3, ‚BMW‘); z Erweiterungen z z Bulk-Insert INSERT INTO ... SELECT ... Insert in mehrere Tabellen: INSERT INTO ... INTO ... INTO ... 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 72 36 SQL – Update z z Ändern von Werten in Tabellen Ändert mehrere Werte in einer Tabelle UPDATE projekte SET status = „abgebrochen“, kunde = kunde||“-insolvent“ WHERE kunde=„Grundig“ z Typisches Muster UPDATE tabelle SET ... = (SELECT ... FROM ... WHERE) WHERE id in (SELECT ... FROM ... WHERE) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 73 Delete z Löschen von Tupeln in einer Tabellen DELETE FROM projekte WHERE status=„abgeschlossen“ z Typisches Muster DELETE FROM projekte WHERE id in (SELECT ... FROM ... WHERE) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 74 37 Pause & Übung Überblick z RDBMS – Relational Database Management System z Relationale Datenbanken z Relationales Modell (Datenmodell) z Relationale Algebra (Datenanfrage) z SQL (Anfragesprache) z Anfragebearbeitung z Optimierung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 76 38 Anfragebearbeitung - Problem z Anfragen sind deklarativ. Anfragen müssen in ausführbare (prozedruale) Form transformiert werden. z Ziele z QEP – prozeduraler Query Execution Plan Effizienz z Schnell z Wenig Ressourcenverbrauch (CPU, I/O, RAM, Bandbreite) z z 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 77 Anfragebearbeitung z Prinzipieller Ablauf Parsen der Anfrage (Syntax) Überprüfen der Elemente (Semantik) Berechnung von Ausführungsplänen 1. 2. 3. Exponentiell viele – Wahl des optimalen Ausführungsplans 4. Regelbasierter Optimierer Kostenbasierter Optimierer – – 5. Anfrageausführung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 78 39 Abfragebearbeitung – Syntax z SQL Anfrage wird in interne Darstellung übersetzt: z z Z.B: Relationale Algebra Syntaktische Korrektheit prüfen 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 79 Anfragebearbeitung – Semantik z Während der Übersetzung semantische Korrektheit prüfen z z z z Existieren die Relationen/Attribute? Korrekte Typen für Vergleiche? Aggregation korrekt? ... 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 80 40 Anfragebearbeitung – Beispiel z z SELECT m.Nachname FROM mitarbeiter m, projekt p WHERE m.p_id = p.p_id AND p.Budget < 40.000 Πm.Nachname(σ“m.p_id = p.p_id, p.Budget < 40.000“(m x p)) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 81 Anfragebearbeitung – Anfragebaum z Πm.Nachname(σ“m.p_id = p.p_id, p.Budget < 40.000“(m x p)) π(Nachname) σ(p.Budget < 40.000) σ(m.p_id = p.p_id) X mitarbeiter 13.10.2004 projekte Felix Naumann, CK Informationssysteme, WS 04/05 82 41 Anfragebearbeitung – Ausführung Interpretation des Baums als Ausführungsplan z σ(p.Budget < 40.000) Kartesisches Produkt Zwei Selektionen Projektion 1. 2. 3. Sehr aufwendig! z π(Nachname) 13.10.2004 σ(m.p_id = p.p_id) X mitarbeiter projekte Felix Naumann, CK Informationssysteme, WS 04/05 83 Anfragebearbeitung – Transformationsregeln z Transformation der internen Darstellung z z Ohne Semantik zu verändern Zur effizienteren Ausführung z z Insbesondere: Kleine Zwischenergebnisse Äquivalente Ausdrücke z Zwei Ausdrücke der relationalen Algebra heißen äquivalent, falls z z Gleiche Operanden (= Relationen) Stets gleiche Antwortrelation 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 84 42 Anfragebearbeitung – einige Transformationsregeln z Kommutativität z z Assoziativität z z (m x p) x q = m x (p x q) Kaskade von Projektionen z z mxp=pxm Πm.Nachname(Πm.Vorname, m.Nachname m) = Πm.Nachname(m) Kaskade von Selektionen z σ“m.p_id = p.p_id“(σ“p.Budget < 40.000“(m)) = σ“m.p_id = p.p_id AND p.Budget < 40.000“(m) 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 85 Anfragebearbeitung – einige Transformationsregeln z Zusammenfassen von Selektion und Kartesischen Produkt zu Join z z Vertauschen von Selektion und Projektion z z z σ“m.p_id = p.p_id“(m x p) = m ><“m.p_id = p.p_id“ p Πm.Nachname,m(σ“m.p_id = p.p_id“(m x p)) = Πm.Nachname(σ“m.p_id = p.p_id“(Πm.Nachname,m.p_id, p.p_id(m x p))) Vertauschen von Selektion und Join z σ“p.Budget < 40.000“(p ><“m.p_id = p.p_id“ m) = σ“p.Budget < 40.000“(p) ><“m.p_id = p.p_id“ m Vertauschen von Projektion und Join 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 86 43 Anfragebearbeitung – Beispiel π(Nachname) π(Nachname) σ(p.Budget < 40.000) σ(p.Budget < 40.000) σ(m.p_id = p.p_id) X ><m.p_id = p.p_id mitarbeiter projekte 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 mitarbeiter projekte 87 Anfragebearbeitung – Beispiel π(Nachname) π(Nachname) σ(p.Budget < 40.000) ><m.p_id = p.p_id ><m.p_id = p.p_id σ(p.Budget < 40.000) mitarbeiter 13.10.2004 projekte mitarbeiter Felix Naumann, CK Informationssysteme, WS 04/05 projekte 88 44 Anfragebearbeitung – Beispiel π(Nachname) π(Nachname) ><m.p_id = p.p_id ><m.p_id = p.p_id π(m.Nachname, m.p_id, p.p_id) σ(p.Budget < 40.000) mitarbeiter 13.10.2004 projekte σ(p.Budget < 40.000) mitarbeiter projekte Felix Naumann, CK Informationssysteme, WS 04/05 89 Überblick z RDBMS – Relational Database Management System z Relationale Datenbanken z Relationales Modell (Datenmodell) z Relationale Algebra (Datenanfrage) z SQL (Anfragesprache) z Anfragebearbeitung z Optimierung 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 90 45 Anfragebearbeitung Optimierung z Regelbasierte Optimierung z z z z Fester Regelsatz schreibt Transformationen gemäß der genannten Regeln vor. Prioritäten unter den Regeln Nicht hier. Kostenbasierte Optimierung z z Kostenmodell Transformationen um Kosten zu verkleinern 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 91 Anfragebearbeitung Optimierung z Kostenmodell z z z z Kardinalitäten der Relationen Werteverteilungen (Histogramme) Selektivität z Selektionen z Joins 13.10.2004 Hardware z z z Speichergröße Bandwidth I/O Zeiten Felix Naumann, CK Informationssysteme, WS 04/05 92 46 Anfragebearbeitung – Optimierung π(Nachname) π(Nachname) [20] σ(p.Budget < 40.000) [990] σ(m.p_id = p.p_id) [100.000] [990] ><m.p_id = p.p_id X mitarbeiter projekte [1.000] [100] 13.10.2004 σ(p.Budget < 40.000) [20] mitarbeiter projekte [1.000] [100] Felix Naumann, CK Informationssysteme, WS 04/05 93 Anfragebearbeitung – Optimierung π(Nachname) π(Nachname) σ(p.Budget < 40.000) [20] ><m.p_id = p.p_id ><m.p_id = p.p_id [20] [990] σ(p.Budget < 40.000) [5] mitarbeiter projekte [1.000] [100] 13.10.2004 mitarbeiter [1.000] Felix Naumann, CK Informationssysteme, WS 04/05 projekte [100] 94 47 Anfragebearbeitung – Optimierung z Freiheitsgrade: z z z Algebraische Anfrageumformung Joinreihenfolge Joinmethode z z z z Nested Loop, Sort-Merge, Hash ... Indexzugriff oder Full-Table-Scan Operatorreihenfolge ... 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 95 Anfragebearbeitung – Optimierung z Joinreihenfolge z z z z z Join ist i.d.R. teuerster Operator. Optimierung konzentriert sich auf beste Reihenfolge. Bei n Relationen n! Alternativen z Aber: Die meisten haben kartesisches Produkt. Viele Algorithmen z Dynamische Programmierung (in VL) Bei mehr-Prozessor Systemen nicht nur Reihenfolge sondern auch Parallelisierung. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 96 48 Anfragebearbeitung – Optimierung z Joinmethode z z z Nested Loops Join z Zwei geschachtelte Schleifen z Innere und äußere Relation z Aufwand: n ⋅ m Sort Merge Join z Sortiere jede Relation z Ein mischender Cursor-Durchlauf durch jede Relation z Aufwand: n log n + m log m + n + m z Günstig, falls Relationen sowieso sortiert, oder bei Index Hash Join 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 97 Anfragebearbeitung – Optimierung z Nested Loops – Äußere vs. Innere Relation z FOR EACH r in R z FOR EACH s in S z z z IF(r.A = s.A) THEN Output (r,s) Aufwandsunterschied R und S? Ja, wegen Organisation der Tupel als Seiten auf Festplatte... 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 98 49 Anfragebearbeitung – Optimierung R: ... S: ... PR = Anzahl Seiten R PS = Anzahl Seiten S R außen: PR + TR · PS = 8 + 48 · 6 = 296 S außen: PS + TS · PR = 6 + 18 · 8 = 150 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 99 Literatur z RDBMS z z Principles of Database Systems, Jeffrey Ullman, Computer Science Press, 1988 Informationsintegration z z Principles of Distributed Database Systems M. Tamer Özsu, Patrick Valduriez ISBN: 0136597076 Mediators in the Architecture of Future Information Systems"; Gio Wiederhold IEEE Computer, March 1992, pages 38-49. 13.10.2004 Felix Naumann, CK Informationssysteme, WS 04/05 100 50