Datenmanagement Dr.-Ing. Eike Schallehn Universität Magdeburg Institut für Technische & Betriebliche Informationssysteme Sommersemester 2017 Schallehn Datenmanagement Sommersemester 2017 0–1 Quellen der Vorlesung Hauptverantwortliche (siehe Literatur): Gunter Saake Andreas Heuer Kai-Uwe Sattler Weiterer Input von: Ingo Schmidt Thomas Leich Holger Meyer Eike Schallehn Schallehn Datenmanagement Sommersemester 2017 0–2 Einführung Organisatorisches: Magdeburg Dozent: Eike Schallehn Infos (Zeiten, Räume) & Folienkopien unter I I http://wwwiti.cs.uni-magdeburg.de/ → Datenbanken → Lehre LSF Prüfung/ Schein I I Klausur: Zulassung nach bestandener Übung (Übungsschein) Schein: siehe Klausur mit Note <= 4.0 Feedback, Fragen, . . . I I I 1. Nach der Vorlesung oder Übung 2. Mail: [email protected] ; Betreff: Datenmanagement 3. Telefon: 0391/67-52845 Schallehn Datenmanagement Sommersemester 2017 0–3 Einführung Organisatorisches: Magdeburg – Übungen Übungsleiter: (David Broneske), Holger Harzer, Florian Koch Begleitende Übungen (siehe Übungsplan): I I I Ab zweiter Vorlesungswoche 60% der Aufgaben votieren und 4 Vorträge für Schein und Prüfung Letzte Übungen sind praktisch (SQL) Einschreibung ab 13 Uhr auf: https://omen.cs. uni-magdeburg.de/einschreiben/index.php Möglichkeit der Nutzung von SQLValidator http://propra14.iti.cs.ovgu.de/sqlvali/ I Passphrase: db-ss2017 Schallehn Datenmanagement Sommersemester 2017 0–4 Einführung Zugrundeliegendes Lehrbuch A. Heuer; G. Saake; K. Sattler: Datenbanken — Konzepte und Sprachen 5. Auflage, mitp-Verlag, 2013 Schallehn Datenmanagement Sommersemester 2017 0–5 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf 5 Relationale Entwurfstheorie Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf 5 Relationale Entwurfstheorie 6 SQL und weitere relationale Anfragesprachen Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf 5 Relationale Entwurfstheorie 6 SQL und weitere relationale Anfragesprachen 7 Integrität, Transaktionen und Trigger Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf 5 Relationale Entwurfstheorie 6 SQL und weitere relationale Anfragesprachen 7 Integrität, Transaktionen und Trigger 8 Sichten und Zugriffskontrolle Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Überblick 1 Was sind Datenbanken – Grundlegende Konzepte 2 Relationale Datenbanken – Daten als Tabellen 3 Entity-Relationship-Modell 4 Datenbankentwurf 5 Relationale Entwurfstheorie 6 SQL und weitere relationale Anfragesprachen 7 Integrität, Transaktionen und Trigger 8 Sichten und Zugriffskontrolle 9 Datenaustausch mit XML Schallehn Datenmanagement Sommersemester 2017 0–6 Einführung Weitere Literatur G. Vossen. Datenbankmodelle, Datenbanksprachen und Datenbankmanagement-Systeme. Oldenbourg-Verlag, München, 2000 R. Elmasri, S.B. Navathe. Grundlagen von Datenbanksystemen. Pearson, 2002 A. Kemper, A. Eickler. Datenbanksysteme. Eine Einführung. Oldenbourg-Verlag, München, 2004 A. Heuer, G. Saake, K. Sattler. Datenbanken kompakt 2. Aufl., mitp-Verlag, Bonn, August 2003 G. Lausen. Datenbanken – Grundlagen und XML-Technologien Elsevier GmbH, 2005 Schallehn Datenmanagement Sommersemester 2017 0–7 Teil I Was sind Datenbanken? Was sind Datenbanken? Was sind Datenbanken? 1 Überblick & Motivation Schallehn Datenmanagement Sommersemester 2017 1–1 Was sind Datenbanken? Was sind Datenbanken? 1 Überblick & Motivation 2 Architekturen Schallehn Datenmanagement Sommersemester 2017 1–1 Was sind Datenbanken? Was sind Datenbanken? 1 Überblick & Motivation 2 Architekturen 3 Einsatzgebiete Schallehn Datenmanagement Sommersemester 2017 1–1 Was sind Datenbanken? Was sind Datenbanken? 1 Überblick & Motivation 2 Architekturen 3 Einsatzgebiete 4 Historisches Schallehn Datenmanagement Sommersemester 2017 1–1 Was sind Datenbanken? Lernziele für heute . . . Motivation für den Einsatz von Datenbanksystemen Schallehn Datenmanagement Sommersemester 2017 1–2 Was sind Datenbanken? Lernziele für heute . . . Motivation für den Einsatz von Datenbanksystemen Kenntnis grundlegender Architekturen Schallehn Datenmanagement Sommersemester 2017 1–2 Was sind Datenbanken? Überblick & Motivation Was sind Datenbanken? Daten = logisch gruppierte Informationseinheiten Bank = Die Sicherheit vor Verlusten ist eine Hauptmotivation, etwas „auf die Bank zu bringen“. Eine Bank bietet Dienstleistungen für mehrere Kunden an, um effizient arbeiten zu können. Eine Datenbank hat die (langfristige) Aufbewahrung von Daten als Aufgabe. Schallehn Datenmanagement Sommersemester 2017 1–3 Was sind Datenbanken? Überblick & Motivation Anwendungsbeispiele Schallehn Datenmanagement Sommersemester 2017 1–4 Was sind Datenbanken? Überblick & Motivation Wie verwaltet man Datenbanken? Ohne Datenbanken jedes Anwendungssystem verwaltet seine eigenen Daten Daten sind mehrfach gespeichert Probleme I I I redundant Verschwendung von Speicherplatz „Vergessen“ von Änderungen keine zentrale, „genormte“ Datenhaltung Schallehn Datenmanagement Sommersemester 2017 1–5 Was sind Datenbanken? Überblick & Motivation Probleme der Datenredundanz Andere Softwaresysteme können große Mengen von Daten nicht effizient verarbeiten Mehrere Benutzer oder Anwendungen können nicht parallel auf den gleichen Daten arbeiten, ohne sich zu stören Anwendungsprogrammierer / Benutzer können Anwendungen nicht programmieren / benutzen, ohne I I interne Darstellung der Daten Speichermedien oder Rechner zu kennen (Datenunabhängigkeit nicht gewährleistet) Datenschutz und Datensicherheit sind nicht gewährleistet Schallehn Datenmanagement Sommersemester 2017 1–6 Was sind Datenbanken? Überblick & Motivation Idee: Datenintegration durch Datenbanksysteme Anwendung ... Anwendung DBMS Datenbankmanagementsystem = Software zur Verwaltung von Datenbanken DBS = Datenbanksystem Datenbank Schallehn Datenmanagement strukturierter, von DBMS verwalteter Datenbestand Sommersemester 2017 1–7 Was sind Datenbanken? Überblick & Motivation Motivation Datenbanksysteme sind Herzstück heutiger IT-Infrastrukturen . . . allgegenwärtig Datenbankspezialisten sind gefragt Schallehn Datenmanagement Sommersemester 2017 1–8 Was sind Datenbanken? Überblick & Motivation Fragestellungen 1 Wie organisiert (modelliert und nutzt) man Daten? 2 Wie werden Daten dauerhaft verlässlich gespeichert? 3 Wie kann man riesige Datenmengen (≥ Terabytes) effizient verarbeiten? 4 Wie können viele Nutzer (≥ 10.000) gleichzeitig mit den Daten arbeiten? Schallehn Datenmanagement Sommersemester 2017 1–9 Was sind Datenbanken? Überblick & Motivation Fragestellungen 1 Wie organisiert (modelliert und nutzt) man Daten? 2 Wie werden Daten dauerhaft verlässlich gespeichert? 3 Wie kann man riesige Datenmengen (≥ Terabytes) effizient verarbeiten? 4 Wie können viele Nutzer (≥ 10.000) gleichzeitig mit den Daten arbeiten? Schallehn Datenmanagement Sommersemester 2017 1–9 Was sind Datenbanken? Architekturen Prinzipien: Die neun Codd’schen Regeln 1 2 3 4 5 6 7 8 9 Integration: einheitliche, nichtredundante Datenverwaltung Operationen: Speichern, Suchen, Ändern Katalog: Zugriffe auf Datenbankbeschreibungen im Data Dictionary Benutzersichten Integritätssicherung: Korrektheit des Datenbankinhalts Datenschutz: Ausschluss unauthorisierter Zugriffe Transaktionen: mehrere DB-Operationen als Funktionseinheit Synchronisation: parallele Transaktionen koordinieren Datensicherung: Wiederherstellung von Daten nach Systemfehlern Schallehn Datenmanagement Sommersemester 2017 1–10 Was sind Datenbanken? Architekturen Datenunabhängigkeit und Schemata Basierend auf DBMS-Grobarchitektur Entkopplung von Benutzer- und Implementierungssicht Ziele u.a.: I I I I Trennung von Modellierungssicht und interner Speicherung Portierbarkeit Tuning vereinfachen standardisierte Schnittstellen Schallehn Datenmanagement Sommersemester 2017 1–11 Was sind Datenbanken? Architekturen Schemaarchitektur Zusammenhang zwischen I I I I Konzeptuellem Schema (Ergebnis der Datendefinition) Internem Schema (Festlegung der Dateiorganisationen und Zugriffspfade) Externen Schemata (Ergebnis der Sichtdefinition) Anwendungsprogrammen (Ergebnis der Anwendungsprogrammierung) Schallehn Datenmanagement Sommersemester 2017 1–12 Was sind Datenbanken? Architekturen Schemaarchitektur /2 Trennung Schema — Instanz I I Schema (Metadaten, Datenbeschreibungen) Instanz (Anwenderdaten, Datenbankzustand oder -ausprägung) Datenbankschema besteht aus I internem, konzeptuellem, externen Schemata und den Anwendungsprogrammen im konzeptuellen Schema etwa: I I I Strukturbeschreibungen Integritätsbedingungen Autorisierungsregeln (pro Benutzer für erlaubte DB-Zugriffe) Schallehn Datenmanagement Sommersemester 2017 1–13 Was sind Datenbanken? Architekturen Schemaarchitektur /3 externes Schema 1 Konzeptuelles Schema internes Schema Datenmanagement externes Schema N Datendarstellung Anfragebearbeitung Schallehn ... Sommersemester 2017 1–14 Was sind Datenbanken? Architekturen Datenunabhängigkeit /2 Stabilität der Benutzerschnittstelle gegen Änderungen physisch: Änderungen der Dateiorganisationen und Zugriffspfade haben keinen Einfluss auf das konzeptuelle Schema logisch: Änderungen am konzeptuellen und gewissen externen Schemata haben keine Auswirkungen auf andere externe Schemata und Anwendungsprogramme Schallehn Datenmanagement Sommersemester 2017 1–15 Was sind Datenbanken? Architekturen Datenunabhängigkeit /3 mögliche Auswirkungen von Änderungen am konzeptuellen Schema: I I eventuell externe Schemata betroffen (Ändern von Attributen) eventuell Anwendungsprogramme betroffen (Rekompilieren der Anwendungsprogramme, eventuell Änderungen nötig) nötige Änderungen werden jedoch vom DBMS erkannt und überwacht Schallehn Datenmanagement Sommersemester 2017 1–16 Was sind Datenbanken? Architekturen Anwendungsbeispiel: Musikversand Titel Musiker Jahr Preis Rezension(en) Tracks Schallehn Datenmanagement Sommersemester 2017 1–17 Was sind Datenbanken? Architekturen Ebenen-Architektur am Beispiel Konzeptuelle Sicht: Darstellung in Tabellen (Relationen) Musiker MNr 103 104 105 Album ANr 1014 1015 1016 1021 1025 Schallehn Name Apocalyptica Subway To Sally Rammstein Titel Amplified Nord Nord Ost Rosenrot Engelskrieger Reflections Land Finnland Deutschland Deutschland Jahr 2006 2005 2005 2003 2006 Genre Rock Rock Rock Rock Rock Datenmanagement MNr → Musiker 103 104 105 104 103 Sommersemester 2017 1–18 Was sind Datenbanken? Architekturen Ebenen-Architektur am Beispiel /2 Externe Sicht: Daten in einer flachen Relation ANr 1014 1015 1016 1021 1025 Schallehn Titel Amplified Nord Nord Ost Rosenrot Engelskrieger Reflections Jahr 2006 2005 2005 2003 2006 Genre Rock Rock Rock Rock Rock Datenmanagement Musiker Apocalyptica Subway To Sally Rammstein Subway To Sally Apocalyptica Sommersemester 2017 1–19 Was sind Datenbanken? Architekturen Ebenen-Architektur am Beispiel /3 Externe Sicht: Daten in einer hierarchisch aufgebauten Relation Musiker Titel Apocalyptica Subway To Sally Rammstein Schallehn Album Jahr Amplified Reflections Nord Nord Ost Engelskrieger Rosenrot Datenmanagement 2006 2003 2005 2003 2005 Genre Rock Rock Metal Rock Rock Sommersemester 2017 1–20 Was sind Datenbanken? Architekturen Ebenen-Architektur am Beispiel /4 Interne Darstellung 1000 1500 2000 Baumzugriff über Albumnummer teilweises Speichern der Datensätze im Baum 1014 Amplified 2006 1015 Nord Nord Ost 2005 19.99 Rock 15.99 Rock Schallehn 103 104 .... .... Überlaufbereich für Datensätze Datenmanagement Sommersemester 2017 1–21 Was sind Datenbanken? Architekturen System-Architekturen Beschreibung der Komponenten eines Datenbanksystems Standardisierung der Schnittstellen zwischen Komponenten Architekturvorschläge I I ANSI-SPARC-Architektur Drei-Ebenen-Architektur Fünf-Schichten-Architektur beschreibt Transformationskomponenten im Detail Vorlesung „Datenbank-Implementierungstechniken“ Schallehn Datenmanagement Sommersemester 2017 1–22 Was sind Datenbanken? Architekturen ANSI-SPARC-Architektur ANSI: American National Standards Institute SPARC: Standards Planning and Requirement Committee Vorschlag von 1978 Im Wesentlichen Grobarchitektur verfeinert I I I Interne Ebene / Betriebssystem verfeinert Mehr Interaktive und Programmier-Komponenten Schnittstellen bezeichnet und normiert Schallehn Datenmanagement Sommersemester 2017 1–23 Was sind Datenbanken? Architekturen ANSI-SPARC-Architektur /2 Externe Ebene Konzeptuelle Ebene Interne Ebene Optimierer Plattenzugriff Anfragen Auswertung Updates P1 ... Pn DBOperationen Data Dictionary Einbettung Masken Sichtdefinition Datendefinition Schallehn Datenmanagement Dateiorganisation Sommersemester 2017 1–24 Was sind Datenbanken? Architekturen Klassifizierung der Komponenten Definitionskomponenten: Datendefinition, Dateiorganisation, Sichtdefinition Programmierkomponenten: DB-Programmierung mit eingebetteten DB-Operationen Benutzerkomponenten: Anwendungsprogramme, Anfrage und Update interaktiv Transformationskomponenten: Optimierer, Auswertung, Plattenzugriffssteuerung Data Dictionary (Datenwörterbuch): Aufnahme der Daten aus Definitionskomponenten, Versorgung der anderen Komponenten Schallehn Datenmanagement Sommersemester 2017 1–25 Was sind Datenbanken? Architekturen Fünf-Schichten-Architektur Verfeinerung der Transformationsschritte Mengenorientierte Schnittstelle Datensystem Satzorientierte Schnittstelle Übersetzung Zugriffspfadwahl Zugriffssystem Logische Zugriffspfade, Schemakatalog, Sortierung, Transaktionsverwaltung Speichersystem Speicherungsstrukturen, Zugriffspfadverwaltung, Sperrverwaltung, Logging, Recovery Interne Satzschnittstelle Systempufferschnittstelle Pufferverwaltung Dateischnittstelle Betriebssystem Systempufferverwaltung, Seitenersetzung, Seitenzuordnung Externspeicherverwaltung, Speicherzuordnung Geräteschnittstelle Externspeicher Schallehn Datenmanagement Sommersemester 2017 1–26 Was sind Datenbanken? Architekturen Anwendungsarchitekturen Architektur von Datenbankanwendungen tpyischerweise auf Basis des Client-Server-Modells: Server ≡ Datenbanksystem Client (Dienstnehmer) Server (Diensterbringer) 1. Anforderung 2. Bearbeitung 3. Antwort Schallehn Datenmanagement Sommersemester 2017 1–27 Was sind Datenbanken? Architekturen Anwendungsarchitekturen /2 Aufteilung der Funktionalitäten einer Anwendung I I I Präsentation und Benutzerinteraktion Anwendungslogik („Business“-Logik) Datenmanagementfunktionen (Speichern, Anfragen, . . . ). Benutzerschnittstelle Anwendungslogik Benutzerschnittstelle Client DB-Schnittstelle Anwendungslogik DB-Schnittstelle DB-Server Zwei-Schichten-Architektur Schallehn Client Applikationsserver DB-Server Drei-Schichten-Architektur Datenmanagement Sommersemester 2017 1–28 Was sind Datenbanken? Einsatzgebiete Einige konkrete Systeme (Objekt-)Relationale DBMS I I Oracle11g, IBM DB2 V.9, Microsoft SQL Server 2008 MySQL (www.mysql.org), PostgreSQL (www.postgresql.org), Ingres (www.ingres.com), FireBird (www.firebirdsql.org) Pseudo-DBMS I MS Access Objektorientierte DBMS I Poet, Versant, ObjectStore XML-DBMS I Tamino (Software AG), eXcelon NoSQL-Systeme I Graph-Datenbanksysteme (InfiniteGraph, neo4j), Dokument-Datenbanken (MongoDB), Key-Value-Stores, .... Schallehn Datenmanagement Sommersemester 2017 1–29 Was sind Datenbanken? Einsatzgebiete Einsatzgebiete Klassische Einsatzgebiete: I I I viele Objekte (15000 Bücher, 300 Benutzer, 100 Ausleihvorgänge pro Woche, . . . ) wenige Objekttypen (BUCH, BENUTZER, AUSLEIHUNG) etwa Buchhaltungssysteme, Auftragserfassungssysteme, Bibliothekssysteme, . . . Aktuelle Anwendungen: I E-Commerce, entscheidungsunterstützende Systeme (Data Warehouses, OLAP), NASA’s Earth Observation System (Petabyte-Datenbanken), Data Mining Schallehn Datenmanagement Sommersemester 2017 1–30 Was sind Datenbanken? Einsatzgebiete Datenbankgrößen eBay Data Warehouse 10 PB (= 10 · 1015 Bytes) Teradata DBMS, 72 Knoten, 10.000 Nutzer, mehrere Millionen Anfragen/Tag WalMart Data Warehouse 2,5 PB Teradata DBMS, NCR MPP-Hardware; Produktinfos (Verkäufe etc.) von 2.900 Märkten; 50.000 Anfragen/Woche Facebook x.000 MySQL-Server 400 TB Hadoop/Hive, 610 Knoten, 15 TB/Tag US Library of Congress nicht digitalisiert 10-20 TB PB für Petabyte entspricht der Größenordnung 1015 Schallehn Datenmanagement Sommersemester 2017 1–31 Was sind Datenbanken? Historisches Entwicklungslinien: 60er Jahre Anfang 60er Jahre: elementare Dateien, anwendungsspezifische Datenorganisation (geräteabhängig, redundant, inkonsistent) Ende 60er Jahre: Dateiverwaltungssysteme (SAM, ISAM) mit Dienstprogrammen (Sortieren) (geräteunabhängig, aber redundant und inkonsistent) DBS basierend auf hierarchischem Modell, Netzwerkmodell I I I I Zeigerstrukturen zwischen Daten Schwache Trennung interne / konzeptuelle Ebene Navigierende DML Trennung DML / Programmiersprache Schallehn Datenmanagement Sommersemester 2017 1–32 Was sind Datenbanken? Historisches Entwicklungslinien: 70er und 80er Jahre 70er Jahre: Datenbanksysteme (Geräte- und Datenunabhängigkeit, redundanzfrei, konsistent) Relationale Datenbanksysteme I I I I Daten in Tabellenstrukturen 3-Ebenen-Konzept Deklarative DML Trennung DML / Programmiersprache Schallehn Datenmanagement Sommersemester 2017 1–33 Was sind Datenbanken? Historisches Historie von RDBMS 1970: Ted Codd (IBM) → Relationenmodell als konzeptionelle Grundlage relationaler DBS 1974: System R (IBM) → erster Prototyp eines RDBMS I I I zwei Module: RDS, RSS; ca. 80.000 LOC (PL/1, PL/S, Assembler), ca. 1,2 MB Codegröße Anfragesprache SEQUEL erste Installation 1977 1975: University of California at Berkeley (UCB) → Ingres I I Anfragesprache QUEL Vorgänger von Postgres, Sybase, . . . 1979: Oracle Version 2 Schallehn Datenmanagement Sommersemester 2017 1–34 Was sind Datenbanken? Historisches Entwicklungslinien: (80er und) 90er Jahre Wissensbanksysteme I I Daten in Tabellenstrukturen Stark deklarative DML, integrierte Datenbankprogrammiersprache Objektorientierte Datenbanksysteme I I I I Daten in komplexeren Objektstrukturen (Trennung Objekt und seine Daten) Deklarative oder navigierende DML Oft integrierte Datenbankprogrammiersprache Oft keine vollständige Ebenentrennung Schallehn Datenmanagement Sommersemester 2017 1–35 Was sind Datenbanken? Historisches Entwicklungslinien: heute Unterstützung für spezielle Anwendungen I I I I I I I I Hochskalierbare, parallele Datenbanksysteme: Umgang mit Datenmengen im PB-Bereich Cloud-Datenbanken: Hosting von Datenbanken, Skalierbare Datenmanagementlösungen Datenstromverarbeitung: Online-Verarbeitung von Live-Daten (Börseninfos, Sensordaten, RFID-Daten, . . . ) XML-Datenbanken: Verwaltung semistrukturierter Daten (XML-Dokumente) Multimediadatenbanken: Verwaltung multimedialer Objekte (Bilder, Audio, Video) Verteilte Datenbanken: Verteilung von Daten auf verschiedene Rechnerknoten Föderierte Datenbanken, Multidatenbanken, Mediatoren: Integration von Daten aus heterogenen Quellen (Datenbanken, Dateien, Web-Quellen) Mobile Datenbanken: Datenverwaltung auf Kleinstgeräten (Sensorknoten, Smartphones) Schallehn Datenmanagement Sommersemester 2017 1–36 Was sind Datenbanken? Historisches Trends Nutzergenerierte Inhalte, z.B. Google: I I I Verarbeitung von 20 PB täglich 15h Video-Upload auf YouTube in jeder Minute Lesen von 20 PB würde 12 Jahre benötigen bei 50 MB/s-Festplatte Linked Data und Data Web I I I Bereitstellung, Austausch und Verknüpfung von strukturierten Daten im Web ermöglicht Abfrage (mit Anfragesprachen wie SPARQL) und Weiterverarbeitung Beispiele: DBpedia, GeoNames Schallehn Datenmanagement Sommersemester 2017 1–37 Was sind Datenbanken? Historisches Zusammenfassung Motivation für Einsatz von Datenbanksystemen Codd’sche Regeln 3-Ebenen-Schemaarchitektur & Datenunabhängigkeit Einsatzgebiete Schallehn Datenmanagement Sommersemester 2017 1–38 Was sind Datenbanken? Historisches Kontrollfragen Welchen Vorteil bieten Datenbanksysteme gegenüber einer anwendungsspezifischen Speicherung von Daten? Schallehn Datenmanagement Sommersemester 2017 1–39 Was sind Datenbanken? Historisches Kontrollfragen Welchen Vorteil bieten Datenbanksysteme gegenüber einer anwendungsspezifischen Speicherung von Daten? Was versteht man unter Datenunabhängigkeit und wie wird sie erreicht? Schallehn Datenmanagement Sommersemester 2017 1–39 Was sind Datenbanken? Historisches Kontrollfragen Welchen Vorteil bieten Datenbanksysteme gegenüber einer anwendungsspezifischen Speicherung von Daten? Was versteht man unter Datenunabhängigkeit und wie wird sie erreicht? In welchen Bereichen kommen Datenbanksysteme zum Einsatz? Schallehn Datenmanagement Sommersemester 2017 1–39 Teil II Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen 1 Relationen für tabellarische Daten Schallehn Datenmanagement Sommersemester 2017 2–1 Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen 1 Relationen für tabellarische Daten 2 SQL-Datendefinition Schallehn Datenmanagement Sommersemester 2017 2–1 Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen 1 Relationen für tabellarische Daten 2 SQL-Datendefinition 3 Grundoperationen: Die Relationenalgebra Schallehn Datenmanagement Sommersemester 2017 2–1 Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen 1 Relationen für tabellarische Daten 2 SQL-Datendefinition 3 Grundoperationen: Die Relationenalgebra 4 SQL als Anfragesprache Schallehn Datenmanagement Sommersemester 2017 2–1 Relationale Datenbanken – Daten als Tabellen Relationale Datenbanken – Daten als Tabellen 1 Relationen für tabellarische Daten 2 SQL-Datendefinition 3 Grundoperationen: Die Relationenalgebra 4 SQL als Anfragesprache 5 Änderungsoperationen in SQL Schallehn Datenmanagement Sommersemester 2017 2–1 Relationale Datenbanken – Daten als Tabellen Lernziele für heute . . . Grundverständnis zur Struktur relationaler Datenbanken Schallehn Datenmanagement Sommersemester 2017 2–2 Relationale Datenbanken – Daten als Tabellen Lernziele für heute . . . Grundverständnis zur Struktur relationaler Datenbanken Kenntnis der Basisoperationen relationaler Anfragesprachen Schallehn Datenmanagement Sommersemester 2017 2–2 Relationale Datenbanken – Daten als Tabellen Lernziele für heute . . . Grundverständnis zur Struktur relationaler Datenbanken Kenntnis der Basisoperationen relationaler Anfragesprachen elementare Fähigkeiten in der Anwendung von SQL Schallehn Datenmanagement Sommersemester 2017 2–2 Relationale Datenbanken – Daten als Tabellen Relationen für tabellarische Daten Relationenmodell Konzeptuell ist die Datenbank eine Menge von Tabellen WEINE WeinID Name 1042 2168 3456 2171 3478 4711 4961 ERZEUGER La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay Farbe Jahrgang Rot Rot Rot Rot Rot Weiß Weiß 1998 2003 2004 2001 1999 1999 2002 Weingut Château La Rose Creek Helena Creek Helena Müller Bighorn Weingut Anbaugebiet Region Creek Helena Château La Rose Château La Pointe Müller Bighorn Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Napa Valley South Australia Kalifornien Bordeaux Bordeaux Hessen Kalifornien Tabelle = „Relation“ Schallehn Datenmanagement Sommersemester 2017 2–3 Relationale Datenbanken – Daten als Tabellen Relationen für tabellarische Daten Darstellung von Relationen und Begriffe Fett geschriebene Zeilen: Relationenschema Weitere Einträge in der Tabelle: Relation Eine Zeile der Tabelle: Tupel Eine Spaltenüberschrift: Attribut Ein Eintrag: Attributwert Attribut Relationenname R Tupel A1 ... ... An ... Relationenschema Relation ... Schallehn Datenmanagement Sommersemester 2017 2–4 Relationale Datenbanken – Daten als Tabellen Relationen für tabellarische Daten Integritätsbedingungen: Schlüssel Attribute einer Spalte identifizieren eindeutig gespeicherte Tupel: Schlüsseleigenschaft etwa Weingut für Tabelle ERZEUGER ERZEUGER Weingut Anbaugebiet Region Creek Helena Château La Rose Château La Pointe Müller Bighorn Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Napa Valley South Australia Kalifornien Bordeaux Bordeaux Hessen Kalifornien auch Attributkombinationen können Schlüssel sein! Schlüssel können durch Unterstreichen gekennzeichnet werden Schallehn Datenmanagement Sommersemester 2017 2–5 Relationale Datenbanken – Daten als Tabellen Relationen für tabellarische Daten Integritätsbedingungen: Fremdschlüssel Schlüssel einer Tabelle können in einer anderen (oder derselben!) Tabelle als eindeutige Verweise genutzt werden: Fremdschlüssel, referenzielle Integrität etwa Weingut als Verweise auf ERZEUGER ein Fremdschlüssel ist ein Schlüssel in einer „fremden“ Tabelle Schallehn Datenmanagement Sommersemester 2017 2–6 Relationale Datenbanken – Daten als Tabellen Relationen für tabellarische Daten Fremdschlüssel /2 WEINE WeinID Name 1042 2168 3456 2171 3478 4711 4961 La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay ERZEUGER Farbe Rot Rot Rot Rot Rot Weiß Weiß Jahrgang 1998 2003 2004 2001 1999 1999 2002 Weingut → ERZEUGER Château La Rose Creek Helena Creek Helena Müller Bighorn Weingut Anbaugebiet Region Creek Helena Château La Rose Château La Pointe Müller Bighorn Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Napa Valley South Australia Kalifornien Bordeaux Bordeaux Hessen Kalifornien Schallehn Datenmanagement Sommersemester 2017 2–7 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition Die Anweisung create table create table basisrelationenname ( spaltenname1 wertebereich1 [not null], ... spaltennamek wertebereichk [not null]) Wirkung dieses Kommandos ist sowohl I I die Ablage des Relationenschemas im Data Dictionary, als auch die Vorbereitung einer „leeren Basisrelation“ in der Datenbank Schallehn Datenmanagement Sommersemester 2017 2–8 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition Mögliche Wertebereiche in SQL integer (oder auch integer4, int), smallint (oder auch integer2), float(p) (oder auch kurz float), decimal(p,q) und numeric(p,q) mit jeweils q Nachkommastellen, character(n) (oder kurz char(n), bei n = 1 auch char) für Zeichenketten (Strings) fester Länge n, character varying(n) (oder kurz varchar(n) für Strings variabler Länge bis zur Maximallänge n, bit(n) oder bit varying(n) analog für Bitfolgen, und date, time bzw. timestamp für Datums-, Zeit- und kombinierte Datums-Zeit-Angaben Schallehn Datenmanagement Sommersemester 2017 2–9 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition Beispiel für create table create table WEINE ( WeinID int not null, Name varchar(20) not null, Farbe varchar(10), Jahrgang int, Weingut varchar(20)) primary key kennzeichnet Spalte als Schlüsselattribut Schallehn Datenmanagement Sommersemester 2017 2–10 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition create table mit Fremdschlüssel create table WEINE ( WeinID int, Name varchar(20) not null, Farbe WeinFarbe, Jahrgang int, Weingut varchar(20), primary key(WeinID), foreign key(Weingut) references ERZEUGER(Weingut foreign key kennzeichnet Spalte als Fremdschlüssel Schallehn Datenmanagement Sommersemester 2017 2–11 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition Nullwerte not null schließt in bestimmten Spalten Nullwerte als Attributwerte aus Kennzeichnung von Nullwerte in SQL durch null; hier ⊥ null repräsentiert die Bedeutung „Wert unbekannt“, „Wert nicht anwendbar“ oder „Wert existiert nicht“, gehört aber zu keinem Wertebereich null kann in allen Spalten auftauchen, außer in Schlüsselattributen und den mit not null gekennzeichneten Schallehn Datenmanagement Sommersemester 2017 2–12 Relationale Datenbanken – Daten als Tabellen SQL-Datendefinition Weiteres zur Datendefinition in SQL Neben Primär- und Fremdschlüsseln können in SQL angegeben werden: I I I mit der default-Klausel Defaultwerte für Attribute, mit der create domain-Anweisung benutzerdefinierte Wertebereiche und mit der check-Klausel weitere lokale Integritätsbedingungen innerhalb der zu definierenden Wertebereiche, Attribute und Relationenschemata Schallehn Datenmanagement Sommersemester 2017 2–13 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Anfrageoperationen auf Tabellen Basisoperationen auf Tabellen, die die Berechnung von neuen Ergebnistabellen aus gespeicherten Datenbanktabellen erlauben Operationen werden zur sogenannten Relationenalgebra zusammengefasst Mathematik: Algebra ist definiert durch Wertebereich sowie darauf definierten Operationen → für Datenbankanfragen entsprechen die Inhalte der Datenbank den Werten, Operationen sind dagegen Funktionen zum Berechnen der Anfrageergebnisse Anfrageoperationen sind beliebig kombinierbar und bilden eine Algebra zum „Rechnen mit Tabellen“ – die sogenannte relationale Algebra oder auch Relationenalgebra Schallehn Datenmanagement Sommersemester 2017 2–14 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Relationenalgebra: Übersicht Selektion Projektion Verbund Schallehn a1 b2 b2 c3 a1 b2 c3 a2 b2 b3 c4 a2 b2 c3 a2 b3 b4 c5 a2 b3 c4 Datenmanagement Sommersemester 2017 2–15 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Selektion σ Selektion: Auswahl von Zeilen einer Tabelle anhand eines Selektionsprädikats σJahrgang>2000 (WEINE) WeinID 2168 3456 2171 4961 Schallehn Name Creek Shiraz Zinfandel Pinot Noir Chardonnay Farbe Rot Rot Rot Weiß Datenmanagement Jahrgang 2003 2004 2001 2002 Weingut Creek Helena Creek Bighorn Sommersemester 2017 2–16 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Projektion π Projektion: Auswahl von Spalten durch Angabe einer Attributliste πRegion (ERZEUGER) Region South Australia Kalifornien Bordeaux Hessen Schallehn Datenmanagement Sommersemester 2017 2–17 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Projektion π Projektion: Auswahl von Spalten durch Angabe einer Attributliste πRegion (ERZEUGER) Region South Australia Kalifornien Bordeaux Hessen Die Projektion entfernt doppelte Tupel. Schallehn Datenmanagement Sommersemester 2017 2–17 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Natürlicher Verbund o n Verbund (engl. join): verknüpft Tabellen über gleichbenannte Spalten, indem er jeweils zwei Tupel verschmilzt, falls sie dort gleiche Werte aufweisen WEINE o n ERZEUGER WeinID Name ... Weingut Anbaugebiet Region 1042 2168 3456 2171 3478 4711 4961 La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay ... ... ... ... ... ... ... Ch. La Rose Creek Helena Creek Helena Müller Bighorn Saint-Emilion Barossa Valley Napa Valley Barossa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia Kalifornien South Australia Kalifornien Hessen Kalifornien Schallehn Datenmanagement Sommersemester 2017 2–18 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Natürlicher Verbund o n Verbund (engl. join): verknüpft Tabellen über gleichbenannte Spalten, indem er jeweils zwei Tupel verschmilzt, falls sie dort gleiche Werte aufweisen WEINE o n ERZEUGER WeinID Name ... Weingut Anbaugebiet Region 1042 2168 3456 2171 3478 4711 4961 La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay ... ... ... ... ... ... ... Ch. La Rose Creek Helena Creek Helena Müller Bighorn Saint-Emilion Barossa Valley Napa Valley Barossa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia Kalifornien South Australia Kalifornien Hessen Kalifornien Das Weingut „Château La Pointe“ ist im Ergebnis verschwunden Tupel, die keinen Partner finden (dangling tuples), werden eliminiert Schallehn Datenmanagement Sommersemester 2017 2–18 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Kombination von Operationen πName,Farbe,Weingut (σJahrgang>2000 (WEINE) o n σRegion=’Kalifornien’ (ERZEUGER)) ergibt Name Zinfandel Chardonnay Schallehn Farbe Rot Weiß Datenmanagement Weingut Helena Bighorn Sommersemester 2017 2–19 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Umbenennung β Anpassung von Attributnamen mittels Umbenennung: EMPFEHLUNG Wein WEINLISTE Name La Rose Grand Cru La Rose Grand Cru Creek Shiraz Riesling Reserve Zinfandel Merlot Selection Pinot Noir Sauvignon Blanc Riesling Reserve Angleichen durch: βName←Wein (EMPFEHLUNG) Schallehn Datenmanagement Sommersemester 2017 2–20 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Mengenoperationen Vereinigung r1 ∪ r2 von zwei Relationen r1 und r2 : sammelt die Tupelmengen zweier Relationen unter einem gemeinsamen Schema auf Attributmengen beider Relationen müssen identisch sein WEINLISTE ∪ βName←Wein (EMPFEHLUNG) Name La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Riesling Reserve Merlot Selection Sauvignon Blanc Schallehn Datenmanagement Sommersemester 2017 2–21 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Mengenoperationen /2 Differenz r1 − r2 eliminiert die Tupel aus der ersten Relation, die auch in der zweiten Relation vorkommen WEINLISTE − βName←Wein (EMPFEHLUNG) ergibt: Name Creek Shiraz Zinfandel Pinot Noir Schallehn Datenmanagement Sommersemester 2017 2–22 Relationale Datenbanken – Daten als Tabellen Grundoperationen: Die Relationenalgebra Mengenoperationen /3 Durchschnitt r1 ∩ r2 : ergibt die Tupel, die in beiden Relationen gemeinsam vorkommen WEINLISTE ∩ βName←Wein (EMPFEHLUNG) liefert: Name La Rose Grand Cru Riesling Reserve Schallehn Datenmanagement Sommersemester 2017 2–23 Relationale Datenbanken – Daten als Tabellen SQL als Anfragesprache SQL-Anfrage als Standardsprache Anfrage an eine einzelne Tabelle select Name, Farbe from WEINE where Jahrgang = 2002 SQL hat Multimengensemantik — Duplikate in Tabellen werden in SQL nicht automatisch unterdrückt! Mengensemantik durch distinct select distinct Name from WEINE Schallehn Datenmanagement Sommersemester 2017 2–24 Relationale Datenbanken – Daten als Tabellen SQL als Anfragesprache Verknüpfung von Tabellen Kreuzprodukt als Basisverknüpfung select * from WEINE, ERZEUGER Verbund durch Operator natural join select * from WEINE natural join ERZEUGER Verbund alternativ durch Angabe einer Verbundbedingung! select * from WEINE, ERZEUGER where WEINE.Weingut = ERZEUGER.Weingut Schallehn Datenmanagement Sommersemester 2017 2–25 Relationale Datenbanken – Daten als Tabellen SQL als Anfragesprache Kombination von Bedingungen Ausdruck in Relationenalgebra πName,Farbe,Weingut (σJahrgang>2000 (WEINE) o n σRegion=’Kalifornien’ (ERZEUGER)) Anfrage in SQL select Name, Farbe, WEINE.Weingut from WEINE, ERZEUGER where Jahrgang > 2000 and Region = ’Kalifornien’ and WEINE.Weingut = ERZEUGER.Weingut Schallehn Datenmanagement Sommersemester 2017 2–26 Relationale Datenbanken – Daten als Tabellen SQL als Anfragesprache Mengenoperationen in SQL Vereinigung in SQL explizit mit union Differenzbildung durch geschachtelte Anfragen select * from WINZER where Name not in ( select Nachname from KRITIKER) Schallehn Datenmanagement Sommersemester 2017 2–27 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Änderungsoperationen in SQL insert: Einfügen eines oder mehrerer Tupel in eine Basisrelation oder Sicht update: Ändern von einem oder mehreren Tupel in einer Basisrelation oder Sicht delete: Löschen eines oder mehrerer Tupel aus einer Basisrelation oder Sicht Lokale und globale Integritätsbedingungen müssen bei Änderungsoperationen automatisch vom System überprüft werden Schallehn Datenmanagement Sommersemester 2017 2–28 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Die update-Anweisung Syntax: update basisrelation set attribut1 = ausdruck1 ... attributn = ausdruckn [ where bedingung ] Schallehn Datenmanagement Sommersemester 2017 2–29 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Beispiel für update WEINE WeinID 2168 3456 2171 3478 4711 4961 Name Farbe Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay Rot Rot Rot Rot Weiß Weiß Jahrgang 2003 2004 2001 1999 1999 2002 Weingut Creek Helena Creek Helena Müller Bighorn Preis 7.99 5.99 10.99 19.99 14.99 9.90 update WEINE set Preis = Preis * 1.10 where Jahrgang < 2000 Schallehn Datenmanagement Sommersemester 2017 2–30 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Beispiel für update: neue Werte WEINE WeinID 2168 3456 2171 3478 4711 4961 Schallehn Name Farbe Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay Rot Rot Rot Rot Weiß Weiß Jahrgang Datenmanagement 2003 2004 2001 1999 1999 2002 Weingut Preis Creek Helena Creek Helena Müller Bighorn 7.99 5.99 10.99 21.99 16.49 9.90 Sommersemester 2017 2–31 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Weiteres zu update Realisierung von Eintupel-Operation mittels Primärschlüssel: update WEINE set Preis = 7.99 where WeinID = 3456 Änderung der gesamten Relation: update WEINE set Preis = 11 Schallehn Datenmanagement Sommersemester 2017 2–32 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Die delete-Anweisung Syntax: delete from basisrelation [ where bedingung ] Löschen eines Tupels in der WEINE-Relation: delete from WEINE where WeinID = 4711 Schallehn Datenmanagement Sommersemester 2017 2–33 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Weiteres zu delete Standardfall ist das Löschen mehrerer Tupel: delete from WEINE where Farbe = ’Weiß’ Löschen der gesamten Relation: delete from WEINE Schallehn Datenmanagement Sommersemester 2017 2–34 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Weiteres zu delete /2 Löschoperationen können zur Verletzung von Integritätsbedingungen führen! Beispiel: Verletzung der Fremdschlüsseleigenschaft, falls es noch Weine von diesem Erzeuger gibt: delete from ERZEUGER where Anbaugebiet = ’Hessen’ Schallehn Datenmanagement Sommersemester 2017 2–35 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Die insert-Anweisung Syntax: insert into basisrelation [ (attribut1 , ..., attributn ) ] values (konstante1 , ..., konstanten ) optionale Attributliste ermöglicht das Einfügen von unvollständigen Tupeln Schallehn Datenmanagement Sommersemester 2017 2–36 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL insert-Beispiele insert into ERZEUGER (Weingut, Region) values (’Wairau Hills’, ’Marlborough’) nicht alle Attribute angegeben Land wird null Wert des fehlenden Attribut insert into ERZEUGER values (’Château Lafitte’, ’Medoc’, ’Bordeaux’) Schallehn Datenmanagement Sommersemester 2017 2–37 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Einfügen von berechneten Daten Syntax: insert into basisrelation [ (attribut1 , ..., attributn ) ] SQL-anfrage Beispiel: insert into WEINE select ProdID, ProdName, ’Rot’, ProdJahr, ’Château Lafitte’ from LIEFERANT where LName = ’Wein-Kontor’ Schallehn Datenmanagement Sommersemester 2017 2–38 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Zusammenfassung Relationenmodell: Datenbank als Sammlung von Tabellen Integritätsbedingungen im Relationenmodell Tabellendefinition in SQL Relationenalgebra: Anfrageoperatoren Grundkonzepte von SQL-Anfragen und -Änderungen Schallehn Datenmanagement Sommersemester 2017 2–39 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Kontrollfragen Was ist eine Relation? Schallehn Datenmanagement Sommersemester 2017 2–40 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Kontrollfragen Was ist eine Relation? Was definiert die Relationenalgebra? Schallehn Datenmanagement Sommersemester 2017 2–40 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Kontrollfragen Was ist eine Relation? Was definiert die Relationenalgebra? Wie wird eine Realweltobjekt in einer relationalen Datenbank repräsentiert? Schallehn Datenmanagement Sommersemester 2017 2–40 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Kontrollfragen Was ist eine Relation? Was definiert die Relationenalgebra? Wie wird eine Realweltobjekt in einer relationalen Datenbank repräsentiert? Wie werden Tabellen in SQL definiert und manipuliert? Schallehn Datenmanagement Sommersemester 2017 2–40 Relationale Datenbanken – Daten als Tabellen Änderungsoperationen in SQL Kontrollfragen Was ist eine Relation? Was definiert die Relationenalgebra? Wie wird eine Realweltobjekt in einer relationalen Datenbank repräsentiert? Wie werden Tabellen in SQL definiert und manipuliert? Was sind Integritätsbedingungen? Schallehn Datenmanagement Sommersemester 2017 2–40 Teil III Entity-Relationship-Modell Entity-Relationship-Modell Entity-Relationship-Modell 1 Datenbankmodelle Schallehn Datenmanagement Sommersemester 2017 3–1 Entity-Relationship-Modell Entity-Relationship-Modell 1 Datenbankmodelle 2 ER-Modell Schallehn Datenmanagement Sommersemester 2017 3–1 Entity-Relationship-Modell Entity-Relationship-Modell 1 Datenbankmodelle 2 ER-Modell 3 Weitere Konzepte im ER-Modell Schallehn Datenmanagement Sommersemester 2017 3–1 Entity-Relationship-Modell Datenbankmodelle Grundlagen von Datenbankmodellen Ein Datenbankmodell ist ein System von Konzepten zur Beschreibung von Datenbanken. Es legt Syntax und Semantik von Datenbankbeschreibungen für ein Datenbanksystem fest. Datenbankbeschreibungen = Datenbankschemata Schallehn Datenmanagement Sommersemester 2017 3–2 Entity-Relationship-Modell Datenbankmodelle Ein Datenbankmodell legt fest... 1 Statische Eigenschaften 1 2 2 inklusive der Standard-Datentypen, die Daten über die Beziehungen und Objekte darstellen können, Dynamische Eigenschaften wie 1 2 3 Objekte Beziehungen Operationen Beziehungen zwischen Operationen, Integritätsbedingungen an 1 2 Objekte Operationen Schallehn Datenmanagement Sommersemester 2017 3–3 Entity-Relationship-Modell Datenbankmodelle Datenbankmodelle Klassische Datenbankmodelle sind speziell geeignet für I I große Informationsmengen mit relativ einfacher und starrer Struktur und die Darstellung statischer Eigenschaften und Integritätsbedingungen (also die Bereiche 1(a), 1(b) und 3(a)) Verschiedene Modelle für verschiedene Phasen (später ausführlicher) Modelle für den konzeptuellen Entwurf: ER-Modell, UML, . . . Modell für den logischen Entwurf: Relationenmodell, objektorientierte Modelle, . . . Schallehn Datenmanagement Sommersemester 2017 3–4 Entity-Relationship-Modell Datenbankmodelle Einordnung: Phasenmodell des Datenbankentwurfs Anforderungsanalyse Konzeptioneller Entwurf Verteilungsentwurf Logischer Entwurf Datendefinition Physischer Entwurf Implementierung & Wartung Schallehn Datenmanagement Sommersemester 2017 3–5 Entity-Relationship-Modell Datenbankmodelle Datenbanken versus Programmiersprachen Datenbankkonzept Typsystem einer Programmiersprache Datenbankmodell Typsystem Relation, Attribut . . . Datenbankschema int, struct ... Variablendeklaration relation WEIN = (...) Datenbank var x: int, y: struct Wein Werte WEIN(4961, ’Chardonnay’, ’Weiß’, . . . ) 42, ’Cabernet Sauvignon’ Schallehn Datenmanagement Sommersemester 2017 3–6 Entity-Relationship-Modell Datenbankmodelle Datenbankmodelle im Überblick implementierungsnah ab Mitte 1960 abstrakt HM NWM 1970 RM ER SQL NF 2 1980 SDM eNF2 1990 OODM OEM (C++) ODMG 2000 Schallehn ORM / SQL-99 Datenmanagement Sommersemester 2017 3–7 Entity-Relationship-Modell Datenbankmodelle Datenbankmodelle im Überblick /2 HM: hierarchisches Modell, NWM: Netzwerkmodell, RM: Relationenmodell NF2 : Modell der geschachtelten (Non-First-Normal-Form = NF2 ) Relationen, eNF2 : erweitertes NF2 -Modell ER: Entity-Relationship-Modell, SDM: semantische Datenmodelle OODM / C++: objektorientierte Datenmodelle auf Basis objektorientierter Programmiersprachen wie C++, OEM: objektorientierte Entwurfsmodelle (etwa UML), ORDM: objektrelationale Datenmodelle Schallehn Datenmanagement Sommersemester 2017 3–8 Entity-Relationship-Modell ER-Modell Das Entity Relationship-Modell Entity: Objekt der realen oder der Vorstellungswelt, über das Informationen zu speichern sind, z.B. Produkte (Wein, Katalog), Winzer oder Kritiker; aber auch Informationen über Ereignisse, wie z.B. Bestellungen Relationship: beschreibt eine Beziehung zwischen Entities, z.B. ein Kunde bestellt einen Wein oder ein Wein wird von einem Winzer angeboten Attribut: repräsentiert eine Eigenschaft von Entities oder Beziehungen, z.B. Name eines Kunden, Farbe eines Weines oder Datum einer Bestellung Schallehn Datenmanagement Sommersemester 2017 3–9 Entity-Relationship-Modell Farbe ER-Beispiel ER-Modell Name Land Bezeichnung Region Name Rebsorte [0,*] Anbaugebiet Beilage Anteil hergestellt aus Gericht sitzt in [0,*] Name Farbe [1,7] [0,*] empfiehlt Restsüße [0,*] produziert von Wein Jahrgang Erzeuger Weingut Kritiker Adresse besitzt Name LizenzNr Organisation Lizenz Menge Schallehn Datenmanagement Sommersemester 2017 3–10 Entity-Relationship-Modell ER-Modell Werte Werte: primitive Datenelemente, die direkt darstellbar sind Wertemengen sind beschrieben durch Datentypen, die neben einer Wertemenge auch die Grundoperationen auf diesen Werten charakterisieren ER-Modell: vorgegebene Standard-Datentypen, etwa die ganzen Zahlen int, die Zeichenketten string, Datumswerte date etc. jeder Datentyp stellt Wertebereich mit Operationen und Prädikaten dar Schallehn Datenmanagement Sommersemester 2017 3–11 Entity-Relationship-Modell ER-Modell Entities und Entity Typen Entities sind die in einer Datenbank zu repräsentierenden Informationseinheiten Im Gegensatz zu Werten nicht direkt darstellbar, sondern nur über ihre Eigenschaften beobachtbar Entities sind eingeteilt in Entity-Typen, etwa E1 , E2 . . . Wein In ER-Diagrammen werden Entity Typen dargestellt, keine Entities! Schallehn Datenmanagement Sommersemester 2017 3–12 Entity-Relationship-Modell ER-Modell Attribute Attribute modellieren Eigenschaften von Entities oder auch Beziehungen alle Entities eines Entity-Typs haben dieselben Arten von Eigenschaften; Attribute werden somit für Entity-Typen deklariert Farbe Name Wein Jahrgang Textuelle Notation E(A1 : D1 , . . . , Am : Dm ) Schallehn Datenmanagement Sommersemester 2017 3–13 Entity-Relationship-Modell ER-Modell Identifizierung durch Schlüssel Schlüsselattribute: Teilmenge der gesamten Attribute eines Entity-Typs E(A1 , . . . , Am ) {S1 , . . . , Sk } ⊆ {A1 , . . . , Am } In jedem Datenbankzustand identifizieren die aktuellen Werte der Schlüsselattribute eindeutig Instanzen des Entity-Typs E Bei mehreren möglichen Schlüsselkandidaten: Auswahl eines Primärschlüssels Notation: markieren durch Unterstreichung: E(. . . , S1 , . . . , Si , . . .) Schallehn Datenmanagement Sommersemester 2017 3–14 Entity-Relationship-Modell ER-Modell Beziehungstypen Beziehungen zwischen Entities werden zu Beziehungstypen, Relationship Types zusammengefasst Allgemein: beliebige Anzahl n ≥ 2 von Entity-Typen kann an einem Beziehungstyp teilhaben Zu jedem n-stelligen Beziehungstyp R gehören n Entity-Typen E1 , . . . , En Schallehn Datenmanagement Sommersemester 2017 3–15 Entity-Relationship-Modell ER-Modell Beziehungstypen /2 Notation Erzeuger produziert Wein Textuelle Notation: R(E1 , E2 , . . . , En ) Wenn Entity-Typ mehrfach an einem Beziehungstyp beteiligt: Vergabe von Rollennamen möglich verheiratet(Frau: Person, Mann: Person) Schallehn Datenmanagement Sommersemester 2017 3–16 Entity-Relationship-Modell ER-Modell Beziehungsattribute Beziehungen können ebenfalls Attribute besitzen Attributdeklarationen werden beim Beziehungstyp vorgenommen; gilt auch hier für alle Ausprägungen eines Beziehungstyps Beziehungsattribute Anteil Wein hergestellt aus Rebsorte Textuelle Notation: R(E1 , . . . , En ; A1 , . . . , Ak ) Schallehn Datenmanagement Sommersemester 2017 3–17 Entity-Relationship-Modell ER-Modell Merkmale von Beziehungen Stelligkeit oder Grad: I I I Anzahl der beteiligten Entity-Typen häufig: binär Beispiel: Lieferant liefert Produkt Kardinalität oder Funktionalität: I I I I Anzahl der eingehenden Instanzen eines Entity-Typs Formen: 1:1, 1:n, m:n stellt Integritätsbedingung dar Beispiel: maximal 5 Produkte pro Bestellung Schallehn Datenmanagement Sommersemester 2017 3–18 Entity-Relationship-Modell ER-Modell Zwei- vs. mehrstellige Beziehungen Gericht empfiehlt Wein Kritiker Schallehn Datenmanagement Sommersemester 2017 3–19 Entity-Relationship-Modell ER-Modell Zwei- vs. mehrstellige Beziehungen Gericht empfiehlt Wein Kritiker Schallehn Datenmanagement Gericht G-W G-K Wein Kritiker K-W Sommersemester 2017 3–19 Entity-Relationship-Modell ER-Modell Ausprägungen im Beispiel g1 w1 g2 w2 Gericht Wein k1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–20 Entity-Relationship-Modell ER-Modell Ausprägungen im Beispiel g1 w1 g1 w1 g2 w2 g2 w2 Gericht Wein k1 k2 Wein k1 Kritiker Schallehn Gericht k2 Kritiker Datenmanagement Sommersemester 2017 3–20 Entity-Relationship-Modell ER-Modell Rekonstruktion der Ausprägungen g1 w1 g2 w2 Gericht Wein k1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–21 Entity-Relationship-Modell ER-Modell Rekonstruktion der Ausprägungen g1 w1 g2 w2 Gericht g1 – k1 – w1 Wein k1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–21 Entity-Relationship-Modell ER-Modell Rekonstruktion der Ausprägungen g1 w1 g2 w2 g1 – k1 – w1 g1 – k2 – w2 Gericht Wein k1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–21 Entity-Relationship-Modell ER-Modell Rekonstruktion der Ausprägungen g1 w1 g2 w2 g1 – k1 – w1 g1 – k2 – w2 g2 – k2 – w1 Gericht Wein k1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–21 Entity-Relationship-Modell ER-Modell Rekonstruktion der Ausprägungen g1 w1 g2 w2 g1 – k1 – w1 g1 – k2 – w2 g2 – k2 – w1 Gericht Wein k1 aber auch: g1 – k2 – w1 k2 Kritiker Schallehn Datenmanagement Sommersemester 2017 3–21 Entity-Relationship-Modell ER-Modell 1:1-Beziehungen jedem Entity e1 vom Entity-Typ E1 ist maximal ein Entity e2 aus E2 zugeordnet und umgekehrt Beispiele: Prospekt beschreibt Produkt, Mann ist verheiratet mit Frau E1 Schallehn E2 Datenmanagement Sommersemester 2017 3–22 Entity-Relationship-Modell ER-Modell 1:N-Beziehungen jedem Entity e1 vom Entity-Typ E1 sind beliebig viele Entities E2 zugeordnet, aber zu jedem Entity e2 gibt es maximal ein e1 aus E1 Beispiele: Lieferant liefert Produkt, Mutter hat Kinder E1 Schallehn E2 Datenmanagement Sommersemester 2017 3–23 Entity-Relationship-Modell ER-Modell N:1-Beziehung invers zu 1:N, auch funktionale Beziehung zweistellige Beziehungen, die eine Funktion beschreiben: Jedem Entity eines Entity-Typs E1 wird maximal ein Entity eines Entity-Typs E2 zugeordnet. R : E1 → E2 Wein Schallehn produziert von Datenmanagement Erzeuger Sommersemester 2017 3–24 Entity-Relationship-Modell ER-Modell 1:1-Beziehung Erzeuger Schallehn besitzt Datenmanagement Lizenz Sommersemester 2017 3–25 Entity-Relationship-Modell ER-Modell M:N-Beziehungen keine Restriktionen Beispiel: Bestellung umfasst Produkte E1 Schallehn E2 Datenmanagement Sommersemester 2017 3–26 Entity-Relationship-Modell ER-Modell [min,max]-Notation E1 [min1, max1] R [min2, max2] [minn, maxn] En ... E2 schränkt die möglichen Teilnahmen von Instanzen der beteiligten Entity-Typen an der Beziehung ein, indem ein minimaler und ein maximaler Wert vorgegeben wird Notation für Kardinalitätsangaben an einem Beziehungstyp R(E1 , . . . , Ei [mini , maxi ], . . . , En ) Kardinalitätsbedingung: mini ≤ |{r | r ∈ R ∧ r .Ei = ei }| ≤ maxi Spezielle Wertangabe für maxi ist ∗ Schallehn Datenmanagement Sommersemester 2017 3–27 Entity-Relationship-Modell ER-Modell Kardinalitätsangaben [0, ∗] legt keine Einschränkung fest (default) R(E1 [0, 1], E2 ) entspricht einer (partiellen) funktionalen Beziehung R : E1 → E2 , da jede Instanz aus E1 maximal einer Instanz aus E2 zugeordnet ist totale funktionale Beziehung wird durch R(E1 [1, 1], E2 ) modelliert Schallehn Datenmanagement Sommersemester 2017 3–28 Entity-Relationship-Modell ER-Modell Kardinalitätsangaben: Beispiele partielle funktionale Beziehung lagert_in(Produkt[0,1],Fach[0,3]) „Jedes Produkt ist im Lager in einem Fach abgelegt, allerdings wird ausverkauften bzw. gegenwärtig nicht lieferbaren Produkte kein Fach zugeordnet. Pro Fach können maximal drei Produkte gelagert werden.“ totale funktionale Beziehung liefert(Lieferant[0,*],Produkt[1,1]) „Jedes Produkt wird durch genau einen Lieferant geliefert, aber ein Lieferant kann durchaus mehrere Produkte liefern.“ Schallehn Datenmanagement Sommersemester 2017 3–29 Entity-Relationship-Modell ER-Modell Alternative Kardinalitätsangabe [1,1] Produkt N Produkt Schallehn geliefert von geliefert von Datenmanagement [0,*] Lieferant 1 Lieferant Sommersemester 2017 3–30 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Abhängige Entity-Typen abhängiger Entity-Typ: Identifikation über funktionale Beziehung WeinJahrgang gehört-zu Jahr Wein Name Restsüße Farbe Abhängige Entities im ER-Modell: Funktionale Beziehung als Schlüssel Schallehn Datenmanagement Sommersemester 2017 3–31 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Abhängige Entity-Typen /2 Mögliche Ausprägung für abhängige Entities gehört-zu Jahr: 2004 Restsüße: 1,2 Name: Pinot Noir Farbe: Rot gehört-zu Jahr: 2003 Restsüße: 1,4 Name: Zinfandel Farbe: Rot gehört-zu Jahr: 1999 Restsüße: 6,7 Schallehn Name: Riesling Reserve Farbe: Weiß Datenmanagement Sommersemester 2017 3–32 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Abhängige Entity-Typen /3 Alternative Notation WeinJahrgang N gehört-zu Jahr Wein Name Restsüße Schallehn 1 Farbe Datenmanagement Sommersemester 2017 3–33 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Die IST-Beziehung Spezialisierungs-/Generalisierungsbeziehung oder auch ISTBeziehung (engl. is-a relationship) textuelle Notation: E1 IST E2 IST-Beziehung entspricht semantisch einer injektiven funktionalen Beziehung Herstellung Schaumwein Schallehn Name IST Datenmanagement Wein Farbe Sommersemester 2017 3–34 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Eigenschaften der IST-Beziehung Jeder Schaumwein-Instanz ist genau eine Wein-Instanz zugeordnet Schaumwein-Instanzen werden durch die funktionale ISTBeziehung identifiziert Nicht jeder Wein ist zugleich ein Schaumwein Attribute des Entity-Typs Wein treffen auch auf Schaumweine zu: „vererbte“ Attribute Schaumwein(Name,Farbe,Herstellung) | {z } von Wein nicht nur die Attributdeklarationen vererben sich, sondern auch jeweils die aktuellen Werte für eine Instanz Schallehn Datenmanagement Sommersemester 2017 3–35 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Ausprägung für IST-Beziehung w1 w1 w2 w4 w2 w3 w4 w5 Schaumweine w6 Weine Schallehn Datenmanagement Sommersemester 2017 3–36 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Alternative Notation für IST-Beziehung Herstellung Name Schaumwein Schallehn Farbe Wein Datenmanagement Sommersemester 2017 3–37 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Kardinalitätsangaben: IST für Beziehung E1 IST E2 gilt immer: IST(E1 [1, 1], E2 [0, 1]) Jede Instanz von E1 nimmt genau einmal an der IST-Beziehung teil, während Instanzen des Obertyps E2 nicht teilnehmen müssen Aspekte wie Attributvererbung werden hiervon nicht erfasst Schallehn Datenmanagement Sommersemester 2017 3–38 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Optionalität von Attributen Land Weingut Region Adresse Erzeuger Schallehn Name sitzt in Datenmanagement Anbaugebiet Sommersemester 2017 3–39 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Konzepte im Überblick Begriff Informale Bedeutung Entity Entity-Typ Beziehungstyp Attribut zu repräsentierende Informationseinheit Gruppierung von Entitys mit gleichen Eigenschaften Gruppierung von Beziehungen zwischen Entitys datenwertige Eigenschaft eines Entitys oder einer Beziehung identifizierende Eigenschaft von Entitys Einschränkung von Beziehungstypen bezüglich der mehrfachen Teilnahme von Entitys an der Beziehung Anzahl der an einem Beziehungstyp beteiligten EntityTypen Beziehungstyp mit Funktionseigenschaft Entitys, die nur abhängig von anderen Entitys existieren können Spezialisierung von Entity-Typen Attribute oder funktionale Beziehungen als partielle Funktionen Schlüssel Kardinalitäten Stelligkeit funktionale Beziehung abhängige Entitys IST-Beziehung Optionalität Schallehn Datenmanagement Sommersemester 2017 3–40 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Zusammenfassung Datenbankmodell, Datenbankschema, Datenbank(instanz) Schallehn Datenmanagement Sommersemester 2017 3–41 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Zusammenfassung Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell Schallehn Datenmanagement Sommersemester 2017 3–41 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Zusammenfassung Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell Weitere Konzepte im ER-Modell Schallehn Datenmanagement Sommersemester 2017 3–41 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Zusammenfassung Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell Weitere Konzepte im ER-Modell Basis: Kapitel 3 von [SSH10] Schallehn Datenmanagement Sommersemester 2017 3–41 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Kontrollfragen Was definiert ein Datenbankmodell? Was unterscheidet Modell und Schema? Schallehn Datenmanagement Sommersemester 2017 3–42 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Kontrollfragen Was definiert ein Datenbankmodell? Was unterscheidet Modell und Schema? Welche Konzepte definiert das ER-Modell? Schallehn Datenmanagement Sommersemester 2017 3–42 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Kontrollfragen Was definiert ein Datenbankmodell? Was unterscheidet Modell und Schema? Welche Konzepte definiert das ER-Modell? Durch welche Eigenschaften sind Beziehungstypen charakterisiert? Schallehn Datenmanagement Sommersemester 2017 3–42 Entity-Relationship-Modell Weitere Konzepte im ER-Modell Kontrollfragen Was definiert ein Datenbankmodell? Was unterscheidet Modell und Schema? Welche Konzepte definiert das ER-Modell? Durch welche Eigenschaften sind Beziehungstypen charakterisiert? Was unterscheidet abhängige Entity-Typen von normalen Entity-Typen? Schallehn Datenmanagement Sommersemester 2017 3–42 Teil IV Datenbankentwurf Datenbankentwurf Datenbankentwurf 1 Phasen des Datenbankentwurfs Schallehn Datenmanagement Sommersemester 2017 4–1 Datenbankentwurf Datenbankentwurf 1 Phasen des Datenbankentwurfs 2 Weiteres Vorgehen beim Entwurf Schallehn Datenmanagement Sommersemester 2017 4–1 Datenbankentwurf Datenbankentwurf 1 Phasen des Datenbankentwurfs 2 Weiteres Vorgehen beim Entwurf 3 Kapazitätserhaltende Abbildungen Schallehn Datenmanagement Sommersemester 2017 4–1 Datenbankentwurf Datenbankentwurf 1 Phasen des Datenbankentwurfs 2 Weiteres Vorgehen beim Entwurf 3 Kapazitätserhaltende Abbildungen 4 ER-auf-RM-Abbildung Schallehn Datenmanagement Sommersemester 2017 4–1 Datenbankentwurf Phasen des Datenbankentwurfs Entwurfsaufgabe Datenhaltung für mehrere Anwendungssysteme und mehrere Jahre daher: besondere Bedeutung Anforderungen an Entwurf I I I Anwendungsdaten jeder Anwendung sollen aus Daten der Datenbank ableitbar sein (und zwar möglichst effizient) nur „vernünftige“ (wirklich benötigte) Daten sollen gespeichert werden nicht-redundante Speicherung Schallehn Datenmanagement Sommersemester 2017 4–2 Datenbankentwurf Phasen des Datenbankentwurfs Phasenmodell Anforderungsanalyse Konzeptioneller Entwurf Verteilungsentwurf Logischer Entwurf Datendefinition Physischer Entwurf Implementierung & Wartung Schallehn Datenmanagement Sommersemester 2017 4–3 Datenbankentwurf Phasen des Datenbankentwurfs Anforderungsanalyse Vorgehensweise: Sammlung des Informationsbedarfs in den Fachabteilungen Ergebnis: I I informale Beschreibung (Texte, tabellarische Aufstellungen, Formblätter, usw.) des Fachproblems Trennen der Information über Daten (Datenanalyse) von den Information über Funktionen (Funktionsanalyse) „Klassischer“ DB-Entwurf: I nur Datenanalyse und Folgeschritte Funktionsentwurf: I siehe Methoden des Software Engineering Schallehn Datenmanagement Sommersemester 2017 4–4 Datenbankentwurf Phasen des Datenbankentwurfs Konzeptioneller Entwurf erste formale Beschreibung des Fachproblems Sprachmittel: semantisches Datenmodell Vorgehensweise: I I I Modellierung von Sichten z.B. für verschiedene Fachabteilungen Analyse der vorliegenden Sichten in Bezug auf Konflikte Integration der Sichten in ein Gesamtschema Ergebnis: konzeptionelles Gesamtschema, z.B. ER-Diagramm Schallehn Datenmanagement Sommersemester 2017 4–5 Datenbankentwurf Phasen des Datenbankentwurfs Phasen des konzeptionellen Entwurf konzeptioneller Entwurf Sichtenentwurf Sichtenanalyse Sichtenintegration Schallehn Datenmanagement Sommersemester 2017 4–6 Datenbankentwurf Weiteres Vorgehen beim Entwurf Weiteres Vorgehen beim Entwurf ER-Modellierung von verschiedenen Sichten auf Gesamtinformation, z.B. für verschiedene Fachabteilungen eines Unternehmens konzeptueller Entwurf I I Analyse und Integration der Sichten Ergebnis: konzeptionelles Gesamtschema Verteilungsentwurf bei verteilter Speicherung Abbildung auf konkretes Implementierungsmodell (z.B. Relationenmodell) logischer Entwurf Datendefinition, Implementierung und Wartung Entwurf Schallehn Datenmanagement physischer Sommersemester 2017 4–7 Datenbankentwurf Weiteres Vorgehen beim Entwurf Sichtenintegration Analyse der vorliegenden Sichten in Bezug auf Konflikte Integration der Sichten in ein Gesamtschema Sicht #2 Sicht #1 Konsolidierung Globales Schema Sicht #3 Schallehn Datenmanagement Sommersemester 2017 4–8 Datenbankentwurf Weiteres Vorgehen beim Entwurf Integrationskonflikte Namenskonflikte: Homonyme / Synonyme I I Homonyme: Schloss; Kunde Synonyme: Auto, KFZ, Fahrzeug Typkonflikte: verschiedene Strukturen für das gleiche Element Wertebereichskonflikte: verschiedene Wertebereiche für ein Element Bedingungskonflikte: z.B. verschiedene Schlüssel für ein Element Strukturkonflikte: gleicher Sachverhalt durch unterschiedliche Konstrukte ausgedrückt Schallehn Datenmanagement Sommersemester 2017 4–9 Datenbankentwurf Weiteres Vorgehen beim Entwurf Logischer Entwurf Sprachmittel: Datenmodell des ausgewählten „Realisierungs“-DBMS z.B. relationales Modell Vorgehensweise: 1 2 (automatische) Transformation des konzeptionellen Schemas z.B. ER → relationales Modell Verbesserung des relationalen Schemas anhand von Gütekriterien (Normalisierung, siehe Kapitel 5): Entwurfsziele: Redundanzvermeidung, . . . Ergebnis: logisches Schema, z.B. Sammlung von Relationenschemata Schallehn Datenmanagement Sommersemester 2017 4–10 Datenbankentwurf Weiteres Vorgehen beim Entwurf Datendefinition Umsetzung des logischen Schemas in ein konkretes Schema Sprachmittel: DDL und DML eines DBMS z.B. Oracle, DB2, SQL Server I I I Datenbankdeklaration in der DDL des DBMS Realisierung der Integritätssicherung Definition der Benutzersichten Schallehn Datenmanagement Sommersemester 2017 4–11 Datenbankentwurf Weiteres Vorgehen beim Entwurf Physischer Entwurf Ergänzen des physischen Entwurfs um Zugriffsunterstützung bzgl. Effizienzverbesserung, z.B. Definition von Indexen Index I I Zugriffspfad: Datenstruktur für zusätzlichen, schlüsselbasierten Zugriff auf Tupel (hSchlüsselattributwert, Tupeladressei) meist als B*-Baum realisiert Sprachmittel: Speicherstruktursprache SSL Schallehn Datenmanagement Sommersemester 2017 4–12 Datenbankentwurf Weiteres Vorgehen beim Entwurf Indexe in SQL create [ unique ] index indexname on relname ( attrname [ asc | desc ], attrname [ asc | desc ], ... ) Beispiel create index WeinIdx on WEINE (Name) Schallehn Datenmanagement Sommersemester 2017 4–13 Datenbankentwurf Weiteres Vorgehen beim Entwurf Notwendigkeit für Zugriffspfade Beispiel: Tabelle mit 100 GB Daten, Festplattentransferrate ca. 50 MB/s Operation: Suchen eines Tupels (Selektion) Implementierung: sequentielles Durchsuchen Aufwand: 102.400/50 = 2.048 sec. ≈ 34 min. Schallehn Datenmanagement Sommersemester 2017 4–14 Datenbankentwurf Weiteres Vorgehen beim Entwurf Implementierung und Wartung Phasen I I I I I der Wartung, der weiteren Optimierung der physischen Ebene, der Anpassung an neue Anforderungen und Systemplattformen, der Portierung auf neue Datenbankmanagementsysteme etc. Schallehn Datenmanagement Sommersemester 2017 4–15 Datenbankentwurf Kapazitätserhaltende Abbildungen Umsetzung des konzeptionellen Schemas Umsetzung auf logisches Schema I I I Beispiel: ER → RM korrekt? Qualität der Abbildung? Erhaltung der Informationskapazität I I I Kann man nach der Abbildung genau die selben Daten abspeichern wie vorher? ... oder etwa mehr? ... oder etwa weniger? Schallehn Datenmanagement Sommersemester 2017 4–16 Datenbankentwurf Kapazitätserhaltende Abbildungen Kapazitätserhöhende Abbildung Lizenz besitzt Erzeuger LizenzNo Weingut Abbildung auf R = {LizenzNo, Weingut} mit genau einem Schlüssel K = {{LizenzNo}} mögliche ungültige Relation: BESITZT LizenzNo 007 42 Schallehn Datenmanagement Weingut Helena Helena Sommersemester 2017 4–17 Datenbankentwurf Kapazitätserhaltende Abbildungen Kapazitätserhaltende Abbildung Lizenz besitzt Erzeuger LizenzNo Weingut korrekte Ausprägung BESITZT LizenzNo 007 42 Weingut Helena Müller korrekte Schlüsselmenge K = {{LizenzNo}, {Weingut}} Schallehn Datenmanagement Sommersemester 2017 4–18 Datenbankentwurf Kapazitätserhaltende Abbildungen Kapazitätsvermindernde Abbildung Wein enthält Rebsorte WName Sortenname Relationenschema mit einem Schlüssel {WName} als Ausprägung nicht mehr möglich: ENTHÄLT WName Zinfandel Red Blossom Bordeaux Blanc Bordeaux Blanc Sortenname Zinfandel Cabernet Sauvignon Muscadelle kapazitätserhaltend mit Schlüssel beider Entity-Typen im Relationenschema als neuer Schlüssel K = {{WName, Sortenname}} Schallehn Datenmanagement Sommersemester 2017 4–19 Datenbankentwurf ER-auf-RM-Abbildung Beispielabbildung ER-RM: Eingabe Anteil Rebsorte Farbe WName enthält Wein Sortenname Erzeuger Farbe produziert Jahrgang Restsüße Weingut Schallehn Adresse Datenmanagement Sommersemester 2017 4–20 Datenbankentwurf ER-auf-RM-Abbildung Beispielabbildung ER-RM: Ergebnis 1 2 3 4 5 REBSORTE = {Farbe, Sortenname} mit KREBSORTE = {{Sortenname}} ENTHÄLT = {Sortenname, WName, Anteil} mit KENTHÄLT = {{Sortenname, WName}} WEIN = {Farbe, WName, Jahrgang, Restsüße} mit KWEIN = {{WName}} PRODUZIERT = {WName, Weingut} mit KPRODUZIERT = {{WName}} ERZEUGER = {Weingut, Adresse} mit KERZEUGER = {{Weingut}} Schallehn Datenmanagement Sommersemester 2017 4–21 Datenbankentwurf ER-auf-RM-Abbildung ER-Abbildung auf Relationen Entity-Typen und Beziehungstypen: jeweils auf Relationenschemata Attribute: Attribute des Relationenschemas, Schlüssel werden übernommen Kardinalitäten der Beziehungen: durch Wahl der Schlüssel bei den zugehörigen Relationenschemata ausgedrückt in einigen Fällen: Verschmelzen der Relationenschemata von Entity- und Beziehungstypen zwischen den verbleibenden Relationenschemata diverse Fremdschlüsselbedingungen einführen Schallehn Datenmanagement Sommersemester 2017 4–22 Datenbankentwurf ER-auf-RM-Abbildung Abbildung von Beziehungstypen neues Relationenschema mit allen Attributen des Beziehungstyps, zusätzlich Übernahme aller Primärschlüssel der beteiligten EntityTypen Festlegung der Schlüssel: I I I m:n-Beziehung: beide Primärschlüssel zusammen werden Schlüssel im neuen Relationenschema 1:n-Beziehung: Primärschlüssel der n-Seite (bei der funktionalen Notation die Seite ohne Pfeilspitze) wird Schlüssel im neuen Relationenschema 1:1-Beziehung: beide Primärschlüssel werden je ein Schlüssel im neuen Relationenschema, der Primärschlüssel wird dann aus diesen Schlüsseln gewählt Schallehn Datenmanagement Sommersemester 2017 4–23 Datenbankentwurf ER-auf-RM-Abbildung n:m-Beziehungen WName Farbe Wein Restsüße Anteil enthält Jahrgang Rebsorte Sortenname Farbe Umsetzung 1 2 3 REBSORTE = {Farbe, Sortenname} mit KREBSORTE = {{Sortenname}} ENTHÄLT = {Sortenname, WName, Anteil} mit KENTHÄLT = {{Sortenname, WName}} WEIN = {Farbe, WName, Jahrgang, Restsüße} mit KWEIN = {{WName}} Attribute Sortenname und WName sind gemeinsam Schlüssel Schallehn Datenmanagement Sommersemester 2017 4–24 Datenbankentwurf ER-auf-RM-Abbildung 1:n-Beziehungen sitzt in Erzeuger Weingut Adresse Anbaugebiet Name Region Umsetzung (zunächst) I I I ERZEUGER mit den Attributen Weingut und Adresse, ANBAUGEBIET mit den Attributen Name und Region und SITZT_IN mit den Attributen Weingut und Name und dem Primärschlüssel der n-Seite Weingut als Primärschlüssel dieses Schemas. Schallehn Datenmanagement Sommersemester 2017 4–25 Datenbankentwurf ER-auf-RM-Abbildung Mögliche Verschmelzungen optionale Beziehungen ([0,1] oder [0,n]) werden nicht verschmolzen bei Kardinalitäten [1,1] oder [1,n] (zwingende Beziehungen) Verschmelzung möglich: I I 1:n-Beziehung: das Entity-Relationenschema der n-Seite kann in das Relationenschema der Beziehung integriert werden 1:1-Beziehung: beide Entity-Relationenschemata können in das Relationenschema der Beziehung integriert werden Schallehn Datenmanagement Sommersemester 2017 4–26 Datenbankentwurf ER-auf-RM-Abbildung 1:1-Beziehungen Lizenz LizenzNo Erzeuger besitzt HektoLiter Weingut Adresse Umsetzung (zunächst) I I I ERZEUGER mit den Attributen Weingut und Adresse LIZENZ mit den beiden Attributen LizenzNo und Hektoliter BESITZT mit den Primärschlüsseln der beiden beteiligten EntityTypen jeweils als Schlüssel dieses Schemas, also LizenzNo und Weingut Schallehn Datenmanagement Sommersemester 2017 4–27 Datenbankentwurf ER-auf-RM-Abbildung 1:1-Beziehungen: Verschmelzung Umsetzung mit Verschmelzung I I I verschmolzene Relation: ERZEUGER Weingut Adresse LizenzNo Rotkäppchen Freiberg 42-007 Weingut Müller Dagstuhl 42-009 Erzeuger ohne Lizenz erfordern Nullwerte: ERZEUGER Weingut Adresse LizenzNo Rotkäppchen Freiberg 42-007 Weingut Müller Dagstuhl ⊥ freie Lizenzen führen zu weiteren Nullwerten: ERZEUGER Weingut Adresse LizenzNo Rotkäppchen Freiberg 42-007 Weingut Müller Dagstuhl ⊥ ⊥ ⊥ 42-003 Schallehn Datenmanagement Hektoliter 10.000 250 Hektoliter 10.000 ⊥ Hektoliter 10.000 ⊥ 100.000 Sommersemester 2017 4–28 Datenbankentwurf ER-auf-RM-Abbildung Abhängige Entity-Typen WeinJahrgang Restsüße N gehört-zu Jahr Wein 1 WName Farbe Umsetzung WEINJAHRGANG = {WName, Restsüße, Jahr} mit KWEINJAHRGANG = {{WName, Jahr}} WEIN = {Farbe, WName} mit KWEIN = {{WName}} 1 2 I Attribut WName in WEINJAHRGANG ist Fremdschlüssel zur Relation WEIN Schallehn Datenmanagement Sommersemester 2017 4–29 Datenbankentwurf ER-auf-RM-Abbildung IST-Beziehung Herstellung WName Schaumwein Farbe Wein Umsetzung WEIN = {Farbe, WName, Jahrgang, Restsüße} mit KWEIN = {{WName}} SCHAUMWEIN = {WName, Herstellung} mit KSCHAUMWEIN = {{WName}} 1 2 I WName in SCHAUMWEIN ist Fremdschlüssel bezüglich der Relation WEIN Schallehn Datenmanagement Sommersemester 2017 4–30 Datenbankentwurf ER-auf-RM-Abbildung Rekursive Beziehungen Name nach Anbaugebiet grenzt-an von Region Umsetzung 1 2 ANBAUGEBIET = {Name, Region} mit KANBAUGEBIET = {{Name}} GRENZT_AN = {nach, von} mit KGRENZT_AN = {{nach, von}} Schallehn Datenmanagement Sommersemester 2017 4–31 Datenbankentwurf ER-auf-RM-Abbildung Rekursive funktionale Beziehungen Name Mentor Kritiker Organisation SchülerVon Schüler Umsetzung 1 KRITIKER = {Name, Organisation, Mentorname} mit KKRITIKER = {{Name}} I Mentorname ist Fremdschlüssel auf das Attribut Name der Relation KRITIKER. Schallehn Datenmanagement Sommersemester 2017 4–32 Datenbankentwurf ER-auf-RM-Abbildung Mehrstellige Beziehungen Bezeichnung Beilage WName Gericht empfiehlt Farbe Wein Restsüße Jahrgang Kritiker Name Organisation jeder beteiligte Entity-Typ wird nach den obigen Regeln behandelt für Beziehung Empfiehlt werden Primärschlüssel der drei beteiligten EntityTypen in das resultierende Relationenschema aufgenommen Beziehung ist allgemeiner Art (k:m:n-Beziehung): alle Primärschlüssel bilden zusammen den Schlüssel Schallehn Datenmanagement Sommersemester 2017 4–33 Datenbankentwurf ER-auf-RM-Abbildung Mehrstellige Beziehungen: Ergebnis 1 2 3 4 EMPFIEHLT = {WName, Bezeichnung, Name} mit KEMPFIEHLT = {{WName, Bezeichnung, Name}} GERICHT = {Bezeichnung, Beilage} mit KGERICHT = {{Bezeichnung}} WEIN = {Farbe, WName, Jahrgang, Restsüße} mit KWEIN = {{WName}} KRITIKER = {Name, Organisation} mit KKRITIKER = {{Name}} Die drei Schlüsselattribute von EMPFIEHLT sind Fremdschlüssel für die jeweiligen Ursprungsrelationen. Schallehn Datenmanagement Sommersemester 2017 4–34 Datenbankentwurf ER-auf-RM-Abbildung Übersicht über die Transformationen ER-Konzept wird abgebildet auf relationales Konzept Entity-Typ Ei Attribute von Ei Primärschlüssel Pi Beziehungstyp Relationenschema Ri Attribute von Ri Primärschlüssel Pi Relationenschema Attribute: P1 , P2 weitere Attribute P2 wird Primärschlüssel der Beziehung P1 und P2 werden Schlüssel der Beziehung P1 ∪ P2 wird Primärschlüssel der Beziehung R1 erhält zusätzlichen Schlüssel P2 dessen Attribute 1:n 1:1 m:n IST-Beziehung E1 , E2 : an Beziehung beteiligte Entity-Typen, P1 , P2 : deren Primärschlüssel, 1 : n-Beziehung: E2 ist n-Seite, IST-Beziehung: Schallehn E1 ist speziellerer Entity-Typ Datenmanagement Sommersemester 2017 4–35 Datenbankentwurf ER-auf-RM-Abbildung Zusammenfassung Phasen des Datenbankentwurfs Schallehn Datenmanagement Sommersemester 2017 4–36 Datenbankentwurf ER-auf-RM-Abbildung Zusammenfassung Phasen des Datenbankentwurfs Datenbankmodell, Datenbankschema, Datenbank(instanz) Schallehn Datenmanagement Sommersemester 2017 4–36 Datenbankentwurf ER-auf-RM-Abbildung Zusammenfassung Phasen des Datenbankentwurfs Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell Schallehn Datenmanagement Sommersemester 2017 4–36 Datenbankentwurf ER-auf-RM-Abbildung Zusammenfassung Phasen des Datenbankentwurfs Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell ER-Erweiterungen: Spezialisierung, Generalisierung, Partitionierung Schallehn Datenmanagement Sommersemester 2017 4–36 Datenbankentwurf ER-auf-RM-Abbildung Zusammenfassung Phasen des Datenbankentwurfs Datenbankmodell, Datenbankschema, Datenbank(instanz) Entity-Relationship-Modell ER-Erweiterungen: Spezialisierung, Generalisierung, Partitionierung weitere Entwurfsschritte Schallehn Datenmanagement Sommersemester 2017 4–36 Datenbankentwurf ER-auf-RM-Abbildung Kontrollfragen Welche Schritte umfasst der Datenbankentwurfsprozess? Schallehn Datenmanagement Sommersemester 2017 4–37 Datenbankentwurf ER-auf-RM-Abbildung Kontrollfragen Welche Schritte umfasst der Datenbankentwurfsprozess? Welche Forderungen müssen die Abbildungen (Transformationen) zwischen den einzelnen Entwurfsschritten erfüllen? Warum? Schallehn Datenmanagement Sommersemester 2017 4–37 Datenbankentwurf ER-auf-RM-Abbildung Kontrollfragen Welche Schritte umfasst der Datenbankentwurfsprozess? Welche Forderungen müssen die Abbildungen (Transformationen) zwischen den einzelnen Entwurfsschritten erfüllen? Warum? Wie werden die Konzepte des ER-Modells auf die des Relationenmodell abgebildet? Schallehn Datenmanagement Sommersemester 2017 4–37 Datenbankentwurf ER-auf-RM-Abbildung Kontrollfragen Welche Schritte umfasst der Datenbankentwurfsprozess? Welche Forderungen müssen die Abbildungen (Transformationen) zwischen den einzelnen Entwurfsschritten erfüllen? Warum? Wie werden die Konzepte des ER-Modells auf die des Relationenmodell abgebildet? Wie werden die verschiedenen Kardinalitäten von Beziehungstypen bei der Abbildung berücksichtigt? Schallehn Datenmanagement Sommersemester 2017 4–37 Teil V Relationale Entwurfstheorie Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs 2 Relationaler DB-Entwurf Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs 2 Relationaler DB-Entwurf 3 Normalformen Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs 2 Relationaler DB-Entwurf 3 Normalformen 4 Transformationseigenschaften Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs 2 Relationaler DB-Entwurf 3 Normalformen 4 Transformationseigenschaften 5 Entwurfsverfahren Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Relationale Entwurfstheorie 1 Zielmodell des logischen Entwurfs 2 Relationaler DB-Entwurf 3 Normalformen 4 Transformationseigenschaften 5 Entwurfsverfahren 6 Weitere Abhängigkeiten Schallehn Datenmanagement Sommersemester 2017 5–1 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Relationenmodell WEINE WeinID 1042 2168 3456 2171 3478 4711 4961 Name Farbe La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay Rot Rot Rot Rot Rot Weiß Weiß ERZEUGER Weingut Creek Helena Château La Rose Château La Pointe Müller Bighorn Schallehn Jahrgang 1998 2003 2004 2001 1999 1999 2002 Weingut Château La Rose Creek Helena Creek Helena Müller Bighorn Anbaugebiet Region Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Napa Valley South Australia Kalifornien Bordeaux Bordeaux Hessen Kalifornien Datenmanagement Sommersemester 2017 5–2 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Begriffe des Relationenmodells Begriff Attribut Wertebereich Attributwert Relationenschema Relation Tupel Datenbankschema Datenbank Schallehn Informale Bedeutung Spalte einer Tabelle mögliche Werte eines Attributs (auch Domäne) Element eines Wertebereichs Menge von Attributen Menge von Zeilen einer Tabelle Zeile einer Tabelle Menge von Relationenschemata Menge von Relationen (Basisrelationen) Datenmanagement Sommersemester 2017 5–3 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Begriffe des Relationenmodells /2 Begriff Schlüssel Primärschlüssel Fremdschlüssel Fremdschlüsselbedingung Schallehn Informale Bedeutung minimale Menge von Attributen, deren Werte ein Tupel einer Tabelle eindeutig identifizieren ein beim Datenbankentwurf ausgezeichneter Schlüssel Attributmenge, die in einer anderen Relation Schlüssel ist alle Attributwerte des Fremdschlüssels tauchen in der anderen Relation als Werte des Schlüssels auf Datenmanagement Sommersemester 2017 5–4 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Formalisierung Relationenmodell Attribute und Domänen I I I I I U nichtleere, endliche Menge: Universum A ∈ U: Attribut D = {D1 , . . . , Dm } Menge endlicher, nichtleerer Mengen: jedes Di : Wertebereich oder Domäne total definierte Funktion dom : U −→ D dom(A): Domäne von A w ∈ dom(A): Attributwert für A Schallehn Datenmanagement Sommersemester 2017 5–5 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Formalisierung Relationenmodell /2 Relationenschemata und Relationen I I I I I R ⊆ U: Relationenschema Relation r über R = {A1 , . .S . , An } (kurz: r (R)) ist endliche Menge m von Abbildungen t : R −→ i=1 Di , Tupel genannt Es gilt t(A) ∈ dom(A) (t(A) Restriktion von t auf A ∈ R) für X ⊆ R analog t(X ) X-Wert von t Menge aller Relationen über R: REL(R) := {r | r (R)} Schallehn Datenmanagement Sommersemester 2017 5–6 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Formalisierung Relationenmodell /3 Datenbankschema und Datenbank I I I I Menge von Relationenschemata S := {R1 , . . . , Rp }: Datenbankschema Datenbank über S: Menge von Relationen d := {r1 , . . . , rp }, wobei ri (Ri ) Datenbank d über S: d(S) Relation r ∈ d: Basisrelation Schallehn Datenmanagement Sommersemester 2017 5–7 Relationale Entwurfstheorie Zielmodell des logischen Entwurfs Integritätsbedingungen Identifizierende Attributmenge K := {B1 , . . . , Bk } ⊆ R: ∀t1 , t2 ∈ r [t1 6= t2 =⇒ ∃B ∈ K : t1 (B) 6= t2 (B)] Schlüssel: ist minimale identifizierende Attributmenge I I {Name, Jahrgang, Weingut} und {WeinID} für WEINE Primattribut: Element eines Schlüssels Primärschlüssel: ausgezeichneter Schlüssel Oberschlüssel oder Superkey: jede Obermenge eines Schlüssels (= identifizierende Attributmenge) Fremdschlüssel: X (R1 ) → Y (R2 ) {t(X )|t ∈ r1 } ⊆ {t(Y )|t ∈ r2 } Schallehn Datenmanagement Sommersemester 2017 5–8 Relationale Entwurfstheorie Relationaler DB-Entwurf Relationaler DB-Entwurf: Überblick Verfeinern des logischen Entwurfs Ziel: Vermeidung von Redundanzen durch Aufspalten von Relationenschemata, ohne gleichzeitig I I semantische Informationen zu verlieren (Abhängigkeitstreue) die Möglichkeit zur Rekonstruktion der Relationen zu verlieren (Verbundtreue) Redundanzvermeidung durch Normalformen (s.u.) Schallehn Datenmanagement Sommersemester 2017 5–9 Relationale Entwurfstheorie Relationaler DB-Entwurf Relation mit Redundanzen WEINE WeinID 1042 2168 3456 2171 3478 4711 4961 Name ... Weingut Anbaugebiet Region La Rose Gr. Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Res. Chardonnay ... ... ... ... ... ... ... Ch. La Rose Creek Helena Creek Helena Müller Bighorn Saint-Emilion Barossa Valley Napa Valley Barossa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia Kalifornien South Australia Kalifornien Hessen Kalifornien Schallehn Datenmanagement Sommersemester 2017 5–10 Relationale Entwurfstheorie Relationaler DB-Entwurf Redundanzen Redundanzen in Basisrelationen aus mehreren Gründen unerwünscht: I I Redundante Informationen belegen unnötigen Speicherplatz Änderungsoperationen auf Basisrelationen mit Redundanzen nur schwer korrekt umsetzbar: wenn eine Information redundant vorkommt, muss eine Änderung diese Information in allen ihren Vorkommen verändern F Schallehn mit normalen relationalen Änderungsoperationen und den in relationalen Systemen vorkommenden lokalen Integritätsbedingungen (Schlüsseln) nur schwer realisierbar Datenmanagement Sommersemester 2017 5–11 Relationale Entwurfstheorie Relationaler DB-Entwurf Änderungsanomalien Einfügen in die mit Redundanzen behaftete WEINE-Relation: insert into WEINE (WeinID, Name, Farbe, Jahrgang, Weingut, Anbaugebiet, Region) values (4711, ’Chardonnay’, ’Weiß’, 2004, ’Helena’, ’Rheingau’, ’Kalifornien’) I I I WeinID 4711 bereits anderem Wein zugeordnet: verletzt FD WeinID → Name Weingut Helena war bisher im Napa Valley angesiedelt: verletzt FD Weingut → Anbaugebiet Rheingau liegt nicht in Kalifornien: verletzt FD Anbaugebiet → Region auch update- und delete-Anomalien Schallehn Datenmanagement Sommersemester 2017 5–12 Relationale Entwurfstheorie Relationaler DB-Entwurf Funktionale Abhängigkeiten funktionale Abhängigkeit zwischen Attributmengen X und Y einer Relation Wenn in jedem Tupel der Relation der Attributwert unter den X Komponenten den Attributwert unter den Y -Komponenten festlegt. Unterscheiden sich zwei Tupel in den X -Attributen nicht, so haben sie auch gleiche Werte für alle Y -Attribute Notation für funktionale Abhängigkeit (FD, von functional dependency): X → Y Beispiel: WeinID → Name, Weingut Anbaugebiet → Region aber nicht: Weingut → Name Schallehn Datenmanagement Sommersemester 2017 5–13 Relationale Entwurfstheorie Relationaler DB-Entwurf Schlüssel als Spezialfall für Beispiel auf Folie 5-10 WeinID → Name, Farbe, Jahrgang, Weingut, Anbaugebiet, Re Immer: WeinID → WeinID, dann gesamtes Schema auf rechter Seite Wenn linke Seite minimal: Schlüssel Formal: Schlüssel X liegt vor, wenn für Relationenschema R FD X → R gilt und X minimal Ziel des Datenbankentwurfs: alle gegebenen funktionalen Abhängigkeiten in „Schlüsselabhängigkeiten“ umformen, ohne dabei semantische Information zu verlieren Schallehn Datenmanagement Sommersemester 2017 5–14 Relationale Entwurfstheorie Relationaler DB-Entwurf Ableitung von FDs r A a1 a2 a3 a4 B b1 b1 b2 b1 C c1 c1 c1 c1 genügt A → B und B → C dann gilt auch A → C nicht ableitbar C → A oder C → B Schallehn Datenmanagement Sommersemester 2017 5–15 Relationale Entwurfstheorie Relationaler DB-Entwurf Ableitung von FDs /2 Gilt für f über R SATR (F ) ⊆ SATR (f ), dann impliziert F die FD f (kurz: F |= f ) obiges Beispiel: F = {A → B, B → C} |= A → C Hüllenbildung: Ermittlung aller funktionalen Abhängigkeiten, die aus einer gegebenen FD-Menge abgeleitet werden können Hülle FR+ := {f | (f FD über R) ∧ F |= f } Beispiel: {A → B, B → C}+ = {A → B, B → C, A → C, AB → C, A → BC, . . . , AB → AB, . . . } Schallehn Datenmanagement Sommersemester 2017 5–16 Relationale Entwurfstheorie Relationaler DB-Entwurf Ableitungsregeln F1 F2 F3 F4 F5 F6 Reflexivität Augmentation Transitivität Dekomposition Vereinigung Pseudotransitivität X ⊇ Y =⇒ X → Y {X → Y } =⇒ XZ → YZ sowie XZ → Y {X → Y , Y → Z } =⇒ X → Z {X → YZ } =⇒ X → Y {X → Y , X → Z } =⇒ X → YZ {X → Y , WY → Z } =⇒ WX → Z F1-F3 bekannt als Armstrong-Axiome (sound, complete) gültig (sound): Regeln leiten keine FDs ab, die logisch nicht impliziert vollständig (complete): alle implizierten FDs werden abgeleitet unabhängig (independent) oder auch bzgl. ⊆ minimal: keine Regel kann weggelassen werden Schallehn Datenmanagement Sommersemester 2017 5–17 Relationale Entwurfstheorie Normalformen Schemaeigenschaften Relationenschemata, Schlüssel und Fremdschlüssel so wählen, dass alle Anwendungsdaten aus den Basisrelationen hergeleitet werden können, nur semantisch sinnvolle und konsistente Anwendungsdaten dargestellt werden können und die Anwendungsdaten möglichst nicht-redundant dargestellt werden. 1 2 3 Hier: Forderung 3 I I Redundanzen innerhalb einer Relation: Normalformen globale Redundanzen: Minimalität Schallehn Datenmanagement Sommersemester 2017 5–18 Relationale Entwurfstheorie Normalformen Normalformen legen Eigenschaften von Relationenschemata fest verbieten bestimmte Kombinationen von funktionalen Abhängigkeiten in Relationen sollen Redundanzen und Anomalien vermeiden Schallehn Datenmanagement Sommersemester 2017 5–19 Relationale Entwurfstheorie Normalformen Erste Normalform erlaubt nur atomare Attribute in den Relationenschemata, d.h. als Attributwerte sind Elemente von Standard-Datentypen wie integer oder string erlaubt, aber keine Konstruktoren wie array oder set Nicht in 1NF: Weingut Anbaugebiet Region WName Ch. La Rose Creek Helena Müller Bighorn Saint-Emilion Barossa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia Kalifornien Hessen Kalifornien La Rose Grand Cru Creek Shiraz, Pinot Noir Zinfandel, Pinot Noir Riesling Reserve Chardonnay Schallehn Datenmanagement Sommersemester 2017 5–20 Relationale Entwurfstheorie Normalformen Erste Normalform /2 in erster Normalform: Weingut Anbaugebiet Region WName Ch. La Rose Creek Creek Helena Helena Müller Bighorn Saint-Emilion Barossa Valley Barossa Valley Napa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia South Australia Kalifornien Kalifornien Hessen Kalifornien La Rose Grand Cru Creek Shiraz Pinot Noir Zinfandel Pinot Noir Riesling Reserve Chardonnay Schallehn Datenmanagement Sommersemester 2017 5–21 Relationale Entwurfstheorie Normalformen Zweite Normalform partielle Abhängigkeit liegt vor, wenn ein Attribut funktional schon von einem Teil des Schlüssels abhängt Name Weingut Farbe Anbaugebiet Region La Rose Grand Cru Creek Shiraz Pinot Noir Zinfandel Pinot Noir Riesling Reserve Chardonnay Ch. La Rose Creek Creek Helena Helena Müller Bighorn Rot Rot Rot Rot Rot Weiß Weiß Saint-Emilion Barossa Valley Barossa Valley Napa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia South Australia Kalifornien Kalifornien Hessen Kalifornien f1 : f2 : f3 : f4 : Preis 39.00 7.99 10.99 5.99 19.99 14.99 9.90 Name, Weingut → Preis Name → Farbe Weingut → Anbaugebiet, Region Anbaugebiet → Region Zweite Normalform eliminiert derartige partielle Abhängigkeiten bei Nichtschlüsselattributen Schallehn Datenmanagement Sommersemester 2017 5–22 Relationale Entwurfstheorie Normalformen Eliminierung partieller Abhängigkeiten Schlüssel K Teil des Schlüssels X Schallehn abhängiges Attribut A Datenmanagement Sommersemester 2017 5–23 Relationale Entwurfstheorie Normalformen Zweite Normalform /2 Beispielrelation in 2NF R1(Name, Weingut, Preis) R2(Name, Farbe) R3(Weingut, Anbaugebiet, Region) Schallehn Datenmanagement Sommersemester 2017 5–24 Relationale Entwurfstheorie Normalformen Zweite Normalform /3 Hinweis: partiell abhängiges Attribut stört nur, wenn es kein Primattribut ist 2NF formal: erweitertes Relationenschema R = (R, K), FD-Menge F über R Y hängt partiell von X bzgl. F ab, wenn die FD X → Y nicht linksreduziert ist Y hängt voll von X ab, wenn die FD X → Y linksreduziert ist R ist in 2NF, wenn R in 1NF ist und jedes Nicht-Primattribut von R voll von jedem Schlüssel von R abhängt Schallehn Datenmanagement Sommersemester 2017 5–25 Relationale Entwurfstheorie Normalformen Dritte Normalform eliminiert (zusätzlich) transitive Abhängigkeiten etwa Weingut → Anbaugebiet und Anbaugebiet → Region in Relation auf Folie 5-30 man beachte: 3NF betrachtet nur Nicht-Schlüsselattribute als Endpunkt transitiver Abhängigkeiten Schallehn Datenmanagement Sommersemester 2017 5–26 Relationale Entwurfstheorie Normalformen Eliminierung transitiver Abhängigkeiten Schlüssel K Attributmenge X Schallehn abhängiges Attribut A Datenmanagement Sommersemester 2017 5–27 Relationale Entwurfstheorie Normalformen Dritte Normalform /2 transitive Abhängigkeit in R3, d.h. R3 verletzt 3NF Beispielrelation in 3NF R3_1(Weingut, Anbaugebiet) R3_2(Anbaugebiet, Region) Schallehn Datenmanagement Sommersemester 2017 5–28 Relationale Entwurfstheorie Normalformen Dritte Normalform: formal Relationenschema R, X ⊆ R und F ist eine FD-Menge über R A ∈ R heißt transitiv abhängig von X bezüglich F genau dann, wenn es ein Y ⊆ R gibt mit X → Y , Y 6→ X , Y → A, A 6∈ XY erweitertes Relationenschema R = (R, K) ist in 3NF bezüglich F genau dann, wenn 6 ∃A ∈ R : A ist Nicht-Primattribut in R ∧ A transitiv abhängig von einem K ∈ K bezüglich F . Schallehn Datenmanagement Sommersemester 2017 5–29 Relationale Entwurfstheorie Normalformen Boyce-Codd-Normalform Verschärfung der 3NF: Eliminierung transitiver Abhängigkeiten auch zwischen Primattributen Name Weingut Händler Preis La Rose Grand Cru Creek Shiraz Pinot Noir Zinfandel Pinot Noir Riesling Reserve Chardonnay Château La Rose Creek Creek Helena Helena Müller Bighorn Weinkontor Wein.de Wein.de GreatWines.com GreatWines.com Weinkeller Wein-Dealer 39.90 7.99 10.99 5.99 19.99 19.99 9.90 FDs: Name, Weingut → Preis Weingut → Händler Händler → Weingut Schlüsselkandidaten: { Name, Weingut } und { Name, Händler } in 3NF, nicht jedoch in BCNF Schallehn Datenmanagement Sommersemester 2017 5–30 Relationale Entwurfstheorie Normalformen Boyce-Codd-Normalform /2 erweitertes Relationenschema R = (R, K), FD-Menge F BCNF formal: 6 ∃A ∈ R : A transitiv abhängig von einem K ∈ K bezüglich F . Schema in BCNF: WEINE(Name, Weingut, Preis) WEINHANDEL(Weingut, Händler) BCNF kann jedoch Abhängigkeitstreue verletzen, daher oft nur bis 3NF Schallehn Datenmanagement Sommersemester 2017 5–31 Relationale Entwurfstheorie Normalformen Minimalität Global Redundanzen vermeiden andere Kriterien (wie Normalformen) mit möglichst wenig Schemata erreichen Beispiel: Attributmenge ABC, FD-Menge {A → B, B → C} Datenbankschemata in dritter Normalform: S = {(AB, {A}), (BC, {B})} S 0 = {(AB, {A}), (BC, {B}), (AC, {A})} Redundanzen in S 0 Schallehn Datenmanagement Sommersemester 2017 5–32 Relationale Entwurfstheorie Normalformen Schemaeigenschaften Kennung S 1 Schemaeigenschaft Kurzcharakteristik 1NF 2NF nur atomare Attribute keine partielle Abhängigkeit eines Nicht-Primattributes von einem Schlüssel 3NF keine transitive Abhängigkeit eines Nicht-Primattributes von einem Schlüssel keine transitive Abhängigkeit eines Attributes von einem Schlüssel BCNF S 2 Schallehn Minimalität minimale Anzahl von Relationenschemata, die die anderen Eigenschaften erfüllt Datenmanagement Sommersemester 2017 5–33 Relationale Entwurfstheorie Transformationseigenschaften Transformationseigenschaften Bei einer Zerlegung einer Relation in mehrere Relationen ist darauf zu achten, dass 1 2 nur semantisch sinnvolle und konsistente Anwendungsdaten dargestellt (Abhängigkeitstreue) und alle Anwendungsdaten aus den Basisrelationen hergeleitet werden können (Verbundtreue) Schallehn Datenmanagement Sommersemester 2017 5–34 Relationale Entwurfstheorie Transformationseigenschaften Abhängigkeitstreue Abhängigkeitstreue: eine Menge von Abhängigkeiten kann äquivalent in eine zweite Menge von Abhängigkeiten transformiert werden spezieller: in die Menge der Schlüsselabhängigkeiten, da diese vom Datenbanksystem effizient überprüft werden kann I I die Menge der Abhängigkeiten soll äquivalent zu der Menge der Schlüsselbedingungen im resultierenden Datenbankschema sein Äquivalenz sichert zu, dass mit den Schlüsselabhängigkeiten semantisch genau die gleichen Integritätsbedingungen ausgedrückt werden wie mit den funktionalen oder anderen Abhängigkeiten vorher Schallehn Datenmanagement Sommersemester 2017 5–35 Relationale Entwurfstheorie Transformationseigenschaften Abhängigkeitstreue: Beispiel Zerlegung des Relationenschemas WEINE (Folie 5-31) in 3NF: R1(Name, Weingut, Preis) R2(Name, Farbe) R3_1(Weingut, Anbaugebiet) R3_2(Anbaugebiet, Region) mit Schlüsselabhängigkeiten Name, Weingut → Preis Name → Farbe Weingut → Anbaugebiet Anbaugebiet → Region äquivalent zu FDs f1 . . . f4 (Folie 5-22) Schallehn Datenmanagement abhängigkeitstreu Sommersemester 2017 5–36 Relationale Entwurfstheorie Transformationseigenschaften Abhängigkeitstreue: Beispiel /2 Postleitzahl-Struktur der Deutschen Post PLZ (P), Ort (O), Strasse(S), Hausnummer(H) und funktionalen Abhängigkeiten F OSH → P, P → O für ein Datenbankschema S bestehend aus dem einzigen Relationenschema (OSHP, {OSH}), ist Menge der Schlüsselabhängigkeiten { OSH → OSHP } nicht äquivalent zu F und somit S nicht abhängigkeitstreu Schallehn Datenmanagement Sommersemester 2017 5–37 Relationale Entwurfstheorie Transformationseigenschaften Verbundtreue zur Erfüllung des Kriteriums der Normalformen müssen Relationenschemata teilweise in kleinere Relationenschemata zerlegt werden für Beschränkung auf „sinnvolle“ Zerlegungen gilt Forderung, dass die Originalrelation wieder aus den zerlegten Relationen mit dem natürlichen Verbund zurückgewonnen werden kann Verbundtreue Schallehn Datenmanagement Sommersemester 2017 5–38 Relationale Entwurfstheorie Transformationseigenschaften Verbundtreue: Beispiele Zerlegung des Relationenschemas R = ABC in R1 = AB und R2 = BC Dekomposition bei Vorliegen der Abhängigkeiten F = {A → B, C → B} ist nicht verbundtreu dagegen bei Vorliegen von F 0 = {A → B, B → C} verbundtreu Schallehn Datenmanagement Sommersemester 2017 5–39 Relationale Entwurfstheorie Transformationseigenschaften Verbundtreue Dekomposition Originalrelation: A 1 4 B 2 2 C 3 3 Dekomposition: A 1 4 B 2 2 B 2 C 3 Verbund (verbundtreu): A 1 4 Schallehn B 2 2 Datenmanagement C 3 3 Sommersemester 2017 5–40 Relationale Entwurfstheorie Transformationseigenschaften Nicht verbundtreue Dekomposition Originalrelation: A 1 4 B 2 2 C 3 5 Dekomposition: A 1 4 B 2 2 B 2 2 C 3 5 Verbund (nicht verbundtreu): Schallehn A B C 1 4 1 4 2 2 2 2 3 5 5 3 Datenmanagement Sommersemester 2017 5–41 Relationale Entwurfstheorie Transformationseigenschaften Transformationseigenschaften Kennung Transformationseigenschaft Kurzcharakteristik T1 Abhängigkeitstreue T2 Verbundtreue alle gegebenen Abhängigkeiten sind durch Schlüssel repräsentiert Originalrelationen können durch den Verbund der Basisrelationen wiedergewonnen werden Schallehn Datenmanagement Sommersemester 2017 5–42 Relationale Entwurfstheorie Entwurfsverfahren Entwurfsverfahren: Ziele Universum U und FD-Menge F gegeben lokal erweitertes Datenbankschema S = {(R1 , K1 ), . . . , (Rp , Kp )} berechnen mit I T 1 : S charakterisiert vollständig F I S 1 : S ist in 3NF bezüglich F I I T 2 : Dekomposition von U in R1 , . . . , Rp ist verbundtreu bezüglich F S 2 : Minimalität, d.h. 6 ∃S 0 : S 0 erfüllt T 1 , S 1 , T 2 und |S 0 | < |S| Schallehn Datenmanagement Sommersemester 2017 5–43 Relationale Entwurfstheorie Entwurfsverfahren Entwurfsverfahren: Beispiel Datenbankschemata schlecht entworfen, wenn nur eins dieser vier Kriterien nicht erfüllt Beispiel: S = {(AB, {A}), (BC, {B}), (AC, {A})} erfüllt T 1 , S 1 und T 2 bezüglich F = {A → B, B → C, A → C} in dritter Relation AC-Tupel redundant oder inkonsistent korrekt: S 0 = {(AB, {A}), (BC, {B})} Schallehn Datenmanagement Sommersemester 2017 5–44 Relationale Entwurfstheorie Entwurfsverfahren Dekomposition Geg.: initiales Universalrelationenschema R = (U, K(F )) mit allen Attributen und einer von erfassten FDs F über R implizierten Schlüsselmenge I I Attributmenge U und eine FD-Menge F suche alle K → U mit K minimal, für die K → U ∈ F + gilt (K(F )) Ges.: Zerlegung in D = {R1 , R2 , . . . } von 3NF-Relationenschemata Schallehn Datenmanagement Sommersemester 2017 5–45 Relationale Entwurfstheorie Entwurfsverfahren Dekomposition: Beispiel initiales Relationenschema R = ABC funktionale Abhängigkeiten F = {A → B, B → C} Schlüssel K = A Schallehn Datenmanagement Sommersemester 2017 5–46 Relationale Entwurfstheorie Entwurfsverfahren Dekomposition: Bewertung Vorteile: 3NF, Verbundtreue Nachteile: restliche Kriterien nicht, reihenfolgeabhängig, NP-vollständig (Schlüsselsuche) Schallehn Datenmanagement Sommersemester 2017 5–47 Relationale Entwurfstheorie Entwurfsverfahren Syntheseverfahren Prinzip: Synthese formt Original-FD-Menge F in resultierende Menge von Schlüsselabhängigkeiten G so um, dass F ≡ G gilt „Abhängigkeitstreue“ im Verfahren verankert Verbundtreue, 3NF und Minimalität wird auch erreicht, reihenfolgeunabhängig Zeitkomplexität: quadratisch Schallehn Datenmanagement Sommersemester 2017 5–48 WINZER Weingut Name Relationale Entwurfstheorie Entwurfsverfahren WINZER Weingut Weingut Name WINZER Name , FDs FU , FDsFDs F FUFDs FDs F FDs F , FDsF F Vergleich UDekomposition — Synthese FDs U F , FDs F U , FDs F FDs F FDs F U , FDs F FDs F FDs F ! ! ! ! ! ! U , FDs F U , FDs F FDs F FDs F ! ! ! ! R, K ! R, KFDs F FDs R, K R, K FDs F ! FDs F R, KF FDs F ! ! ! ! !! R, K FDs F ! R, K FDs ! ! ! !F R, K FDs F !! ! ! ! ! ! ! ! ! ! R, K FDs F ! R, K FDs F ! !. . ! ! ! !!! ! ! ! ! R! ., .K. ! !!! !! . !! . .1!. .R. !n. , Kn! R!1R, K ! ! R , K R , K K , K ! FDs F FDs F . . . FDs F FDs F nR1 , nK1 ... n n 1 1 n 1 n Rn , Kn FDs F !! ! ! ! ! ... R!1 , K1! R! , Kn! FDs F !! ! ! n !! ... R! R!n , Kn! FDs 1 , K1 ! ! ! ! !F !! . . . R1 , K1 R ,K FDs F !!! ! ! n !n ! ! ! ! ! ! .R . .! , K ! R!n , K. n.! . R!1 , K1! FDs F !! R!n , Kn! FDs F !! 1 1 . . . . . . . . . . . . .K.1. .R. n. , Kn R1R, K . . . . . . ... R , Kn . . . K1 RnR . n. , Kn R1R 1 1, ! n , K.nR n , 1Kn R1 , KR 11 ,, nK nn ,, 1K R, K K11 R... R, K Knn R1 , K1 ! RnR, K Rn , Kn 1 , nK1 n ! ! ! ! . . . . . . R1 , K1 Rn , Kn R1 , K1 Rn , Kn ... ... R1 , K1 Rn , Kn R1 , K1 Rn , Kn . . .! . .! . R1 , K1 Rn , Kn ! R1 , K1 Rn , Kn ! Dekomposition Synthese Dekomposition Synthese Synthese mposition Dekomposition Dekomposition Synthese Synthese Dekomposition Synthese . .R.1 , K1 Rn , K. n. . . .R . 1 , K1 Rn , K.n . . R1 , K1 Rn , Kn R1 , K1 Rn , Kn Dekomposition Synthese Dekomposition Synthese Dekomposition Synthese ! U !, FDs F! ! Dekomposition Dekomposition Schallehn Synthese Datenmanagement Synthese Sommersemester 2017 5–49 Relationale Entwurfstheorie Entwurfsverfahren Synthese: Beispiel Relationenschema und FD-Menge: f1 : Name, Weingut → Preis f2 : Name, Weingut → Weingut f3 : Name, Weingut → Name f4 : Name → Farbe f5 : Weingut → Anbaugebiet, Region f6 : Anbaugebiet → Region minimale Überdeckung: Entfernen von f2 , f3 sowie Region in f5 Äquivalenzklassen (= Relationenschemata): C1 = {Name, Weingut → Preis} C2 = {Name → Farbe} C3 = {Weingut → Anbaugebiet} C4 = {Anbaugebiet → Region} Schallehn Datenmanagement Sommersemester 2017 5–50 Relationale Entwurfstheorie Weitere Abhängigkeiten Weitere Abhängigkeiten Mehrwertige Abhängigkeit (kurz: MVD) I innerhalb einer Relation r wird einem Attributwert von X eine Menge von Y -Werten zugeordnet, unabhängig von den Werten der restlichen Attribute Vierte Normalform Verbundabhängigkeit (kurz: JD) I kann R ohne Informationsverlust in R1 , . . . , Rp aufgetrennt werden: ./ [R1 , . . . , Rp ] Inklusionsabhängigkeit (kurz: IND) I auf der rechten Seite einer Fremdschlüsselabhängigkeit nicht unbedingt den Primärschlüssel einer Relation Schallehn Datenmanagement Sommersemester 2017 5–51 Relationale Entwurfstheorie Weitere Abhängigkeiten Mehrwertige Abhängigkeiten Folge der 1NF Mehrwertige Abhängigkeiten erzeugen Redundanz: WEIN_EMPFEHLUNG WName Chardonnay Chardonnay Chardonnay Chardonnay Shiraz Shiraz Shiraz Shiraz I I I Jahrgang 2002 2002 2003 2003 2003 2003 2004 2004 Gericht Geflügel Fisch Fisch Geflügel Wild Lamm Wild Lamm eine (oder mehrere) Gruppe von Attributwerten ist von einem Schlüssel bestimmt, unabhängig von anderen Attributen hier: Menge von Jahrgängen plus Menge von Gerichten WName →→ Jahrgang, WName →→ Gericht Resultat: Redundanz durch Bildung aller Kombinationen Schallehn Datenmanagement Sommersemester 2017 5–52 Relationale Entwurfstheorie Weitere Abhängigkeiten Mehrwertige Abhängigkeiten und 4NF wünschenswerte Schemaeigenschaft bei Vorliegen von MVDs: vierte Normalform fordert die Beseitigung derartiger Redundanzen: keine zwei MVDs zwischen Attributen einer Relation Beispiel von vorhergehender Folie verletzt diese Forderung Prinzip I I Elimination der rechten Seite einer der beiden mehrwertigen Abhängigkeiten, linke Seite mit dieser rechten Seite in neue Relation kopiert Schallehn Datenmanagement Sommersemester 2017 5–53 Relationale Entwurfstheorie Weitere Abhängigkeiten Vierte Normalform WEIN_JAHR WName Chardonnay Chardonnay Shiraz Shiraz WEIN_GERICHT WName Chardonnay Chardonnay Shiraz Shiraz Schallehn Jahrgang 2002 2003 2003 2004 Gericht Geflügel Fisch Wild Lamm Datenmanagement Sommersemester 2017 5–54 Relationale Entwurfstheorie Weitere Abhängigkeiten Zusammenfassung funktionale Abhängigkeiten Normalformen (1NF - 3NF, BCNF) Abhängigkeitstreue und Verbundtreue Entwurfsverfahren mehrwertige Abhängigkeiten Schallehn Datenmanagement Sommersemester 2017 5–55 Relationale Entwurfstheorie Weitere Abhängigkeiten Kontrollfragen Welches Ziel hat die Normalisierung relationaler Schemata? Schallehn Datenmanagement Sommersemester 2017 5–56 Relationale Entwurfstheorie Weitere Abhängigkeiten Kontrollfragen Welches Ziel hat die Normalisierung relationaler Schemata? Welche Eigenschaften relationaler Schemata werden bei den Normalformen berücksichtigt? Schallehn Datenmanagement Sommersemester 2017 5–56 Relationale Entwurfstheorie Weitere Abhängigkeiten Kontrollfragen Welches Ziel hat die Normalisierung relationaler Schemata? Welche Eigenschaften relationaler Schemata werden bei den Normalformen berücksichtigt? Was unterscheidet 3NF und BCNF? Schallehn Datenmanagement Sommersemester 2017 5–56 Relationale Entwurfstheorie Weitere Abhängigkeiten Kontrollfragen Welches Ziel hat die Normalisierung relationaler Schemata? Welche Eigenschaften relationaler Schemata werden bei den Normalformen berücksichtigt? Was unterscheidet 3NF und BCNF? Was fordern Abhängigkeitstreue und Verbundtreue? Schallehn Datenmanagement Sommersemester 2017 5–56 Teil VI Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül 1 Kriterien für Anfragesprachen Schallehn Datenmanagement Sommersemester 2017 6–1 Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül 1 Kriterien für Anfragesprachen 2 Anfragealgebren Schallehn Datenmanagement Sommersemester 2017 6–1 Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül 1 Kriterien für Anfragesprachen 2 Anfragealgebren 3 Erweiterungen der Relationenalgebra Schallehn Datenmanagement Sommersemester 2017 6–1 Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül 1 Kriterien für Anfragesprachen 2 Anfragealgebren 3 Erweiterungen der Relationenalgebra 4 Anfragekalküle Schallehn Datenmanagement Sommersemester 2017 6–1 Grundlagen von Anfragen: Algebra & Kalkül Grundlagen von Anfragen: Algebra & Kalkül 1 Kriterien für Anfragesprachen 2 Anfragealgebren 3 Erweiterungen der Relationenalgebra 4 Anfragekalküle 5 Beispiele für Bereichskalkül Schallehn Datenmanagement Sommersemester 2017 6–1 Grundlagen von Anfragen: Algebra & Kalkül Kriterien für Anfragesprachen Einführung bisher: I Relationenschemata mit Basisrelationen, die in der Datenbank gespeichert sind jetzt: I „abgeleitete“ Relationenschemata mit virtuellen Relationen, die aus den Basisrelationen berechnet werden (Basisrelationen bleiben unverändert) Schallehn Datenmanagement Sommersemester 2017 6–2 Grundlagen von Anfragen: Algebra & Kalkül Kriterien für Anfragesprachen Begriffe Anfrage: Folge von Operationen, die aus den Basisrelationen eine Ergebnisrelation berechnet I I Ergebnisrelation interaktiv auf dem Bildschirm anzeigen oder per Programm weiterverarbeiten („Einbettung“) Sicht: Folge von Operationen, die unter einem Sichtnamen langfristig abgespeichert wird und unter diesem Namen wieder aufgerufen werden kann; ergibt eine Sichtrelation Snapshot: Ergebnisrelation einer Anfrage, die unter einem Snapshot-Namen abgelegt wird, aber nie ein zweites Mal (mit geänderten Basisrelationen) berechnet wird (etwa Jahresbilanzen) Schallehn Datenmanagement Sommersemester 2017 6–3 Grundlagen von Anfragen: Algebra & Kalkül Kriterien für Anfragesprachen Kriterien für Anfragesprachen Ad-Hoc-Formulierung: Benutzer soll eine Anfrage formulieren können, ohne ein vollständiges Programm schreiben zu müssen Deskriptivität: Benutzer soll formulieren „Was will ich haben?“ und nicht „Wie komme ich an das, was ich haben will?“ Mengenorientiertheit: jede Operation soll auf Mengen von Daten gleichzeitig arbeiten, nicht navigierend nur auf einzelnen Elementen („one-tuple-at-a-time“) Abgeschlossenheit: Ergebnis ist wieder eine Relation und kann wieder als Eingabe für die nächste Anfrage verwendet werden Schallehn Datenmanagement Sommersemester 2017 6–4 Grundlagen von Anfragen: Algebra & Kalkül Kriterien für Anfragesprachen Kriterien für Anfragesprachen /2 Adäquatheit: alle Konstrukte des zugrundeliegenden Datenmodells werden unterstützt Orthogonalität: Sprachkonstrukte sind in ähnlichen Situationen auch ähnlich anwendbar Optimierbarkeit: Sprache besteht aus wenigen Operationen, für die es Optimierungsregeln gibt Effizienz: jede Operation ist effizient ausführbar (im Relationenmodell hat jede Operation eine Komplexität ≤ O(n2 ), n Anzahl der Tupel einer Relation). Schallehn Datenmanagement Sommersemester 2017 6–5 Grundlagen von Anfragen: Algebra & Kalkül Kriterien für Anfragesprachen Kriterien für Anfragesprachen /3 Sicherheit: keine Anfrage, die syntaktisch korrekt ist, darf in eine Endlosschleife geraten oder ein unendliches Ergebnis liefern Eingeschränktheit: (folgt aus Sicherheit, Optimierbarkeit, Effizienz) Anfragesprache darf keine komplette Programmiersprache sein Vollständigkeit: Sprache muss mindestens die Anfragen einer Standardsprache (wie etwa die in diesem Kapitel einzuführende Relationenalgebra oder den sicheren Relationenkalkül) ausdrücken können Schallehn Datenmanagement Sommersemester 2017 6–6 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Anfragealgebren Mathematik: Algebra definiert durch Wertebereich und auf diesem definierte Operatoren für Datenbankanfragen: Inhalte der Datenbank sind Werte, und Operatoren definieren Funktionen zum Berechnen von Anfrageergebnissen I I Relationenalgebra Algebra-Erweiterungen Schallehn Datenmanagement Sommersemester 2017 6–7 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Relationenalgebra Spalten ausblenden: Projektion π Zeilen heraussuchen: Selektion σ Tabellen verknüpfen: Verbund (Join) o n Tabellen vereinigen: Vereinigung ∪; Tabellen voneinander abziehen: Differenz − Spalten umbenennen: Umbenennung β (wichtig für o n und ∪, −) Schallehn Datenmanagement Sommersemester 2017 6–8 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Relationenalgebra: Übersicht Selektion Projektion Verbund Schallehn a1 b2 b2 c3 a1 b2 c3 a2 b2 b3 c4 a2 b2 c3 a2 b3 b4 c5 a2 b3 c4 Datenmanagement Sommersemester 2017 6–9 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Projektion Syntax πAttributmenge (Relation) Semantik πX (r ) := {t(X ) | t ∈ r } für r (R) und X ⊆ R Attributmenge in R Eigenschaft für Y ⊆ X ⊆ R πY (πX (r )) = πY (r ) Achtung: π entfernt Duplikate (Mengensemantik) Schallehn Datenmanagement Sommersemester 2017 6–10 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Projektion: Beispiel πRegion (ERZEUGER) Region South Australia Kalifornien Bordeaux Hessen Schallehn Datenmanagement Sommersemester 2017 6–11 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Projektion: Beispiel 2 πAnbaugebiet,Region (ERZEUGER) Anbaugebiet Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Schallehn Region South Australia Kalifornien Bordeaux Bordeaux Hessen Datenmanagement Sommersemester 2017 6–12 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Selektion Syntax σBedingung (Relation) Semantik (für A ∈ R) σA=a (r ) := {t ∈ r | t(A) = a} Schallehn Datenmanagement Sommersemester 2017 6–13 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Selektionsbedingungen Konstantenselektion Attribut θ Konstante boolesches Prädikat θ ist = oder 6=, bei linear geordneten Wertebereichen auch ≤, <, ≥ oder > Attributselektion Attribut1 θ Attribut2 logische Verknüpfung mehrerer Konstanten- oder AttributSelektionen mit ∧, ∨ oder ¬ Schallehn Datenmanagement Sommersemester 2017 6–14 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Selektion: Eigenschaften Kommutativität σA=a (σB=b (r )) = σB=b (σA=a (r )) falls A ∈ X , X ⊆ R πX (σA=a (r )) = σA=a (πX (r )) Distributivität bzgl. ∪, ∩, − σA=a (r ∪ s) = σA=a (r ) ∪ σA=a (s) Schallehn Datenmanagement Sommersemester 2017 6–15 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Selektion: Beispiel σJahrgang>2000 (WEINE) WeinID 2168 3456 2171 4961 Name Farbe Creek Shiraz Zinfandel Pinot Noir Chardonnay Rot Rot Rot Weiß Schallehn Jahrgang 2003 2004 2001 2002 Datenmanagement Weingut Creek Helena Creek Bighorn Sommersemester 2017 6–16 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Verbund Syntax des (natürlichen) Verbundes (engl.: natural join) Relation1 o n Relation2 Semantik r1 o n r2 := {t | t(R1 ∪ R2 ) ∧ [∀i ∈ {1, 2}∃ti ∈ ri : ti = t(Ri )]} Verbund verknüpft Tabellen über gleichbenannten Spalten bei gleichen Attributwerten Schallehn Datenmanagement Sommersemester 2017 6–17 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Verbund: Eigenschaften Schema für r (R) o n r (S) ist Vereinigung der Attributmengen RS = R ∪ S aus R1 ∩ R2 = {} folgt r1 o n r2 = r1 × r2 Kommutativität: r1 o n r2 = r2 o n r1 Assoziativität: (r1 o n r2 ) o n r3 = r1 o n (r2 o n r3 ) daher erlaubt: o npi=1 ri Schallehn Datenmanagement Sommersemester 2017 6–18 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Verbund: Beispiel WEINE o n ERZEUGER WeinID Name ... Weingut Anbaugebiet Region 1042 2168 3456 2171 3478 4711 4961 La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay ... ... ... ... ... ... ... Ch. La Rose Creek Helena Creek Helena Müller Bighorn Saint-Emilion Barossa Valley Napa Valley Barossa Valley Napa Valley Rheingau Napa Valley Bordeaux South Australia Kalifornien South Australia Kalifornien Hessen Kalifornien Schallehn Datenmanagement Sommersemester 2017 6–19 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Umbenennung Syntax βneu←alt (Relation) Semantik βB←A (r ) := {t 0 | ∃t ∈ r : t 0 (R − A) = t(R − A) ∧ t 0 (B) = t(A)} ändert Attributnamen von alt in neu βName←Nachname (KRITIKER) durch Umbenennung nun möglich I I I Verbunde, wo bisher kartesische Produkte ausgeführt wurden (unterschiedliche Attribute werden gleich benannt), kartesische Produkte, wo bisher Verbunde ausgeführt wurden (gleiche Attribute werden unterschiedlich genannt), Mengenoperationen Schallehn Datenmanagement Sommersemester 2017 6–20 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Berechnung des Kreuzproduktes natürlicher Verbund entartet zum Kreuzprodukt, wenn keine gemeinsamen Attribute existieren Erzwingen durch Umbenennung I Beispiel: R1(A, B, C) und R2(C, D) R1 × R2 ≡ R1 o n βE←C (R2) Kreuzprodukt + Selektion simuliert natürlichen Verbund R1 o n R2 ≡ σR1.C=R2.C (R1 × R2) Schallehn Datenmanagement Sommersemester 2017 6–21 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Mengenoperationen: Semantik formal für r1 (R) und r2 (R) I I I Vereinigung r1 ∪ r2 := {t | t ∈ r1 ∨ t ∈ r2 } Durchschnitt r1 ∩ r2 := {t | t ∈ r1 ∧ t ∈ r2 } Differenz r1 − r2 := {t | t ∈ r1 ∧ t 6∈ r2 } Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2 ) überflüssig Schallehn Datenmanagement Sommersemester 2017 6–22 Grundlagen von Anfragen: Algebra & Kalkül Anfragealgebren Unabhängigkeit und Vollständigkeit Minimale Relationenalgebra: Ω = π, σ, o n, β, ∪ und − unabhängig: kein Operator kann weggelassen werden ohne Vollständigkeit zu verlieren andere unabhängige Menge: o n und β durch × ersetzen Relationale Vollständigkeit: jede andere Menge von Operationen genauso mächtig wie Ω strenge relationale Vollständigkeit: zu jedem Ausdruck mit Operatoren aus Ω gibt es einen Ausdruck auch mit der anderen Menge von Operationen Schallehn Datenmanagement Sommersemester 2017 6–23 Grundlagen von Anfragen: Algebra & Kalkül Erweiterungen der Relationenalgebra Erweiterungen der Relationenalgebra weitere Verbundoperationen Division Gruppierung und geschachtelte Relationen ... Schallehn Datenmanagement Sommersemester 2017 6–24 Grundlagen von Anfragen: Algebra & Kalkül Erweiterungen der Relationenalgebra Verbundvarianten für L(AB), R(BC), S(DE) Gleichverbund (engl. equi-join): Gleichheitsbedingung über explizit angegebene und evtl. verschiedene Attribute r (R) o nC=D r (S) Theta-Verbund (engl. θ-join): beliebige Verbundbedingung r (R) o nC>D r (S) Semi-Verbund: nur Attribute eines Operanden erscheinen im Ergebnis r (L) n r (R) = πL (r (L) o n r (R)) äußere Verbunde (engl. outer join) Schallehn Datenmanagement Sommersemester 2017 6–25 Grundlagen von Anfragen: Algebra & Kalkül Erweiterungen der Relationenalgebra Äußere Verbunde Übernahme von „dangling tuples“ in das Ergebnis und Auffüllen mit Nullwerten voller äußerer Verbund übernimmt alle Tupel beider Operanden r A./@ s linker äußerer Verbund übernimmt alle Tupel des linken Operanden r A./ s rechter äußerer Verbund übernimmt alle Tupel des rechten Operanden r ./@ s Schallehn Datenmanagement Sommersemester 2017 6–26 Grundlagen von Anfragen: Algebra & Kalkül Erweiterungen der Relationenalgebra Äußere Verbunde /2 LINKS A B RECHTS B C n o A B C 1 2 2 3 3 4 4 5 2 3 4 A./@ A B C A./ A B C ./@ A B C 1 2 ⊥ 2 3 4 ⊥ 4 5 1 2 2 3 ⊥ 4 2 ⊥ 3 4 4 5 natural join Schallehn left outer join right outer join Datenmanagement full outer join Sommersemester 2017 6–27 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Anfragekalküle Kalkül: eine formale logische Sprache zur Formulierung von Aussagen Ziel: Einsatz eines derartigen Kalküls zur Formulierung von Datenbank-Anfragen Logikbasierter Ansatz: I I Datenbankinhalte entsprechen Belegungen von Prädikaten einer Logik Anfragen abgeleiteten Prädikaten Schallehn Datenmanagement Sommersemester 2017 6–28 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Ein allgemeiner Kalkül Motivation: mathematische Notation {x 2 | x ∈ N ∧ x 3 > 0 ∧ x 3 < 1000} Anfrage hat die Form {f (x) | p(x)} I x bezeichnet Menge von freien Variablen x = {x1 : D1 , . . . , xn : Dn } Schallehn Datenmanagement Sommersemester 2017 6–29 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Ein allgemeiner Kalkül /2 Funktion f bezeichnet Ergebnisfunktion über x I wichtige Spezialfälle: Angabe einer Variable selber (f ist hier die Identitätsfunktion) und Tupelkonstruktion (Ergebnis vom Typ tuple of) p Selektionsprädikat über freien Variablen x I I I I Terme aus Variablen, Konstanten und Funktionsanwendungen Prädikate der Datentypen, etwa ≤, <, >, ≥, ... → atomare Formeln über Termen Bezug zur aktuellen Datenbank → Datenbankprädikate, z.B. Relationennamen im RM prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃ → Formeln Schallehn Datenmanagement Sommersemester 2017 6–30 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Ergebnisbestimmung einer Anfrage x = {x1 : D1 , . . . , xn : Dn } 1 Bestimme aller Belegungen der freien Variablen in x, für die das Prädikat p wahr wird. 2 Wende Funktion f auf die durch diese Belegungen gegebenen Werte an. Unter welchen Umständen liefern Kalkülanfragen endliche Ergebnisse? → Sicherheit von Anfragen Schallehn Datenmanagement Sommersemester 2017 6–31 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Relationale Kalküle Bereichskalkül: Variablen nehmen Werte elementarer Datentypen (Bereiche) an Tupelkalkül: Variablen variieren über Tupelwerte (entsprechend den Zeilen einer Relation) Schallehn Datenmanagement Sommersemester 2017 6–32 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Tupelkalkül Grundlage von SFW-Anfragen in SQL Variablen sind tupelwertig Beispiel: {w | w ∈ WEINE ∧ w.Farbe = ’Rot’} Schallehn Datenmanagement Sommersemester 2017 6–33 Grundlagen von Anfragen: Algebra & Kalkül Anfragekalküle Tupelkalkül: Beispiele konstruierte Tupel {hw.Name, w.Weinguti | w ∈ WEINE ∧ w.Farbe = ’Rot’} Verbund {he.Weinguti | e ∈ ERZEUGER∧w ∈ WEINE∧e.Weingut = w.Weing Schachtelung {hw.Name, w.Weinguti | w ∈ WEINE∧ ∃e ∈ ERZEUGER(w.Weingut = e.Weingut∧e.Region = ’Bordeau Schallehn Datenmanagement Sommersemester 2017 6–34 Grundlagen von Anfragen: Algebra & Kalkül Beispiele für Bereichskalkül Beispiele Bereichskalkül Anfrage: „Alle Weingüter von Erzeugern in Hessen.“ {x | ERZEUGER(x, y , z) ∧ z = ’Hessen’} Vereinfachte Notation: Ansonsten ungebundene Variablen (hier y und z) im Bedingungsteil existentiell mit ∃ gebunden Vollständige Version: {x | ∃y ∃zERZEUGER(x, y , z) ∧ z = ’Hessen’} Einsparung von Bereichsvariablen, indem Konstanten als Parameter des Prädikats eingesetzt werden: {x | ERZEUGER(x, y , ’Hessen’)} Schallehn Datenmanagement Sommersemester 2017 6–35 Grundlagen von Anfragen: Algebra & Kalkül Beispiele für Bereichskalkül Beispiele Bereichskalkül /2 Abkürzung für beliebige, unterschiedliche existentiell gebundene Variablen ist _ Symbol: {x | ERZEUGER(x, _, z) ∧ z = ’Hessen’} Verschiedene Auftreten des Symbols _ stehen hierbei für paarweise verschiedene Variablen Schallehn Datenmanagement Sommersemester 2017 6–36 Grundlagen von Anfragen: Algebra & Kalkül Beispiele für Bereichskalkül Zusammenfassung formale Modelle für Anfragen in Datenbanksystemen Relationenalgebra I I operationaler Ansatz Anfrage als Schachtelung von Operatoren auf Relationen Anfragekalküle I I logikbasierter Ansatz Anfragen als abgeleitete Prädikate Schallehn Datenmanagement Sommersemester 2017 6–37 Teil VII SQL als relationale Anfragesprache SQL als relationale Anfragesprache SQL als relationale Anfragesprache 1 Der SFW-Block in Detail Schallehn Datenmanagement Sommersemester 2017 7–1 SQL als relationale Anfragesprache SQL als relationale Anfragesprache 1 Der SFW-Block in Detail 2 Erweiterungen des SFW-Blocks Schallehn Datenmanagement Sommersemester 2017 7–1 SQL als relationale Anfragesprache Der SFW-Block in Detail Struktur einer SQL-Anfrage -- Anfrage select projektionsliste from relationenliste [ where bedingung ] select Projektionsliste arithmetische Operationen und Aggregatfunktionen from zu verwendende Relationen, evtl. Umbenennungen where Selektions-, Verbundbedingungen Geschachtelte Anfragen (wieder ein SFW-Block) Schallehn Datenmanagement Sommersemester 2017 7–2 SQL als relationale Anfragesprache Der SFW-Block in Detail Auswahl von Tabellen: Die from-Klausel einfachste Form: I hinter jedem Relationennamen kann optional eine Tupelvariable stehen select * from relationenliste Beispielanfrage: select * from WEINE Schallehn Datenmanagement Sommersemester 2017 7–3 SQL als relationale Anfragesprache Der SFW-Block in Detail Kartesisches Produkt bei mehr als einer Relation wird das kartesische Produkt gebildet: select * from WEINE, ERZEUGER alle Kombinationen werden ausgegeben! Schallehn Datenmanagement Sommersemester 2017 7–4 SQL als relationale Anfragesprache Der SFW-Block in Detail Tupelvariablen für mehrfachen Zugriff Einführung von Tupelvariablen erlaubt mehrfachen Zugriff auf eine Relation: select * from WEINE w1, WEINE w2 Spalten lauten dann: w1.WeinID, w1.Name, w1.Farbe, w1.Jahrgang, w1.Weingut w2.WeinID, w2.Name, w2.Farbe, w2.Jahrgang, w2.Weingut Schallehn Datenmanagement Sommersemester 2017 7–5 SQL als relationale Anfragesprache Der SFW-Block in Detail Natürlicher Verbund in SQL92 frühe SQL-Versionen (vor SQL92) I I I üblicherweise realisierter Standard in aktuellen Systemen kennen nur Kreuzprodukt, keinen expliziten Verbundoperator Verbund durch Prädikat hinter where realisieren Beispiel für natürlichen Verbund: select * from WEINE, ERZEUGER where WEINE.Weingut = ERZEUGER.Weingut Schallehn Datenmanagement Sommersemester 2017 7–6 SQL als relationale Anfragesprache Der SFW-Block in Detail Verbund explizit: natural join neuere SQL-Versionen (seit SQL92) I I kennen mehrere explizite Verbundoperatoren (engl. join) als Abkürzung für die ausführliche Anfrage mit Kreuzprodukt aufzufassen select * from WEINE natural join ERZEUGER Schallehn Datenmanagement Sommersemester 2017 7–7 SQL als relationale Anfragesprache Der SFW-Block in Detail Verbunde als explizite Operatoren: join Verbund mit beliebigem Prädikat: select * from WEINE join ERZEUGER on WEINE.Weingut = ERZEUGER.Weingut Gleichverbund mit using: select * from WEINE join ERZEUGER using (Weingut) Schallehn Datenmanagement Sommersemester 2017 7–8 SQL als relationale Anfragesprache Der SFW-Block in Detail Verbund explizit: cross join Kreuzprodukt select * from WEINE, ERZEUGER als cross join select * from WEINE cross join ERZEUGER Schallehn Datenmanagement Sommersemester 2017 7–9 SQL als relationale Anfragesprache Der SFW-Block in Detail Tupelvariable für Zwischenergebnisse „Zwischenrelationen“ aus SQL-Operationen oder einem SFW-Block können über Tupelvariablen mit Namen versehen werden select Ergebnis.Weingut from (WEINE natural join ERZEUGER) as Ergebnis as ist optional Schallehn Datenmanagement Sommersemester 2017 7–10 SQL als relationale Anfragesprache Der SFW-Block in Detail Die select-Klausel Festlegung der Projektionsattribute select [distinct] projektionsliste from ... mit projektionsliste := {attribut | arithmetischer-ausdruck | aggregat-funktion } [, ...] I I I Attribute der hinter from stehenden Relationen, optional mit Präfix, der Relationennamen oder Namen der Tupelvariablen angibt arithmetische Ausdrücke über Attributen dieser Relationen und passenden Konstanten Aggregatfunktionen über Attributen dieser Relationen Schallehn Datenmanagement Sommersemester 2017 7–11 SQL als relationale Anfragesprache Der SFW-Block in Detail Die select-Klausel Spezialfall der Projektionsliste: * I liefert alle Attribute der Relation(en) aus dem from-Teil select * from WEINE Schallehn Datenmanagement Sommersemester 2017 7–12 SQL als relationale Anfragesprache Der SFW-Block in Detail distinct eliminiert Duplikate select Name from WEINE liefert die Ergebnisrelation als Multimenge: Name La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Pinot Noir Riesling Reserve Chardonnay Schallehn Datenmanagement Sommersemester 2017 7–13 SQL als relationale Anfragesprache Der SFW-Block in Detail distinct eliminiert Duplikate /2 select distinct Name from WEINE ergibt Projektion aus der Relationenalgebra: Name La Rose Grand Cru Creek Shiraz Zinfandel Pinot Noir Riesling Reserve Chardonnay Schallehn Datenmanagement Sommersemester 2017 7–14 SQL als relationale Anfragesprache Der SFW-Block in Detail Tupelvariablen und Relationennamen Anfrage select Name from WEINE ist äquivalent zu select WEINE.Name from WEINE und select W.Name from WEINE W Schallehn Datenmanagement Sommersemester 2017 7–15 SQL als relationale Anfragesprache Der SFW-Block in Detail Präfixe für Eindeutigkeit select Name, Jahrgang, Weingut from WEINE natural join ERZEUGER -- (falsch!) Attribut Weingut existiert sowohl in der Tabelle WEINE als auch in ERZEUGER! richtig mit Präfix: select Name, Jahrgang, ERZEUGER.Weingut from WEINE natural join ERZEUGER Schallehn Datenmanagement Sommersemester 2017 7–16 SQL als relationale Anfragesprache Der SFW-Block in Detail Tupelvariablen für Eindeutigkeit bei der Verwendung von Tupelvariablen, kann der Name einer Tupelvariablen zur Qualifizierung eines Attributs benutzt werden: select w1.Name, w2.Weingut from WEINE w1, WEINE w2 Schallehn Datenmanagement Sommersemester 2017 7–17 SQL als relationale Anfragesprache Der SFW-Block in Detail Die where-Klausel select ...from ... where bedingung Formen der Bedingung: I I I Vergleich eines Attributs mit einer Konstanten: attribut θ konstante mögliche Vergleichssymbole θ abhängig vom Wertebereich; etwa =, <>, >, <, >= sowie <=. Vergleich zwischen zwei Attributen mit kompatiblen Wertebereichen: attribut1 θ attribut2 logische Konnektoren or, and und not Schallehn Datenmanagement Sommersemester 2017 7–18 SQL als relationale Anfragesprache Der SFW-Block in Detail Verbundbedingung Verbundbedingung hat die Form: relation1.attribut = relation2.attribut Beispiel: select Name, Jahrgang, ERZEUGER.Weingut from WEINE, ERZEUGER where WEINE.Weingut = ERZEUGER.Weingut Schallehn Datenmanagement Sommersemester 2017 7–19 SQL als relationale Anfragesprache Der SFW-Block in Detail Bereichsselektion Bereichsselektion attrib between konstante1 and konstante2 ist Abkürzung für attrib ≥ konstante1 and attrib ≤ konstante2 schränkt damit Attributwerte auf das abgeschlossene Intervall [konstante1 , konstante2 ] ein Beispiel: select * from WEINE where Jahrgang between 2000 and 2005 Schallehn Datenmanagement Sommersemester 2017 7–20 SQL als relationale Anfragesprache Der SFW-Block in Detail Ungewissheitsselektion Notation attribut like spezialkonstante Mustererkennung in Strings (Suche nach mehreren Teilzeichenketten) Spezialkonstante kann die Sondersymbole ‘%’ und ‘_’ beinhalten I I ‘%’ steht für kein oder beliebig viele Zeichen ‘_’ steht für genau ein Zeichen Schallehn Datenmanagement Sommersemester 2017 7–21 SQL als relationale Anfragesprache Der SFW-Block in Detail Ungewissheitsselektion /2 Beispiel select * from WEINE where Name like ’La Rose%’ ist Abkürzung für select * from WEINE where Name = ’La Rose’ or Name = ’La RoseA’ or Name = ’La RoseAA’ ... or Name = ’La RoseB’ or Name = ’La RoseBB’ ... ... or Name = ’La Rose Grand Cru’ ... or Name = ’La Rose Grand Cru Classe’ ... ... or Name = ’La RoseZZZZZZZZZZZZZ’ ... Schallehn Datenmanagement Sommersemester 2017 7–22 SQL als relationale Anfragesprache Der SFW-Block in Detail Mengenoperationen Mengenoperationen erfordern kompatible Wertebereiche für Paare korrespondierender Attribute: I I I beide Wertebereiche sind gleich oder beide sind auf character basierende Wertebereiche (unabhängig von der Länge der Strings) oder beide sind numerische Wertebereiche (unabhängig von dem genauen Typ) wie integer oder float Ergebnisschema := Schema der „linken“ Relation select A, B, C from R1 union select A, C, D from R2 Schallehn Datenmanagement Sommersemester 2017 7–23 SQL als relationale Anfragesprache Der SFW-Block in Detail Mengenoperationen in SQL Vereinigung, Durchschnitt und Differenz als union, intersect und except orthogonal einsetzbar: select * from (select Weingut from ERZEUGER except select Weingut from WEINE) äquivalent zu select * from ERZEUGER except corresponding WEINE Schallehn Datenmanagement Sommersemester 2017 7–24 SQL als relationale Anfragesprache Der SFW-Block in Detail Mengenoperationen in SQL /2 über corresponding by-Klausel: Angabe der Attributliste, über die Mengenoperation ausgeführt wird select * from ERZEUGER except corresponding by (Weingut) WEINE bei Vereinigung: Defaultfall ist Duplikateliminierung (union distinct); ohne Duplikateliminierung durch union all Schallehn Datenmanagement Sommersemester 2017 7–25 SQL als relationale Anfragesprache Der SFW-Block in Detail Mengenoperationen in SQL /2 R A 1 2 B 2 3 C 3 4 S A 2 2 C 3 4 D 4 5 R union S A 1 2 2 B 2 3 4 C 3 4 5 R union all S A 1 2 2 2 B 2 3 3 4 C 3 4 4 5 R union corresponding S A 1 2 2 C 3 4 3 R union corresponding by (A) S A 1 2 Schallehn Datenmanagement Sommersemester 2017 7–26 SQL als relationale Anfragesprache Der SFW-Block in Detail Schachtelung von Anfragen für Vergleiche mit Wertemengen notwendig: I I Standardvergleiche in Verbindung mit den Quantoren all (∀) oder any (∃) spezielle Prädikate für den Zugriff auf Mengen, in und exists Schallehn Datenmanagement Sommersemester 2017 7–27 SQL als relationale Anfragesprache Der SFW-Block in Detail in-Prädikat und geschachtelte Anfragen Notation: attribut in ( SFW-block ) Beispiel: select Name from WEINE where Weingut in ( select Weingut from ERZEUGER where Region=’Bordeaux’) Schallehn Datenmanagement Sommersemester 2017 7–28 SQL als relationale Anfragesprache Der SFW-Block in Detail Auswertung von geschachtelten Anfragen 1 Auswertung der inneren Anfrage zu den Weingütern aus Bordeaux 2 Einsetzen des Ergebnisses als Menge von Konstanten in die äußere Anfrage hinter in 3 Auswertung der modifizierten Anfrage select Name from WEINE where Weingut in ( ’Château La Rose’, ’Château La Pointe’) Name La Rose Grand Cru Schallehn Datenmanagement Sommersemester 2017 7–29 SQL als relationale Anfragesprache Der SFW-Block in Detail Auswertung von geschachtelten Anfragen /2 interne Auswertung: Umformung in einen Verbund select Name from WEINE natural join ERZEUGER where Anbaugebiet = ’Bordeaux’ Schallehn Datenmanagement Sommersemester 2017 7–30 SQL als relationale Anfragesprache Der SFW-Block in Detail Negation des in-Prädikats Simulation des Differenzoperators πWeingut (ERZEUGER) − πWeingut (WEINE) durch SQL-Anfrage select Weingut from ERZEUGER where Weingut not in ( select Weingut from WEINE ) Schallehn Datenmanagement Sommersemester 2017 7–31 SQL als relationale Anfragesprache Der SFW-Block in Detail Mächtigkeit des SQL-Kerns Relationenalgebra Projektion Selektion Verbund Umbenennung Differenz Durchschnitt Vereinigung Schallehn SQL select distinct where ohne Schachtelung from, where from mit join oder natural join from mit Tupelvariable; as where mit Schachtelung except corresponding where mit Schachtelung intersect corresponding union corresponding Datenmanagement Sommersemester 2017 7–32 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Weiteres zu SQL Erweiterungen des SFW-Blocks I I I I innerhalb der from-Klausel weitere Verbundoperationen (äußerer Verbund), innerhalb der where-Klausel weitere Arten von Bedingungen und Bedingungen mit Quantoren, innerhalb der select-Klausel die Anwendung von skalaren Operationen und Aggregatfunktionen, zusätzliche Klauseln group by und having rekursive Anfragen Schallehn Datenmanagement Sommersemester 2017 7–33 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Skalare Ausdrücke Umbenennung von Spalten: ausdruck as neuer-name skalare Operationen auf I I I numerischen Wertebereichen: etwa +, −, ∗ und /, Strings: Operationen wie char_length (aktuelle Länge eines Strings), die Konkatenation k und die Operation substring (Suchen einer Teilzeichenkette an bestimmten Positionen des Strings), Datumstypen und Zeitintervallen: Operationen wie current_date (aktuelles Datum), current_time (aktuelle Zeit), +, − und ∗ bedingte Ausdrücke Typkonvertierung Hinweise: I I skalare Ausdrücke können mehrere Attribute umfassen Anwendung ist tupelweise: pro Eingabetupel entseht ein Ergebnistupel Schallehn Datenmanagement Sommersemester 2017 7–34 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Skalare Ausdrücke /2 Ausgabe der Namen aller Grand Cru-Weine select substring(Name from 1 for (char_length(Name) - position(’Grand Cru’ in Name))) from WEINE where Name like ’%Grand Cru’ Annahme: zusätzliches Attribut HerstDatum in WEINE alter table WEINE add column HerstDatum date update WEINE set HerstDatum = date ’2004-08-13’ where Name = ’Zinfandel’ Anfrage: select Name, year(current_date - HerstDatum) as Alter from WEINE Schallehn Datenmanagement Sommersemester 2017 7–35 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Bedingte Ausdrücke case-Anweisung: Ausgabe eines Wertes in Abhängigkeit von der Auswertung eines Prädikats case when prädikat1 then ausdruck1 ... when prädikatn−1 then ausdruckn−1 [ else ausdruckn ] end Einsatz in select- und where-Klausel select case when Farbe = ’Rot’ then ’Rotwein’ when Farbe = ’Weiß’ then ’Weißwein’ else ’Sonstiges’ end as Weinart, Name from WEINE Schallehn Datenmanagement Sommersemester 2017 7–36 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Typkonvertierung explizite Konvertierung des Typs von Ausdrücken cast(ausdruck as typname) Beispiel: int-Werte als Zeichenkette für Konkatenationsoperator select cast(Jahrgang as varchar) || ’er ’ || Name as Bezeichnung from WEINE Schallehn Datenmanagement Sommersemester 2017 7–37 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Quantoren und Mengenvergleiche Quantoren: all, any, some und exists Notation attribut θ { all | any | some } ( select attribut from ...where ...) all: where-Bedingung wird erfüllt, wenn für alle Tupel des inneren SFW-Blocks der θ-Vergleich mit attribut true wird any bzw. some: where-Bedingung wird erfüllt, wenn der θ-Vergleich mit mindestens einem Tupel des inneren SFW-Blocks true wird Schallehn Datenmanagement Sommersemester 2017 7–38 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Bedingungen mit Quantoren: Beispiele Bestimmung des ältesten Weines select * from WEINE where Jahrgang <= all ( select Jahrgang from WEINE) alle Weingüter, die Rotweine produzieren select * from ERZEUGER where Weingut = any ( select Weingut from WEINE where Farbe = ’Rot’) Schallehn Datenmanagement Sommersemester 2017 7–39 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Vergleich von Wertemengen Test auf Gleichheit zweier Mengen allein mit Quantoren nicht möglich Beispiel: „Gib alle Erzeuger aus, die sowohl Rot- als auch Weißweine produzieren.“ falsche Anfrage select Weingut from WEINE where Farbe = ’Rot’ and Farbe = ’Weiß’ richtige Formulierung select w1.Weingut from WEINE w1, WEINE w2 where w1.Weingut = w2.Weingut and w1.Farbe = ’Rot’ and w2.Farbe = ’Weiß’ Schallehn Datenmanagement Sommersemester 2017 7–40 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Das exists/not exists-Prädikat einfache Form der Schachtelung exists ( SFW-block ) liefert true, wenn das Ergebnis der inneren Anfrage nicht leer ist speziell bei verzahnt geschachtelten (korrelierte) Anfragen sinnvoll I in der inneren Anfrage wird Relationen- oder Tupelvariablen-Name aus dem from-Teil der äußeren Anfrage verwendet Schallehn Datenmanagement Sommersemester 2017 7–41 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Verzahnt geschachtelte Anfragen Weingüter mit 1999er Rotwein select * from ERZEUGER where 1999 in ( select Jahrgang from WEINE where Farbe=’Rot’ and WEINE.Weingut = ERZEUGER.We konzeptionelle Auswertung 1 2 Untersuchung des ersten ERZEUGER-Tupels in der äußeren Anfrage (Creek) und Einsetzen in innere Anfrage Auswertung der inneren Anfrage select Jahrgang from WEINE where Farbe=’Rot’ and WEINE.Weingut = ’Creek’ 3 Weiter bei 1. mit zweitem Tupel . . . Alternative: Umformulierung in Verbund Schallehn Datenmanagement Sommersemester 2017 7–42 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Beispiel für exists Weingüter aus Bordeaux ohne gespeicherte Weine select * from ERZEUGER e where Region = ’Bordeaux’ and not exists ( select * from WEINE where Weingut = e.Weingut) Schallehn Datenmanagement Sommersemester 2017 7–43 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen und Gruppierung Aggregatfunktionen berechnen neue Werte für eine gesamte Spalte, etwa die Summe oder den Durchschnitt der Werte einer Spalte Beispiel: Ermittlung des Durchschnittspreises aller Artikel oder des Gesamtumsatzes über alle verkauften Produkte bei zusätzlicher Anwendung von Gruppierung: Berechnung der Funktionen pro Gruppe, z.B. der Durchschnittspreis pro Warengruppe oder der Gesamtumsatz pro Kunde Schallehn Datenmanagement Sommersemester 2017 7–44 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen Aggregatfunktionen in Standard-SQL: I I I I count: berechnet Anzahl der Werte einer Spalte oder alternativ (im Spezialfall count(∗)) die Anzahl der Tupel einer Relation sum: berechnet die Summe der Werte einer Spalte (nur bei numerischen Wertebereichen) avg: berechnet den arithmetischen Mittelwert der Werte einer Spalte (nur bei numerischen Wertebereichen) max bzw. min: berechnen den größten bzw. kleinsten Wert einer Spalte Schallehn Datenmanagement Sommersemester 2017 7–45 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen /2 Argumente einer Aggregatfunktion: I I I ein Attribut der durch die from-Klausel spezifizierten Relation, ein gültiger skalarer Ausdruck oder im Falle der count-Funktion auch das Symbol ∗ Schallehn Datenmanagement Sommersemester 2017 7–46 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen /3 vor dem Argument (außer im Fall von count(∗)) optional auch die Schlüsselwörter distinct oder all I I I distinct: vor Anwendung der Aggregatfunktion werden doppelte Werte aus der Menge von Werten, auf die die Funktion angewendet wird all: Duplikate gehen mit in die Berechnung ein (Default-Voreinstellung) Nullwerte werden in jedem Fall vor Anwendung der Funktion aus der Wertemenge eliminiert (außer im Fall von count(∗)) Schallehn Datenmanagement Sommersemester 2017 7–47 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen - Beispiele Anzahl der Weine: select count(*) as Anzahl from WEINE ergibt Anzahl 7 Schallehn Datenmanagement Sommersemester 2017 7–48 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen - Beispiele /2 Anzahl der verschiedenen Weinregionen: select count(distinct Region) from ERZEUGER Weine, die älter als der Durchschnitt sind: select Name, Jahrgang from WEINE where Jahrgang < (select avg(Jahrgang) from WEINE) alle Weingüter, die nur einen Wein liefern: select * from ERZEUGER e where 1 = ( select count(*) from WEINE w where w.Weingut = e.Weingut) Schallehn Datenmanagement Sommersemester 2017 7–49 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen /2 Schachtelung von Aggregatfunktionen nicht erlaubt select f1 (f2 (A)) as Ergebnis from R ... -- (falsch!) mögliche Formulierung: select f1 (Temp) as Ergebnis from ( select f2 (A) as Temp from R ...) Schallehn Datenmanagement Sommersemester 2017 7–50 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Aggregatfunktionen in where-Klausel Aggregatfunktionen liefern nur einen Wert Einsatz in Konstanten-Selektionen der where-Klausel möglich alle Weingüter, die nur einen Wein liefern: select * from ERZEUGER e where 1 = ( select count(*) from WEINE w where w.Weingut = e.Weingut) Schallehn Datenmanagement Sommersemester 2017 7–51 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks group by und having Notation select ... from ... [where ...] [group by attributliste ] [having bedingung ] Schallehn Datenmanagement Sommersemester 2017 7–52 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung: Schema Relation REL: A B C D 1 1 2 3 3 2 2 3 3 3 3 4 3 4 6 4 5 4 5 7 ... Anfrage: select A, sum(D) from REL where ... group by A, B having A<4 and sum(D)<10 and max(C)=4 Schallehn Datenmanagement Sommersemester 2017 7–53 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung: Schritt 1 from und where A 1 1 2 3 3 B 2 2 3 3 3 C 3 4 3 4 6 D 4 5 4 5 7 à ... Schallehn Datenmanagement A 1 1 2 3 3 B 2 2 3 3 3 C 3 4 3 4 6 D 4 5 4 5 7 Sommersemester 2017 7–54 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung: Schritt 2 group by A, B A 1 1 2 3 3 B 2 2 3 3 3 Schallehn C 3 4 3 4 6 D 4 5 4 5 7 A à Datenmanagement B 1 2 2 3 3 3 N C 3 4 3 4 6 D 4 5 4 5 7 Sommersemester 2017 7–55 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung: Schritt 3 select A, sum(D) A B 1 2 2 3 3 3 Schallehn N C 3 4 3 4 6 A D 4 5 4 5 7 à Datenmanagement N sum(D) 1 9 2 3 4 12 C 3 4 3 4 6 D 4 5 4 5 7 Sommersemester 2017 7–56 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung: Schritt 4 having A<4 and sum(D)<10 and max(C)=4 A N sum(D) 1 9 2 3 4 12 Schallehn C 3 4 3 4 6 D 4 5 4 5 7 à Datenmanagement A 1 sum(D) 9 Sommersemester 2017 7–57 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Gruppierung - Beispiel Anzahl der Rot- und Weißweine: select Farbe, count(*) as Anzahl from WEINE group by Farbe Ergebnisrelation: Farbe Rot Weiß Schallehn Anzahl 5 2 Datenmanagement Sommersemester 2017 7–58 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks having - Beispiel Regionen mit mehr als einem Wein select Region, count(*) as Anzahl from ERZEUGER natural join WEINE group by Region having count(*) > 1 Schallehn Datenmanagement Sommersemester 2017 7–59 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Attribute für Aggregation bzw. having zulässige Attribute hinter select bei Gruppierung auf Relation mit Schema R I I Gruppierungsattribute G Aggregationen auf Nicht-Gruppierungsattributen R − G zulässige Attribute für having I dito Schallehn Datenmanagement Sommersemester 2017 7–60 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Äußere Verbunde zusätzlich zu klassischen Verbund (inner join): in SQL-92 auch äußerer Verbund Übernahme von „dangling tuples“ in das Ergebnis und Auffüllen mit Nullwerten outer join übernimmt alle Tupel beider Operanden (Langfassung: full outer join) left outer join bzw. right outer join übernimmt alle Tupel des linken bzw. des rechten Operanden äußerer natürlicher Verbund jeweils mit Schlüsselwort natural, also z.B. natural left outer join Schallehn Datenmanagement Sommersemester 2017 7–61 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Äußere Verbunde /2 LINKS A 1 2 B 2 3 OUTER A 1 2 ⊥ B 2 3 4 Schallehn C ⊥ 4 5 RECHTS B 3 4 C 4 5 LEFT A 1 2 B 2 3 Datenmanagement C ⊥ 4 NATURAL JOIN A 2 B 3 C 4 RIGHT A 2 ⊥ B 3 4 C 4 5 Sommersemester 2017 7–62 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Äußerer Verbund: Beispiel select Anbaugebiet, count(WeinID) as Anzahl from ERZEUGER natural left outer join WEINE group by Anbaubebiet Anbaugebiet Barossa Valley Napa Valley Saint-Emilion Pomerol Rheingau Schallehn Anzahl 2 3 1 0 1 Datenmanagement Sommersemester 2017 7–63 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Simulation des äußeren Verbundes linker äußerer Verbund select * from ERZEUGER natural join WEINE union all select ERZEUGER.*, cast(null as int), cast(null as varchar(20)), cast(null as varchar(10)), cast(null as int), cast(null as varchar(20)) from ERZEUGER e where not exists ( select * from WEINE where WEINE.Weingut = e.Weingut) Schallehn Datenmanagement Sommersemester 2017 7–64 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Sortierung mit order by Notation order by attributliste Beispiel: select * from WEINE order by Jahrgang Sortierung aufsteigend (asc) oder absteigend (desc) Sortierung als letzte Operation einer Anfrage muss in der select-Klausel vorkommen Schallehn Datenmanagement Sortierattribut Sommersemester 2017 7–65 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Sortierung /2 Sortierung auch mit berechneten Attributen (Aggregaten) als Sortierkriterium select Weingut, count(*) as Anzahl from ERZEUGER natural join WEINE group by Weingut order by Anzahl desc Schallehn Datenmanagement Sommersemester 2017 7–66 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Sortierung: Top-k-Anfragen Anfrage, die die besten k Elemente bzgl. einer Rangfunktion liefert select w1.Name, count(*) as Rang from WEINE w1, WEINE w2 where w1.Jahrgang <= w2.Jahrgang group by w1.Name, w1.WeinID having count(*) <= 4 order by Rang Name Zinfandel Creek Shiraz Chardonnay Pinot Noir Schallehn ----- Schritt Schritt Schritt Schritt 1 2 3 4 Rang 1 2 3 4 Datenmanagement Sommersemester 2017 7–67 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Sortierung: Top-k-Anfragen Ermittlung der k = 4 jüngste Weine Erläuterung I I I I Schritt 1: Zuordnung aller Weine die älter sind Schritt 2: Gruppierung nach Namen, Berechnung des Rangs Schritt 3: Beschränkung auf Ränge ≤ 4 Schritt 4: Sortierung nach Rang Schallehn Datenmanagement Sommersemester 2017 7–68 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Behandlung von Nullwerten skalare Ausdrücke: Ergebnis null, sobald Nullwert in die Berechnung eingeht in allen Aggregatfunktionen bis auf count(∗) werden Nullwerte vor Anwendung der Funktion entfernt fast alle Vergleiche mit Nullwert ergeben Wahrheitswert unknown (statt true oder false) Ausnahme: is null ergibt true, is not null ergibt false Boolesche Ausdrücke basieren dann auf dreiwertiger Logik Schallehn Datenmanagement Sommersemester 2017 7–69 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Behandlung von Nullwerten /2 and true unknown false or true unknown false true true unknown false true true true true not true unknown false Schallehn unknown unknown unknown false unknown true unknown unknown false false false false false true unknown false false unknown true Datenmanagement Sommersemester 2017 7–70 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Selektionen nach Nullwerten Null-Selektion wählt Tupel aus, die bei einem bestimmten Attribut Nullwerte enthalten Notation attribut is null Beispiel select * from ERZEUGER where Anbaugebiet is null Schallehn Datenmanagement Sommersemester 2017 7–71 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks SQL-Versionen Geschichte I I I I I I I I SEQUEL (1974, IBM Research Labs San Jose) SEQUEL2 (1976, IBM Research Labs San Jose) SQL (1982, IBM) ANSI-SQL (SQL-86; 1986) ISO-SQL (SQL-89; 1989; drei Sprachen Level 1, Level 2, + IEF) (ANSI / ISO) SQL2 (als SQL-92 verabschiedet) (ANSI / ISO) SQL3 (als SQL:1999 verabschiedet) Seitdem: SQL:2003, SQL:2006, SQL:2008, SQL:2011 trotz Standardisierung: teilweise Inkompatibilitäten zwischen Systemen der einzelnen Hersteller Schallehn Datenmanagement Sommersemester 2017 7–72 SQL als relationale Anfragesprache Erweiterungen des SFW-Blocks Zusammenfassung SQL als Standardsprache SQL-Kern mit Bezug zur Relationenalgebra Erweiterungen Schallehn Datenmanagement Sommersemester 2017 7–73 Teil VIII Programmierung von Datenbankanwendungen Programmierung von Datenbankanwendungen Programmierung von Datenbankanwendungen 1 Grundkonzepte der Programmiersprachenanbindung Schallehn Datenmanagement Sommersemester 2017 8–1 Programmierung von Datenbankanwendungen Programmierung von Datenbankanwendungen 1 Grundkonzepte der Programmiersprachenanbindung 2 JDBC als Call Level Interface Schallehn Datenmanagement Sommersemester 2017 8–1 Programmierung von Datenbankanwendungen Programmierung von Datenbankanwendungen 1 Grundkonzepte der Programmiersprachenanbindung 2 JDBC als Call Level Interface 3 Eingebettetes SQL mit SQLJ und LINQ Schallehn Datenmanagement Sommersemester 2017 8–1 Programmierung von Datenbankanwendungen Grundkonzepte der Programmiersprachenanbindung Grundkonzepte der Programmiersprachenanbindung Kopplungsarten: I prozedurale oder CALL-Schnittstellen (call level interface) F I F F F I Beispiele: SQL/CLI, ODBC, JDBC, . . . Einbettung einer DB-Sprache in Programmiersprachen statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt Beispiele: Embedded SQL, SQLJ dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit Spracherweiterungen und neue Sprachentwicklungen F Schallehn Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL Datenmanagement Sommersemester 2017 8–2 Programmierung von Datenbankanwendungen Grundkonzepte der Programmiersprachenanbindung Cursor-Konzept Cursor: Iterator über Liste von Tupeln (Anfrageergebnis) Anwendungsprogramm Datenbank Relation Cursor Schallehn Datenmanagement Sommersemester 2017 8–3 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Überblick Datenbankzugriffsschnittstelle für Java abstrakte, datenbankneutrale Schnittstelle vergleichbar mit ODBC Low-Level-API: direkte Nutzung von SQL Java-Package java.sql I I I I DriverManager: Einstiegspunkt, Laden von Treibern Connection: Datenbankverbindung Statement: Ausführung von Anweisungen über eine Verbindung ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff auf einzelne Spalten Schallehn Datenmanagement Sommersemester 2017 8–4 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Struktur DriverManager getConnection Connection createStatement Statement Statement executeQuery ResultSet Schallehn Datenmanagement ResultSet Sommersemester 2017 8–5 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Treiberkonzept JavaApplikation JDBC-API JDBCTreibermanager NativeProtokollTreiber JDBCNetTreiber JDBCODBCBridge NativeAPITreiber DBMiddleware ODBC ClientBibliothek ClientBibliothek Schallehn Datenmanagement Sommersemester 2017 8–6 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Ablauf 1 Aufbau einer Verbindung zur Datenbank I I 2 Senden einer SQL-Anweisung I I 3 Angabe der Verbindungsinformationen Auswahl und Laden des Treibers Definition der Anweisung Belegung von Parametern Verarbeiten der Anfrageergebnisse I I Navigation über Ergebnisrelation Zugriff auf Spalten Schallehn Datenmanagement Sommersemester 2017 8–7 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Verbindungsaufbau 1 Treiber laden Class.forName ("com.company.DBDriver"); 2 Verbindung herstellen Connection con; String url = "jdbc:subprotocol:datasource"; con = DriverManager.getConnection (url, "scott", "tiger"); JDBC-URL spezifiziert Datenquelle/Datenbank Verbindungsmechanismus (Protokoll, Server und Port) Schallehn Datenmanagement Sommersemester 2017 8–8 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Anfrageausführung 1 Anweisungsobjekt (Statement) erzeugen Statement stmt = con.createStatement(); 2 Anweisung ausführen String query = "select Name, Jahrgang from WEINE"; ResultSet rset = stmt.executeQuery (query); Klasse java.sql.Statement Ausführung von Anfragen (SELECT) mit executeQuery Ausführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeUpdate Schallehn Datenmanagement Sommersemester 2017 8–9 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Ergebnisverarbeitung 1 Navigation über Ergebnismenge (Cursor-Prinzip) while (rset.next()) { // Verarbeitung der einzelnen Tupel ... } 2 Zugriff auf Spaltenwerte über getType-Methoden I über Spaltenindex String wname = rset.getString(1); I über Spaltenname String wname = rset.getString("Name"); Schallehn Datenmanagement Sommersemester 2017 8–10 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Fehlerbehandlung Fehlerbehandlung mittels Exception-Mechanismus SQLException für alle SQL- und DBMS-Fehler try { // Aufruf von JDBC-Methoden ... } catch (SQLException exc) { System.out.println("SQLException: "+ exc.getMessage()); } Schallehn Datenmanagement Sommersemester 2017 8–11 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Änderungsoperationen DDL- und DML-Operationen mittels executeUpdate liefert Anzahl der betroffenen Zeilen (für DML-Operationen) Statement stmt = con.createStatement(); int rows = stmt.executeUpdate( "update WEINE set Preis = Preis * 1.1 " + "where Jahrgang < 2000"); Schallehn Datenmanagement Sommersemester 2017 8–12 Programmierung von Datenbankanwendungen JDBC als Call Level Interface JDBC: Transaktionssteuerung Methoden von Connection I I commit () rollback () Auto-Commit-Modus I I I implizites Commit nach jeder Anweisung Transaktion besteht nur aus einer Anweisung Umschalten mittels setAutoCommit (boolean) Schallehn Datenmanagement Sommersemester 2017 8–13 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ SQLJ: Embedded SQL für Java Einbettung von SQL-Anweisungen in Java-Quelltext Vorübersetzung des erweiterten Quelltextes in echten Java-Code durch Translator sqlj Überprüfung der SQL-Anweisungen I I I korrekte Syntax Übereinstimmung der Anweisungen mit DB-Schema Typkompatibilität der für Datenaustausch genutzten Variablen Nutzung von JDBC-Treibern Schallehn Datenmanagement Sommersemester 2017 8–14 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ SQLJ: Prinzip SQLJ-Programm Syntax- & Semantikprüfung SQLJ-Translator Java-Quellcode SQLJ-Profile Java-Compiler Customizer Bytecode Custom-Profile SQLJ-Laufzeitsystem JDBC-Treiber Schallehn Datenmanagement Sommersemester 2017 8–15 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ SQLJ-Anweisungen Kennzeichnung durch #sql Deklarationen Klassendefinitionen für Iteratoren SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen #sql { SQL-Operation }; Beispiel: #sql { insert into ERZEUGER (Weingut, Region) values ( ’Wairau Hills’, ’Marlborough’) }; Schallehn Datenmanagement Sommersemester 2017 8–16 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ Host-Variablen Variablen einer Host-Sprache (hier Java), die in SQL-Anweisungen auftreten können Verwendung: Austausch von Daten zwischen Host-Sprache und SQL Kennzeichnung durch ":variable" Beispiel: String name; int weinID = 4711; #sql { select Name into :name from WEINE where WeinID = :weinID }; System.out.println("Wein = " + name); Schallehn Datenmanagement Sommersemester 2017 8–17 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ Iteratoren 1 Deklaration des Iterators #sql public iterator WeinIter (String Name, String Weingut, int Jahrgang); 2 Definition des Iteratorobjektes WeinIter iter; 3 Ausführung der Anweisung #sql iter = { select Name, Weingut, Jahrgang from WEINE }; 4 Navigation while (iter.next()) { System.out.println(iter.Name() + " "+ iter.Weingut() + " "+ iter.Jahrgang()); } Schallehn Datenmanagement Sommersemester 2017 8–18 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ Dynamic SQL SQL-Statements als zur Laufzeit konstruierte Strings exec sql begin declare section; AnfrageString char(256) varying; exec sql end declare section; exec sql declare AnfrageObjekt statement; AnfrageString = ’delete from WEINE where WeinID = 4711’; ... exec sql prepare AnfrageObjekt from :AnfrageString; exec sql execute AnfrageObjekt; Schallehn Datenmanagement Sommersemester 2017 8–19 Programmierung von Datenbankanwendungen Eingebettetes SQL mit SQLJ und LINQ Language Integrated Query (LINQ) Einbettung einer DB-Sprache (SQL) in eine Programmiersprache (C#) spezielle Klassenmethoden IEnumerable<string> res = weine .Where(w => w.Farbe = "Rot") .Select(w => new { w.Name }); eigene Sprachkonstrukte (ab C# 3.0) IEnumerable<op> res = from w in weine where w.Farbe = "Rot" select new { w.Name }; Schallehn Datenmanagement Sommersemester 2017 8–20 Teil IX Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger 1 Grundbegriffe Schallehn Datenmanagement Sommersemester 2017 9–1 Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger 1 Grundbegriffe 2 Transaktionsbegriff Schallehn Datenmanagement Sommersemester 2017 9–1 Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger 1 Grundbegriffe 2 Transaktionsbegriff 3 Transaktionen in SQL Schallehn Datenmanagement Sommersemester 2017 9–1 Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger 1 Grundbegriffe 2 Transaktionsbegriff 3 Transaktionen in SQL 4 Integritätsbedingungen in SQL Schallehn Datenmanagement Sommersemester 2017 9–1 Transaktionen, Integrität und Trigger Transaktionen, Integrität und Trigger 1 Grundbegriffe 2 Transaktionsbegriff 3 Transaktionen in SQL 4 Integritätsbedingungen in SQL 5 Trigger Schallehn Datenmanagement Sommersemester 2017 9–1 Transaktionen, Integrität und Trigger Grundbegriffe Integrität Integritätsbedingung (engl. integrity constraint oder assertion): Bedingung für die „Zulässigkeit“ oder „Korrektheit“ in Bezug auf Datenbanken: I I I (einzelne) Datenbankzustände, Zustandsübergänge vom alten in den neuen Datenbankzustand, langfristige Datenbankentwicklungen Schallehn Datenmanagement Sommersemester 2017 9–2 Transaktionen, Integrität und Trigger Grundbegriffe Inhärente Integritätsbedingungen im RM 1 Typintegrität: I I 2 Schlüsselintegrität: I 3 SQL erlaubt Angabe von Wertebereichen zu Attributen Erlauben oder Verbieten von Nullwerten Angabe eines Schlüssels für eine Relation Referentielle Integrität: I die Angabe von Fremdschlüsseln Schallehn Datenmanagement Sommersemester 2017 9–3 Transaktionen, Integrität und Trigger Transaktionsbegriff Szenarien für Integritätsprobleme Platzreservierung für Flüge gleichzeitig aus vielen Reisebüros → Platz könnte mehrfach verkauft werden, wenn mehrere Reisebüros den Platz als verfügbar identifizieren überschneidende Kontooperationen einer Bank statistische Datenbankoperationen → Ergebnisse sind verfälscht, wenn während der Berechnung Daten geändert werden Schallehn Datenmanagement Sommersemester 2017 9–4 Transaktionen, Integrität und Trigger Transaktionsbegriff Transaktion Eine Transaktion ist eine Folge von Operationen (Aktionen), die die Datenbank von einem konsistenten Zustand in einen konsistenten, eventuell veränderten, Zustand überführt, wobei das ACID-Prinzip eingehalten werden muss. Aspekte: I I Semantische Integrität: Korrekter (konsistenter) DB-Zustand nach Ende der Transaktion Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriff mehrerer Benutzer auf dieselben Daten vermeiden Schallehn Datenmanagement Sommersemester 2017 9–5 Transaktionen, Integrität und Trigger Transaktionsbegriff ACID-Eigenschaften Atomicity (Atomarität): Transaktion wird entweder ganz oder gar nicht ausgeführt Consistency (Konsistenz oder auch Integritätserhaltung): Datenbank ist vor Beginn und nach Beendigung einer Transaktion jeweils in einem konsistenten Zustand Isolation (Isolation): Nutzer, der mit einer Datenbank arbeitet, sollte den Eindruck haben, dass er mit dieser Datenbank alleine arbeitet Durability (Dauerhaftigkeit / Persistenz): nach erfolgreichem Abschluss einer Transaktion muss das Ergebnis dieser Transaktion „dauerhaft“ in der Datenbank gespeichert werden Schallehn Datenmanagement Sommersemester 2017 9–6 Transaktionen, Integrität und Trigger Transaktionsbegriff Kommandos einer Transaktionssprache Beginn einer Transaktion: Begin-of-Transaction-Kommando BOT (in SQL implizit!) commit: die Transaktion soll erfolgreich beendet werden abort: die Transaktion soll abgebrochen werden Schallehn Datenmanagement Sommersemester 2017 9–7 Transaktionen, Integrität und Trigger Transaktionsbegriff Transaktion: Integritätsverletzung Beispiel: I I Übertragung eines Betrages B von einem Haushaltsposten K1 auf einen anderen Posten K2 Bedingung: Summe der Kontostände der Haushaltsposten bleibt konstant vereinfachte Notation Transfer = < K1:=K1-B; K2:=K2+B >; Realisierung in SQL: als Sequenz zweier elementarer Änderungen Bedingung ist zwischen den einzelnen Änderungsschritten nicht unbedingt erfüllt! Schallehn Datenmanagement Sommersemester 2017 9–8 Transaktionen, Integrität und Trigger Transaktionsbegriff Transaktion: Verhalten bei Systemabsturz Fehler T1 T2 T3 T4 T5 Zeit tf Schallehn Datenmanagement Sommersemester 2017 9–9 Transaktionen, Integrität und Trigger Transaktionsbegriff Transaktion: Verhalten bei Systemabsturz /2 Folgen: I Inhalt des flüchtigen Speichers zum Zeitpunkt tf ist unbrauchbar → Transaktionen in unterschiedlicher Weise davon betroffen Transaktionszustände: I I zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4 ) bereits vor dem Fehlerzeitpunkt beendete Transaktionen (T1 , T3 und T5 ) Schallehn Datenmanagement Sommersemester 2017 9–10 Transaktionen, Integrität und Trigger Transaktionsbegriff Probleme im Mehrbenutzerbetrieb Inkonsistentes Lesen (Nonrepeatable Read): bei wiederholtem Lesen würde eine inzwischen von einer anderen Transaktion geänderter Wert gelesen Abhängigkeiten von nicht freigegebenen Daten (Dirty Read): gelesen Daten, die von einer anderen Transaktion geändert wurden, werde durch einen Abbruch dieser evtl. zurückgesetzt Das Phantom-Problem: eine andere Transaktion fügt neue Tupel ein oder löscht diese Verlorengegangenes Ändern (Lost Update): eine Transaktion überschreibt Änderungen einer anderen Schallehn Datenmanagement Sommersemester 2017 9–11 Transaktionen, Integrität und Trigger Transaktionen in SQL Transaktionen in SQL-DBS Aufweichung von ACID in SQL: Isolationsebenen set transaction [ { read only | read write }, ] [isolation level { read uncommitted | read committed | repeatable read | serializable }, ] [ diagnostics size ...] Standardeinstellung: set transaction read write, isolation level serializable Schallehn Datenmanagement Sommersemester 2017 9–12 Transaktionen, Integrität und Trigger Transaktionen in SQL Bedeutung der Isolationsebenen read uncommitted I I I schwächste Stufe: Zugriff auf nicht geschriebene Daten, nur für read only Transaktionen statistische und ähnliche Transaktionen (ungefährer Überblick, nicht korrekte Werte) keine Sperren → effizient ausführbar, keine anderen Transaktionen werden behindert read committed I nur Lesen endgültig geschriebener Werte, aber nonrepeatable read möglich repeatable read I kein nonrepeatable read, aber Phantomproblem kann auftreten serializable I garantierte Serialisierbarkeit (Ergebnis äquivalent zu einer nicht-parallelen Ausführung der Transaktionen) Schallehn Datenmanagement Sommersemester 2017 9–13 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Integritätsbedingungen in SQL-DDL not null: Nullwerte verboten default: Angabe von Default-Werten check ( search-condition ): Attributspezifische Bedingung (in der Regel Ein-Tupel-Integritätsbedingung) primary key: Angabe eines Primärschlüssel foreign key ( Attribut(e)) references Tabelle( Attribut(e) ): Angabe der referentiellen Integrität Schallehn Datenmanagement Sommersemester 2017 9–14 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Integritätsbedingungen: Wertebereiche create domain: Festlegung eines benutzerdefinierten Wertebereichs Beispiel create domain WeinFarbe varchar(4) default ’Rot’ check (value in (’Rot’, ’Weiß’, ’Rose’)) Anwendung create table WEINE ( WeinID int primary key, Name varchar(20) not null, Farbe WeinFarbe, ...) Schallehn Datenmanagement Sommersemester 2017 9–15 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Integritätsbedingungen: check-Klausel check: Festlegung weitere lokale Integritätsbedingungen innerhalb der zu definierenden Wertebereiche, Attribute und Relationenschemata Beispiel: Einschränkung der zulässigen Werte Anwendung create table WEINE ( WeinID int primary key, Name varchar(20) not null, Jahr int check(Jahr between 1980 and 2010), ... ) Schallehn Datenmanagement Sommersemester 2017 9–16 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Überprüfungsmodi von Bedingungen on update | delete Angabe eines Auslöseereignisses, das die Überprüfung der Bedingung anstößt cascade | set null | set default | no action Kaskadierung: Behandlung einiger Integritätsverletzungen pflanzt sich über mehrere Stufen fort, z.B. Löschen als Reaktion auf Verletzung der referentieller Integrität deferred | immediate legt Überprüfungszeitpunkt für eine Bedingung fest I I deferred: Zurückstellen an das Ende der Transaktion immediate: sofortige Prüfung bei jeder relevanten Datenbankänderung Schallehn Datenmanagement Sommersemester 2017 9–17 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Überprüfungsmodi: Beispiel Kaskadierendes Löschen create table WEINE ( WeinID int primary key, Name varchar(50) not null, Preis float not null, Jahr int not null, Weingut varchar(30), foreign key (Weingut) references ERZEUGER (Weing on delete cascade) Schallehn Datenmanagement Sommersemester 2017 9–18 Transaktionen, Integrität und Trigger Integritätsbedingungen in SQL Die assertion-Klausel Assertion: Prädikat, das eine Bedingung ausdrückt, die von der Datenbank immer erfüllt sein muss Syntax (SQL:2003) create assertion name check ( prädikat ) Beispiele: create assertion Preise check ( ( select sum (Preis) from WEINE) < 10000 ) create assertion Preise2 check ( not exists ( select * from WEINE where Preis > 200) ) Schallehn Datenmanagement Sommersemester 2017 9–19 Transaktionen, Integrität und Trigger Trigger Trigger Trigger: Anweisung/Prozedur, die bei Eintreten eines bestimmten Ereignisses automatisch vom DBMS ausgeführt wird Anwendung: I I I Erzwingen von Integritätsbedingungen („Implementierung“ von Integritätsregeln) Auditing von DB-Aktionen Propagierung von DB-Änderungen Schallehn Datenmanagement Sommersemester 2017 9–20 Transaktionen, Integrität und Trigger Trigger Trigger: Entwurf und Implementierung Spezifikation von I I Ereignis und Bedingung für Aktivierung des Triggers Aktion(en) zur Ausführung Syntax in SQL:2003 festgelegt verfügbar in den meisten kommerziellen Systemen (aber mit anderer Syntax) Schallehn Datenmanagement Sommersemester 2017 9–21 Transaktionen, Integrität und Trigger Trigger SQL:2003-Trigger Syntax: create trigger <Name: > after | before <Ereignis> on <Relation> [ when <Bedingung> ] begin atomic < SQL-Anweisungen > end Ereignis: I I I insert update [ of <Liste von Attributen> ] delete Schallehn Datenmanagement Sommersemester 2017 9–22 Transaktionen, Integrität und Trigger Trigger Weitere Angaben bei Triggern for each row bzw. for each statement: Aktivierung des Triggers für jede Einzeländerungen einer mengenwertigen Änderung oder nur einmal für die gesamte Änderung before bzw. after: Aktivierung vor oder nach der Änderung referencing new as bzw. referencing old as: Binden einer Tupelvariable an die neu eingefügten bzw. gerade gelöschten („alten’“) Tupel einer Relation Tupel der Differenzrelationen Schallehn Datenmanagement Sommersemester 2017 9–23 Transaktionen, Integrität und Trigger Trigger Beispiel für Trigger Kein Kundenkonto darf unter 0 absinken: create trigger bad_account after update of Kto on KUNDE referencing new as INSERTED when (exists (select * from INSERTED where Kto < 0) ) begin atomic rollback; end ähnlicher Trigger für insert Schallehn Datenmanagement Sommersemester 2017 9–24 Transaktionen, Integrität und Trigger Trigger Beispiel für Trigger /2 Erzeuger müssen gelöscht werden, wenn sie keine Weine mehr anbieten: create trigger unnützes_Weingut after delete on WEINE referencing old as O for each row when (not exists (select * from WEINE W where W.Weingut = O.Weingut)) begin atomic delete from ERZEUGER where Weingut = O.Weingut; end Schallehn Datenmanagement Sommersemester 2017 9–25 Transaktionen, Integrität und Trigger Trigger Integritätssicherung durch Trigger 1. Bestimme Objekt oi , für das die Bedingung φ überwacht werden soll I I i.d.R. mehrere oi betrachten, wenn Bedingung relationsübergreifend ist Kandidaten für oi sind Tupel der Relationsnamen, die in φ auftauchen 2. Bestimme die elementaren Datenbankänderungen uij auf Objekten oi , die φ verletzen können I Regeln: z.B. Existenzforderungen beim Löschen und Ändern prüfen, jedoch nicht beim Einfügen etc. Schallehn Datenmanagement Sommersemester 2017 9–26 Transaktionen, Integrität und Trigger Trigger Integritätssicherung durch Trigger /2 3. Bestimme je nach Anwendung die Reaktion ri auf Integritätsverletzung I I Rücksetzen der Transaktion (rollback) korrigierende Datenbankänderungen 4. Formuliere folgende Trigger: create trigger t-phi-ij after uij on oi when ¬φ begin ri end 5. Wenn möglich, vereinfache entstandenen Trigger Schallehn Datenmanagement Sommersemester 2017 9–27 Transaktionen, Integrität und Trigger Trigger Trigger in Oracle Implementierung in PL/SQL Notation create [ or replace ] trigger trigger-name before | after insert or update [ of spalten ] or delete on tabelle [ for each row [ when ( prädikat ) ] ] PL/SQL-Block Schallehn Datenmanagement Sommersemester 2017 9–28 Transaktionen, Integrität und Trigger Trigger Trigger in Oracle: Arten Anweisungsebene (statement level trigger): Trigger wird ausgelöst vor bzw. nach der DML-Anweisung Tupelebene (row level trigger): Trigger wird vor bzw. nach jeder einzelnen Modifikation ausgelöst (one tuple at a time) Trigger auf Tupelebene: Prädikat zur Einschränkung (when) Zugriff auf altes (:old.col) bzw. neues (:new.col) Tupel I I I für delete: nur (:old.col) für insert: nur (:new.col) in when-Klausel nur (new.col) bzw. (old.col) Schallehn Datenmanagement Sommersemester 2017 9–29 Transaktionen, Integrität und Trigger Trigger Trigger in Oracle /2 Transaktionsabbruch durch raise_application_error(code, message) Unterscheidung der Art der DML-Anweisung if deleting then ... end if; if updating then ... end if; if inserting then ... end if; Schallehn Datenmanagement Sommersemester 2017 9–30 Transaktionen, Integrität und Trigger Trigger Trigger in Oracle: Beispiel Kein Kundenkonto darf unter 0 absinken: create or replace trigger bad_account after insert or update of Kto on KUNDE for each row when (:new.Kto < 0) begin raise_application_error(-20221, ’Nicht unter 0’); end; Schallehn Datenmanagement Sommersemester 2017 9–31 Transaktionen, Integrität und Trigger Trigger Zusammenfassung Zusicherung von Korrektheit bzw. Integrität der Daten inhärente Integritätsbedingungen des Relationenmodells zusätzliche SQL-Integritätsbedingungen: check-Klausel, assertion-Anweisung Trigger zur „Implementierung“ von Integritätsbedingungen bzw. -regeln Schallehn Datenmanagement Sommersemester 2017 9–32