Datenbanken: Relationales Modell und SQL Dr. Matthias Uflacker, Stefan Klauck 23. April 2018
Vorlesungsinhalte/-aufbau Phase 1 Einführung zu Unternehmensanwendungen (2 Vorlesungen) Grundlagen von spaltenorientierten Hauptspeicherdatenbanken (4 Vorlesungen) Wöchentliche Übungsblätter Phase 2 Grundlagen des IT-gestützten Rechnungswesens und Planung (3 Vorlesungen) Programmiermodelle für Unternehmensanwendungen (1 Vorlesung) Zwei praktische Programmierübungen Klausur 2
Überblick Relationales Modell Geschichte und Motivation Relationale Datenbanken Relationale Algebra Erweiterungen Structured Query Language Zusammenfassung Übungsblatt 1 3
Literatur und Empfehlung Hector Garcia-Molina Database Systems Avi Silberschatz Database System Concepts http://db-book.com/ Felix Naumann Datenbanksysteme 1 4
Relationales Modell Vorher: enge Kopplung von Datenbankanfragen und physischer Repräsentation der Daten (wie sind Daten gespeichert) -> schlechte Wartbarkeit (insbesondere von Anwendungen) Kein Konzept welche Operationen/Funktionalität benötigt wird Ted Codd schlägt das Relationale Model vor A Relational Model of Data for Large Shared Data Banks (1970) Abstraktes Modell mit einfachen Datenstrukturen und high-level/abstrakten Operationen Implementierung und physische Umsetzung im Speicher sind nicht spezifiziert 5
Relationale Datenbanken Datenbank - organisierte Sammlung von Daten Datenbankmanagementsystem (DBMS) Datenbankverwaltungssoftware Relationale Datenbanken basieren auf dem relationalen Datenmodell 1. Struktur der Daten Hier als konzeptionelles Modell (im Gegensatz zur physischen Repräsentation) 2. Operationen auf den Daten Datenbankveränderungen Datenbankanfragen/Queries 3. Constraints ( Einschränkungen ) auf den Daten 6
Relationales Modell Konzeptionelles Modell Daten zwei-dimensionale Tabelle (Relation genannt) R D 1... D n mit D 1... D n := {(a 1,..., a n ) a 1 D 1... a n D n } R ist (im relationalen Modell üblicherweise) eine Menge (relationale Datenbanken speichern üblicherweise Multimengen) Attribut A i Name einer Spalte Schema R(A 1,..., A n ) Name der Relation und Menge der Attribute Tupel (a 1,..., a n ) Element (Zeile (außer Kopfzeile)) der Relation mit Werten a i Weitere Konzepte: Gleichheit, Relations-Instanz/-Beispiel, Schlüssel, Normalisierung, Datendomäne/ Datentypen, NULL (Wert ist unbekannt) 7
Relationales Modell Beispielrelation R First Name Last Name Country Year of Birth Paul Smith Australia 1986 Lena Jones USA 1990 Hanna Schulze Germany 1942 Hanna Schulze USA 2000 8
Relationale Algebra Operationen Relationale Algebra ist eine Anfragesprache für das relationale Modell und Basis für Umsetzung in der Praxis (Datenbanksystemen), d.h. theoretische Grundlage für relationale Datenbanken und SQL (Structured Query Language) Operationen: Benötigen eine oder mehrere Relationen als Eingabe und geben eine neue Relation aus Können zu komplexen Anfragen/Queries verkettet werden Klassen von traditionellen Operationen: Operationen, die Teile der Relation entfernen: Selektion und Projektion Operationen, die Tupel zweier Relationen verknüpfen: kartesisches Produkt und Join Umbenennung von Relationen und Attributen Mengenoperationen: Vereinigung, Schnitt, Differenz und Division 9
Relationale Algebra Operationen, die Teile der Relation entfernen Projektion π A1,..., An (R) erzeugt eine neue Relation mit einer Untermenge der Spalten von R In der relationalen Algebra von Mengen werden Duplikat-Tupel entfernt Selektion σ C (R) erzeugt eine neue Relation mit einer Untermenge der Tupel von R (die eine Bedingung C erfüllen) 10
Relationale Algebra Projektion R First Name Last Name Country Year of Birth Paul Smith Australia 1986 Lena Jones USA 1990 Hanna Schulze Germany 1942 Hanna Schulze USA 2000 π First Name, Last Name (R) First Name Paul Lena Hanna Last Name Smith Jones Schulze 11
Relationale Algebra Selektion R First Name Last Name Country Year of Birth Paul Smith Australia 1986 Lena Jones USA 1990 Hanna Schulze Germany 1942 Hanna Schulze USA 2000 σ Country= USA (R) First Name Last Name Country Year of Birth Lena Jones USA 1990 Hanna Schulze USA 2000 12
Relationale Algebra Operationen, die Tupel zweier Relationen verknüpfen Kartesische Produkt (Kreuzprodukt) R S ist die Menge aller Paare mit einen beliebigen ersten Element aus R und einem beliebigen zweiten Element aus S Das Schema der neuen Relation ist die Vereinigung der Schemata von R und S (Außnahme: R und S haben ein Attribut A gemeinsam -> Umbenennung zu R.A und S.A) Join verknüpft Tupel, die irgendwie zusammenpassen/übereinstimmen Hängende (dangling) Tuple: Tupel ohne Übereinstimmung Natürlicher Join R S : Übereinstimmung in allen gemeinsamen Attributen von R und S Theta-Join R θ S: Übereinstimmung basierend auf einer beliebigen Bedingung C Produkt von R und S + Filter mit Bedingung C Ergebnisschema wie beim Kreuzprodukt Semi-Join R S ist die Menge der Tupel in R, die eine Übereinstimmung mit S haben 13
Relationale Algebra Kreuzprodukt R First Name Last Name Country Year of Birth Paul Smith Australia 1986 Lena Jones USA 1990 Hanna Schulze Germany 1942 Hanna Schulze USA 2000 R S First Name Last Name R.Country Year of Birth S.Country Capital Paul Smith Australia 1986 Germany Berlin Paul Smith Australia 1986 USA Washington Lena Jones USA 1990 Germany Berlin Lena Jones USA 1990 USA Washington Hanna Schulze Germany 1942 Germany Berlin S Country Germany USA Berlin Capital Washington Hanna Schulze Germany 1942 USA Washington Hanna Schulze USA 2000 Germany Berlin Hanna Schulze USA 2000 USA Washington 14
Relationale Algebra Natürlicher Join R First Name Last Name Country Year of Birth Paul Smith Australia 1986 Lena Jones USA 1990 Hanna Schulze Germany 1942 R S First Name Last Name Country Year of Birth Capital Lena Jones USA 1990 Washington Hanna Schulze Germany 1942 Berlin Hanna Schulze USA 2000 Washington Hanna Schulze USA 2000 S Country Capital Germany USA Berlin Washington 15
Relationale Algebra Mengenoperationen Vorbedingung für Vereinigung, Schnitt und Differenz von R und S: R und S müssen das gleiche Schema (Attributnamen und Datentypen) haben Vereinigung R S ist die Menge der Elemente, die in R, S oder beiden Mengen sind Schnitt R S ist die Menge der Elemente, die in R und S sind Differenz R \ S ist die Menge der Elemente, die in R, aber nicht in S sind R \ S ist verschieden von S \ R Division R S (Übung 2) 16
Relationale Algebra Vereinigung R R S Country Capital Country Capital Norway Oslo Norway Oslo USA Washington USA Washington Poland Warsaw Poland Warsaw Germany Berlin S Country Capital Germany Berlin USA Washington 17
Relationale Algebra Schnitt R R S Country Capital Country Capital Norway Oslo USA Washington USA Washington Poland Warsaw S Country Capital Germany Berlin USA Washington 18
Relationale Algebra Differenz R R \ S Country Capital Country Capital Norway Oslo Norway Oslo USA Washington Poland Warsaw Poland Warsaw S S \ R Country Capital Country Capital Germany Berlin Germany Berlin USA Washington 19
Relationale Algebra Komplexe Ausdrücke Operationen können zu komplexen Ausdrücken (Anfragen) kombiniert werden Ausdrücke entsprechen immer Relationen Ausdrücke als geklammerter Ausdruck oder Baum darstellbar 20
Relationale Algebra Minimale relationale Algebra? Vereinigung, Schnitt, Differenz, Division, Projektion, Selektion, Kartesisches Produkt, natürlicher Join, Theta-Join, Semi-Join, Umbenennung 21
Relationale Algebra Minimale relationale Algebra! Vereinigung, Schnitt, Differenz, Division, Projektion, Selektion, Kartesisches Produkt, natürlicher Join, Theta-Join, Semi-Join, Umbenennung 22
Relationales Modell Was fehlt in der relationalen Algebra? Multimengen-Semantik (+ Duplikatentfernung) Aggregation (und Gruppierung) Sortierung Erweiterte Projektion Outer Join NULL 23
Relationales Modell Multimengen-Semantik Multimengen (erlauben Duplikate) Neue Definitionen für Operationen! Einige relationale Operationen sind für Multimengen effizienter (ohne Duplikatentfernung) Union Projektion Duplikatentfernung δ wandelt Multimenge in Menge um 24
Relationales Modell Aggregation Aggregationen fassen Werte einer Spalte zusammen Beispiele: SUM, AVG, MIN, MAX, COUNT Gruppierungen γ ermöglichen Aggregationen von Tupel-Gruppen, deren Werte in einer oder mehreren Spalten übereinstimmen γ A1,..., Am, AVG(Au), COUNT(Av), MIN(Aw), MAX(Ax), SUM(Ay) (R) 25
Relationales Modell Sortierung Sortierung τ verwandelt ungeordnete Datenstrukturen (z.b. Menge, Multimenge) in geordnete/sortierte (z.b. Liste) Nur nützlich als letzter Operator einer relationalen Query (und ihres logischen Anfrageplans), weil nachfolgende Operatoren die Liste zurück in eine Menge/Multimenge umwandeln Wichtig für physische Anfragepläne (spezifische Implementierungen von Operator können sortierte Eingaben benötigen) 26
Relationales Modell Erweiterte Projektion Neben Umbenennungen erlauben erweiterte Projektionen beliebige Ausdrücke Konstanten Arithmetische Operationen String-Operationen 27
Relationales Modell Outer Join Das Ergebnis des Outer Joins R S ist die Vereinigung des natürlichen Joins R S und aller Dangling Tupel von R und S; Dangling Tupel werden mit NULL-Werten aufgefüllt Full, Left, Right Outer Join Theta-Join- Versionen des Outer Joins arbeiten analog Inner Join ist ein Synonym des normalen Joins 28
SQL Die Datenbanksprache Structured Query Language unterstützt: Deklarative Anfragen für relationales Modell Datenbankveränderungen (Insert, Update, Delete) Datendefinitionen Schemadefinition und änderung Datendomäne Constraints Weitere Informationen: Indexe, physische Speicherung Syntax und Funktionalität kann sich von System zu System leicht unterscheiden 29
SQL Die Datenbanksprache Tabellendefinition und Datenbankveränderungen CREATE TABLE R(A 1 D 1,..., A n D n ) DROP TABLE R INSERT INTO R VALUES(a 1,..., a n ) DELETE FROM R 30
SQL Die Datenbanksprache Datenbankanfragen Basisform SELECT A 1,..., A j FROM R 1,..., R k WHERE P Auswertungs-/Lesereihenfolge 1. FROM... - angefragte Tabellen (entspricht dem kartesischen Produkt in der relationalen Algebra) 2. WHERE... - Filterkriterien (entspricht der Selektion in der relationalen Algebra) 3. SELECT... - auszugebene Attributwerte (entspricht der Projektion in der relationalen Algebra) 31
SQL Die Datenbanksprache Datenbankanfragen Aggregation und Sortierung SELECT A 1,..., A m, AVG(A u ), COUNT(A v ), MIN(A w ), MAX(A x ), SUM(A y ) FROM R WHERE P GROUP BY A 1,..., A m SELECT A 1,..., A m FROM R WHERE P ORDER BY A 1,..., A j 32
SQL Die Datenbanksprache Datenbankanfragen NULL und Dreiwertige Logik Drei Werte: wahr, falsch, unbekannt Jeder Vergleich mit NULL gibt unbekannt zurück 4 < NULL NULL <> NULL NULL = NULL 33
SQL Die Datenbanksprache Datenbankanfragen NULL und Dreiwertige Logik Dreiwertige Logik OR: unbekannt OR wahr = wahr unbekannt OR falsch = unbekannt unbekannt OR unbekannt = unbekannt AND: unbekannt AND wahr = unbekannt unbekannt AND falsch = falsch unbekannt AND unbekannt = unbekannt NOT: NOT unbekannt = unbekannt A IS NULL um Attribut auf NULL zu prüfen Ergebnis der WHERE-Klausel wird als falsch betrachtet, wenn es unbekannt ist Randbemerkung von Thomas Neumann: http://databasearchitects.blogspot.de/2017/02/reasoning-in-presence-of-nulls.html 34
Relationales Modell und SQL Zusammenfassung Relationales Modell ist ein konzeptionelles Modell, welches Daten als Tabellen abbildet Relationale Algebra definiert Operationen auf Relationen SQL ist die in der Praxis genutzte Anfragesprache, die auf der relationalen Algebra aufbaut (der Umfang von SQL geht über Queries hinaus) 35