Data & Knowledge Engineering Prof. Alejandro Buchmann Prof. Johannes Fürnkranz 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 1 Allgemeines/Organisatorisches Prof. Alejandro Buchmann (Data Engineering) Prof. Johannes Fürnkranz (Knowledge Engineering) Sprechstunde: nach Vereinb. Sprechstunde: Mi 10:00-11:00 buchmann@informatik... fuernkranz@informatik... Sekretariat: Frau Tiedemann Sekretariat: Frau Ploch [email protected] [email protected]... http://www.dvs.tu-darmstadt.de/teaching/dke/ 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 2 Allgemeines/Organisatorisches Vorlesung Übung Dienstag Freitag 9:50 Uhr bis 11:30 Uhr 8:00 Uhr bis 8:45 Uhr C205 C205 Prof. A. Buchmann (DE) Rober Rehner (DE) Prof. Fürnkranz (KE) Eneldo Loza Mencía et al. (KE) Die ersten 2 Wochen nur Vorlesungen (siehe Webseite) 1. Übungsbesprechung am 8.5.2014 Übungsaufgaben selbstständig lösen Lösung werden in der Saalübung besprochen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 3 Allgemeines/Organisatorisches Tutorium Als Ergänzung zur Übung, kein Ersatz! Fragen können in kleinem Rahmen gestellt werden häufige Fragen werden an Übungsleiter weitergeleitet Montag 9:50 – 11:30 S103/25 Michael Staab Das Tutorium beginnt am 20.4.2015 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 4 Literatur Elmasri, Navathe: “Fundamentals of Database Systems”, Addison-Wesley Ullman, Widom: “A First Course in Database Systems”, Prentice Hall Ullman: “Data and Knowledge Engineering” Vols. 1,2 Kemper, Eickler: “Datenbanksysteme”, Oldenbourg C.J. Date: “An Introduction to Database Systems”, Addison Wesley Heuer, Saake: “Datenbanken-Konzepte und Sprachen”, Thomson Publishing Melton, Simon: “Understanding the new SQL”, Morgan Kaufmann Literaturhinweise zu Knowledge Engineering im Laufe der Vorlesung Software zum Ausprobieren PostgreSQL, Datalog, etc. 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 9 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 14 Einführung Daten sind wichtiger Aktivposten eines Unternehmens Daten → Information → Wissen = Macht! Datenbanken ermöglichen die anwendungsübergreifende Nutzung von Daten (data sharing) Datenbanksystem isoliert Anwenderprogramme von Hardware und Betriebssystem Anwendungsprogramme DBMS Betriebssystem Hardware 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 15 Datenbanken und DBMS Datenbank: Einheitlich beschriebene Darstellung eines Weltausschnittes mittels diskreter Daten auf externen und persistenten Speichermedien (Platte, zunehmend SSD oder Hauptspeicher mit asynchroner persistenter Speicherung) Daten in der DB können nur über das Datenbank Management System (DBMS) eingefügt, gelesen, geändert oder gelöscht werden Ein DBMS - viele DB! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 16 Datenbanken und DBMS (2) Struktur, Operationen und Konsistenzregeln werden durch ein Datenmodell definiert Attributtypen vs. Attributwerte Aggregation von Attributen zu Sätzen (Records) / Tupeln / Objekten Beschreibende Information (Metadaten) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 17 DBMS DBMS: Softwaresystem, welches die einheitliche Beschreibung und sichere Bearbeitung einer Datenbank ermöglicht Aufgaben/Eigenschaften eines DBMS: Verwaltung von persistenten Daten (lange Lebensdauer, Konsistenz) Datenunabhängigkeit Effizienter Zugriff auf große Datenmengen (Gbytes - PBytes) ... 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 18 DBMS (2) Aufgaben/Eigenschaften eines DBMS: ... Deklarative Query-Sprachen (optimierbar) Flexibler Mehrbenutzerbetrieb (concurrency control) Sicherheit vor Systemabsturz und fehlerhaften Transaktionen (recovery) Feinkörnige Zugriffskontrolle 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 19 Datenunabhängigkeit Datenunabhängigkeit (nach Date): “Data independence is the immunity of applications to change in storage and access strategy” Idee: Einbau von Indirektion und Abstraktion Physische Datenunabhängigkeit: Änderungen an den Speicherstrukturen und Zugriffspfaden sind für Anwenderprogramme und ad-hoc Queries unsichtbar 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 20 Datenunabhängigkeit (2) Logische Datenunabhängigkeit: Änderungen an der logischen Sicht sind für Anwenderprogramme (AP) und Queries unsichtbar Jede Anwendung kann eigene Sicht auf gemeinsame DB erhalten AP1: Matrikel#,Name,Fach,Note AP2: Matrikel#,Fach,Note 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 21 Zugriff über Dateisystem Dateisystem bietet auch persistente Speicherung und Zugriff auf Daten aber Datenorganisation ist im Anwendungsprogram (AP) kodiert Zugriffspfade sind im AP kodiert Zugriffskontrolle auf Dateiebene → Keine Datenunabhängigkeit → Wenig Parallelität → Keine gemeinsame Nutzung eines Datenbestands → Redundanz → Hoher Wartungsaufwand 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 22 Datenschutz DBMS kontrolliert den Zugriff auf die Daten und deren Sichtbarkeit Gesetzgebung regelt erlaubte Nutzung und Veröffentlichung von Daten Datenbank Administrator ist für Einhaltung der Datenschutzgesetze selbst verantwortlich! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 23 Effizienter Zugriff und Queries Zugriff auf große Datenmengen sollte trotz zusätzlicher Indirektion effizient sein Leistungsverhalten ist DBMS Problem Indexstrukturen speziell vs. generisch DBA ist auf DB-Probleme und Optimierung spezialisiert Deklarative Sprachen ermöglichen ad-hoc Query Formulierung Benutzer können selbst Queries schreiben Queries werden vom DBMS und nicht vom Benutzer optimiert 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 24 Mehrbenutzerbetrieb DBMS garantiert, dass parallele Transaktionen isoliert und konsistent abgearbeitet werden Isolation Illusion einer Transaktion allein Zugriff auf die Datenbank zu haben Eine Transaktion sieht nur einen konsistenten Zustand der Datenbank 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 25 Ausfallsicherheit - Recovery Transaktion ist atomare Prozesseinheit im DB-System DBMS garantiert, dass DB immer von einem konsistenten Zustand in einen anderen konsistenten Zustand geführt wird atomar ↔ alles oder gar nichts dauerhaft ↔ keine Änderungen gehen verloren 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 26 Vorteile eines DB Systems Integrierter Datenbestand → Redundanzfreiheit, datasharing Verwaltung der Daten durch DBMS → Konsistenz, höhere Qualität des Datenbestandes Kompatible Mechanismen für Zugriffskontrolle, Recovery, Concurrency Control System garantiert Korrektheit bei Nebenläufigkeit und Systemfehlern 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 27 Vorteile eines DB Systems (2) Anwendungsbezogene Sichten eines gemeinsamen Datenbestandes Physische und logische Datenunabhängigkeit Schnellere Programmentwicklung und Wartung (explizite Strukturbeschreibung, Nutzung von 4GL, QL, Reportgeneratoren) Optimierbare Abfragesprachen (query language) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 28 Nachteile eines DB Systems Schwergewichtig: DBMS bietet oft zu viel gebündelte Funktionalität General-purpose SW oft weniger effizient als spezialisierte oder schlanke SW 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 29 Nachteile eines DB Systems (2) Bei konkurrierenden Anwendungen kann DBS nur für einen Teil der Anwendungen optimiert werden Kosten: DBMS und zusätzliche HW Qualifiziertes Personal (DBA) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 30 Datenbankarchitektur Benutzer / Anwendergruppe 1 Benutzer / Anwendergruppe n Welt dar Benutzerschnittstelle Struktur (Intension) → Typ Werte (Extension) → Instanzmenge externes Schema 1 externes Schema n Schnittstelle externes <-> konzeptionelles Schema Datenunabhängigkeit erfordert Indirektion konzeptionelles Schema Schnittstelle konzeptionelles <-> internes Schema internes Schema 3-Schema Architektur (nächste Folie) Schnittstelle internes Schema <-> Datenbank Datenbank 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 31 Datenbankverwaltungssystem (Database Management System DBMS) Daten stellen einen Ausschnitt der Datenbankarchitektur (2) 3-Schema Architektur Benutzer / Anwendergruppe 1 Benutzer / Anwendergruppe n Internes Schema: Speicher-strukturen (Records, Seiten), Zugriffspfade externes Schema 1 Konzeptuelles (logisches) Schema: logische Sicht der gesamten DB externes Schema n Schnittstelle externes <-> konzeptionelles Schema konzeptionelles Schema Externe Schemata: Anwendungs- spezifische Sichten, Filter Schnittstelle konzeptionelles <-> internes Schema internes Schema Schnittstelle internes Schema <-> Datenbank Datenbank 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 32 Datenbankverwaltungssystem (Database Management System DBMS) Benutzerschnittstelle 3-Schema Architektur Schemata sind DB-spezifisch beschreiben eine Datenbank Verwaltungssoftware und Schnittstellen DB-Unabhängigkeit ist gegeben DBMS wird durch diese dargestellt 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 33 3-Schema Architektur (2) Definierende Dokumente (3-Schichten) 1975 ANSI/X3/SPARC Study Group on Data Base Management Systems Interim Report B. Yormark “The ANSI/X3/SPARC Architecture” in “The ANSI/X3/SPARC DBMS Model”, D.A. Jardine (Ed.) North Holland 1977. 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 34 Schemadarstellung Schemadarstellung Beschrieben in Daten-Definitionssprache (Data Definition Language = DDL) Datenmanipulation Geschieht mit Daten-Manipulationssprache (Data Manipulation Language = DML) DCL (Data Control Language) Sicherheit, Berechtigungen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 35 Schemadarstellung (2) Ad-hoc Queries Ausgedrückt in einer optimierbaren Query-Sprache (Query Language = QL) SQL vereint alle Aspekte in einer Sprache Klauseln für Schemadefinition und Datenmanipulation sind unterschiedlich 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 36 Erscheinungsformen der DML bzw. QL Erscheinungsformen der DML bzw. QL Eigenständige Dialogsprache Eingebettet in Programmiersprache (host language) COBOL, FORTRAN, C, C++, Java, … Deklarative DML Navigierende DML Spezifiziert durch Prädikate, was gesucht wird Art der Suche durch anfängliche Positionierung und Verfolgung von Zeigerketten 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 37 Anforderungsermittlung & Anforderungsanalyse Konzeptualisierung MW1 Integrierung TS1 Miniwelt2 MW3 TS2 Teilsicht3 Entwurf DBS Entwurfsprozess Integrierte Sicht (Entw.) Abbildung Logisch → Physisch (Tuning) Logisches Schema (Op) Internes Schema DB 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 38 ES1 ES2 ES3 Betrieb Abbildung Konzeptuell. → Logisch 5-Layer Architecture (Härder) App. Programs w. embedded Transactions Logical Data Structures Logical Access Paths Storage Structures Page Mapping and Buffering Physical Storage Mapping Set-oriented interface, declarative QL Record-oriented interface Internal interface DB-buffer interface File interface Device interface 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 39 Komponenten eines DBMS (Vossen) User IO-Prozessor Output-Generierung Parser DBMS Precompiler Autorisierung UpdateProzessor Integr. Zugriffspfadgenerierung Recovery Mgr. QueryProzessor Optimierer TXMgr. Log Dictionary Mgr. Geräte/Speichermgr. Data Dictionary Externe Schemata Konzeptuelle Schemata Interne Schemata Datenbank 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 40 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 42 Datenmodelle System von Konzepten zur abstrakten Darstellung eines Ausschnitts der realen Welt mittels Daten Verschiedene Abstraktionsebenen konzeptuell, logisch, physisch Unterschiedliche Modelle für Entwurf und Betrieb 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 43 Datenmodelle (2) Datenmodelle bestehen aus Strukturen (statische Eigenschaften) Operatoren (dynamische Eigenschaften) Constraints (Korrektheitsbedingungen) 301 2000 19 5 302 2000 18 2 303 2000 22 9 Werte ohne Struktur sinnlos 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 44 Datenmodelle - Struktur Logische Struktur erlaubt Interpretation Operatoren zum Bearbeiten INSERT 305 2000 5 23 Constraints garantieren syntaktische Tag Jahr 301 2000 19 5 302 2000 18 2 303 2000 20 9 und semantische Korrektheit einer Operation Tmax ≥Tmin Konsistenzregeln sind in den Strukturen inhärent und für den Benutzer intuitiv verständlich, müssen aber für das DBMS explizit dargestellt werden! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 45 Datenmodelle - Grundbegriffe Objekt / Objektinstanz (O) O ist die Menge von Objekten/Objektinstanzen o ∈ O Darstellung eines Objekts oder einer Tatsache der realen Welt Objekttyp (OT) Menge von Merkmalsfunktionen oder Attributen mit vorgegebenen Wertbereichen Attribut (A) A ∈ OT ist eine Funktion A:O → dom A mit Definitionsbereich O und Wertbereich W ≔ dom A 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 46 Datenmodelle - Grundbegriffe (2) Wertbereich (W) W ≔ dom(A) Objekttyp Buch(ISBN:char[13], Titel:char[35], Autor:char[50]) Objekt (0-8053-1748-1,Database Systems, Elmasri) Attribut Titel bildet ab auf Zeichenketten in dom(Titel) Wertbereich Menge der Zeichenfolgen mit maximal 35 Zeichen des Alphabets und Leerzeichen Attributwert Database Systems 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 47 Datenmodelle - Grundbegriffe (3) Objektklasse vs. Objekttyp Begriffe werden in verschiedenen Modellen unterschiedlich benutzt ODMG: Typ = abstrakte Schnittstellen-Definition (behavior) Klasse = abstraktes Verhalten plus eine spezifische Realisierung Extent: Menge aller Instanzen einer Klasse Objektidentifikation Oid: vom System zugewiesener, nicht veränderbarer Identifikator Schlüssel: Attribut(-kombination) dessen (deren) Werte eine Objektinstanz eindeutig identifiziert 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 48 Typkonstruktoren Typkonstruktoren Mechanismen zur Erstellung von (komplexen) Objekttypen und zur Beschreibung der Beziehungen von Objekttypen Klassifikation Elementarer Konstruktor im DBS zur Unterscheidung von Objekttyp und Objektinstanz Objekttyp: InformatikProf(SocSec#, Name, Uni) Objektinstanz: (461338899, Garcia-Molina, Stanford) (451335234, Elmasri, UT-Arlington) (567123456, Navathe, GATech) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 49 Typkonstruktoren (2) Aggregation: Bildung eines neuen Objekttyps aus Komponenten Standard Datentypen (int, real, char, …, date, time, array) Andere Objekttypen Tupel sind die einfachsten Aggregate und bestehen aus Standard Datentypen InformatikProf(SocSec#:long, Name:char[30], Uni:char[20]) (461338899,Garcia-Molina ,Stanford) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 50 Typkonstruktoren (3) Rekursive und Kombinierte Anwendung möglich (siehe: Beispiel zu Typkonstruktoren) Durch (rekursive) Anwendung auf heterogene Objekttypen werden komplexe Objekte konstruiert Part-of Beziehung (üblich) Andere Beziehungen mit spezieller Semantik möglich 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 51 Typkonstruktoren (4) Assoziation (auch Mengenaggregation): Bildung eines Objekttyps als Menge von homogenen Objekten Objekttyp Y ist Menge von Objekten x des Typs X Semesterapparat ist Menge von Büchern Instanz von Semesterapparat für D&KE ist {Elmasri-Navathe, Ullman-Widom, Heuer-Saake, Melton-Eisenberg} Merke: Assoziation ist Mengenaggregation als Typkonstruktor (nicht mit Assoziation als Beziehung in UML verwechseln)! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 52 Typkonstruktoren - Beispiel Beispiel (in Anlehnung an Heuer, OO Datenbanken) Aggregation Buch Assoziation String ISBN Titel Autoren Versionen Stichworte Verlag Version Autor Stichwort Auflage Jahr 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 53 Spezialisierung / Generalisierung Spezialisierung als Beziehung zwischen zwei Entity-Typen IS_A Beziehung (limousine IS_A car, cabrio IS_A car) Alle Eigenschaften des Supertypen gelten für den Subtypen Subtypen haben eigene, differenzierende Attribute Generalisierung ist die Ableitung eines Supertypen von den Eigenschaften der Subtypen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 54 Totale und Exklusive Spezialisierung Spezialisierungs- / Generalisierungshierarchien benutzen die IS_A Beziehung (mit möglichen Einschränkungen) Disjunktheitsbedingung Instanzen der Subtypen sind disjunkt Überdeckungsbedingung Alle speziellen Instanzen sind auch Instanzen des allgemeinen Typs 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 55 Totale und Exklusive Spezialisierung (2) Exklusive (oder disjunkte) Spezialisierung Alle Instanzen der Unterklassen befolgen die Disjunktheitsbedingung Partitionierung Alle Instanzen der Unterklassen erfüllen Disjunktheits- und Überdeckungsbedingung Projekte = interne Projekte ⋃ externe Projekte 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 56 Spezialisierung / Generalisierung Generalisierung und Spezialisierung unterscheiden sich in der Insert-Operation Generalisierung: erst Instanz des speziellen Typs, dann Instanz des Supertyps Spezialisierung: erst Instanz des allgemeinen Typs, dann Instanz des speziellen Typs Unterschied wichtig, wenn IS_A Beziehung als Integritätsbedingung benutzt wird (spezielles Objekt darf nicht ohne Instanz des generellen Objekts existieren → referentielle Integrität) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 57 Gespeicherte vs. Abgeleitete Attribute Attribute wurden als Abbildungsfunktionen definiert A ∈ OT ist eine Funktion A:O → dom(A) Funktion kann eine Schreiboperation sein Gespeicherte Attributswerte Funktion kann eine Berechnungsfunktion sein Abgeleitete Attributswerte Beispiel: Alter = Datumheute - Geburtsdatum 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 58 Abgeleitete Typen Abgeleitete Typen werden durch Prädikatsdefinitionen gebildet Teenager ist eine Spezialisierung von Person mit dem Prädikat Alter < 20 AND Alter > 12 Abgeleitete Typen werden auch als Sichtdefinitionen bezeichnet 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 59 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 61 Entity-Relationship-Modell Chen, P.P.; “The Entity-Relationship Model: Toward a Unified View of Data”, ACM TODS, 1,1, Jan. 1976. Erweiterungen zum ERM in Elmasri/Navathe ERM ist ein graphischer Formalismus zur Datenmodellierung ERM in Originalversion erfüllt kaum die Bedingungen eines Datenmodells nur Strukturbeschreibung keine Operatoren nur minimale Mechanismen zur Beschreibung von Constraints 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 62 Konstrukte des ERM: Entities Entity identifizierbare Objekte der modellierten Welt Entity-Type (auch Entity-Set genannt) gemeinsamer Typ von Objekten mit gleichen Merkmalen (gebildet durch Klassifikation) Mitarbeiter Deklaration E= attr E ,K attr E = A1 , A2 , …, Am jeweils mit dom Ai K ist eine Untermenge von attr(E) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 63 Konstrukte des ERM: Attribute Attribut(e) Eigenschaft(en) der modellierten Entities (eine Funktion, die Entities auf Domains abbildet) Farbe PKW Schlüsselattribut(e) Kennzeichen Menge von Attributen, die ein Entity eindeutig identifiziert Minimalitätsbedingung (minimality) Eindeutigkeitsbedingung (uniqueness) Dargestellt durch Unterstreichen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 64 Konstrukte des ERM: Attribute Abgeleitete Attribute können durch eine Funktion von anderen Attributen abgeleitet werden Alter = DatumHeute – Geburtsdatum Darstellung mit gestrichelten Linien Alter Geburtsdatum Angestellter 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 65 Konstrukte des ERM: Beziehungen Relationship (Beziehung) Beziehung zwischen zwei oder mehr Entities, in einem bestimmten Rollenverhältnis Relationship-set Menge von Relationships (Beziehungen) gleichen Typs Datum Ort Frau Ehe Mann 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 66 Konstrukte des ERM: Beziehungen (2) Im Sprachgebrauch wird allgemein von Entity und Relationship als Typ gesprochen (wenn unzweideutig) Beziehungen dürfen eigene Attribute besitzen R = ({ent(R)}, attr(R)) Datum Ort Frau Ehe Mann 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 67 Konstrukte des ERM: Beziehungen (3) Grad einer Beziehung Anzahl der Entity-Typen, die an einer Beziehung teilnehmen Binäre Beziehungen sind häufigster Fall spielt = (Spieler, Verein) Spieler N spielt 1 Verein 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 68 Konstrukte des ERM: Beziehungen (4) Höhergradige Beziehungen Rekursive Beziehungen sind möglich (z.B. ternäre) N Person Kunde Mutter_von 1 Beziehung nicht eindeutig besitzt Tochter N Person Bank Konto Mutter_von 1 Mutter Explizite Rollennamen erforderlich 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 69 Ternäre Beziehung Professor empfiehlt Buch Empfiehlt Vorlesung Professor Vorlesung Buch Heuer DB1 1-234 Heuer DB2 9-876 Saake DB1 9-876 Saake DB2 9-876 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 70 Abbildung Ternäre → Binäre Beziehungen liest Professor empfiehlt Informationsverlust! Vorlesung Liest Prof. Vorl. Heuer DB1 Heuer Buch benutzt Benutzt Vorl. Buch Empfiehlt Prof. DB2 DB1 1-234 Heuer 1-234 Saake DB1 DB2 9-876 Heuer 9-876 Saake DB2 DB1 9-876 Saake 9-876 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 71 Buch Konstrukte des ERM: Weak Entities Schwache Entitäten werden durch eine funktionale Beziehung identifiziert Existenz der schwachen Entität hängt von Existenz der bestimmenden Entität ab Partieller Schlüssel identifiziert schwache Entität Exemplar Ex-Nr Datum Ausleiher von Buch ISBN 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 72 Titel Constraints im ERM Strukturelle Integritätsbedingungen können durch Kardinalität und Komplexität der Beziehungen ausgedrückt werden Sprudel-Kiste 1 (0,4) enthält N (0,1) Sprudel-Flasche Anzahl von Entities in einer Beziehung Kardinalität (hier z. Bsp. 1 oder N) Anzahl der Beziehungen, in denen ein Entity teilnimmt Komplexität (hier z. Bsp. (0,4) oder (0,1)) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 73 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 78 Das Relationale Modell Das relationale Modell geht auf klassische Arbeit von E.F. Codd zurück Codd, E.F.; “A Relational Model for Large Shared Data Banks”, Comm. ACM, Vol. 13, No. 6, June 1970, pp377-387 Darstellung der zu modellierenden Welt mit einem einzigen Konstrukt: Relationen Eine Relation ist eine Teilmenge des kartesischen Produkts von Wertbereichen (Domains) 𝑅 ⊆ 𝐷1 × 𝐷2 × … × 𝐷𝑘 D1 ×D2 × … ×Dk ist die Menge aller Tupel (v1 ,v2 , …, vk ) mit Grad k bei denen v1 ein Wert in D1 ist, v2 ein Wert in D2 , etc. 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 79 Relationen Bei Datenbanken sprechen wir grundsätzlich von endlichen Relationen Relationen können auch als Tabellen angesehen werden Der Tabellenkopf gibt die Struktur an (Zuordnung von Attributen zu Spalten) Zeilen (auch Tupel genannt) sind die Ausprägungen Lieferanten: LNR Lname Lort 12345 XYZ.com Darmstadt 98765 Meier&Co Frankfurt 54321 Apple Cupertino 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 80 Relationenmodell - Übersicht Operatoren nehmen Relationen als Input und erzeugen Relationen (geschlossen) Operatoren können in drei Formen ausgedrückt werden: Relationenalgebra (relational Algebra) Relationen-Tupelkalkül (tuple relational calculus) Relationen-Wertbereichkalkül (domain relational calculus) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 81 Relationenmodell - Übersicht (2) Relationenalgebra RelationenTupelkalkül RelationenWertbereichkalkül Alle drei sind in der Aussagekraft gleichwertig Führen jedoch zu unterschiedlichen Sprachen Entwurfstheorie erstellt Richtlinien, besagt was „gut strukturierte“ Relationen sind Relationen, die unter den Operationen der Relationenalgebra bzw. des Relationenkalküls sicher / geschlossen sind 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 82 Relationenalgebra (RA) Attributnamen können den Spalten zugeordnet werden (müssen aber nicht) Ordnung innerhalb eines Tupels bedeutungslos, wenn Spalten benannt sind Ordnung innerhalb eines Tupels wichtig, wenn Spalten unbenannt sind 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 83 Relationenalgebra (RA) (2) 5 Basisoperatoren genügen, um die Algebra zu definieren und andere Operatoren damit auszudrücken Vereinigung (union) 𝑅∪𝑆 Mengendifferenz (set Difference) 𝑅−𝑆 Kartesisches Produkt (cartesian product) 𝑅×𝑆 Projektion (projection) 𝜋𝑘 (𝑅) Selektion (selection) 𝜎𝐹 (𝑅) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 84 Vereinigung (union) R: S: a b c b g a d a f d a f c b d Vereinigung: R ∪ S die Menge aller Tupel, die in R oder S oder in beiden Relationen enthalten sind (Relationen müssen gleichen Grad haben) R ∪ S: a b c d a f c b d b g a 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 85 Mengendifferenz (set difference) R: S: a b c b g a d a f d a f c b d Mengendifferenz: R – S Menge der Tupel, die in R aber nicht in S R - S: enthalten sind (Relationen müssen a b c gleichen Grad haben) c b d 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 86 Kartesisches Produkt (cartesian product) Seien R und S Relationen mit Grad k1 und k2 Grad ist die Anzahl der Attribute R: S: a b c b g a d a f d a f c b d 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 87 Kartesisches Produkt (cartesian product) Kartesisches Produkt: R × S ist die Menge aller (k1 + k2 )-gradigen Tupel erste k1 Elemente sind ein Tupel in R letzte k2 Elemente sind ein Tupel aus S R × S: a b c b g a a b c d a f d a f b g a d a f d a f c b d b g a c b d d a f 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 88 Projektion (projection) Sei R eine Relation mit Grad k. Dann ist 𝜋𝑖1, 𝑖2, … , 𝑖𝑚 (𝑅) die Projektion von R auf die Komponenten 𝑖1 , 𝑖2 , … , 𝑖𝑚 (𝑚 < 𝑘). Die entstehende Relation ist vom Grad 𝑚 Beispiel: R: a b c d a f c b d a a c 𝝅𝒊𝟏 ,𝒊𝟑 (𝑹): a c d f c d Abbildung einzelner Spalten in neue Relation (hier zwei Spalten) Ergebnis ist eine Menge Eliminierung von Duplikaten in neuer Relation 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 89 Selektion (selection) Sei 𝜎𝐹 (𝑅) eine Selektion auf R und F eine Formel Die Formel F besteht aus Operanden (Konstante oder Attribute einer Relation) Arithmetische Vergleichsoperatoren (=, <, >, ≤, ≥) Logische Operatoren (AND, OR, NOT) Sei F: B=b R: A B C a b c c b d d a a a 𝝈𝐹 𝑅 : A B C f a b c c c b d Abbildung einzelner Tupel, für die F wahr ist, in neue Relation 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 90 Weitere Relationale Operatoren Die eben vorgestellten fünf Basisoperatoren genügen, um alle anderen Operatoren der Relationenalgebra abzuleiten Relationenalgebra ist damit vollständig ausdrückbar Aus praktischen Gründen werden im Folgendem zusätzliche Operatoren definiert Um praktisch verwendbar zu sein, müssen Operatoren für Insert, Delete und Update definiert werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 91 Schnittmenge (intersection) Gegeben seien die Relationen R und S R: S: a b c b g a d a f d a f c b d Schnittmenge: R ∩ S = R - (R - S) Menge aller Tupel, die in R und in S enthalten sind R ∩ S: d 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 92 a f Quotient (division) Gegeben seien die Relationen R und S R ÷ S: R: A B C D a b c a b b C D d c d e f e f c e f A B e d c d a b e d e f e d a b d e ((𝜋 𝑅−𝑆 Quotient: R ÷ S = 𝜋 𝑅−𝑆 𝑅 −𝜋 𝑅−𝑆 S: 𝑅 × 𝑆) − 𝑅) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 93 Join Wichtigste nicht-elementare Operation (Verbund) Allgemeine Form des Join ist der 𝜃-Join (Theta-Join) Dabei ist 𝜃 ein arithmetischer Vergleichsoperator (=, <, >, ≤, ≥) Resultierende Relation enthält alle Tupel der Relation, für die i θ j gilt (i und j sind verschiedene Attributnamen) Handelt es sich bei θ um den Gleichheitsoperator (=), so spricht man von einem Equijoin 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 94 Theta-Join R: A B C S: D E 1 2 3 3 1 4 5 6 6 2 5 7 8 Theta-Join: R ⋈ S = 𝜎𝑖 𝜃 𝑗 (𝑅 × 𝑆) 𝑖𝜃𝑗 Hier: 𝑖 𝜃 𝑗 = 𝐵 < 𝐷 R ⋈ S: 𝐵<𝐷 A B C D E 1 2 3 3 1 1 2 3 6 2 4 5 6 6 2 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 95 Equijoin R: A B S: C D a b b c d b b d b b a d c a Equijoin: R ⋈ S = 𝜎𝑖=𝑗 (𝑅 × 𝑆) 𝑖=𝑗 R⋈S: 𝑨=𝑪 A B C D a b a d b b b c b b b d Theta-Join wobei θ der Vergleichsoperator (=) ist 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 96 Natural Join R: A B C S: B C D R⋈S: A B C D a b c b c d a b c d d b c b c e a b c e b b f a d b d b c d c a d d b c e c a d b Natural Join: R⋈S = 𝜎𝑖=𝑖 (𝑅 × 𝑆) Selektiere Menge von Tupeln aus dem kartesischen Produkt mit gleichen Attributen für gleiche Attributnamen aus den Relationen Beachte Notation des Natural Join Operators Vergleichsoperator wird weggelassen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 97 SPJ-Queries (Select-Project-Join) (Natural) Join ist äußerst wichtig Relationen, die aus entwurfstheoretischen Gründen zerlegt wurden, werden während der Abfrage wieder kombiniert Meistbenutzte Operatoren der Relationenalgebra sind Select, Project und Join SPJ-Queries enthalten nur Select, Project und Join Operationen Relationale DBMS optimieren hauptsächlich SPJ-Queries 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 98 Weitere Join Operatoren Weitere Join-Operatoren für „inkompatible“ Tabellen „inkompatible“ Tabellen sind z. Bsp. Tabellen aus verschiedenen Datenbanken Fehlende Werte werden mit NULL-Marken aufgefüllt (outer-join, left outer-join, right outer-join, natural full outer-join, union join) Semijoin: R ⋉ S = 𝜋𝑅 (R ⋈ S) = R ⋈ 𝜋𝑅∩𝑆 𝑆 (nächste Folien) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 99 Semijoin Gegeben seien die Relationen R und S B C D E 𝝅𝑹∩𝑺 𝑺 : B C c b c d e b c b c b c e f a d b b f a d b g c a d R: A B C a b d S: Semijoin: 𝑅 ⋉ 𝑆 = 𝜋𝑅 𝑅 ⋈ 𝑆 = 𝑅 ⋈ 𝜋𝑅∩𝑆 (𝑆) 𝑹 ⋉ 𝑺: Besonders für Optimierung von Queries in verteilten Datenbanken geeignet 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 100 A B C a b c d b c c a d Beispiel: Relationenalgebra PKW: Hersteller Modell Werk VW Polo Wolfsburg VW Golf Puebla VW Golf Wolfsburg VW Käfer Puebla Ford Mondeo Köln Ford Focus Nogales STORT: Werk Land Wolfsburg BRD Puebla Mexico Köln BRD Nogales Mexico 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 102 Beispiel: Relationenalgebra (2) Finde alle Werke, in denen VW Polo oder VW Käfer oder Ford Focus hergestellt werden S = 𝜋𝑊𝑒𝑟𝑘 𝜎𝐹 𝑃𝐾𝑊 Mit F: Modell = „Käfer“ S: Werk Wolfsburg OR Modell = „Polo“ Puebla OR Modell = „Focus“ Nogales 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 103 Beispiel: Relationenalgebra (3) Finde alle Hersteller und Modelle, die in der BRD hergestellt werden Y = 𝜋𝐻𝑒𝑟𝑠𝑡𝑒𝑙𝑙𝑒𝑟, 𝑀𝑜𝑑𝑒𝑙𝑙 (𝜎𝐿𝑎𝑛𝑑="𝐵𝑅𝐷" (𝑃𝐾𝑊 ⋈ 𝑆𝑇𝑂𝑅𝑇)) 𝑆 S: Hersteller Modell Werk Land VW Polo Wolfsburg BRD VW Golf Puebla VW Golf Wolfsburg BRD VW Käfer Puebla Ford Mondeo Köln BRD Ford Focus Mexico Nogales Mexico Mexico 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 104 Beispiel: Relationenalgebra (3.1) Finde alle Hersteller und Modelle, die in der BRD hergestellt werden Y = 𝜋𝐻𝑒𝑟𝑠𝑡𝑒𝑙𝑙𝑒𝑟, 𝑀𝑜𝑑𝑒𝑙𝑙 (𝜎𝐿𝑎𝑛𝑑="𝐵𝑅𝐷" 𝑃𝐾𝑊 ⋈ 𝑆𝑇𝑂𝑅𝑇 ) 𝑇 T: Hersteller Modell Werk Land Y: Hersteller Modell VW Polo Wolfsburg BRD VW Polo VW Golf Wolfsburg BRD VW Golf Ford Mondeo Köln Ford Mondeo BRD 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 105 Beispiel Relationenalgebra (4) Bessere Strategie (wird vom Optimierer erzeugt) 𝑆 Y = 𝜋𝐻𝑒𝑟𝑠𝑡𝑒𝑙𝑙𝑒𝑟, 𝑀𝑜𝑑𝑒𝑙𝑙 (𝑃𝐾𝑊 ⋈ 𝜎𝐿𝑎𝑛𝑑="𝐵𝑅𝐷" 𝑆𝑇𝑂𝑅𝑇 ) 𝑇 S: Werk Land Wolfsburg BRD Köln BRD T: Hersteller Modell Werk Land Y: Hersteller Modell VW Polo Wolfsburg BRD VW Polo VW Golf Wolfsburg BRD VW Golf Ford Mondeo Köln Ford Mondeo BRD 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 106 Relationentupelkalkül (RTK) Allgemeiner Ausdruck im RTK hat die Form 𝑡 𝜓(𝑡)} t ist eine Tupel-Variable, die ein Tupel fester Länge darstellt 𝜓 ist eine Formel, die aus folgenden Elementen besteht: Relation R(s) wobei s eine stellvertretende Tupel-Variable für ein Tupel in R ist s i θ u j wobei s und u Tupel-Variablen sind und θ ein arithmetischer Vergleichsoperator s i θ a wobei s eine Tupel-Variable ist, θ ein arithmetischer Vergleichsoperator und a eine Konstante (Elemente einer Formel können durch logische Operatoren verknüpft werden) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 107 Relationentupelkalkül (RTK) (2) RTK Ausdrücke sind auf endliche Relationen beschränkt Relationentupelkalkül und Relationenalgebra sind äquivalent Operatoren der Relationenalgebra können daher als Ausdrücke des Relationentupelkalküls geschrieben werden Relationentupelkalkül beschreibt nur die Eigenschaften, die die Tupel der Ergebnismenge erfüllen müssen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 108 Relationentupelkalkül (RTK) (3) Vereinigung (union): 𝑅 ∪ 𝑆 = 𝑡 𝑅 𝑡 ∨ 𝑆(𝑡) Mengendifferenz (set difference): 𝑅 − 𝑆 = 𝑡 𝑅 𝑡 ∧ ¬ 𝑆 𝑡 Projektion (projection): 𝑡(𝑘) ∃𝑢 𝑅 (𝑅 𝑢 ∧ 𝑡 1 = 𝑢 𝑖1 ∧ … ∧ 𝑡 𝑘 = 𝑢[𝑖𝑘 ] Selektion (selection): 𝑡(𝑟) 𝑅 𝑡 ∧ 𝐹 ′ wobei 𝐹′ die Formel F ist, bei der jeder i-te Operand durch das i-te Element im Tupel t ersetzt wird 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 109 Relationentupelkalkül (RTK) (4) Kartesisches Produkt (cartesian product): 𝑅 × 𝑆 = {𝑡(𝑟 + 𝑠)│(∃𝑢(𝑅)) (∃𝑣(𝑆)) (𝑅(𝑢) ∧ 𝑆(𝑣) ∧ 𝑡[1] = 𝑢 1 ∧ … ∧ 𝑡[𝑟] = 𝑢[𝑟] ∧ 𝑡[𝑟 + 1] = 𝑣[1] ∧ 𝑡[𝑟 + 𝑠] = 𝑣[𝑠]) } Menge aller Tupel t mit Grad r+s, sodass eine Tupel Variable u in R und eine Tupel Variable v in S existiert Für jedes Tupel in R und S gilt, dass das erste Element im Ergebnistupel mit dem ersten Element von u gleich ist 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 110 Tupel-Variable Stellt ein Tupel in einer Formel dar Freie Tupel-Variable entsprechen globalen Variablen in einer Programmiersprache (außerhalb gegenwärtiger Prozedur definiert) Gebundene Tupel-Variable entsprechen lokalen Variablen (innerhalb gegenwärtiger Prozedur definiert und kann nicht von außen referenziert werden) Jedes Atom ist eine Formel Tupel-Variable(n) in diesen Atomen sind freie Variablen Tupel-Variablen werden durch Quantoren gebunden (Allquantor ∀, Existenzquantor ∃) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 111 Relationenwertbereichkalkül (RWK) RWK 1977 von Lacroix und Pirotte eingeführt („Domain-Oriented Relational Languages“, Proc. 3. VLDB, Tokyo, Okt. 1977) Atome werden analog zu RTK definiert, sind jedoch über Wertbereich-Variable(n) anstatt Tupel-Variable(n) definiert Wertbereich-Variable reicht über die Werte in einem Wertbereich und bestimmt eine Komponente in einem Tupel 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 112 Relationenwertbereichkalkül (RWK) (2) Atome einer Formel im RWK sind R(x1 x2 …xk ) wobei R eine k-gradige Relation ist und xi eine Wertbereich-Variable oder Konstante x θ y ist ein Verhältnis zwischen zwei Wertbereichs-Variablen oder einer Wertbereichs-Variablen und einer Konstanten und θ ist ein arithmetischer Vergleichsoperator Existenz- und Allquantor werden genau wie im RTK verwendet Analog zum RTK definiert man Wohlgeformte Formeln der Form 𝑥1 𝑥2 … 𝑥𝑘 𝜓 𝑥1 𝑥2 … 𝑥 Einschränkung auf sichere Formeln 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 113 𝑘 RA, RTK & RWK vs. Query Sprachen Äquivalenz kann bewiesen werden (siehe Ullman oder Vossen) Query Sprachen, die auf den unterschiedlichen Ausprägungen aufbauen haben unterschiedliche Eigenschaften Quel = reine RTK-basierte QL (UC Berkeley, Ingres) SQL = Mischung von RA und RTK (IBM) QBE = reine RWK-basierte QL (Query by Example, Form-basierte QL) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 114 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 115 Entwurfstheorie Wird am relationalen Modell erläutert, weil sie hier am besten definiert ist und das Relationenmodell weit verbreitet ist Ähnliche Prinzipien gelten auch bei Abbildung auf andere Modelle Zwei essentielle Schritte: Abbildung von ERM (oder UML Klassendiagramm) auf Relationen Verbesserung der Relationenschemata durch Normalisierung Ein Relationenschema ist eine Menge von Relationen-definitionen (Tabellen) und Integritätsbedingungen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 116 Abbildung ERM Entity-Set → Relationen Jedes Entity-Set (Typ) der Form E = (attr(E),K) stellt eine Relation dar 𝑅1 ∶ 𝑎1 , 𝑎2 , … , 𝑎𝑛 wobei Schlüsselattribute K in 𝑎1 , 𝑎2 , … , 𝑎𝑛 enthalten sind Sei B ein schwaches Entity-Set mit Attributen (𝑏1 , 𝑏2 , … , 𝑏𝑛 ), das durch Entities des Typs A mit Schlüssel 𝑎1 , 𝑎2 , … , 𝑎𝑘 eindeutig identifiziert wird bildet eine Relation 𝑆 ∶ 𝑎1 , 𝑎2 , … , 𝑎𝑘 , 𝑏1 , 𝑏2 , … , 𝑏𝑛 deren Schlüssel aus den Schlüsselattributen 𝑎1 , … , 𝑎𝑘 ∪ 𝑏𝑖 besteht 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 117 Schlüssel - Eigenschaften Schlüsseleindeutigkeit Genau ein Tupel wird von einem Wert von k identifiziert (Injektivität) Minimaler Schlüssel Seien 𝑘1 und 𝑘2 Mengen von Attributen die ein Entity identifizieren können, dann bezeichnet man diese als Superschlüssel Ein Schlüsselkandidat ist ein Superschlüssel für den kein 𝑘1 ⊂ 𝑘2 existiert. Es existiert also keine Teilmenge von 𝑘2 , die Schlüssel ist und die SchlüsselEindeutigkeits-Eigenschaft wahrt. Da 𝑘2 kann nicht weiter verkleinert werden kann, ist 𝑘2 minimal. 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 118 Schlüssel (nach Date) Eine Attributmenge k einer Relation R ist ein Schlüsselkandidat ⟺ k wahrt die Eigenschaft der Schlüsseleindeutigkeit k ist minimal (nach Vossen) Schlüssel sind Attribute, deren Wert ein Entity identifiziert Schlüssel sind minimal Eventuelle Probleme bei Normalisierung, falls Schlüssel nicht minimal ist 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 119 Abbildung ERM Beziehung → Relationen Beziehungen im ERM können eigene Relationen bilden Beziehungen der Form 𝑅 = 𝑒𝑛𝑡 𝑅 , 𝑎𝑡𝑡𝑟 𝑅 zwischen Entity-Sets der Form 𝐸𝑖 = 𝑎𝑡𝑡𝑟 𝐸𝑖 , 𝐾𝑖 bilden die Relation S mit folgender Schemadefinition S: 𝑛 𝑘𝑖 ∪ 𝑎1 , 𝑎2 , … , 𝑎𝑘 𝑖=1 Primärschlüssel der beteiligten Entity-Sets sind immer in der Abbildung einer ERM-Beziehung enthalten Beziehungseigene Attribute (falls vorhanden) in S enthalten Namenskonflikte werden durch Umbenennung gelöst 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 120 Abbildung: Schlüssel und Spezialfälle Schlüssel bei Relationen, die aus binären Beziehungen abgeleitet werden m:n Beziehung - Schlüssel ist 𝑘1 ∪ 𝑘2, da nur die Festlegung aller Attribute in 𝑘1 ∪ 𝑘2 ein Tupel in der Beziehungsrelation identifiziert 1:n Beziehung - Schlüssel ist 𝑘2 , da zu jedem Wert von 𝑘2 nur ein Wert von 𝑘1 zugeordnet ist 1:1 Beziehung - 𝑘1 oder 𝑘2 kann als Schlüssel gewählt werden 1:1 und 1:n Beziehung wird durch Fremdschlüssel abgebildet Beziehungseigene Attribute existieren nicht Kardinalität oder Komplexität in der Form 0..1 oder 0..N 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 121 Beispiel: Abbildung ERM → Relationen city S# Supplier (S) sname P# N status SP qty S: (s#, sname, city, status) P: (p#, pname, weight, color, city) M city Product (P) pname SP: (s#, p#, qty) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 122 weight color Beispiel: (häufiger) Spezialfall author ISBN Book (B) title editor N BP status 1 Publisher (P) pname B: (ISBN, titel, author, status, pname) P: (pname, address, editor) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 123 address Integritätsbedingungen Sind Modell-inhärent oder extern (durch die Anwendung bedingt) Modell-inhärente Integritätsbedingungen im Relationenmodell Schlüsseleindeutigkeit (key uniqueness), intrarelationale Abhängigkeit Funktionale Abhängigkeit (functional dependency), intrarelationale Abhängigkeit, Grundlage für Normalisierung Referentielle Integrität (referential integrity), interrelationale Abhängigkeit Externe Integritätsbedingungen (z. Bsp. IS_A Beziehung, welche schwerer im Relationenmodell abzubilden ist) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 124 Normalisierung … Wann eigentlich? Auftrag- und Miniwelt Definition Modellierung Abbildung auf Relationen Normalisierung Test und Betrieb Datenbank Anwendungsentwicklung 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 125 Datenbankschema Erstellung Motivation für Normalisierung sname saddress item price Abbildung auf Relationen Suppliers (S) Suppliers SNAME SADDRESS ITEM PRICE … … … … 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 127 Datenbankschema Erstellung Motivation für Normalisierung – Redundanz vermeiden Für jeden bestellten Gegenstand wird die Lieferantenadresse gespeichert (Redundanzen treten auf!) Änderung der Adresse schwer Inkonsistenz wahrscheinlich Speicherverschwendung Lieferanten und Bestellungen Suppliers: SNAME SADDRESS ITEM PRICE ABC Frankfurterstr. 1 123 12 € XYZ Wiesbadenerstr. 1 123 14 € ABC Frankfurterstr. 1 567 579 € ABC Frankfurterstr. 1 793 33 € 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 128 Überspezifikation Wegen Überspezifikation lassen sich gewisse Informationen nicht mehr in der Datenbank speichern z. B. kann man keine zwei Adressen für Lieferanten in der Datenbank speichern, da SNAME die SADRESSE funktional bestimmt Suppliers: SNAME SADDRESS ITEM PRICE ABC Frankfurterstr. 1 123 12 € XYZ Wiesbadenerstr. 1 123 14 € ABC Frankfurterstr. 1 567 579 € ABC Frankfurterstr. 1 793 33 € 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 129 Motivation für Normalisierung Update Anomalien Update Anomalie (update anomaly) Beim Update der Anschrift müssen alle Tupel, in denen die Anschrift vorkommt, aktualisiert werden Suppliers: SNAME SADDRESS ITEM PRICE ABC Frankfurterstr. 1 123 12 € XYZ Wiesbadenerstr. 1 123 14 € ABC Frankfurterstr. 1 567 579 € ABC Frankfurterstr. 1 793 33 € ABC | Frankfurterstr. 1 ABC | Wiesbadenerstr. 9 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 130 Motivation für Normalisierung Einfüge Anomalien Einfüge Anomalie (insertion anomaly): SNAME und ITEM bilden den Schlüssel Kann Lieferanten nur dann speichern, wenn Artikel bestellt wurde (keine NULL-wertigen Schlüssel!) Suppliers: SNAME SADDRESS ITEM PRICE ABC Frankfurterstr. 1 123 12 € XYZ Wiesbadenerstr. 1 123 14 € ABC Frankfurterstr. 1 567 579 € ABC Frankfurterstr. 1 793 33 € DEF Münchnerstr. 1 – – – – 931 42 € 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 131 Motivation für Normalisierung – Lösch-Anomalien Lösch-Anomalie (deletion anomaly): Beim Löschen der letzten Bestellung bei einem Lieferanten verlieren wir seine Anschrift SNAME SADDRESS ITEM PRICE ABC Frankfurterstr. 1 123 12 € XYZ Wiesbadenerstr. 1 123 14 € ABC Frankfurterstr. 1 579 € ABC Frankfurterstr. 1 793 567 33 € 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 132 Motivation für Normalisierung Lösung Schema mit schlechter Qualität Redundanz Normalisierung Anomalien Suppliers SNAME SADDRESS Orders ITEM PRICE Relationen werden aufgeteilt ABER WIE? 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 133 ? Funktionale Abhängigkeit (FD) Gegeben sei die Relation R mit Attributen A und B B ist von A funktional abhängig (R.A → R.B) ⟺ für jeden Wert von A existiert genau ein Wert von B Suppliers.SNAME → Suppliers.SADDRESS Suppliers: Volle funktionale Abhängigkeit SNAME SADDRESS ABC Frankfurterstr. 1 XYZ Wiesbadenerstr. 1 DEF Rheinstr. 1 Abhängige Attribut B ist von der Attributmenge A abhängig aber nicht von einer nicht-trivialen Untermenge 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 134 Semantik in FDs Funktionale Abhängigkeiten definieren die Semantik in der Datenbank Normalisierung ist abhängig davon Eine andere Interpretation führt zu anderen Schemata 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 135 Beispiel: Semantik in FDs Konto(konto#, filiale, kunde) Konto.konto# Konto.konto#, Konto.filiale Annahme 1 → Konto.kunde → Konto.kunde Erste FD impliziert eine globale Kontonummer oder dass die Bank nur aus einer Niederlassung besteht (oder dass der modellierte Weltausschnitt nur aus einer Filiale besteht) Annahme 2 Zweite FD impliziert, dass Kontonummern lokal für eine Filiale vergeben werden Unter Annahme 1 ist die zweite FD keine volle FD 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 136 Funktionale Abhängigkeiten (FDs) Funktionale Abhängigkeiten Beeinflussen das relationale Schema über Normalisierungsprozess Müssen in ihrer Gesamtheit betrachtet werden (inklusive solcher, die nicht explizit aufgelistet wurden) Gegeben sei die Menge von Funktionalen Abhängigkeiten {A → B, A → C, B → H, CG → H, CG → I} Funktionale Abhängigkeit A → H implizit gegeben, da A → B und B → H (Transitivität) Die transitive Hülle (transitive closure) F+ ist die Menge aller FDs, die von der bekannten Menge von FDs impliziert werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 137 Armstrongs Axiome für FDs Seien W,X,Y und Z Attributmengen Armstrongs Axiome erlauben Ermittlung der Hülle Reflexivität Wenn Y Teilmenge von X ist, dann gilt X → Y Erweiterung Wenn X → Y, dann gilt XZ → YZ Transitivität Wenn X → Y und Y → Z, dann gilt X → Z 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 138 Armstrongs Axiome für FDs (2) Zusätzliche Regeln Additivität (union rule) Wenn X → Y und X → Z, dann gilt X → YZ Projektivität (decomposition rule) Wenn X → YZ, dann gilt X → Z und X → Y Pseudotransitivität (pseudotransitivity rule) Wenn X → Y und WY → Z, dann gilt XW → Z 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 139 Beispiel: Armstrongs Axiome Gegeben sei die Relation R: (A, B, C, G, H, I) und die Menge von FDs F = {A → B, A → C, CG → H, CG → I, B → H} Durch Anwendung der Armstrongschen Axiome und den davon abgeleiteten Regeln erhält man weitere FDs A → H durch Transitivität von A → B und B → H CG → HI durch Additivität von CG → H und CG → I AG → I durch Erweiterung von A → C und durch Transitivität Algorithmus zur Berechnung der Hülle von FDs Bernstein, TODS 1,4,1976 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 140 Beispiel: Normalisierung city S# Supplier (S) sname status P# N SP M qty S: (s#, sname, city, status) P: (p#, pname, weight, color, city) city Product (P) pname weight SP: (s#, p#, qty) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 141 color Beispiel: Normalisierung (2) city S# Supplier (S) sname status P# N SP M qty city Product (P) pname color weight Annahmen: sname muss nicht eindeutig sein s# → {sname, status, s.city} Teile werden nur in einer Farbe p# → {pname, color, weight, p.city} hergestellt und an einem Ort city → status gelagert 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 142 Normalformen - Übersicht nicht normalisierte Relationen 1 NF 2 NF BCNF 3 NF 4 NF 5 NF 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 144 Normalformen Bezeichnung: 1NF, 2NF, 3NF, BCNF (3.5NF), 4NF, PJNF (5NF) historisch, deutet aber auch strengere Bedingungen an Caveat Höhere Normalform bedeutet Vermeidung von Anomalien, jedoch mehr Aufwand Verzicht auf höhere Normalform aus Gründen der Performanz möglich 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 146 1NF Eine Relation ist in 1NF, wenn alle Attributwerte atomar sind Wichtig hierbei, wie man die Attribute, d.h. die darunterliegenden Wertbereiche interpretiert Buch(ISBN, Titel, Autor) (0070447527, Database System Concepts, {Korth, Silberschatz}) Nicht in 1NF, da Autor als mengenwertiges Attribut interpretiert wird (0070447527, Database System Concepts, Korth & Silberschatz) In 1NF, da Autor als unteilbare Zeichenkette interpretiert wird 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 147 2NF Eine Relation ist in 2NF, wenn sie in 1NF ist und alle Nichtschlüsselattribute vollständig vom Schlüsselkandidaten abhängen F: (s#, sname, status, city, p#, qty) ist in 1NF Aus der Menge der FDs ergibt sich folgendes Abhängigkeitsdiagramm qty S# P# Welche Anomalien tauchen hier auf? 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 148 sname status city 2NF F: (s#, sname, status, city, p#, qty) muss aufgeteilt werden G: (s#, sname, status, city) H: (s#, p#, qty) sname S# status s#, p# city 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 149 qty 3NF Eine Relation ist in 3NF, wenn alle Nichtschlüsselattribute nicht transitiv vom Schlüsselkandidaten abhängen Transitive Abhängigkeit führt zu neuen Anomalien Obwohl status von city abhängig ist (stadtspezifischer Status), muss Lieferant gespeichert werden, bevor Status einer Stadt gespeichert werden kann Aufbrechen von G: (s#, sname, status, city) in I: (s#, sname, city) J: (city, status) S# status city 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 150 Normalisierung und Semantik Normalisierung hängt von der Semantik der Daten ab Semantik wird über die FDs ausgedrückt Andere Interpretation führt zu anderen Schemata Beispiel: Status wird nicht als lokal/nicht-lokal sondern als Zuverlässigkeit eines Lieferanten interpretiert. Dadurch wird die FD city → status sinnlos und die Relation G: (s#, sname, status, city) wäre in 3NF 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 151 Boyce-Codd Normalform (BCNF) Eine Relation ist in BCNF, wenn jeder Determinant ein Schlüsselkandidat ist Ein Determinant ist eine Attributmenge, von der irgendein anderes Attribut vollständig abhängig ist Verschärfung der 3NF für Relationen mit mehreren zusammengesetzten Schlüsselkandidaten mit gemeinsamen Attributen „Each field must represent a fact about the key, the whole key, and nothing but the key“ (Bill Kent, HP) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 152 Beispiel: BCNF Erweitern von city in J zu J: (zip, city, street, status) J ist in 3 NF aber nicht in BCNF Schlüsselkandidaten: {city, street} und {zip, street} 3 NF erlaubt Abhängigkeiten zwischen Attributen der Schlüsselkandidaten! Zu beachten ist zip ↔ city, street Änderung der Semantik 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 153 Beispiel: BCNF (2) FDs street, zip → status street, city → status street, city → zip zip → city Aufbrechen von J (zip, city, street, status) in W (zip, street, status), Z (zip, city) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 154 Projektionskriterien Gegeben sei die Relation G: (s#, sname, city, status) Aufbrechen von G auf 2 unterschiedliche Arten I, J oder P, Q Beide Ansätze gültig unter BCNF. Welcher ist besser? I und J können unabhängig voneinander verändert werden, P und Q erfordern gleichzeitiges Ändern von P.city und Q.status I und J ist vorzuziehen city → status ist ein interrelationales Constraint geworden FDs: I: (s#, sname, city) P:(s#, sname, city) J: (city, status) Q: (s#, status) s# → sname s# → city sname → city city → status 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 155 4NF Es gibt Relationen, die in BCNF sind, aber trotzdem noch unnötige Redundanzen aufweisen STARS: Name Street City Title C. Fisher 123 Maple Str. Hollywood StarWars C. Fisher 5 Locust ln. Malibu C. Fisher 123 Maple Str. Hollywood Empire Strikes Back C. Fisher 5 Locust ln. Malibu C. Fisher 123 Maple Str. Hollywood Return of the Jedi C. Fisher 5 Locust ln. Malibu StarWars Empire Strikes Back Return of the Jedi Redundanz entsteht, weil 2 unabhängige 1:N Beziehungen in einer Relation abgebildet wurden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 156 4NF (2) Redundante 1:N Beziehungen sind: Stars.Name →→ Stars.Address Stars.Name →→ Stars.Title Die einzige Beziehung zwischen Filmtitel und Adresse ist über den Namen des Filmstars Aufbrechen in 2 Projektionen bietet Lösung StarAddress: (Name, Street, City) StarMovie: (Name, Title) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 157 Mehrwertige Abhängigkeit (MVD: multivalued dependency) Definition MVD: In einer Relation R(A, B, C) existiert eine mehrwertige Abhängigkeit R.A →→ R.B ⇔ die Menge von B-Werten, die in einem Wertepaar (A-Wert, C-Wert) in R nur von A, nicht aber von C abhängt Definition nicht-triviale MVD: Eine MVD 𝐴1 𝐴2 … 𝐴𝑛 →→ 𝐵1 𝐵2 … 𝐵𝑛 ist nicht-trivial, wenn kein Attribut aus 𝐵1 𝐵2 … 𝐵𝑛 in 𝐴1 𝐴2 … 𝐴𝑛 enthalten ist und nicht alle Attribute der Relation in A oder B enthalten sind 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 158 4NF Definition 4NF: Eine Relation R mit zugeordneter Menge D von funktionalen und mehrwertigen Abhängigkeiten ist in 4NF, wenn für jede MVD A →→ B eine der folgenden Bedingungen gilt: Die MVD ist trivial A ist ein Superschlüssel von R 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 159 Beispiel: 4NF Assis: (PersNr, Name, FG, Boss, Spr, ProgSpr) FDs: PersNr → Name PersNr → FG PersNr → Boss MVDs: PersNr →→ Spr PersNr →→ ProgSpr Erster Schritt: Assis: (PersNr, Name, FG, Boss) Fähigkeiten: (PersNr, Spr, ProgSpr) Wegen der beiden MVDs muss Fähigkeiten zerlegt werden: Sprachen: (PersNr, Spr) ProgrammierSprachen: (PersNr, ProgSpr) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 160 5NF (PJNF: Project-Join Normalform) Einige Relationen können nicht durch 2-wegige Joins wiederhergestellt werden (aber doch durch mehrwegige Joins) Niedergradiges Join erzeugt Fremdtupel, die vom nächsten Join wieder entfernt werden Definition 5NF: Eine Relation ist in PJNF, wenn jede Join-Abhängigkeit eine Konsequenz der Schlüsselkandidaten ist Definition zur Vollständigkeit, nur durch Beispiel illustriert 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 161 Lossy Join (Verlust an Info, Fremdtupel) Ursprüngliche Relation: Kredit: Filiale Kto# Saldo Kunde FrankfurterStr. 123 1000 Meier FrankfurterStr. 146 1000 Schulze Rheinstr. 256 3000 Schmidt Rheinstr. 257 1000 Petersen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 162 Lossy Join (Verlust an Info, Fremdtupel) (2) Zerlegte Relationen: Kreditinfo: Betragsinfo: Filiale Kto# Saldo FrankfurterStr. 123 1000 FrankfurterStr. 146 1000 Rheinstr. 256 3000 Rheinstr. 257 1000 Saldo Kunde 1000 Meier 1000 Schulze 3000 Schmidt 1000 Petersen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 163 Lossy Join (Verlust an Info, Fremdtupel) (3) Kreditinfo ⋈ Betraginfo (auf Saldo): Filiale Kto# Saldo Kunde FrankfurterStr. 123 1000 Meier FrankfurterStr. 123 1000 Schulze FrankfurterStr. 123 1000 Petersen FrankfurterStr. 146 1000 Meier FrankfurterStr. 146 1000 Schulze FrankfurterStr. 146 1000 Petersen Rheinstr. 256 3000 Schmidt Rheinstr. 257 1000 Petersen Rheinstr. 257 1000 Schulze Rheinstr. 257 1000 Petersen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 164 Beispiel: PJNF Gegeben sei SPJ: SPJ: SP: S# P# SP⋈PJ S# P# J# S1 P1 S# P# J# S1 P1 J2 S1 P2 S1 P1 J2 S1 P1 J1 S2 P1 S1 P2 J1 S1 P2 J1 S2 P1 J1 S2 P1 J2 S1 P1 J1 S2 P1 J1 S# P# J# S1 P1 J2 S1 P2 J1 S2 P1 S1 P1 (SP⋈PJ)⋈JS PJ: JS: P# J# P1 J2 P2 J1 P1 J1 J# S# J2 S1 J1 J1 S1 J1 J1 S2 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 165 Denormalisierung Verzicht auf höhere Normalform aus Gründen der Performanz möglich: Aufgeteilte Tabellen, da keine Redundanz und Anomalien durch Normalisierung Zusammenführen von Datensätzen (Join) bewirkt Leistungsverlust! (beim Lesen) Employees ENAME Salary Dept# ? Department Dept# DeptName Employees ENAME Salary Dept# DeptName … … … … 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 166 Werkzeuge MS Access – Table Analyzer MS SQL Server – Import Wizard MySQL Data Import ? http://www.sqldbu.com/eng/sections/tips/mysqlimport.html Keine adäquate Hilfe beim Erstellen der FDs! „Each field must represent a fact about the key, the whole key, and nothing but the key“ (Bill Kent, HP) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 167 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 168 SQL SQL hat zwei Teile SQL als DDL (Definition von Tabellen) SQL als Query Sprache Melton, Simon; „Understanding the New SQL: A Complete Guide“, Morgan Kaufmann Publishers 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 170 SQL (2) SQL ist internationaler Standard SQL 89 (minimalistischer Standard - kleinster gemeinsamer Nenner der Hersteller) SQL 92 (gegenwärtig größtenteils umgesetzt) entry, intermediate, full SQL 99 (objekt-relationale Erweiterungen) SQL 2003 (XML Erweiterungen, SQL Erweiterungen) SQL 2006 (XML Erweiterungen, XPath, XQuery) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 171 SQL (3) Nur SQL Standard Syntax verwenden! Vorlesung, Übungen, Klausur Keine Proprietäre Erweiterungen z. Bsp. DISTINCT ON, LIMIT oder OFFSET Ziel der Vorlesung Hier gelernte SQL Syntax überall verwenden zu können 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 172 Database Objects SQL environment Implement. Authorization identifier Catalog Module Privilege Schema Character Set Translation Collation Table Viewed Table Domain Column Constraint Column Constraint 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 173 Assertion Catalogs & Schemas In SQL-89 wurden Tabellen Schemata durch den Namen des Besitzers qualifiziert (authorization identifier) In SQL-92 enthalten die Kataloge die Schemata, jedes Schema hat einen Eigentümer Objekte innerhalb eines Schema werden entweder explizit oder implizit referenziert FROM studentsunqualified FROM colleges.studentspartiallyqualified FROM mycat.colleges.studentsfullyqualified 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 174 Tables Tabellen sind die Basiskonstrukte in SQL Tabellen sind Multisets (auch „bags“ genannt) Relationen sind Mengen ohne Duplikate Tabellen sind Multisets und können Duplikate enthalten Tabellen Typen sind base tables viewed tables (Sichten) derived tables 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 175 Base Tables Tabellen bestehen aus einer Tabellendefinition (Intension) und Ausprägungen (Extension) Vier Typen von Base Tables Persistent Base Table Global Temporary Table Created Local Temporary Table Declared Local Temporary Table 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 176 Base Tables Persistent Base Tables haben einen persistenten (d.h. DB-Session übergreifenden) Extent Temporary Tables haben eine im Schema definierte Intension, ihre Ausprägung ist jedoch nur auf eine DB-Session beschränkt 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 177 Temporary vs. Persistent Tables Temporary Tables Überleben eine Session nicht Global Temporary Tables Können von verschiedenen Modulen oder embedded SQL Programmen innerhalb einer Session benutzt werden Created Local Temporary Tables Können nicht programmübergreifend benutzt werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 178 Temporary vs. Persistent Tables (2) Declared Local Temporary Tables Definition nicht im Schema hinterlegt, sondern im Modul (Programm) das sie nutzt Local Temporary Tables Auf ein Programm beschränkt und nicht persistent, daher bessere Performanz bei Manipulation von Zwischenergebnissen Bei allen temporären Tabellen: ON COMMIT PRESERVE ROWS erhält Tupel in der Session ON COMMIT DELETE ROWS löscht Tupel beim Commit der TX 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 179 Derived Tables und Views Derived Tables Ergebnis einer Query auf einer oder mehreren Tabellen Views (Sichten) sind mit Namen bezeichnete, aus Basisrelationen abgeleitete, virtuelle Relationen Im Gegensatz zu Derived Tables Definition von Views im Schema durch ein CREATE VIEW Sichten werden über eine Query definiert (später mehr dazu) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 180 SQL - Data Definition Language (DDL) CREATE TABLE Erstellen der Tabellendefinition DROP TABLE Löschen einer Tabellendefinition ALTER TABLE Ändern einer Tabellendefintion CREATE VIEW Erstellen einer Sichtdefinition DROP VIEW Löschen einer Sichtdefinition CREATE INDEX Erstellen eines Index DROP INDEX Löschen eines Index 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 181 CREATE TABLE Basis Tabellen (Persistent Base Table) werden über ein CREATE TABLE definiert CREATE TABLE base-table (column-definition [, column-definition] ... [, primary-key-definition] [, foreign-key-definition [, foreign-key-definition] ... ]); Der Ausdruck column-definition hat die Form column data-type [NOT NULL] 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 182 Beispiel: CREATE TABLE CREATE TABLE MOVIES_STARS ( MOVIE_TITLE CHARACTER(30) NOT NULL, YEAR_RELEASED DATE, ACTOR_LAST_NAME CHARACTER (35) NOT NULL, ACTOR_FIRST_NAME CHARACTER (25) ); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 183 NULL Nullmarken können verschiedene Bedeutung haben: Bedeutung: Attribut trifft bei einem Tupel nicht zu (Provision bei Angestellten mit festem Gehalt, Entbindungen bei männlichen Patienten) Wert existiert, ist aber unbekannt (unbekanntes Gehalt) Wert existiert nicht (Name des Ehegatten) Wert ist nicht definiert (Maximalwert einer leeren Menge) Wert ist ungültig (Alter eines Angestellten ist 98 Jahre) Wert wurde nicht angegeben (Fragebögen) Eingefügte Werte bei outer-join und outer-union Unterscheidung zwischen prinzipiellen Eigenschaften von Nullmarken und deren Realisierung in SQL 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 184 NULL (2) Mit NULL kann nicht gerechnet werden Vergleiche mit NULL ergeben immer FALSE Felder, die mit NOT NULL gekennzeichnet sind, dürfen keine NULL-Marken enthalten Felder, die als PRIMARY KEY dienen müssen NOT NULL sein Defaults können an Stelle von NULL-Marken definiert werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 185 Temporary Tables Created Temporary Tables Persistente Definition im Schema Für jede SQL-Session wird neue Instanz geschaffen Aus verschiedenen Modulen kann auf eine Tabelle zugegriffen werden CREATE GLOBAL TEMPORARY TABLE EMPLOYEES ( NAME CHARACTER VARYING(30), SALARY DECIMAL(7,2)) ON COMMIT PRESERVE ROWS; Tabelle überlebt Session nicht, Zwischenergebnisse können aber eine Transaktion überleben 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 186 Temporary Tables (2) Created Local Temporary Tables CREATE LOCAL TEMPORARY TABLE EMPLOYEES ( NAME CHARACTER VARYING(30), SALARY DECIMAL(7,2)) ON COMMIT DELETE ROWS; Declared Local Temporary Tables (eine Instanz pro SQL-Session oder Modul): DECLARE LOCAL TEMPORARY TABLE MODULE M1 (...) ON COMMIT DELETE ROWS; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 187 Derived Tables Mit derived tables können SQL-statements in der FROM Klausel benutzt werden (ab SQL-92) SELECT AVG (n_courses) FROM (SELECT last, first, COUNT(*) FROM enrollments GROUP BY last, first ) AS intermediate (last, first, n_courses) WHERE intermediate.last LIKE `J´; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 188 ALTER TABLE Definition ALTER TABLE base-table ADD column data-type; Ausführung ALTER TABLE MOVIES ADD PRODUCER CHARACTER(30); Eingefügtes Attribut darf nicht NOT NULL sein Definition im Katalog wird erweitert Bei nächstem Zugriff auf ein Tupel wird NULL eingefügt, bevor der Benutzer es sieht Bei der nächsten Schreiboperation wird das erweiterte Tupel geschrieben, wenn ein nicht-NULL Wert eingegeben wird 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 189 DROP TABLE Definition DROP TABLE base-table; Ausführung DROP TABLE MOVIES; DROP TABLE eliminiert eine Relation Bei dem Löschen der Basis-Relation werden darauf definierte Sichten und Index-Strukturen mitgelöscht 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 190 CREATE INDEX Definition CREATE [ UNIQUE ] INDEX index-name ON base-table ( column [ order ] [ , column [ order ] ... ] ) [ CLUSTER ]; Ausführung CREATE INDEX X ON konto (filiale, kname) CLUSTER; Order kann ASC (default) oder DESC sein CLUSTER besagt, dass es ein „clustering Index“ ist (höchstens einer pro Relation, physisches Gruppieren) UNIQUE besagt, dass keine Duplikate erlaubt sind (Wahrung der Schlüsseleindeutigkeit) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 191 DROP INDEX Definition DROP INDEX index-name; Ausführung DROP INDEX konto.X; Löscht einen Index 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 192 SQL als Data Manipulation Language (DML) Basisstruktur besteht aus drei Klauseln SELECT - entspricht einer Projektion und zählt die Attribute der Ergebnistabelle auf (* = alle) FROM - beschreibt die Liste der Tabellen, auf denen die Operationen ausgeführt werden WHERE - Selektionsprädikat bzw. Joinprädikat 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 193 SQL als Data Manipulation Language (DML) (2) Basisstruktur SELECT 𝐴1 , 𝐴2 , … , 𝐴𝑛 FROM 𝑇1 , 𝑇2 , … , 𝑇𝑚 WHERE P Die Basisstruktur einer Query entspricht dem Ausdruck 𝜋𝐴1,𝐴2,…,𝐴𝑛 𝜎𝑃 𝑇1 × 𝑇2 × … × 𝑇𝑚 Wenn P nicht angegeben ist, gilt P = TRUE 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 194 SQL Ausgeben aller Attribute einer Tabelle SELECT * FROM MOVIES_STARS; Ausgeben einer Spalte ohne Duplikate SELECT DISTINCT ACTOR_LAST_NAME FROM MOVIES_STARS; Selektieren mit einem Selektionsprädikat auf einer Tabelle SELECT * FROM MOVIES_STARS WHERE ACTOR_LAST_NAME = ‘Streisand‘; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 195 „Ähnlichkeitssuchen“ in SQL Definition match-expression [ NOT ] LIKE pattern [ ESCAPE escape-character ] Keyword LIKE (NOT negiert dieses Keyword) Wildcard für n viele Zeichen: % Wildcard für ein Zeichen: _ Wildcard für ein bestimmes Zeichen: [charlist] Negation: [!charlist] oder auch [^charlist] Keyword ESCAPE Escape-Sequenz eines Zeichens des LIKE patterns 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 196 Beispiel: „Ähnlichkeitssuchen“ in SQL (2) Gegeben seien die Strings ABCDE, ABCD und %ABC LIKE ‘ABC%‘ findet ABCDE und ABCD LIKE ‘ABC_‘ findet nur ABCD LIKE ‘$%%‘ ESCAPE ‘$‘ findet alle Zeilen die mit % beginnen, also %ABC 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 197 SQL Query mit LIKE SELECT title SELECT title FROM movie_titles FROM movie_titles WHERE title LIKE ‘Bev%’ ; WHERE title LIKE ‘%Bev%’ ; Ergebnis Ergebnis title title Beverly Hills Cop Beverly Hills Cop Beverly Hills Cop II Beverly Hills Cop II Down and Out in Beverly Hills 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 198 Kombination von Queries Kombination von Queries ergibt gemeinsame Ergebnismenge Queries (Ergebnismengen) können über INTERSECT, UNION und EXCEPT kombiniert werden Gegeben seien die Tabellen Movie( title, year, length, inColor, studioName, producer ) StarsIn( movieTitle, movieYear, starName ) (SELECT title, year FROM Movie) UNION (SELECT movieTitle AS title, movieYear AS year FROM StarsIn) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 199 Subqueries Bisher waren Prädikate immer als Vergleich mit skalaren Werten definiert Nun ist das Ziel Vergleiche mit ganzen Tabellen ausführen zu können Man definiere diesbezüglich Subqueries Subqueries sind SQL Ausdrücke, deren Ergebnis eine Tabelle ist In komplexen Prädikaten können Subqueries (d.h. deren Ergebnismengen) verglichen werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 200 Bedingungen über Relationen Operatoren werden auf eine Relation R angewandt und ergeben einen booleschen Wert R kann das Ergebnis einer SELECT-FROM-WHERE Query sein EXISTS R - ergibt TRUE wenn R nicht leer ist s IN R - sei fortfolgend s ein skalarer Wert und R habe Grad eins ergibt TRUE ⇔ s in R enthalten ist s > ALL R - ergibt TRUE ⇔ s größer als alle Werte in R ist s > ANY R - ergibt TRUE ⇔ s größer als irgendein Wert in R ist EXISTS, ALL und ANY können durch Verknüpfung mit NOT negiert werden - was ist dann die Semantik? 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 201 Negierung von EXISTS, ANY und ALL NOT EXISTS R - ergibt TRUE ⇔ R leer ist NOT s > ALL R - ergibt TRUE ⇔ kleiner als der oder gleich dem Maximalwert NOT s > ANY R - ergibt TRUE ⇔ s kleiner als der oder gleich dem Minimalwert 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 202 Bedingungen mit Tupeln Um Tupel mit den Tupeln einer Relation vergleichen zu können, müssen diese den gleichen Grad haben Vergleiche benutzen die Standardordnung Gegeben seien die Tabellen Movie(title, year, length, inColor, studioName, producerC#) StarsIn(movieTitle, movieYear, starName) MovieExec(name, address, cert#, netWorth) Query: Finde die Produzenten von Harrison Ford Filmen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 203 Beispiel: Nested Queries SELECT name FROM MovieExec WHERE cert# IN (SELECT producerC# FROM Movie WHERE (title,year) IN (SELECT movieTitle, movieYear FROM StarsIn WHERE starName = ‘Harrison Ford’) ); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 204 Erklärung des Beispiels Queries werden von innen nach außen analysiert Innere Query gibt movieTitle und movieYear für H.F. Filme (beide Attribute sind als Schlüssel für Tabelle Movies nötig) Mittlere Query ergibt die producerC# für jeden Film von H.F. aus dem Zwischenergebnis Äußere Query macht den letzten Join über producerC# und cert# und gibt die Namen der Produzenten an Gibt es alternative Formulierungen? 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 205 Alternative Formulierung SELECT name FROM MovieExec, Movie, StarsIn WHERE cert# = producerC# AND title = movieTitle AND year = movieYear AND starName = ‘Harrison Ford’; Was passiert mit Duplikaten? SELECT DISTINCT name Wie werden Duplikate eliminiert? (sortieren, hashen) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 206 JOIN students enrollments LNAME FNAME NICK LAST James Robert Bob James Robert CS101 Long Robert Bobby Smith CS200 FIRST Diane SQL-89 inner joins (natural inner join) SELECT lname, nick, course FROM students, enrollments WHERE students.lname = enrollments.last AND students.fname = enrollments.first; LNAME NICK COURSE James Bob CS101 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 207 COURSE SQL-92 JOINs - CROSS JOIN SQL-92 führt verschiedene zusätzliche Joins ein cross join (kartesisches Produkt), union join, outer join CROSS JOIN SELECT * FROM (students CROSS JOIN enrollments); LNAME FNAME NICK LAST FIRST James Robert Bob James Robert CS101 James Robert Bob Smith CS200 Long Robert Bobby James Robert CS101 Long Robert Bobby Smith CS200 Diane Diane COURSE 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 208 SQL-92 JOINs - UNION JOIN UNION JOIN SELECT * FROM (students UNION JOIN enrollments) AS result; LNAME FNAME NICK LAST FIRST COURSE James Robert Bob NULL NULL NULL Long Robert Bobby NULL NULL NULL NULL NULL NULL James Robert CS101 NULL NULL NULL Smith Diane CS200 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 209 SQL-92 JOINs – NATURAL FULL OUTER JOIN NATURAL FULL OUTER JOIN SELECT * FROM (students NATURAL FULL OUTER JOIN v_enrollments) AS result; students v_enrollments LNAME FNAME NICK LNAME FNAME COURSE James Robert Bob James Robert CS101 Long Robert Bobby Smith Diane CS200 LNAME FNAME NICK COURSE James Robert Bob CS101 Long Robert Bobby NULL Smith Diane NULL CS200 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 210 SQL-92 JOINs - LEFT OUTER JOIN LEFT OUTER JOIN SELECT * FROM (students LEFT OUTER JOIN enrollments ON lname = last AND fname = first) AS result ; LNAME FNAME NICK LAST FIRST James Robert Bob James Robert Long Robert Bobby NULL NULL COURSE CS101 NULL 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 211 SQL-92 JOINs - RIGHT OUTER JOIN RIGHT OUTER JOIN SELECT * FROM (students RIGHT OUTER JOIN enrollments ON lname = last AND fname = first) AS result; LNAME FNAME NICK LAST FIRST James Robert Bob James Robert CS101 NULL NULL NULL Smith CS200 Diane COURSE 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 212 Range Queries Bezug auf Vergleiche mit Wertbereichen in der WHERE Klausel Zwei Arten von Range Queries: Gegeben sei die Tabelle Movie(title, year, length, inColor, studioName, producerC#) SELECT * FROM Movie WHERE year IN {1998, 1999, 2000}; SELECT * FROM Movie WHERE year >= 1998; Zusätzlich BETWEEN val1 BETWEEN val2 AND val3 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 213 Aggregierung: Set Functions Berechnungsfunktionen auf Tabellen COUNT zählt die Zeilen in einer Tabelle COUNT(*) zählt alle Zeilen Weitere Qualifikation durch ALL, DISTINCT, Attributnamen oder Prädikate SELECT COUNT(*) FROM MOVIES_STARS WHERE ACTOR_LAST_NAME = ‘Moore’; SELECT COUNT (DISTINCT MOVIE_TITLE) FROM MOVIES_STARS ; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 214 Aggregierung: MAX, MIN, SUM, AVG MAX wählt den höchsten Wert aus MIN wählt den Minimalwert aus SUM summiert alle Instanzen AVG bildet den arithmetischen Durchschnitt Vorsicht! Umgang mit NULL! COUNT(*) zählt alle Zeilen, inkl. die mit NULL SUM ignoriert NULL in der Summe AVG zählt beim Durchschnitt nur die Tupel, die nicht NULL im summierten Attribut haben AVG SUM / COUNT 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 215 SQL Funktionen Weitere Funktionen in SQL-92 vom System vordefiniert SUBSTRING TRIM POSITION EXTRACT Interval Value Expressions Benutzer-definierte Funktionen in SQL99 (später) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 216 GROUP BY Definition GROUP BY grouping-column [ , grouping-column ...] Ausführung SELECT movie_type, AVG (current_rental_price) FROM movie_titles GROUP BY movie_type; Table expressions produzieren virtuelle Tabellen Ordnet Tupel nach einem Gruppierungskriterium und kann auch Werte nach dieser Klassifikation aggregieren 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 217 Beispiel: GROUP BY title movie_type rental_price movie_type price Lethal Weapon Action 2.99 Action 2.66 Unforgiven Western 3.99 War 2.99 Outlaw Western 2.99 Western 3.49 Kelly’s Heroes War 2.99 Shaft Action 2.99 Shaft’s Big Score Action 1.99 SELECT movie_type, AVG (rental_price) AS price FROM movie_titles GROUP BY movie_type; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 218 Beispiel: GROUP BY (2) Auswertungsreihenfolge? SELECT movie_type, AVG (rental_price) FROM movie_titles WHERE movie_studio IN (Paramount, Universal) GROUP BY movie_type; FROM-CLAUSE [ WHERE-CLAUSE ] [ GROUP-BY-CLAUSE] [ HAVING-CLAUSE] 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 219 HAVING Definition HAVING search-condition Ausführung HAVING movie_type = ‘Western‘ OR movie_type = ‘War’ Ist ein zusätzlicher Filter Wirkt auf die Relation der vorhergehenden Klausel Bezieht sich auf die Werte der Grouping Klausel 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 220 Datenbank-Änderungen Im relationalen Modell sind Änderungen (Updates) konzeptuell eine Kombination von Einfügen und Löschen Löschen wird anfrageähnlich beschrieben DELETE R WHERE P löscht alle Tupel in R, die das Prädikat P erfüllen Löschen bezieht sich immer auf eine Relation (obwohl andere Relationen in der Selektionsformel vorkommen dürfen) Fehlendes Prädikat (WHERE-Klausel) gilt als TRUE 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 221 Delete Definition DELETE R WHERE P; Ausführung DELETE KONTO WHERE saldo < ( SELECT AVG(saldo) FROM KONTO ); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 222 Delete (2) Prädikate können beliebig komplex sein (z.B. geschachtelte Queries) DELETE KONTO WHERE FILIALE IN ( SELECT FILIALE FROM BANK WHERE STANDORT = ‘Darmstadt‘ ); Tupel werden als gelöscht gekennzeichnet und nur am Ende einer Operation wirklich gelöscht (commit) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 223 Insert Definition INSERT INTO R VALUES (< … >); Ausführung INSERT INTO KONTO VALUES (‘Frankfurter Str.’, 1234, ’Meier’, 1000); Zu speichernde Tupel, müssen einzeln definiert werden (auf Grad und Wertbereiche achten!) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 224 Insert (2) INSERT INTO Konto SELECT filiale, kredit#, kname, 200 FROM Kredit WHERE filiale = ‘Frankfurter Str.’; Jedem Kunden, der einen Kredit in der Filiale Frankfurter Str. hat, erhält ein Konto mit 200€ Guthaben und gleicher Nummer wie der Kredit 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 225 Update Definition UPDATE R SET newvalue = < ... > WHERE P; Ausführung UPDATE Konto SET saldo = saldo*1.05; Wenn nur einzelne Attribute verändert werden macht Delete und Insert keinen Sinn (Effizienz, Clustering, Timestamp, etc.) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 226 Update (2) WHERE Klausel im UPDATE hat gleiches Format wie bei SELECT Beispiel: Erhöhe alle Konten um Zinsbetrag, wobei Konten mit mehr als 100.000€ und Laufzeit = 12 Monate 6% erhalten und kleinere Beträge oder kürzere Laufzeiten 5% erhalten UPDATE Konto SET saldo = saldo * 1.06 WHERE saldo > 100000 AND frist = 12; UPDATE Konto SET saldo = saldo*1.05 WHERE saldo <= 100000 OR frist < 12 Reihenfolge der Ausführung ist wichtig! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 227 Sichten (Views) Sicht (View): benannte, abgeleitete, virtuelle Relation Sichten können von Basisrelationen und anderen Sichten abgeleitet werden Korrespondenz zum externen Schema bei ANSI/SPARC, d.h. View agiert als Filter (Unterschied: Benutzer sieht ein externes Schema kann aber viele Sichten und Tabellen sehen) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 228 Sichten (Views) (2) Definitionen CREATE VIEW view [ (column-commalist) ] AS query-exp [ WITH [ CASCADED l LOCAL ] CHECK OPTION]; CHECK kann beliebig komplexes Constraint sein DROP VIEW view; Ausführung CREATE VIEW ArmeInformatiker (pnr, name, beruf, gehalt) AS SELECT pnr, name, beruf, gehalt FROM Mitarbeiter WHERE beruf = ‘Informatiker’ AND gehalt < 70000; 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 229 Sichten (Views) (3) Sichten werden im Schema definiert und Intension wird im Katalog gespeichert Sicht agiert als Filter durch ausblenden von Attributen und selektieren von Tupeln Benutzerfreundlichkeit Datenschutz Datenunabhängigkeit Bei dem Speichern von Sichten (materialized views) muss Konsistenz gewahrt werden!!! 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 230 Sichten (Views) (4) Views werden durch eine Query definiert, ergo sind Sichtnamen und Queries austauschbar Sichten werden i.a. nicht permanent gespeichert (werden on-the-fly erstellt) SELECTs auf Views unproblematisch (wirkt wie Konjunktion der Selektionsprädikate der Query und der Sichtdefinition) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 231 Sichten (Views) (5) Abbildungsprozess für Sichten kann mehrstufig sein Abbildungsmächtigkeit ist eingeschränkt (keine Schachtelung von GROUP BY möglich) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 232 Updatable Views Updates auf Sichten können problematisch sein Änderungsoperationen auf Sichten erfordern eindeutige Zuordnung der Tupel zwischen Sicht und Basisrelation Sichten auf Basisrelation sind nur aktualisierbar, wenn der Primärschlüssel in der Sicht enthalten ist Sichten sind nicht aktualisierbar wenn sie Über Aggregatfunktionen und GROUP BY definiert sind Über mehr als eine Relation definiert sind (i.a. nicht aktualisierbar) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 233 View Updates Wenn Tupel über eine Sicht eingefügt werden Muss der Primärschlüssel in Sicht enthalten sein Müssen alle nicht-NULL Attribute in Sichtdefinition enthalten sein Müssen alle nicht-NULL Attribute zumindest Default-Werte zugewiesen bekommen Eingefügte Tupel müssen das die Sicht definierende Prädikat erfüllen (CHECK-Option) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 234 Constraints Integritätsbedingungen können entweder über das Applikationsprogramm oder das DBMS definiert und überwacht werden Vorteile von Definition und Überwachung der Constraints im DBMS Constraints werden immer geprüft (Programme könnten oder auch nicht die Constraints prüfen) Constraints sind an einer Stelle für alle Benutzer einsehbar Constraints sind im DBMS leichter programmierbar als im Anwendungsprogramm (Unterstützung durch das DBMS) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 235 Constraints (2) Modellinhärente Constraints NOT NULL von bestimmten Attributen UNIQUE Eindeutigkeit (insbesondere von Schlüsseln) PRIMARY / FOREIGN KEY Referentielle Integrität Anwendungsbezogene Constraints CHECK Überprüfung von Bedingungen auf einer Tabelle (Wertbereichsdefinitionen oder selektives nicht-NULL) Bedingungen in CHECK Klausel können komplex sein (z.B. Ausschluss aus anderer Tabelle) ASSERTIONS Tabellenübergreifende Constraints 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 236 Uniqueness Constraint SQL-89 Alle Felder mussten NOT NULL sein, wenn sie unter ein UniquenessConstraint fielen SQL-92 NULL kann in Attributen enthalten sein, die unter ein UniquenessConstraint fallen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 237 Uniqueness Constraint (2) Zwei Zeilen mit NULL in einem Feld werden als unterschiedliche Werte behandelt, welche als UNIQUE bezeichnet werden ALTER TABLE enrollments ADD CONSTRAINT UNIQUE (last, first, course); Enrollments Doe John Ch307 Doe John NULL Doe John NULL 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 238 Referentielle Integrität Referentielle Integrität Für jeden Wert eines Fremdschlüssels muss ein Tupel mit einem Wert als Primärschlüssel existieren Einfache Version der referentiellen Integrität in SQL89 CREATE TABLE enrollments (..., FOREIGN KEY (last, first) REFERENCES students (lname, fname)); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 239 Referentielle Integrität (2) Interpretation der referentiellen Integrität in SQL Spalten der referenzierten Tabelle müssen in einem Uniqueness-Constraint spezifiziert sein Gleichheit der Fremd- und Primärschlüssel NULL im Fremdschlüssel bedeutet Zeile wird nicht geprüft 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 240 Beispiel: Referentielle Integrität STUDENTS (referenced) ENROLLMENTS (referencing) LNAME FNAME NICK LAST FIRST James Robert Bob James Robert CS101 Long Robert Bobby Long Robert PH201 Smith NULL EF101 NULL Robert CS221 NULL NULL CH301 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 241 COURSE Beispiel: Referentielle Integrität (2) Zusätzlich in SQL-92 hinzugekommen partially null foreign keys match partial Teil des FOREIGN KEY kann NULL sein match full FOREIGN KEY muss entweder ganz NULL oder ganz non-NULL sein 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 242 FOREIGN KEY Definition <foreignkeyclause> ::= FOREIGN KEY (<referencingcolumns>) REFERENCES <tablename> [(<referencedcolumns>)] [<foreignkeyactions>] Für die Aktion gilt: <foreignkeyaction> ::= <event><action> <event> ::= ON UPDATE l ON DELETE <action> ::= CASCADE l SET DEFAULT l SET NULL l NO ACTION 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 243 FOREIGN KEY (2) CASCADE Propagiert updates oder deletes (Änderungen im Schlüssel/referenzierten Attribut werden zu den Tupeln der referenzierenden Relation propagiert) SET NULL Setzt Fremdschlüsselattribute auf NULL wenn der Wert nicht länger als Primärschlüssel existiert SET DEFAULT setzt die nicht übereinstimmenden Attribute zu einem Default NO ACTION lässt die Änderung nicht zu 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 244 FOREIGN KEY (3) Primärschlüssel der referenzierten Tabelle Referencingcolumns muss spezifiziert werden Referencedcolumns darf weggelassen werden, Default ist der Primärschlüssel 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 245 Assertions (SQL-92) Definition <SQL92 assertion> ::= CREATE ASSERTION <constraintname> CHECK ( <condition> ) [ <constraintevaluation> ] <constraintevaluation> ::= [ NOT ] DEFERRABLE [ { INITIALLY DEFERRED l INITIALLY IMMEDIATE } ] Condition kann irgendein SQL Prädikat sein Immediate bedeutet, dass Constraint direkt nach der Ausführung des Statements ausgewertet wird Deferred bedeutet, daß Constraint direkt vor dem commit ausgewertet wird Initially gibt Default an, kann geändert werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 246 Assertion Beispiel CREATE ASSERTION sample_table_never_empty CHECK ( ( SELECT COUNT (*) FROM sample) > 0) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 247 Assertions (SQL-99) Definition <SQL-99 assertion> ::= CREATE ASSERTION <constraint name> { BEFORE COMMIT l AFTER <assertion event> } CHECK <condition> [ FOR EACH ROW ] <table name> <constraint evaluation> <assertion event> ::= { INSERT l DELETE l UPDATE [ OF <column name> ] } ON <table name> FOR EACH ROW tuple granularity, sonst statement granularity 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 248 Trigger Definition <SQL-99 trigger>::= CREATE TRIGGER <triggername> { BEFORE l AFTER l INSTEAD OF } <triggerevent> ON <tablename> [ ORDER <order value> ] [ REFERENCING <reference> ] WHEN(<condition>) <SQL procedurestatements> [ FOR EACH { ROW l STATEMENT } ] <triggerevent> ::= INSERT l DELETE l UPDATE <reference> ::= OLD AS <oldvaluetuplename> l NEW AS <newvaluetuplename> l OLD_TABLE AS <oldvaluetablename> NEW_TABLE AS <newvaluetablename> 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 249 Domains Persistente Definition (Katalog) Datentyp (optionaler) Default (optionale) Constraints (optionale) Ordnung 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 250 Domains Kann an Stelle der Datentypdefinition in Spaltendefinition verwendet werden CREATE DOMAIN money AS DECIMAL (7,2); CREATE DOMAIN shirt_size AS CHAR (1) DEFAULT ‘M’ CONSTRAINT valid_sizes CHECK (value IN (‘S’, ’M’, ’L’, ’X’)); CREATE TABLE shirts ( style CHAR(5), size shirt_size, list_price money); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 251 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 253 SQL und Programmiersprachen Wie greift man auf eine Datenbank aus einer Anwendung heraus zu? Probleme: (Die meisten) Programmiersprachen haben keinen Mengenbegriff Wie erhält man Daten aus der Datenbank? Wie führt man SQL aus? 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 254 Cursor Begriff (siehe auch Iterator) Anfragen, die eine mengenwertige Antwort erzeugen, müssen über einen Cursor im Programm bearbeitet werden Ein Cursor durchläuft die Tupel einer Relation einzeln Relation kann gespeichert oder Ergebnisrelation sein In JDBC hat man den gleichen Begriff als Iterator Ein Cursor muss deklariert werden initialisiert werden geschlossen werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 255 Embedded SQL Program in Host Language (ADA,C,COBOL,FORTRAN,C++,Java...) + Embedded SQL Preprocessor Host Language + Function Calls Host Language Compiler Host Language Program with Function Calls 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 256 SQL Library Static vs. Dynamic SQL ‘Static’ SQL statements traditionally embedded in programs precompilation optimization works well when DB accesses can be anticipated ‘Dynamic’ SQL required when using ad-hoc queries or interactive on-line data analysis SQL statements are passed to more generic SQL queries on the fly compilation and optimization Call Level Interface (CLI) provides even more flexibility ODBC and JDBC are popular implementations of SQL/CLI 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 257 Datenbank Schnittstellen CLI (Call Level Interface) ODBC (Open DataBase Connectivity) JDBC ORM (Object-Relational Mapper) Java: Hibernate, EclipseLink, ObjectDB, … C++: LiteSQL, ODB, … .NET: LINQ (included), NHibernate, … usw. 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 258 Stack für Daten Zugriffe Datenquelle: enthält die eigentlichen Daten Anwendung RDBMS, Spreadsheet, XML-Datei, usw. Treiber Manager Treiber Datenquelle 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 259 Stack für Daten Zugriffe Treiber: steuert die Datenquelle an Anwendung bietet Interface an (z.B. ODBC, JDBC) ein Treiber pro Datenquelle und Interface benötigt z.B.: http://jdbc.postgresql.org/ Treiber Manager Treiber Datenquelle 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 260 Stack für Datenbank Zugriffe Treiber Manager: vermittelt zwischen Anwendung Programmiersprache und Treiber Beispiel: Cursor-Abstraktion zum Treiber Manager Umgang mit Mengen z.B.: Java: JDBC API Treiber Datenquelle 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 261 Stack für Datenbank Zugriffe Anwendung: viele Anwendungen nutzen Anwendung einen Treiber Manager z.B.: viele Java Anwendungen Treiber Manager nutzen die JDBC API Treiber Datenquelle 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 262 ORM Object Relational Mappers (ORM) können Objekte einer OO-Sprache in einer relationalen Datenbank abbilden Sehr hoher Abstraktionsgrad ORM verwaltet Indizes, Constraints, etc. Benutzen oft vorhandene Treiber Manager Folgen aber nicht immer diesem Modell Beispiel: ObjectDB ist ein ORM für Java inkl. DBMS, bietet aber keinen JDBC Treiber 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 263 ORM - Beispiel @Entity(name = "Recipe") public class RecipeImpl extends Recipe { Name @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private int portions; private String preparation = ""; private byte[] image; @OneToMany(orphanRemoval = true) private List<Ingredient> ingredients; @ManyToMany private List<Category> categories; @ManyToMany private List<Side> sides; Primärschlüssel „auto increment“ @Transient private ResourceBundle messages = ResourceBundle.getBundle("ExceptionMessages"); nicht speichern 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 264 1:N N:M N:M ORM - Beispiel SELECT: CriteriaBuilder cb = EntityManager.getCriteriaBuilder(); CriteriaQuery<RecipeImpl> query = cb.createQuery(RecipeImpl.class); query.from(RecipeImpl.class); List<RecipeImpl> result = EntityManager.createQuery(query).getResultList(); INSERT: EntityManager.getTransaction().begin(); // ensure ingredients of the recipe are persisted for (Ingredient i : recipe.getIngredients()) { EntityManager.persist(i); } // [...] EntityManager.persist(recipe); EntityManager.getTransaction().commit(); 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 265 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 274 Transaktionen Definition Atomarer Prozess der die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand überführt Minimale Prozesseinheiten im Datenbank System Durch BOT (begin of transaction) und EOT (end of transaction) Statements begrenzt Transaktion zwischen BOT und EOT besteht aus semantisch und syntaktisch korrekten DML (Data Manipulating Language) und PL (Programming Language) Statements 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 275 Konsistenz Transaktionskonsistenz Transaktion bildet einen konsistenten Datenbankzustand auf einen anderen konsistenten Zustand ab Nebenläufige Transaktionen behindern sich nicht und produzieren keine inkonsistenten Zustände Datenbank Konsistenz Eine Datenbank ist konsistent, wenn sie alle auf ihr definierten Konsistenzregeln erfüllt Die Datenbank muss vor und nach der Ausführung einer Transaktion konsistent sein 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 277 Transaktionen: Terminierung Transaktionen müssen immer terminieren Normale Terminierung – commit Änderungen werden in der Datenbank permanent Anormale Terminierung – abort Änderungen werden zurückgerollt, DB verbleibt im gleichen Zustand den sie vor dem BOT hatte 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 278 Transaktionen: Terminierung (2) Abort kann unterschiedlich eingeleitet werden Benutzer oder Anwendungsprogramm System Abgebrochene Transaktionen kann man Neu starten, wenn Transaktion durch einen Hardware (HW) oder Systemfehler (z. Bsp. deadlock) abgebrochen wurde Entfernen fehlerhafte Transaktionen (z. Bsp. Null Division) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 279 ACID Eigenschaften Transaktionen sollten die ACID Eigenschaften einhalten Atomicity (Atomarität) Transaktion wird komplett oder gar nicht ausgeführt Consistency (Konsistenz) Transaktionen produzieren keine inkonsistenten Zustände Isolation (Isolation) Veränderungen werden nur nach dem Commit der Transaktion sichtbar Durability (Dauerhaftigkeit) Veränderungen sind permanent 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 280 Korrektheitskriterien Bestimmen die erlaubten Sequenzen von Befehlen Die sequentielle Ausführung von Transaktionen ist per Definition korrekt (da jede Transaktion individuell korrekt sein muss) Jede nebenläufige Ausführung von Transaktionen die mit einer sequentiellen Ausführung äquivalent ist, ist korrekt (= serialisierbar) Serialisierbarkeit ist eines von mehreren Korrektheitskriterien (aber das mächtigste und bestverstandene) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 281 Konfliktserialisierbarkeit Zwei Transaktionsabläufe sind äquivalent Über die gleichen Transaktionen definiert Inkompatiblen Operationen in diesen Transaktionen werden in der gleichen Folge ausgeführt (vorausgesetzt keine der Transaktionen wurde abgebrochen) Für 𝑝𝑖 in 𝑇𝑖 und 𝑞𝑘 in 𝑇𝑘 (𝑎𝑖 , 𝑎𝑘 nicht im Transaktionsablauf) 𝑝𝑖 < 𝑞𝑘 in Ablauf eins und 𝑝𝑖 < 𝑞𝑘 in Ablauf zwei 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 282 Konfliktserialisierbarkeit (2) Nur die Reihenfolge der inkompatiblen Operationen ist relevant Implementierung durch Sperren Exklusive locks (Schreibsperren) Shared locks (Lesesperren) S E S True False E False False 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 283 Zwei Phasen Sperrprotokoll Two Phase Locking Protocol (2PL) Elementares Two Phase Locking Sperren 1) Scheduler erhält Befehl vom Transaktionsmanager (TM) und prüft ob Sperre gesetzt ist Sperre ist gesetzt → Befehle direkt an DM Sperre nicht gesetzt → prüfe Verfügbarkeit BOT Ja - setze Sperre und reiche Befehl weiter Nein - prüfe Kompatibilität kompatibel - inkrementiere Referenzzähler, reiche Befehl weiter inkompatibel - warte 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 284 EOT Zwei Phasen Sperrprotokoll Two Phase Locking Protocol (2PL) 2) Frühester Zeitpunkt zum Freigeben Sperren von Sperren ist wenn DM Ausführung des Befehls bestätigt (handshake Prinzip) 3) Wenn eine Transaktion 𝑇𝑖 eine Sperre freigegeben hat, darf 𝑇𝑖 keine neue Sperre anfordern BOT 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 285 EOT Eigenschaften von 2PL 2PL garantiert konfliktserialisierbare Abläufe 2PL ist nicht deadlock-frei Grund für die Möglichkeit von deadlocks ist die dynamische Anforderungen von Ressourcen Transaktion 1 sperrt 𝐷1 , bearbeitet 𝐷1 und versucht 𝐷2 zu lesen blockiert da 𝑇2 Sperre auf 𝐷2 hält Transaktion 2 sperrt 𝐷2 , bearbeitet 𝐷2 und möchte 𝐷1 lesen blockiert da 𝑇1 𝐷1 sperrt 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 286 Deadlocks Mehr als zwei Transaktionen können in einen Deadlock verwickelt sein Deadlocks können durch aktives prüfen von Zyklen im Wait-For Graph (WFG) detektiert werden Transaktionen sind Knoten, Anforderungen von gesperrten Ressourcen (Daten) sind die Kanten Falls ein Zyklus im WFG existiert, dann besteht ein Deadlock Deadlocks können auch passiv über Timeouts bestimmt werden Falls ein Deadlock auftritt, muss eine Transaktion „abortiert“ werden, um die Ressourcen frei zu setzen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 287 Warum Serialisierbarkeit nicht ausreichend ist? Serialisierbarkeit (wie vom 2PL garantiert) wird eingehalten wenn alle Transaktionen korrekt abschließen Angesichts von Fehlern, brauchen wir zusätzliche Kriterien, die korrekte Abläufe garantieren recoverable (wiederherstellbar) free of cascading aborts (frei von kaskadierenden Aborts) strict (strikt) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 288 Warum Serialisierbarkeit nicht ausreichend ist? (2) Das sicherste Korrektheitskriterium ist die strikte Serialisierbarkeit (wie sie von einem strikten 2PL geboten wird) Aus Performanzgründen bieten kommerzielle Systeme auch weniger sichere Mechanismen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 289 Striktes 2PL Sperren werden nur nach dem Commit (oder Abort) freigegeben Commit und Abort frühesten Zeitpunkte im Ablauf einer Transaktion wo keine zusätzlichen Befehle für diese Transaktion ausgeführt werden müssen Scheduler bestimmt dies eindeutig # locks ohne zusätzliche Informationen t Striktheit Bezug auf die Freigabe der Sperren BOT EOT (wie sie angefordert wurden ist irrelevant, solange es 2PL entspricht) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 290 Levels of isolation Levels of isolation Werden von kommerziellen DBMSs und SQL benutzt Kontrolliert das Ausmaß, in dem eine Transaktion den Aktionen konkurrierender Transaktionen ausgesetzt ist Es existieren fünf levels of isolation in SQL unter denen der Benutzer auswählen kann READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE SNAPSHOT 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 291 Levels of isolation (2) Definition (SQL) SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }; Wahl des entsprechenden level of isolation Benutzer kann zwischen höherer Performanz und höherer Sicherheit vor nebenläufigen Änderungen wählen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 292 Isolation level: SERIALIZABLE Isolation level SERIALIZABLE Entspricht (dem von uns besprochenen) strikten 2PL Sperren werden nach 2PL angefordert und zum Commit freigegeben SERIALIZABLE setzt zusätzlich Index-Sperren 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 293 Isolation level: REPEATABLE READ Isolation level REPEATABLE READ Eine Transaktion sieht nur die Änderungen von Transaktionen, die mit Commit abgeschlossen wurden Von T gelesen oder geschriebene Werte, werden nicht verändert, bis T abgeschlossen ist Benutzt die gleiche Sperrstrategie wie „isolation level serializable“, setzt aber keine Indexsperren Phantome können auftauchen (d.h. Datensätze, die von einer nebenläufigen Transaktion eingefügt wurden, werden manchmal gesehen und manchmal nicht) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 294 Isolation level: READ COMMITTED Isolation level READ COMMITTED Transaktion liest nur von Transaktionen, die mit Commit abgeschlossen wurden Von T geschriebene Werte können nicht von einer anderen Transaktion verändert werden, bevor T abschließt 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 295 Isolation level: READ COMMITTED (2) Isolation level READ COMMITTED Nebenläufige Transaktionen können jeden von T gelesenen Wert verändern Exklusive Sperren werden vor dem Schreiben gesetzt und bis zum Ende der Transaktion gehalten Lesesperren werden vor dem Lesen angefordert, aber wieder frei gegeben (garantiert nur, dass Werte von korrekt abgeschlossenen Transaktionen gelesen werden) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 296 Isolation level: READ UNCOMMITTED Isolation level READ UNCOMMITTED Erlaubt einer Transaktion die Werte zu lesen, die eine nebenläufige Transaktion geschrieben hat, bevor diese terminiert Das gelesene Objekt kann im Laufe der Transaktion noch weiterhin verändert werden 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 297 Isolation level: SNAPHSOT Isolation level SNAPSHOT Innerhalb einer Transaktion gelesene Daten spiegeln niemals Änderungen wider, die von anderen gleichzeitigen Transaktionen durchgeführt wurden Erstellt keine Sperren beim Lesen von Daten Blockiert das Schreiben von Daten durch andere Transaktionen nicht Beim Schreiben von Daten blockieren Transaktionen das Lesen von Daten durch andere Transaktionen nicht 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 298 Struktur der Vorlesung Data Engineering Überblick, Architektur Datenmodelle Entwicklung und Ausblick Transaktionen SQL und Programmiersprachen ER-Datenmodell Relationales Datenmodell SQL Entwurfstheorie 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 300 Hist. Überblick: Steinzeit 1960-1970 Direkter Zugriff auf Daten über Adresse (Platten) Girokonto AP+Dateiverw Girokonto Daten Große Datenmengen weiterhin auf Magnetband Speicherung als anwendungs- Sparkonto AP+Dateiverw spezifische Daten in Dateien Zugriffsmechanismen in Anwendung eingebettet Batch dominiert, erste online Versuche Hypotheken AP+Dateiverw Strukturen: Sätze (fest + variabel) Zugriff: sequentiell, direkt (hash), index-sequentiell 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 301 Sparkonto Daten Hypotheken Daten Mittelalter (1965-1970) Datenzugriffscode wird aus Anwendung herausgenommen Sekundärindizes Synchronisierung (falls vorhanden) im AP Keine Inhaltskontrolle (Redundanz) Keine Datenunabhängigkeit Kein Recovery / Backup Zugriffskontrolle auf Girokonto Appl. & Dateiverw. Zugriffsmech. Sparkonto Appl. & Dateiverw. Zugriffsmech. Daten Dateiebene 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 302 Daten Standard DBMS (1970 +) Strukturen Feste / variable Datensätze (Records, Tupel) Zugriff Sequentiell, verschiedene Indexmethoden, batch / online navigierend / mengenorientiert Inhaltskontrolle durch Schema Redundanz Integrität (Format, key-uniqueness, referentielle Integrität) Transaktionsverhalten (ACID) Nebenläufigkeit, Recovery 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 303 Standard DBMS (1970 +) Datenunabhängigkeit (3 Schema Architektur) Extern Benutzersicht Girokonto Konzeptuell Zugriff Globale Sicht Intern DBMS Synchron. Sparkonto Physische Abbildung Sicherheit Konsistenz Kredite 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 304 Giro SparKreditdaten Objektorientierte DBS (1985+) Strukturen Elementare und komplexe Objekte mit Typ / Klassen-Hierarchie Objekte kapseln Datenstrukturen und objektspezifische Ops. Inhaltskontrolle Redundanz und Konsistenz durch Vererbung und Typhierarchie Bei Missbrauch unkontrollierte Redundanz durch benutzerspezifizierte Objekte Datenunabhängigkeit Kapselung und einheitliche externe Schnittstelle Kontrolle mehr durch Nutzer und weniger durch DBA Nicht-standard Anwendungen (CAD, GIS) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 305 Objekt-relationale DBMS (1995 +) Kombination von Stärken der relationalen DBMS mit OOEigenschaften SQL, Optimierung, einfache Datenstrukturen, Robustheit Benutzerdefinierte Typen, komplexe Objekte, benutzerdefinierte Funktionen, Extender / Datablades / Cartridges Existierende Datenbestände können weiterbenutzt werden Einbindung von Legacy-Systemen 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 306 XML-basierte Systeme (1998 +) XML bringt Struktur und (etwas) Semantik in Web-basierte Daten XML ist Untermenge von SGML (= Metasprache) HTML (= Anwendung) Speicherung von XML Dokumenten in der Datenbank Tabellen BLOBS (Binary Large Objects) Besondere Speicherstrukturen Kombinierter Zugriff auf strukturierte (tabellarische) Daten und XML Dokumente Kombination aus SQL und XML Anfragestandards 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 307 Client / Server und Verteilte DBS 2-tier Client / Server Alle Daten beim Server gespeichert, Server kontrolliert TX, Client nur für Präsentation 3-tier Client / Server Daten bei (mehreren) Servern, Clients für Präsentation, TP Monitor kontrolliert Ablauf der Transaktion, load-balancing, asynchrone Transaktionsbearbeitung 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 308 Client / Server und Verteilte DBS Homogene verteilte DBS Volle DBMS Funktionalität an jedem Knoten, Verteilung für Benutzer transparent Alle Knoten stark gekoppelt und unter Kontrolle eines DBMS, alle TX über gemeinsames DBMS, synchrones 2PC Heterogene verteilte DBS Knoten benutzen heterogene DBMS, lokale TX möglich Schwache Kopplung, gut für Zugriff, bei Update schwer Konsistenz zu wahren 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 309 Small Footprint, alternativer Speicher(2002 +) Datenbanken auf Kleinstrechnern PDA, Chipkarten, Mobiltelefon, Wireless Sensor Node, usw. Datenspeicher besteht aus alternativen Speichermedien (Flash/SSD, PCM) Asymmetrisches Schreiben/Lesen 2-3 Gößenordnungen schneller als Magnetplatte Parallelität weniger wichtig Neue DBMS-Architekturen Nebenläufigkeit (Concurrency Control) Recovery Indexing Optimierung 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 310 Streaming Data Cyberphysical Systems Daten werden durch Sensorik erfasst (keine menschliche Intervention Daten „fließen“ Filter statt Queries Definition von Fenstern (windows) Aggregieren von Daten in Datenströmen Asynchrone Speicherung Umkehrung der typischen Datenzugriffe query Data DB result Data result Data DB query 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 311 Filter Agg. DB 2002+ Hadoop, MapReduce and NoSQL RDBMS MapReduce Größe GB – TB TB – PB Zugriff Interaktiv & Batch Batch Update Wiederholt lesen/schreiben Einmaliges Schreiben, Wiederholtes Lesen Struktur Statisches Schema Dynamisches Schema Integrität hoch niedrig Skalierbarkeit linear linear 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 312 Graphendatenbanken Daten und deren Beziehungen werden als gerichteter Graph dargestellt • Knoten im Graphen sind typischerweise Subjekte/Objekte • Kanten sind die Beziehungen zwischen den Knoten liebt Bob Alice kennt kennt hasst Ted liebt Carol (liebt, Bob, Alice) (liebt, Ted, Carol) (liebt, Carol, Ted) (hasst, Alice, Carol) (kennt, Bob, Carol) (kennt, Bon, Ted) liebt 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 313 Column Stores • Herkömmliche Datenbanksysteme speichern die Daten reihenweise (als Records in den Seiten des Plattenspeichers) • Zugriff auf ein Attribut in vielen Tupeln ist ineffizient • Data Warehousing Aggregierung aller Werte eines Attributs (max, avg, etc.) • 10 Attribute, wollen Durchschnittswert von einem Attribute • 90% Ersparnis gegenüber zeilenweise Speicherung (ein Plattenzugriff bringt mehr und nur relevante Werte in den Hauptspeicher) • Leichter zu komprimieren • Tupel können über Join wieder zusammengefügt werden (effizient weil positionsbasiert) 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 314 Hauptspeicherdatenbanken • Billiger Hauptspeicher ermöglicht für viele Anwendungen die gesamte Datenbank im Hauptspeicher zu halten • Geschwindigkeit • Keine Kontextwechsel • Serielle Ausführung von Transaktionen dadurch kein Overhead (Sperrenverwaltung), bei vielen Prozessoren andere CC Methoden • Müssen aus Sicherheitsgründen physikalische Datenbank auf nicht- flüchtigem Speicher halten (asynchron) • Recovery (einlesen von Back-up) sehr langsam, daher Spiegelung mit hot-standby 12.06.2015 | Fachbereich Informatik | Datenbanken und Verteilte Systeme | Kanonik DKE | 315