Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
VL DatenbanksystemeWintersemester 2019/2020
Prof. Dr.-Ing. Kai-Uwe Sattler1 Prof. Dr. Gunter Saake2
Letzte Änderung: Okt. 20181TU IlmenauFG Datenbanken & Informationssysteme
2Universität MagdeburgInstitut für Technische & Betriebliche Informationssysteme
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–1
Zugrundeliegendes Lehrbuch
G. Saake; K. Sattler; A. Heuer:Datenbanken — Konzepte undSprachen
6. Auflage, mitp-Verlag, 2018
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–2
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte
2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen
3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell
4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf
5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie
6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL
7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül
8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger
9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle
10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken
11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Überblick
1. Was sind Datenbanken – Grundlegende Konzepte2. Relationale Datenbanken – Daten als Tabellen3. Datenbankentwurf im ER-Modell4. Relationaler DB-Entwurf5. Relationale Entwurfstheorie6. Die Datenbanksprache SQL7. Grundlagen von Anfragen: Algebra & Kalkül8. Transaktionen, Integrität und Trigger9. Sichten und Zugriffskontrolle10. NoSQL-Datenbanken11. Anwendungsprogrammierung mit Datenbanken
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–3
Weitere Literatur
G. Vossen.Datenbankmodelle, Datenbanksprachen undDatenbankmanagement-Systeme.5. Auflage, Oldenbourg-Verlag, München, 2008
R. Elmasri, S.B. Navathe.Grundlagen von Datenbanksystemen.3. Auflage, Pearson Studium, 2002
A. Kemper, A. Eickler.Datenbanksysteme. Eine Einführung.7. Auflage, Oldenbourg-Verlag, München, 2009
A. Heuer, G. Saake, K. Sattler.Datenbanken kompakt2. Aufl., mitp-Verlag, Bonn, August 2003
G. Lausen.Datenbanken – Grundlagen und XML-TechnologienSpektrum Akademischer Verlag, 2005
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–4
Teil I
Was sind Datenbanken?
Was sind Datenbanken?
1. Überblick & Motivation
2. Architekturen
3. Einsatzgebiete
4. Historisches
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1
Was sind Datenbanken?
1. Überblick & Motivation
2. Architekturen
3. Einsatzgebiete
4. Historisches
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1
Was sind Datenbanken?
1. Überblick & Motivation
2. Architekturen
3. Einsatzgebiete
4. Historisches
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1
Was sind Datenbanken?
1. Überblick & Motivation
2. Architekturen
3. Einsatzgebiete
4. Historisches
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1
Lernziele für heute …
• Motivation für den Einsatz vonDatenbanksystemen
• Kenntnis grundlegender Architekturen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–2
Lernziele für heute …
• Motivation für den Einsatz vonDatenbanksystemen
• Kenntnis grundlegender Architekturen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–2
Überblick & Motivation
Was sind Datenbanken?
• Daten = logisch gruppierte Informationseinheiten• Bank = …
• Die Sicherheit vor Verlusten ist eineHauptmotivation, etwas „auf die Bankzu bringen“.
• Eine Bank bietet Dienstleistungen fürmehrere Kunden an, um effizientarbeiten zu können.
• Eine Datenbank hat die (langfristige)Aufbewahrung von Daten als Aufgabe.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–3
Anwendungsbeispiele
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–4
Bedeutung der Datenverwaltung
• Daten als das Öl des 21. Jahrhunderts (Toonders @Wired2014)
• Ash Ashutosh (CEO Actifio):
• das größte Hotelunternehmen (AirBnB) hat keine Hotelsbzw. Zimmer
• das größte Taxiunternehmen (Uber) hat keine eigenenTaxis!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–5
Bedeutung der Datenverwaltung
• Daten als das Öl des 21. Jahrhunderts (Toonders @Wired2014)
• Ash Ashutosh (CEO Actifio):
• das größte Hotelunternehmen (AirBnB) hat keine Hotelsbzw. Zimmer
• das größte Taxiunternehmen (Uber) hat keine eigenenTaxis!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–5
Bedeutung der Datenverwaltung
• Daten als das Öl des 21. Jahrhunderts (Toonders @Wired2014)
• Ash Ashutosh (CEO Actifio):• das größte Hotelunternehmen (AirBnB) hat keine Hotelsbzw. Zimmer
• das größte Taxiunternehmen (Uber) hat keine eigenenTaxis!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–5
Bedeutung der Datenverwaltung
• Daten als das Öl des 21. Jahrhunderts (Toonders @Wired2014)
• Ash Ashutosh (CEO Actifio):• das größte Hotelunternehmen (AirBnB) hat keine Hotelsbzw. Zimmer
• das größte Taxiunternehmen (Uber) hat keine eigenenTaxis!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–5
Wie verwaltet man Datenbanken?
Ohne Datenbanken
• jedes Anwendungssystem verwaltet seine eigenen Daten• Daten sind mehrfach gespeichert redundant• Probleme
• Verschwendung von Speicherplatz• „Vergessen“ von Änderungen• keine zentrale, „genormte“ Datenhaltung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–6
Probleme der Datenredundanz
• Andere Softwaresysteme können große Mengen von Datennicht effizient verarbeiten
• Mehrere Benutzer oder Anwendungen können nichtparallel auf den gleichen Daten arbeiten, ohne sich zustören
• Anwendungsprogrammierer / Benutzer könnenAnwendungen nicht programmieren / benutzen, ohne
• interne Darstellung der Daten• Speichermedien oder Rechner
zu kennen (Datenunabhängigkeit nicht gewährleistet)• Datenschutz und Datensicherheit sind nicht gewährleistet
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–7
Idee: Datenintegration durch Datenbanksysteme
Datenbank
...
DBMS
Anwendung Anwendung
strukturierter, von DBMSverwalteter Datenbestand
Datenbankmanagementsystem =Software zur Verwaltung von Datenbanken
DBS = Datenbanksystem
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–8
Motivation
• Datenbank-systeme sindHerzstück heutigerIT-Infrastrukturen
• …allgegenwärtig
• Datenbank-spezialisten sindgefragt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–9
Motivation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–10
Fragestellungen
1. Wie organisiert (modelliert und nutzt) man Daten?2. Wie werden Daten dauerhaft verlässlich gespeichert?3. Wie kann man riesige Datenmengen (≥ Terabytes) effizientverarbeiten?
4. Wie können viele Nutzer (≥ 10.000) gleichzeitig mit denDaten arbeiten?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–11
Architekturen
Prinzipien: Die neun Codd’schen Regeln
1. Integration: einheitliche, nichtredundanteDatenverwaltung
2. Operationen: Speichern, Suchen, Ändern3. Katalog: Zugriffe auf Datenbankbeschreibungen im DataDictionary
4. Benutzersichten5. Integritätssicherung: Korrektheit des Datenbankinhalts6. Datenschutz: Ausschluss unauthorisierter Zugriffe7. Transaktionen: mehrere DB-Operationen alsFunktionseinheit
8. Synchronisation: parallele Transaktionen koordinieren9. Datensicherung: Wiederherstellung von Daten nachSystemfehlern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–12
Datenunabhängigkeit und Schemata
• Basierend auf DBMS-Grobarchitektur• Entkopplung von Benutzer- und Implementierungssicht• Ziele u.a.:
• Trennung von Modellierungssicht und internerSpeicherung
• Portierbarkeit• Tuning vereinfachen• standardisierte Schnittstellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–13
Schemaarchitektur
• Zusammenhang zwischen• Konzeptuellem Schema (Ergebnis der Datendefinition)• Internem Schema (Festlegung der Dateiorganisationen undZugriffspfade)
• Externen Schemata (Ergebnis der Sichtdefinition)• Anwendungsprogrammen (Ergebnis derAnwendungsprogrammierung)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–14
Schemaarchitektur /2
• Trennung Schema — Instanz• Schema (Metadaten, Datenbeschreibungen)• Instanz (Anwenderdaten, Datenbankzustand oder-ausprägung)
• Datenbankschema besteht aus• internem, konzeptuellem, externen Schemata und denAnwendungsprogrammen
• im konzeptuellen Schema etwa:• Strukturbeschreibungen• Integritätsbedingungen• Autorisierungsregeln (pro Benutzer für erlaubteDB-Zugriffe)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–15
Schemaarchitektur /3
Konzeptuelles Schema
externesSchema 1
externesSchema N
internesSchema
...
Anfragebearbeitung
Datendarstellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–16
Datenunabhängigkeit /2
• Stabilität der Benutzerschnittstelle gegen Änderungen• physisch: Änderungen der Dateiorganisationen undZugriffspfade haben keinen Einfluss auf das konzeptuelleSchema
• logisch: Änderungen am konzeptuellen und gewissenexternen Schemata haben keine Auswirkungen auf andereexterne Schemata und Anwendungsprogramme
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–17
Datenunabhängigkeit /3
• mögliche Auswirkungen von Änderungen amkonzeptuellen Schema:
• eventuell externe Schemata betroffen (Ändern vonAttributen)
• eventuell Anwendungsprogramme betroffen(Rekompilieren der Anwendungsprogramme, eventuellÄnderungen nötig)
• nötige Änderungen werden jedoch vom DBMS erkannt undüberwacht
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–18
Anwendungsbeispiel: Mitfahrgelegenheit
• Angebote vonMitfahrgelegenheiten
• Wann? Von wo? Wohin?Wer? Plätze?
• Kontaktdaten• Reservierungsmöglichkeiten
CC-BY-2.0: Luo Shaoyang
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–19
Ebenen-Architektur am Beispiel
• Konzeptuelle Sicht: Darstellung in Tabellen (Relationen)
Fahrer FahrerID Name Telefon103 Lilo Pause 01234104 Just Vorfan 01246105 Heiko Heizer 01756
Mitfahrangebot ANr Abfahrt Ankunft Zeit FahrerID1014 Ilmenau Erfurt Freitag 10:00 1031015 Magdeburg Halle Freitag 15:00 1041016 Magdeburg Leipzig Freitag 15:00 1041021 Magdeburg Ilmenau Freitag 14:00 1051025 Ilmenau Jena Freitag 10:00 103
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–20
Ebenen-Architektur am Beispiel /2
• Externe Sicht: Daten in einer flachen Relation
ANr Abfahrt Ankunft Zeit Fahrer1014 Ilmenau Erfurt Freitag 10:00 Lilo Pause1015 Magdeburg Halle Freitag 15:00 Just Vorfan1016 Magdeburg Leipzig Freitag 15:00 Just Vorfan1021 Magdeburg Ilmenau Freitag 14:00 Heiko Heizer1025 Ilmenau Jena Freitag 10:00 Lilo Pause
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–21
Ebenen-Architektur am Beispiel /3
• Externe Sicht: Daten in einer hierarchisch aufgebautenRelation
Fahrer MitfahrangebotAbfahrt Ankunft Zeit
Lilo Pause Ilmenau Erfurt Freitag 10:00Jena Freitag 10:00
Just Vorfan Magdeburg Halle Freitag 15:00Leipzig Freitag 15:00
Heiko Heizer Magdeburg Ilmenau Freitag 14:00
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–22
Ebenen-Architektur am Beispiel /4
• Interne Darstellung
1000 1500 2000
1014 Ilmenau Erfurt
1015 Magdeburg Halle
Freitag 10:00 ….Freitag 15:00 …
Überlauf-bereich fürDatensätze
teilweisesSpeichern der
Datensätzeim Baum
BaumzugriffüberID
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–23
System-Architekturen
• Beschreibung der Komponenten eines Datenbanksystems• Standardisierung der Schnittstellen zwischenKomponenten
• Architekturvorschläge• ANSI-SPARC-Architektur Drei-Ebenen-Architektur
• Fünf-Schichten-Architektur beschreibt Transformationskomponenten im DetailVorlesung „Datenbank-Implementierungstechniken“
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–24
ANSI-SPARC-Architektur
• ANSI: American National Standards Institute• SPARC: Standards Planning and Requirement Committee• Vorschlag von 1978• Im Wesentlichen Grobarchitektur verfeinert
• Interne Ebene / Betriebssystem verfeinert• Mehr Interaktive und Programmier-Komponenten• Schnittstellen bezeichnet und normiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–25
ANSI-SPARC-Architektur /2
Data Dictionary
Optimierer Auswertung PlattenzugriffAnfragen
Updates
SichtdefinitionDatendefinition
Datei-organisation
DB-Operationen
Einbettung
Masken
P1
Pn
...
Externe Ebene Konzeptuelle Ebene Interne Ebene
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–26
Klassifizierung der Komponenten
• Definitionskomponenten: Datendefinition,Dateiorganisation, Sichtdefinition
• Programmierkomponenten: DB-Programmierung miteingebetteten DB-Operationen
• Benutzerkomponenten: Anwendungsprogramme, Anfrageund Update interaktiv
• Transformationskomponenten: Optimierer, Auswertung,Plattenzugriffssteuerung
• Data Dictionary (Datenwörterbuch): Aufnahme der Datenaus Definitionskomponenten, Versorgung der anderenKomponenten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–27
Fünf-Schichten-Architektur: Verfeinerung der Transformation
Datensystem
Zugriffssystem
Speichersystem
Pufferverwaltung
Betriebssystem
MengenorientierteSchnittstelle
SatzorientierteSchnittstelle
InterneSatzschnittstelle
Systempuffer-schnittstelle
Datei-schnittstelle
Geräteschnittstelle
Externspeicher
ÜbersetzungZugriffspfadwahl
Logische Zugriffspfade, Schemakatalog, Sortierung,Transaktionsverwaltung
Speicherungsstrukturen, Zugriffs-pfadverwaltung, Sperr-verwaltung, Logging, Recovery
Systempufferverwaltung, Seitenersetzung, Seitenzuordnung
Externspeicherverwaltung,Speicherzuordnung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–28
Anwendungsarchitekturen
• Architektur von Datenbankanwendungen typischerweiseauf Basis des Client-Server-Modells: Server ≡Datenbanksystem
1. Anforderung
3. Antwort
2. Bearbeitung
Client(Dienstnehmer)
Server(Diensterbringer)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–29
Anwendungsarchitekturen /2
• Aufteilung der Funktionalitäten einer Anwendung• Präsentation und Benutzerinteraktion• Anwendungslogik („Business“-Logik)• Datenmanagementfunktionen (Speichern, Anfragen, …).
Benutzerschnittstelle
Anwendungslogik
DB-Schnittstelle
DB-Server
Client
Zwei-Schichten-Architektur
Benutzerschnittstelle
Anwendungslogik
DB-Schnittstelle
Applikations-server
DB-Server
Client
Drei-Schichten-ArchitekturSattler/Saake | VL Datenbanksysteme | 22. September 2019 1–30
Einsatzgebiete
Einige konkrete Systeme
• (Objekt-)Relationale DBMS• Oracle12c, IBM DB2 V.11, Microsoft SQL Server 2016, SAPHANA
• MySQL (www.mysql.org), PostgreSQL(www.postgresql.org)
• Pseudo-DBMS• MS Access
• NoSQL-Systeme• Graph-Datenbanksysteme (InfiniteGraph, neo4j),Dokument-Datenbanken (MongoDB), Key-Value-Stores, ....
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–31
Einsatzgebiete
• Klassische Einsatzgebiete:• viele Objekte (15000 Bücher, 300 Benutzer, 100Ausleihvorgänge pro Woche, …)
• wenige Objekttypen (BUCH, BENUTZER, AUSLEIHUNG)• etwa Buchhaltungssysteme, Auftragserfassungssysteme,Bibliothekssysteme, …
• Aktuelle Anwendungen:• E-Commerce, entscheidungsunterstützende Systeme (DataWarehouses, OLAP), NASA’s Earth Observation System(Petabyte-Datenbanken), Data Mining
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–32
Datenbankgrößen
eBay Data Warehouse 10 PB (≈ 10 · 1015 Bytes)Teradata DBMS, 72 Knoten, 10.000 Nutzer,mehrere Millionen Anfragen/Tag
WalMart Data Warehouse 2,5 PBTeradata DBMS, NCR MPP-Hardware;Produktinfos (Verkäufe etc.) von 2.900 Märkten;50.000 Anfragen/Woche
Facebook 400 TBx.000 MySQL-ServerHadoop/Hive, 610 Knoten, 15 TB/Tag
US Library of Congress 10-20 TBnicht digitalisiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–33
Historisches
Entwicklungslinien: 60er Jahre
• Anfang 60er Jahre: elementare Dateien,anwendungsspezifische Datenorganisation(geräteabhängig, redundant, inkonsistent)
• Ende 60er Jahre: Dateiverwaltungssysteme (SAM, ISAM) mitDienstprogrammen (Sortieren) (geräteunabhängig, aberredundant und inkonsistent)
• DBS basierend auf hierarchischem Modell,Netzwerkmodell
• Zeigerstrukturen zwischen Daten• Schwache Trennung interne / konzeptuelle Ebene• Navigierende DML• Trennung DML / Programmiersprache
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–34
Entwicklungslinien: 70er und 80er Jahre
• 70er Jahre: Datenbanksysteme (Geräte- undDatenunabhängigkeit, redundanzfrei, konsistent)
• Relationale Datenbanksysteme• Daten in Tabellenstrukturen• 3-Ebenen-Konzept• Deklarative DML• Trennung DML / Programmiersprache
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–35
Historie von RDBMS
• 1970: Ted Codd (IBM)→ Relationenmodell alskonzeptionelle Grundlage relationaler DBS
• 1974: System R (IBM)→ erster Prototyp eines RDBMS• zwei Module: RDS, RSS; ca. 80.000 LOC (PL/1, PL/S,Assembler), ca. 1,2 MB Codegröße
• Anfragesprache SEQUEL• erste Installation 1977
• 1975: University of California at Berkeley (UCB)→ Ingres• Anfragesprache QUEL• Vorgänger von Postgres, Sybase, …
• 1979: Oracle Version 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–36
Entwicklungslinien: (80er und) 90er Jahre
• Wissensbanksysteme• Daten in Tabellenstrukturen• Stark deklarative DML, integrierteDatenbankprogrammiersprache
• Objektorientierte Datenbanksysteme• Daten in komplexeren Objektstrukturen (Trennung Objektund seine Daten)
• Deklarative oder navigierende DML• Oft integrierte Datenbankprogrammiersprache• Oft keine vollständige Ebenentrennung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–37
Entwicklungslinien: heute
• Neue Hardwarearchitekturen• Multicore-Prozessoren, Hauptspeicher im TB-Bereich:In-Memory-Datenbanksysteme (z.B. SAP HANA)
• Unterstützung für spezielle Anwendungen• Cloud-Datenbanken: Hosting von Datenbanken, SkalierbareDatenmanagementlösungen (Amazon RDS, Microsoft Azure)
• Datenstromverarbeitung: Online-Verarbeitung vonLive-Daten, z.B. Börseninfos, Sensordaten, RFID-Daten,…(StreamBase, MS StreamInsight, IBM Infosphere Streams)
• Big Data: Umgang mit Datenmengen im PB-Bereich durchhochskalierbare, parallele Verarbeitung, Datenanalyse(Hadoop, Hive, Google Spanner & F1, …)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–38
Entwicklungslinien: NoSQL
• NoSQL-Datenbanken („Not only SQL“):• nicht-relationale Datenbanken, flexibles Schema(dokumentenzentriert)
• „leichtgewichtig“ durch Weglassen vonSQL-Funktionalitäten wie Transaktionen, mächtigedeklarative Anfragesprachen mit Verbunden etc.
• Beispiele: CouchDB, MongoDB, Cassandra, …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–39
Trends
• Nutzergenerierte Inhalte, z.B. Google:• Verarbeitung von 20 PB täglich• 15h Video-Upload auf YouTube in jeder Minute• Lesen von 20 PB würde 12 Jahre benötigen bei 50MB/s-Festplatte
• Linked Data und Data Web• Bereitstellung, Austausch und Verknüpfung vonstrukturierten Daten im Web
• ermöglicht Abfrage (mit Anfragesprachen wie SPARQL) undWeiterverarbeitung
• Beispiele: DBpedia, GeoNames
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–40
Zusammenfassung
• Motivation für Einsatz von Datenbanksystemen• Codd’sche Regeln• 3-Ebenen-Schemaarchitektur & Datenunabhängigkeit• Einsatzgebiete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–41
Kontrollfragen
• Welchen Vorteil bieten Datenbanksystemegegenüber einer anwendungsspezifischenSpeicherung von Daten?
• Was versteht man unterDatenunabhängigkeit und wie wird sieerreicht?
• In welchen Bereichen kommenDatenbanksysteme zum Einsatz?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–42
Kontrollfragen
• Welchen Vorteil bieten Datenbanksystemegegenüber einer anwendungsspezifischenSpeicherung von Daten?
• Was versteht man unterDatenunabhängigkeit und wie wird sieerreicht?
• In welchen Bereichen kommenDatenbanksysteme zum Einsatz?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–42
Kontrollfragen
• Welchen Vorteil bieten Datenbanksystemegegenüber einer anwendungsspezifischenSpeicherung von Daten?
• Was versteht man unterDatenunabhängigkeit und wie wird sieerreicht?
• In welchen Bereichen kommenDatenbanksysteme zum Einsatz?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–42
Teil II
Relationale Datenbanken – Daten alsTabellen
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Relationale Datenbanken – Daten als Tabellen
1. Relationen für tabellarische Daten
2. SQL-Datendefinition
3. Grundoperationen: Die Relationenalgebra
4. SQL als Anfragesprache
5. Änderungsoperationen in SQL
6. Anwendungsbeispiel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–1
Lernziele für heute …
• Grundverständnis zur Strukturrelationaler Datenbanken
• Kenntnis der Basisoperationenrelationaler Anfragesprachen
• elementare Fähigkeiten in der Anwendungvon SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–2
Lernziele für heute …
• Grundverständnis zur Strukturrelationaler Datenbanken
• Kenntnis der Basisoperationenrelationaler Anfragesprachen
• elementare Fähigkeiten in der Anwendungvon SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–2
Lernziele für heute …
• Grundverständnis zur Strukturrelationaler Datenbanken
• Kenntnis der Basisoperationenrelationaler Anfragesprachen
• elementare Fähigkeiten in der Anwendungvon SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–2
Relationen für tabellarische Daten
Relationenmodell
Konzeptuell: Datenbank = Menge von Tabellen (= Relationen)
WEINE WeinID Name Farbe Jahrgang Weingut1042 La Rose Grand Cru Rot 1998 Château ...2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek3478 Pinot Noir Rot 1999 Helena4711 Riesling Reserve Weiß 1999 Müller4961 Chardonnay Weiß 2002 Bighorn
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–3
Relationenmodell
Konzeptuell: Datenbank = Menge von Tabellen (= Relationen)WEINE WeinID Name Farbe Jahrgang Weingut
1042 La Rose Grand Cru Rot 1998 Château ...2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek3478 Pinot Noir Rot 1999 Helena4711 Riesling Reserve Weiß 1999 Müller4961 Chardonnay Weiß 2002 Bighorn
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–3
Relationenmodell
Konzeptuell: Datenbank = Menge von Tabellen (= Relationen)WEINE WeinID Name Farbe Jahrgang Weingut
1042 La Rose Grand Cru Rot 1998 Château ...2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek3478 Pinot Noir Rot 1999 Helena4711 Riesling Reserve Weiß 1999 Müller4961 Chardonnay Weiß 2002 Bighorn
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–3
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema
• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation• Eine Spaltenüberschrift: Attribut• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation
• Eine Spaltenüberschrift: Attribut• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation• Eine Spaltenüberschrift: Attribut
• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation• Eine Spaltenüberschrift: Attribut• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation• Eine Spaltenüberschrift: Attribut• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Darstellung von Relationen und Begriffe
• „Tabellenkopf“: Relationenschema• Eine Zeile der Tabelle: Tupel; Menge aller Einträge: Relation• Eine Spaltenüberschrift: Attribut• Ein Eintrag: Attributwert
A1 ... An
...
...
...
R
Relationenname Attribut
Tupel Relation
Relationenschema
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–4
Integritätsbedingungen: Schlüssel
• Attribute einer Spalte identifizieren eindeutiggespeicherte Tupel: Schlüsseleigenschaft
• etwa Weingut für Tabelle ERZEUGER
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
• auch Attributkombinationen können Schlüssel sein!• Schlüssel können durch Unterstreichen gekennzeichnetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–5
Integritätsbedingungen: Schlüssel
• Attribute einer Spalte identifizieren eindeutiggespeicherte Tupel: Schlüsseleigenschaft
• etwa Weingut für Tabelle ERZEUGER
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
• auch Attributkombinationen können Schlüssel sein!• Schlüssel können durch Unterstreichen gekennzeichnetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–5
Integritätsbedingungen: Schlüssel
• Attribute einer Spalte identifizieren eindeutiggespeicherte Tupel: Schlüsseleigenschaft
• etwa Weingut für Tabelle ERZEUGER
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
• auch Attributkombinationen können Schlüssel sein!• Schlüssel können durch Unterstreichen gekennzeichnetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–5
Integritätsbedingungen: Schlüssel
• Attribute einer Spalte identifizieren eindeutiggespeicherte Tupel: Schlüsseleigenschaft
• etwa Weingut für Tabelle ERZEUGERERZEUGER Weingut Anbaugebiet Region
Creek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
• auch Attributkombinationen können Schlüssel sein!
• Schlüssel können durch Unterstreichen gekennzeichnetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–5
Integritätsbedingungen: Schlüssel
• Attribute einer Spalte identifizieren eindeutiggespeicherte Tupel: Schlüsseleigenschaft
• etwa Weingut für Tabelle ERZEUGERERZEUGER Weingut Anbaugebiet Region
Creek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
• auch Attributkombinationen können Schlüssel sein!• Schlüssel können durch Unterstreichen gekennzeichnetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–5
Integritätsbedingungen: Fremdschlüssel
• Schlüssel einer Tabelle können in einer anderen (oderderselben!) Tabelle als eindeutige Verweise genutztwerden: Fremdschlüssel, referenzielle Integrität
• etwa Weingut als Verweise auf ERZEUGER• ein Fremdschlüssel ist ein Schlüssel in einer „fremden“Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–6
Integritätsbedingungen: Fremdschlüssel
• Schlüssel einer Tabelle können in einer anderen (oderderselben!) Tabelle als eindeutige Verweise genutztwerden: Fremdschlüssel, referenzielle Integrität
• etwa Weingut als Verweise auf ERZEUGER
• ein Fremdschlüssel ist ein Schlüssel in einer „fremden“Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–6
Integritätsbedingungen: Fremdschlüssel
• Schlüssel einer Tabelle können in einer anderen (oderderselben!) Tabelle als eindeutige Verweise genutztwerden: Fremdschlüssel, referenzielle Integrität
• etwa Weingut als Verweise auf ERZEUGER• ein Fremdschlüssel ist ein Schlüssel in einer „fremden“Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–6
Fremdschlüssel /2
WEINE WeinID Name Farbe Jahrgang Weingut→ ERZEUGER1042 La Rose ... Rot 1998 Château La Rose2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek3478 Pinot Noir Rot 1999 Helena4711 Riesling ... Weiß 1999 Müller4961 Chardonnay Weiß 2002 Bighorn
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–7
SQL-Datendefinition
Die Anweisung create table
create table basisrelationenname (spaltenname1 wertebereich1 [not null],…spaltennamek wertebereichk [not null])
• Wirkung dieses Kommandos ist sowohl• die Ablage des Relationenschemas im Data Dictionary, alsauch
• die Vorbereitung einer „leeren Basisrelation“ in derDatenbank
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–8
Die Anweisung create table
create table basisrelationenname (spaltenname1 wertebereich1 [not null],…spaltennamek wertebereichk [not null])
• Wirkung dieses Kommandos ist sowohl• die Ablage des Relationenschemas im Data Dictionary, alsauch
• die Vorbereitung einer „leeren Basisrelation“ in derDatenbank
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–8
Löschen einer Tabelle: drop table
• komplettes Löschen einer Tabelle (Inhalt und Eintrag imData Dictionary)
drop table basisrelationenname
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–9
Mögliche Wertebereiche in SQL
• integer (oder auch integer4, int),• smallint (oder auch integer2),• float(p) (oder auch kurz float),• decimal(p,q) und numeric(p,q) mit jeweils qNachkommastellen,
• character(n) (oder kurz char(n), bei n = 1 auch char)für Zeichenketten (Strings) fester Länge n,
• character varying(n) (oder kurz varchar(n) fürStrings variabler Länge bis zur Maximallänge n,
• bit(n) oder bit varying(n) analog für Bitfolgen, und• date, time bzw. datetime für Datums-, Zeit- undkombinierte Datums-Zeit-Angaben
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–10
Beispiel für create table
create table WEINE (WeinID int primary key,Name varchar(20) not null,Farbe varchar(10),Jahrgang int,Weingut varchar(20))
• primary key kennzeichnet Spalte als Schlüsselattribut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–11
create table mit Fremdschlüssel
create table WEINE (WeinID int,Name varchar(20) not null,Farbe varchar(10),Jahrgang int,Weingut varchar(20),primary key(WeinID),foreign key(Weingut)
references ERZEUGER(Weingut))
• foreign key kennzeichnet Spalte als Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–12
Nullwerte
• not null schließt in bestimmten Spalten Nullwerte alsAttributwerte aus
• Kennzeichnung von Nullwerte in SQL durch null; hier ⊥• null repräsentiert die Bedeutung „Wert unbekannt“,„Wert nicht anwendbar“ oder „Wert existiert nicht“, gehörtaber zu keinem Wertebereich
• null kann in allen Spalten auftauchen, außer inSchlüsselattributen und den mit not nullgekennzeichneten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–13
Nullwerte
• not null schließt in bestimmten Spalten Nullwerte alsAttributwerte aus
• Kennzeichnung von Nullwerte in SQL durch null; hier ⊥
• null repräsentiert die Bedeutung „Wert unbekannt“,„Wert nicht anwendbar“ oder „Wert existiert nicht“, gehörtaber zu keinem Wertebereich
• null kann in allen Spalten auftauchen, außer inSchlüsselattributen und den mit not nullgekennzeichneten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–13
Nullwerte
• not null schließt in bestimmten Spalten Nullwerte alsAttributwerte aus
• Kennzeichnung von Nullwerte in SQL durch null; hier ⊥• null repräsentiert die Bedeutung „Wert unbekannt“,„Wert nicht anwendbar“ oder „Wert existiert nicht“, gehörtaber zu keinem Wertebereich
• null kann in allen Spalten auftauchen, außer inSchlüsselattributen und den mit not nullgekennzeichneten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–13
Nullwerte
• not null schließt in bestimmten Spalten Nullwerte alsAttributwerte aus
• Kennzeichnung von Nullwerte in SQL durch null; hier ⊥• null repräsentiert die Bedeutung „Wert unbekannt“,„Wert nicht anwendbar“ oder „Wert existiert nicht“, gehörtaber zu keinem Wertebereich
• null kann in allen Spalten auftauchen, außer inSchlüsselattributen und den mit not nullgekennzeichneten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–13
Grundoperationen: DieRelationenalgebra
Anfrageoperationen auf Tabellen
• Basisoperationen auf Tabellen, die die Berechnung vonneuen Ergebnistabellen aus gespeichertenDatenbanktabellen erlauben
• Operationen werden zur sogenannten Relationenalgebrazusammengefasst
• Mathematik: Algebra ist definiert durch Wertebereichsowie darauf definierten Operationen→ für Datenbankanfragen entsprechen die Inhalte derDatenbank den Werten, Operationen sind dagegenFunktionen zum Berechnen der Anfrageergebnisse
• Anfrageoperationen sind beliebig kombinierbar undbilden eine Algebra zum „Rechnen mit Tabellen“ – dieRelationenalgebra
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–14
Anfrageoperationen auf Tabellen
• Basisoperationen auf Tabellen, die die Berechnung vonneuen Ergebnistabellen aus gespeichertenDatenbanktabellen erlauben
• Operationen werden zur sogenannten Relationenalgebrazusammengefasst
• Mathematik: Algebra ist definiert durch Wertebereichsowie darauf definierten Operationen→ für Datenbankanfragen entsprechen die Inhalte derDatenbank den Werten, Operationen sind dagegenFunktionen zum Berechnen der Anfrageergebnisse
• Anfrageoperationen sind beliebig kombinierbar undbilden eine Algebra zum „Rechnen mit Tabellen“ – dieRelationenalgebra
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–14
Anfrageoperationen auf Tabellen
• Basisoperationen auf Tabellen, die die Berechnung vonneuen Ergebnistabellen aus gespeichertenDatenbanktabellen erlauben
• Operationen werden zur sogenannten Relationenalgebrazusammengefasst
• Mathematik: Algebra ist definiert durch Wertebereichsowie darauf definierten Operationen→ für Datenbankanfragen entsprechen die Inhalte derDatenbank den Werten, Operationen sind dagegenFunktionen zum Berechnen der Anfrageergebnisse
• Anfrageoperationen sind beliebig kombinierbar undbilden eine Algebra zum „Rechnen mit Tabellen“ – dieRelationenalgebra
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–14
Anfrageoperationen auf Tabellen
• Basisoperationen auf Tabellen, die die Berechnung vonneuen Ergebnistabellen aus gespeichertenDatenbanktabellen erlauben
• Operationen werden zur sogenannten Relationenalgebrazusammengefasst
• Mathematik: Algebra ist definiert durch Wertebereichsowie darauf definierten Operationen→ für Datenbankanfragen entsprechen die Inhalte derDatenbank den Werten, Operationen sind dagegenFunktionen zum Berechnen der Anfrageergebnisse
• Anfrageoperationen sind beliebig kombinierbar undbilden eine Algebra zum „Rechnen mit Tabellen“ – dieRelationenalgebra
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–14
Relationenalgebra: Übersicht
a1 b2
a2 b2
b2 c3
b3 c4
a2 b3 b4 c5
a1 b2
a2 b2
a2 b3
c3
c3
c4
Verbund
Selektion Projektion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–15
Selektion σ
• Selektion: Auswahl von Zeilen einer Tabelle anhand einesSelektionsprädikats
σJahrgang>2000(WEINE)
WeinID Name Farbe Jahrgang Weingut2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek4961 Chardonnay Weiß 2002 Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–16
Selektion σ
• Selektion: Auswahl von Zeilen einer Tabelle anhand einesSelektionsprädikats
σJahrgang>2000(WEINE)
WeinID Name Farbe Jahrgang Weingut2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek4961 Chardonnay Weiß 2002 Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–16
Projektion π
• Projektion: Auswahl von Spalten durch Angabe einerAttributliste
πRegion(ERZEUGER)
RegionSüdaustralienKalifornienBordeauxHessen
• Die Projektion entfernt doppelte Tupel.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–17
Projektion π
• Projektion: Auswahl von Spalten durch Angabe einerAttributliste
πRegion(ERZEUGER)
RegionSüdaustralienKalifornienBordeauxHessen
• Die Projektion entfernt doppelte Tupel.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–17
Natürlicher Verbund ⋊⋉
• Verbund (engl. join): verknüpft Tabellen übergleichbenannte Spalten, indem er jeweils zwei Tupelverschmilzt, falls sie dort gleiche Werte aufweisen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–18
Natürlicher Verbund: Beispiel
WEINE ⋊⋉ ERZEUGER
WeinID Name . . . Weingut Anbaugebiet Region1042 La Rose Grand Cru . . . Ch. La Rose Saint-Emilion Bordeaux2168 Creek Shiraz . . . Creek Barossa Valley Südaustralien3456 Zinfandel . . . Helena Napa Valley Kalifornien2171 Pinot Noir . . . Creek Barossa Valley Südaustralien3478 Pinot Noir . . . Helena Napa Valley Kalifornien4711 Riesling Reserve . . . Müller Rheingau Hessen4961 Chardonnay . . . Bighorn Napa Valley Kalifornien
• Das Weingut „Château La Pointe“ ist im Ergebnisverschwunden Tupel, die keinen Partner finden(dangling tuples), werden eliminiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–19
Natürlicher Verbund: Beispiel
WEINE ⋊⋉ ERZEUGER
WeinID Name . . . Weingut Anbaugebiet Region1042 La Rose Grand Cru . . . Ch. La Rose Saint-Emilion Bordeaux2168 Creek Shiraz . . . Creek Barossa Valley Südaustralien3456 Zinfandel . . . Helena Napa Valley Kalifornien2171 Pinot Noir . . . Creek Barossa Valley Südaustralien3478 Pinot Noir . . . Helena Napa Valley Kalifornien4711 Riesling Reserve . . . Müller Rheingau Hessen4961 Chardonnay . . . Bighorn Napa Valley Kalifornien
• Das Weingut „Château La Pointe“ ist im Ergebnisverschwunden Tupel, die keinen Partner finden(dangling tuples), werden eliminiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–19
Kombination von Operationen
πName,Farbe,Weingut(σJahrgang>2000(WEINE) ⋊⋉σRegion=’Kalifornien’(ERZEUGER))
ergibt
Name Farbe WeingutZinfandel Rot HelenaChardonnay Weiß Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–20
Kombination von Operationen
πName,Farbe,Weingut(σJahrgang>2000(WEINE) ⋊⋉σRegion=’Kalifornien’(ERZEUGER))
ergibt
Name Farbe WeingutZinfandel Rot HelenaChardonnay Weiß Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–20
Umbenennung β
• Anpassung von Attributnamen mittels Umbenennung:
WEINLISTE NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling Reserve
EMPFEHLUNG WeinLa Rose Grand CruRiesling ReserveMerlot SelectionSauvignon Blanc
• Angleichen durch:βName←Wein (EMPFEHLUNG)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–21
Umbenennung β
• Anpassung von Attributnamen mittels Umbenennung:WEINLISTE Name
La Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling Reserve
EMPFEHLUNG WeinLa Rose Grand CruRiesling ReserveMerlot SelectionSauvignon Blanc
• Angleichen durch:βName←Wein (EMPFEHLUNG)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–21
Mengenoperationen
• Vereinigung r1 ∪ r2 von zwei Relationen r1 und r2:Gesamtheit der beiden Tupelmengen
• Attributmengen beider Relationen müssen identisch sein
WEINLISTE ∪ βName←Wein(EMPFEHLUNG)
NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling ReserveMerlot SelectionSauvignon Blanc
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–22
Mengenoperationen
• Vereinigung r1 ∪ r2 von zwei Relationen r1 und r2:Gesamtheit der beiden Tupelmengen
• Attributmengen beider Relationen müssen identisch sein
WEINLISTE ∪ βName←Wein(EMPFEHLUNG)
NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling ReserveMerlot SelectionSauvignon Blanc
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–22
Mengenoperationen /2
• Differenz r1 − r2 eliminiert die Tupel aus der erstenRelation, die auch in der zweiten Relation vorkommen
WEINLISTE− βName←Wein(EMPFEHLUNG)ergibt:
NameCreek ShirazZinfandelPinot Noir
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–23
Mengenoperationen /2
• Differenz r1 − r2 eliminiert die Tupel aus der erstenRelation, die auch in der zweiten Relation vorkommen
WEINLISTE− βName←Wein(EMPFEHLUNG)ergibt:
NameCreek ShirazZinfandelPinot Noir
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–23
Mengenoperationen /3
• Durchschnitt r1 ∩ r2: ergibt die Tupel, die in beidenRelationen gemeinsam vorkommen
WEINLISTE ∩ βName←Wein(EMPFEHLUNG)liefert:
NameLa Rose Grand CruRiesling Reserve
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–24
Mengenoperationen /3
• Durchschnitt r1 ∩ r2: ergibt die Tupel, die in beidenRelationen gemeinsam vorkommen
WEINLISTE ∩ βName←Wein(EMPFEHLUNG)liefert:
NameLa Rose Grand CruRiesling Reserve
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–24
SQL als Anfragesprache
SQL-Anfrage als Standardsprache
• Anfrage an eine einzelne Tabelle
select Name, Farbefrom WEINEwhere Jahrgang = 2002
• SQL hat Multimengensemantik — Duplikate in Tabellenwerden in SQL nicht automatisch unterdrückt!
• Mengensemantik durch distinct
select distinct Name from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–25
SQL-Anfrage als Standardsprache
• Anfrage an eine einzelne Tabelle
select Name, Farbefrom WEINEwhere Jahrgang = 2002
• SQL hat Multimengensemantik — Duplikate in Tabellenwerden in SQL nicht automatisch unterdrückt!
• Mengensemantik durch distinct
select distinct Name from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–25
SQL-Anfrage als Standardsprache
• Anfrage an eine einzelne Tabelle
select Name, Farbefrom WEINEwhere Jahrgang = 2002
• SQL hat Multimengensemantik — Duplikate in Tabellenwerden in SQL nicht automatisch unterdrückt!
• Mengensemantik durch distinct
select distinct Name from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–25
SQL-Anfrage als Standardsprache
• Anfrage an eine einzelne Tabelle
select Name, Farbefrom WEINEwhere Jahrgang = 2002
• SQL hat Multimengensemantik — Duplikate in Tabellenwerden in SQL nicht automatisch unterdrückt!
• Mengensemantik durch distinct
select distinct Name from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–25
Verknüpfung von Tabellen
• Kreuzprodukt als Basisverknüpfung
select *from WEINE, ERZEUGER
• Verbund durch Operator natural join
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–26
Verknüpfung von Tabellen
• Kreuzprodukt als Basisverknüpfung
select *from WEINE, ERZEUGER
• Verbund durch Operator natural join
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–26
Verknüpfung von Tabellen
• Kreuzprodukt als Basisverknüpfung
select *from WEINE, ERZEUGER
• Verbund durch Operator natural join
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–26
Verknüpfung von Tabellen
• Kreuzprodukt als Basisverknüpfung
select *from WEINE, ERZEUGER
• Verbund durch Operator natural join
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–26
Verknüpfung von Tabellen /2
• Verbund alternativ durch Angabe einerVerbundbedingung!
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–27
Verknüpfung von Tabellen /2
• Verbund alternativ durch Angabe einerVerbundbedingung!
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–27
Kombination von Bedingungen
• Ausdruck in Relationenalgebra
πName,Farbe,Weingut(σJahrgang>2000(WEINE) ⋊⋉σRegion=’Kalifornien’(ERZEUGER))
• Anfrage in SQL
select Name, Farbe, WEINE.Weingutfrom WEINE, ERZEUGERwhere Jahrgang > 2000 and
Region = 'Kalifornien' andWEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–28
Kombination von Bedingungen
• Ausdruck in Relationenalgebra
πName,Farbe,Weingut(σJahrgang>2000(WEINE) ⋊⋉σRegion=’Kalifornien’(ERZEUGER))
• Anfrage in SQL
select Name, Farbe, WEINE.Weingutfrom WEINE, ERZEUGERwhere Jahrgang > 2000 and
Region = 'Kalifornien' andWEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–28
Kombination von Bedingungen
• Ausdruck in Relationenalgebra
πName,Farbe,Weingut(σJahrgang>2000(WEINE) ⋊⋉σRegion=’Kalifornien’(ERZEUGER))
• Anfrage in SQL
select Name, Farbe, WEINE.Weingutfrom WEINE, ERZEUGERwhere Jahrgang > 2000 and
Region = 'Kalifornien' andWEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–28
Mengenoperationen in SQL
• Vereinigung in SQL explizit mit union• Differenzbildung durch geschachtelte Anfragen
select *from WINZERwhere Name not in (
select Nachnamefrom KRITIKER)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–29
Mengenoperationen in SQL
• Vereinigung in SQL explizit mit union• Differenzbildung durch geschachtelte Anfragen
select *from WINZERwhere Name not in (
select Nachnamefrom KRITIKER)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–29
Änderungsoperationen in SQL
Änderungsoperationen in SQL
• insert: Einfügen eines oder mehrerer Tupel in eineBasisrelation oder Sicht
• update: Ändern von einem oder mehreren Tupel in einerBasisrelation oder Sicht
• delete: Löschen eines oder mehrerer Tupel aus einerBasisrelation oder Sicht
• Lokale und globale Integritätsbedingungen müssen beiÄnderungsoperationen automatisch vom Systemüberprüft werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–30
Änderungsoperationen in SQL
• insert: Einfügen eines oder mehrerer Tupel in eineBasisrelation oder Sicht
• update: Ändern von einem oder mehreren Tupel in einerBasisrelation oder Sicht
• delete: Löschen eines oder mehrerer Tupel aus einerBasisrelation oder Sicht
• Lokale und globale Integritätsbedingungen müssen beiÄnderungsoperationen automatisch vom Systemüberprüft werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–30
Änderungsoperationen in SQL
• insert: Einfügen eines oder mehrerer Tupel in eineBasisrelation oder Sicht
• update: Ändern von einem oder mehreren Tupel in einerBasisrelation oder Sicht
• delete: Löschen eines oder mehrerer Tupel aus einerBasisrelation oder Sicht
• Lokale und globale Integritätsbedingungen müssen beiÄnderungsoperationen automatisch vom Systemüberprüft werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–30
Änderungsoperationen in SQL
• insert: Einfügen eines oder mehrerer Tupel in eineBasisrelation oder Sicht
• update: Ändern von einem oder mehreren Tupel in einerBasisrelation oder Sicht
• delete: Löschen eines oder mehrerer Tupel aus einerBasisrelation oder Sicht
• Lokale und globale Integritätsbedingungen müssen beiÄnderungsoperationen automatisch vom Systemüberprüft werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–30
Die update-Anweisung
• Syntax:
update basisrelationset attribut1 = ausdruck1
…attributn = ausdruckn[ where bedingung ]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–31
Beispiel für update
WEINE WeinID Name Jahrgang Weingut Preis2168 Creek Shiraz 2003 Creek 7.993456 Zinfandel 2004 Helena 5.992171 Pinot Noir 2001 Creek 10.993478 Pinot Noir 1999 Helena 19.994711 Riesling Reserve 1999 Müller 14.994961 Chardonnay 2002 Bighorn 9.90
update WEINEset Preis = Preis * 1.10where Jahrgang < 2000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–32
Beispiel für update
WEINE WeinID Name Jahrgang Weingut Preis2168 Creek Shiraz 2003 Creek 7.993456 Zinfandel 2004 Helena 5.992171 Pinot Noir 2001 Creek 10.993478 Pinot Noir 1999 Helena 19.994711 Riesling Reserve 1999 Müller 14.994961 Chardonnay 2002 Bighorn 9.90
update WEINEset Preis = Preis * 1.10where Jahrgang < 2000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–32
Beispiel für update: neue Werte
WEINE WeinID Name Jahrgang Weingut Preis2168 Creek Shiraz 2003 Creek 7.993456 Zinfandel 2004 Helena 5.992171 Pinot Noir 2001 Creek 10.993478 Pinot Noir 1999 Helena 21.994711 Riesling Reserve 1999 Müller 16.494961 Chardonnay 2002 Bighorn 9.90
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–33
Weiteres zu update
• Realisierung von Eintupel-Operation mittelsPrimärschlüssel:
update WEINEset Preis = 7.99where WeinID = 3456
• Änderung der gesamten Relation:
update WEINEset Preis = 11
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–34
Weiteres zu update
• Realisierung von Eintupel-Operation mittelsPrimärschlüssel:
update WEINEset Preis = 7.99where WeinID = 3456
• Änderung der gesamten Relation:
update WEINEset Preis = 11
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–34
Weiteres zu update
• Realisierung von Eintupel-Operation mittelsPrimärschlüssel:
update WEINEset Preis = 7.99where WeinID = 3456
• Änderung der gesamten Relation:
update WEINEset Preis = 11
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–34
Weiteres zu update
• Realisierung von Eintupel-Operation mittelsPrimärschlüssel:
update WEINEset Preis = 7.99where WeinID = 3456
• Änderung der gesamten Relation:
update WEINEset Preis = 11
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–34
Die delete-Anweisung
• Syntax:
deletefrom basisrelation[ where bedingung ]
• Löschen eines Tupels in der WEINE-Relation:
delete from WEINEwhere WeinID = 4711
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–35
Die delete-Anweisung
• Syntax:
deletefrom basisrelation[ where bedingung ]
• Löschen eines Tupels in der WEINE-Relation:
delete from WEINEwhere WeinID = 4711
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–35
Die delete-Anweisung
• Syntax:
deletefrom basisrelation[ where bedingung ]
• Löschen eines Tupels in der WEINE-Relation:
delete from WEINEwhere WeinID = 4711
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–35
Weiteres zu delete
• Standardfall ist das Löschen mehrerer Tupel:
delete from WEINEwhere Farbe = 'Weiß'
• Löschen der gesamten Relation:
delete from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–36
Weiteres zu delete
• Standardfall ist das Löschen mehrerer Tupel:
delete from WEINEwhere Farbe = 'Weiß'
• Löschen der gesamten Relation:
delete from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–36
Weiteres zu delete
• Standardfall ist das Löschen mehrerer Tupel:
delete from WEINEwhere Farbe = 'Weiß'
• Löschen der gesamten Relation:
delete from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–36
Weiteres zu delete
• Standardfall ist das Löschen mehrerer Tupel:
delete from WEINEwhere Farbe = 'Weiß'
• Löschen der gesamten Relation:
delete from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–36
Weiteres zu delete /2
• Löschoperationen können zur Verletzung vonIntegritätsbedingungen führen!
• Beispiel: Verletzung der Fremdschlüsseleigenschaft, fallses noch Weine von diesem Erzeuger gibt:
delete from ERZEUGERwhere Anbaugebiet = 'Hessen'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–37
Die insert-Anweisung
• Syntax:
insertinto basisrelation
[ (attribut1, …, attributn) ]values (konstante1, …, konstanten)
• optionale Attributliste ermöglicht das Einfügen vonunvollständigen Tupeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–38
insert-Beispiele
insert into ERZEUGER (Weingut, Region)values ('Wairau Hills', 'Marlborough')
• nicht alle Attribute angegeben Wert des fehlendenAttribut Land wird null
insert into ERZEUGERvalues ('Château Lafitte', 'Medoc', 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–39
insert-Beispiele
insert into ERZEUGER (Weingut, Region)values ('Wairau Hills', 'Marlborough')
• nicht alle Attribute angegeben Wert des fehlendenAttribut Land wird null
insert into ERZEUGERvalues ('Château Lafitte', 'Medoc', 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–39
insert-Beispiele
insert into ERZEUGER (Weingut, Region)values ('Wairau Hills', 'Marlborough')
• nicht alle Attribute angegeben Wert des fehlendenAttribut Land wird null
insert into ERZEUGERvalues ('Château Lafitte', 'Medoc', 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–39
Einfügen von berechneten Daten
• Syntax:
insertinto basisrelation [ (attribut1, …, attributn) ]
SQL-anfrage
• Beispiel:
insert into WEINE (select ProdID, ProdName, 'Rot', ProdJahr,
'Château Lafitte'from LIEFERANT where LName = 'Wein-Kontor' )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–40
Einfügen von berechneten Daten
• Syntax:
insertinto basisrelation [ (attribut1, …, attributn) ]
SQL-anfrage
• Beispiel:
insert into WEINE (select ProdID, ProdName, 'Rot', ProdJahr,
'Château Lafitte'from LIEFERANT where LName = 'Wein-Kontor' )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–40
Anwendungsbeispiel
Mitfahrzentrale
• Welche Daten?• Mitfahrangebote: Wann?Von wo? Wohin? Wer?Plätze?
• Nutzer: Anmeldung,Kontaktdaten
• Reservierung: Wer? WelchesAngebot?
CC-BY-2.0: Luo Shaoyang
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–41
Mitfahrzentrale
• Welche Daten?• Mitfahrangebote: Wann?Von wo? Wohin? Wer?Plätze?
• Nutzer: Anmeldung,Kontaktdaten
• Reservierung: Wer? WelchesAngebot?
CC-BY-2.0: Luo Shaoyang
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–41
Mitfahrzentrale
• Welche Daten?• Mitfahrangebote: Wann?Von wo? Wohin? Wer?Plätze?
• Nutzer: Anmeldung,Kontaktdaten
• Reservierung: Wer? WelchesAngebot?
CC-BY-2.0: Luo Shaoyang
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–41
Mitfahrzentrale: Datenbank
AngebotIDVonNachDatumAnzahl PlätzePreisFahrer
Mitfahrangebot
NameKontakt
Nutzer
MitfahrangebotMitfahrer
Reservierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–42
Mitfahrzentrale: Datenbank in SQL
create table Nutzer (NutzerID varchar(10) primary key,Name varchar(100),Kontakt varchar(500));
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–43
Mitfahrzentrale: Datenbank in SQL /2
create table Mitfahrangebot (AngebotID int primary key,Von varchar(100) not null,Nach varchar(100) not null,Datum date not null,AnzPlaetze int,Preis decimal,Fahrer varchar(10)
references Nutzer(NutzerID));
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–44
Mitfahrzentrale: Datenbank in SQL /3
create table Reservierung (AngebotID int
references Mitfahrangebot(AngebotID),Mitfahrer varchar(10)
references Nutzer(NutzerID));
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–45
Mitfahrzentrale: Anfragen
• Welche Angebote gibt es heute von Ilmenau nach Erfurt?
select * from Mitfahrangebotwhere Von = 'Ilmenau' and Nach = 'Erfurt'
and Datum = date('now');
• Reservierung für eine bestimmte Mitfahrgelegenheit
insert into Reservierung values (1, 'holgi');
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–46
Mitfahrzentrale: Anfragen /2
• Wer will bei mir mitfahren?
select R.Mitfahrerfrom Reservierung R, Mitfahrangebot Mwhere R.AngebotID = M.AngebotID
and M.Fahrer = 'heike';
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–47
Zusammenfassung
• Relationenmodell: Datenbank als Sammlung von Tabellen• Integritätsbedingungen im Relationenmodell• Tabellendefinition in SQL• Relationenalgebra: Anfrageoperatoren• Grundkonzepte von SQL-Anfragen und -Änderungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–48
Kontrollfragen
• Was ist eine Relation?
• Was definiert die Relationenalgebra?• Wie wird eine Realweltobjekt in einerrelationalen Datenbank repräsentiert?
• Wie werden Tabellen in SQL definiert undmanipuliert?
• Was sind Integritätsbedingungen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–49
Kontrollfragen
• Was ist eine Relation?• Was definiert die Relationenalgebra?
• Wie wird eine Realweltobjekt in einerrelationalen Datenbank repräsentiert?
• Wie werden Tabellen in SQL definiert undmanipuliert?
• Was sind Integritätsbedingungen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–49
Kontrollfragen
• Was ist eine Relation?• Was definiert die Relationenalgebra?• Wie wird eine Realweltobjekt in einerrelationalen Datenbank repräsentiert?
• Wie werden Tabellen in SQL definiert undmanipuliert?
• Was sind Integritätsbedingungen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–49
Kontrollfragen
• Was ist eine Relation?• Was definiert die Relationenalgebra?• Wie wird eine Realweltobjekt in einerrelationalen Datenbank repräsentiert?
• Wie werden Tabellen in SQL definiert undmanipuliert?
• Was sind Integritätsbedingungen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–49
Kontrollfragen
• Was ist eine Relation?• Was definiert die Relationenalgebra?• Wie wird eine Realweltobjekt in einerrelationalen Datenbank repräsentiert?
• Wie werden Tabellen in SQL definiert undmanipuliert?
• Was sind Integritätsbedingungen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–49
Teil III
Entity-Relationship-Modell
Entity-Relationship-Modell
1. Datenbankmodelle
2. ER-Modell
3. Weitere Konzepte im ER-Modell
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1
Entity-Relationship-Modell
1. Datenbankmodelle
2. ER-Modell
3. Weitere Konzepte im ER-Modell
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1
Entity-Relationship-Modell
1. Datenbankmodelle
2. ER-Modell
3. Weitere Konzepte im ER-Modell
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1
Lernziele für heute …
• Kenntnis der Konzepte desEntity-Relationship-Modells
• Fähigkeiten zur konzeptuellenModellierung eines Anwendungsbereichs
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–2
Lernziele für heute …
• Kenntnis der Konzepte desEntity-Relationship-Modells
• Fähigkeiten zur konzeptuellenModellierung eines Anwendungsbereichs
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–2
Datenbankmodelle
Grundlagen von Datenbankmodellen
DatenbankmodellEin Datenbankmodell ist ein System von Konzepten zurBeschreibung von Datenbanken. Es legt Syntax und Semantikvon Datenbankbeschreibungen für ein Datenbanksystem fest.
• Datenbankbeschreibungen = Datenbankschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–3
Ein Datenbankmodell legt fest...
1. statische Eigenschaften1.1 Objekte1.2 Beziehungen
inklusive der Standard-Datentypen, die Daten über dieBeziehungen und Objekte darstellen können,
2. dynamische Eigenschaften wie2.1 Operationen2.2 Beziehungen zwischen Operationen,
3. Integritätsbedingungen an3.1 Objekte3.2 Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–4
Datenbankmodelle
• Klassische Datenbankmodelle sind speziell geeignet für• große Informationsmengen mit relativ starrer Struktur und• die Darstellung statischer Eigenschaften undIntegritätsbedingungen (also die Bereiche 1(a), 1(b) und3(a))
• Entwurfsmodelle: (E)ER-Modell, UML, …• Realisierungsmodelle: Relationenmodell, objektorientierteModelle, …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–5
Datenbanken versus Programmiersprachen
Datenbankkonzept Typsystem einerProgrammiersprache
Datenbankmodell TypsystemRelation, Attribut … int, struct …Datenbankschema Variablendeklaration
relation WEIN = (…) var x: int,y: struct Wein
Datenbank WerteWEIN(4961, ’Chardonnay’, 42, ’Cabernet Sauvignon’
’Weiß’, …) 42, ’Cabernet Sauvignon’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–6
Abstraktionsstufen
Modelle Daten Algorithmenabstrakt Entity-Relationship-Modell Struktogrammekonkret Hierarchisches Modell Pascal
Netzwerkmodell C, C++Relationenmodell Java, C#
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–7
Datenbankmodelle im Überblick
HM
NWMRM
SQL
NF2
eNF2
ER
SDM
OEM
UMLORDM
SQL:1999
SQL:2003
ODMG
OODM(C++)
implementierungsnah abstrakt
2005
2000
1990
1980
1970
ab Mitte1960
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–8
Datenbankmodelle im Überblick /2
• HM: hierarchisches Modell, NWM: Netzwerkmodell, RM:Relationenmodell
• NF2: Modell der geschachtelten (Non-First-Normal-Form =
NF2) Relationen, eNF2: erweitertes NF2-Modell• ER: Entity-Relationship-Modell, SDM: semantischeDatenmodelle
• OODM / C++: objektorientierte Datenmodelle auf Basisobjektorientierter Programmiersprachen wie C++, OEM:objektorientierte Entwurfsmodelle (etwa UML), ORDM:objektrelationale Datenmodelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–9
ER-Modell
Das ER-Modell
Entity: Objekt der realen oder der Vorstellungswelt, überdas Informationen zu speichern sind, z.B.Produkte (Wein, Katalog), Winzer oder Kritiker;aber auch Informationen über Ereignisse, wie z.B.Bestellungen
Relationship: beschreibt eine Beziehung zwischen Entities, z.B.ein Kunde bestellt einen Wein oder ein Wein wirdvon einem Winzer angeboten
Attribut: repräsentiert eine Eigenschaft von Entities oderBeziehungen, z.B. Name eines Kunden, Farbeeines Weines oder Datum einer Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–10
ER-Beispiel
Rebsorte
Anbaugebiet
Wein
sitzt in
produziertvon Erzeuger
hergestellt aus
empfiehlt
Gericht
Kritiker
[0,*]
[1,7]
[0,*]
[0,*]
[0,*]
Anteil
NameFarbe
Weingut Adresse
Name
Region
Name
Restsüße
Farbe
Jahrgang
Bezeichnung
Beilage
Name
Organisation
Land
Lizenz
besitzt
LizenzNr
Menge
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–11
Werte
• Werte: primitive Datenelemente, die direkt darstellbar sind• Wertemengen sind beschrieben durch Datentypen, dieneben einer Wertemenge auch die Grundoperationen aufdiesen Werten charakterisieren
• ER-Modell: vorgegebene Standard-Datentypen, etwa dieganzen Zahlen int, die Zeichenketten string,Datumswerte date etc.
• jeder Datentyp stellt Wertebereich mit Operationen undPrädikaten dar
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–12
Entities
• Entities sind die in einer Datenbank zu repräsentierendenInformationseinheiten
• im Gegensatz zu Werten nicht direkt darstellbar, sondernnur über ihre Eigenschaften beobachtbar
• Entities sind eingeteilt in Entity-Typen, etwa E1, E2 . . .
Wein
• Menge der aktuellen Entities: E = e1, e2, . . . , en
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–13
Attribute
• Attribute modellieren Eigenschaften von Entities oderauch Beziehungen
• alle Entities eines Entity-Typs haben dieselben Arten vonEigenschaften; Attribute werden somit für Entity-Typendeklariert
Wein
Name Farbe
Jahrgang
• textuelle Notation E(A1 : D1, . . . ,Am : Dm)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–14
Identifizierung durch Schlüssel
• Schlüsselattribute: Teilmenge der gesamten Attributeeines Entity-Typs E(A1, . . . ,Am)
S1, . . . , Sk ⊆ A1, . . . ,Am
• in jedem Datenbankzustand identifizieren die aktuellenWerte der Schlüsselattribute eindeutig Instanzen desEntity-Typs E
• bei mehreren möglichen Schlüsselkandidaten: Auswahleines Primärschlüssels
• Notation: markieren durch Unterstreichung:
E(. . . , S1, . . . , Si, . . .)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–15
Beziehungstypen
• Beziehungen zwischen Entities werden zuBeziehungstypen zusammengefasst
• allgemein: beliebige Anzahl n ≥ 2 von Entity-Typen kannan einem Beziehungstyp teilhaben
• zu jedem n-stelligen Beziehungstyp R gehören n Entity-Typen E1, . . . , En
• Ausprägung R eines Beziehungstyps
R ⊆ E1 × E2 × · · · × En
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–16
Beziehungstypen /2
• Notation
WeinErzeuger produziert
• textuelle Notation: R(E1, E2, . . . , En)• wenn Entity-Typ mehrfach an einem Beziehungstypbeteiligt: Vergabe von Rollennamen möglich
verheiratet(Frau: Person, Mann: Person)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–17
Beziehungsattribute
• Beziehungen können ebenfalls Attribute besitzen• Attributdeklarationen werden beim Beziehungstypvorgenommen; gilt auch hier für alle Ausprägungen einesBeziehungstyps Beziehungsattribute
RebsorteWeinhergestellt
aus
Anteil
• textuelle Notation: R(E1, . . . , En;A1, . . . ,Ak)Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–18
Merkmale von Beziehungen
• Stelligkeit oder Grad:
• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:
• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen
• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:
• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär
• Beispiel: Lieferant liefert Produkt• Kardinalität oder Funktionalität:
• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:
• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:
• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:• Anzahl der eingehenden Instanzen eines Entity-Typs
• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n
• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar
• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Merkmale von Beziehungen
• Stelligkeit oder Grad:• Anzahl der beteiligten Entity-Typen• häufig: binär• Beispiel: Lieferant liefert Produkt
• Kardinalität oder Funktionalität:• Anzahl der eingehenden Instanzen eines Entity-Typs• Formen: 1:1, 1:n, m:n• stellt Integritätsbedingung dar• Beispiel: maximal 5 Produkte pro Bestellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–19
Zwei- vs. mehrstellige Beziehungen
Weinempfiehlt
Gericht
Kritiker
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–20
Zwei- vs. mehrstellige Beziehungen
Weinempfiehlt
Gericht
Kritiker
WeinG-K
Gericht
Kritiker
G-W
K-W
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–20
Ausprägungen im Beispiel
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–21
Ausprägungen im Beispiel
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–21
Rekonstruktion der Ausprägungen
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
• g1 – k1 – w1• g1 – k2 – w2• g2 – k2 – w1• aber auch: g1 – k2 – w1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–22
Rekonstruktion der Ausprägungen
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
• g1 – k1 – w1
• g1 – k2 – w2• g2 – k2 – w1• aber auch: g1 – k2 – w1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–22
Rekonstruktion der Ausprägungen
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
• g1 – k1 – w1• g1 – k2 – w2
• g2 – k2 – w1• aber auch: g1 – k2 – w1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–22
Rekonstruktion der Ausprägungen
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
• g1 – k1 – w1• g1 – k2 – w2• g2 – k2 – w1
• aber auch: g1 – k2 – w1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–22
Rekonstruktion der Ausprägungen
Gericht
Kritiker
Wein
g1
g2
w1
w2
k1 k2
• g1 – k1 – w1• g1 – k2 – w2• g2 – k2 – w1• aber auch: g1 – k2 – w1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–22
1:1-Beziehungen
• jedem Entity e1 vom Entity-Typ E1 ist maximal ein Entity e2aus E2 zugeordnet und umgekehrt
• Beispiele: Prospekt beschreibt Produkt, Mann istverheiratet mit Frau
E1 E2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–23
1:N-Beziehungen
• jedem Entity e1 vom Entity-Typ E1 sind beliebig vieleEntities E2 zugeordnet, aber zu jedem Entity e2 gibt esmaximal ein e1 aus E1
• Beispiele: Lieferant liefert Produkt, Mutter hat Kinder
E1 E2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–24
N:1-Beziehung
• invers zu 1:N, auch funktionale Beziehung• zweistellige Beziehungen, die eine Funktion beschreiben:Jedem Entity eines Entity-Typs E1 wird maximal ein Entityeines Entity-Typs E2 zugeordnet.
R : E1 → E2
Weinproduziert
von Erzeuger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–25
1:1-Beziehung
Erzeuger besitzt Lizenz
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–26
M:N-Beziehungen
• keine Restriktionen• Beispiel: Bestellung umfasst Produkte
E1 E2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–27
[min,max]-Notation
E1 EnR[min1, max1] [minn, maxn]
E2
[min2, max2]...
• schränkt die möglichen Teilnahmen von Instanzen derbeteiligten Entity-Typen an der Beziehung ein, indem einminimaler und ein maximaler Wert vorgegeben wird
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–28
[min,max]-Notation /2
• Notation für Kardinalitätsangaben an einemBeziehungstyp
R(E1, . . . , Ei[mini,maxi], . . . , En)
• Kardinalitätsbedingung:mini ≤ |r | r ∈ R ∧ r.Ei = ei| ≤ maxi
• Spezielle Wertangabe für maxi ist ∗
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–29
Kardinalitätsangaben
• [0, ∗] legt keine Einschränkung fest (default)• R(E1[0, 1], E2) entspricht einer (partiellen) funktionalenBeziehung R : E1 → E2, da jede Instanz aus E1 maximaleiner Instanz aus E2 zugeordnet ist
• totale funktionale Beziehung wird durch R(E1[1, 1], E2)modelliert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–30
Kardinalitätsangaben: Beispiele
• partielle funktionale Beziehunglagert_in(Produkt[0,1],Fach[0,3])
„Jedes Produkt ist im Lager in einem Fach abgelegt,allerdings wird ausverkauften bzw. gegenwärtig nichtlieferbaren Produkte kein Fach zugeordnet. Pro Fachkönnen maximal drei Produkte gelagert werden.“
• totale funktionale Beziehungliefert(Lieferant[0,*],Produkt[1,1])
„Jedes Produkt wird durch genau einen Lieferant geliefert,aber ein Lieferant kann durchaus mehrere Produkteliefern.“
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–31
Alternative Kardinalitätsangabe
geliefert vonProdukt Lieferant
[1,1] [0,*]
geliefert vonProdukt Lieferant
N 1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–32
Weitere Konzepte im ER-Modell
Abhängige Entity-Typen
• abhängiger Entity-Typ: Identifikation über funktionaleBeziehung
WeinJahrgang Weingehört-zu
Jahr
Restsüße
Name
Farbe
• Abhängige Entities im ER-Modell: Funktionale Beziehungals Schlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–33
Abhängige Entity-Typen /2
• Mögliche Ausprägung für abhängige Entities
Name: Pinot NoirFarbe: Rot
Name: Riesling ReserveFarbe: Weiß
Name: ZinfandelFarbe: Rot
gehört-zu
gehört-zu
gehört-zu
Jahr: 2004Restsüße: 1,2
Jahr: 2003Restsüße: 1,4
Jahr: 1999Restsüße: 6,7
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–34
Abhängige Entity-Typen /3
• Alternative Notation
NWeinJahrgang Weingehört-zu
1
Jahr
Restsüße
Name
Farbe
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–35
Die ist-Beziehung
• Spezialisierungs-/Generalisierungsbeziehung oder auchist-Beziehung (engl. is-a relationship)
• textuelle Notation: E1 ist E2• ist-Beziehung entspricht semantisch einer injektivenfunktionalen Beziehung
WeinSchaumwein IST
Name
Farbe
Herstellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–36
Eigenschaften der ist-Beziehung
• Jeder Schaumwein-Instanz ist genau eine Wein-Instanzzugeordnet Schaumwein-Instanzen werden durch die funktionaleist-Beziehung identifiziert
• Nicht jeder Wein ist zugleich ein Schaumwein• Attribute des Entity-Typs Wein treffen auch aufSchaumweine zu: „vererbte“ Attribute
Schaumwein(Name,Farbe︸ ︷︷ ︸von Wein
,Herstellung)
• nicht nur die Attributdeklarationen vererben sich, sondernauch jeweils die aktuellen Werte für eine Instanz
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–37
Ausprägung für ist-Beziehung
Schaumweine
Weine
w1
w2
w3
w1
w2
w5
w4
w6
w4
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–38
Alternative Notation für ist-Beziehung
WeinSchaumwein
Name FarbeHerstellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–39
Kardinalitätsangaben: ist
• für Beziehung E1 ist E2 gilt immer: ist(E1[1, 1], E2[0, 1])• Jede Instanz von E1 nimmt genau einmal an der ist-Beziehung teil, während Instanzen des Obertyps E2 nichtteilnehmen müssen
• Aspekte wie Attributvererbung werden hiervon nichterfasst
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–40
Optionalität von Attributen
Anbaugebietsitzt inErzeuger
Weingut AdresseName
RegionLand
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–41
Konzepte im Überblick
Begriff Informale BedeutungEntity zu repräsentierende InformationseinheitEntity-Typ Gruppierung von Entitys mit gleichen Eigenschaf-
tenBeziehungstyp Gruppierung von Beziehungen zwischen EntitysAttribut datenwertige Eigenschaft eines Entitys oder einer
BeziehungSchlüssel identifizierende Eigenschaft von EntitysKardinalitäten Einschränkung von Beziehungstypen bezüglich
der mehrfachen Teilnahme von Entitys an der Be-ziehung
Stelligkeit Anzahl der an einem Beziehungstyp beteiligtenEntity-Typen
funktionale Beziehung Beziehungstyp mit Funktionseigenschaft
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–42
Konzepte im Überblick /2
Begriff Informale BedeutungEntity zu repräsentierende Informationseinheitabhängige Entitys Entitys, die nur abhängig von anderen Entitys exis-
tieren könnenist-Beziehung Spezialisierung von Entity-TypenOptionalität Attribute oder funktionale Beziehungen als parti-
elle Funktionen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–43
Zusammenfassung
• Datenbankmodell, Datenbankschema, Datenbank(instanz)
• Entity-Relationship-Modell• Weitere Konzepte im ER-Modell• Basis: Kapitel 3 von [SSH13]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–44
Zusammenfassung
• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell
• Weitere Konzepte im ER-Modell• Basis: Kapitel 3 von [SSH13]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–44
Zusammenfassung
• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell• Weitere Konzepte im ER-Modell
• Basis: Kapitel 3 von [SSH13]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–44
Zusammenfassung
• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell• Weitere Konzepte im ER-Modell• Basis: Kapitel 3 von [SSH13]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–44
Kontrollfragen
• Was definiert ein Datenbankmodell? Wasunterscheidet Modell und Schema?
• Welche Konzepte definiert das ER-Modell?• Durch welche Eigenschaften sindBeziehungstypen charakterisiert?
• Was unterscheidet abhängigeEntity-Typen von normalen Entity-Typen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–45
Kontrollfragen
• Was definiert ein Datenbankmodell? Wasunterscheidet Modell und Schema?
• Welche Konzepte definiert das ER-Modell?
• Durch welche Eigenschaften sindBeziehungstypen charakterisiert?
• Was unterscheidet abhängigeEntity-Typen von normalen Entity-Typen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–45
Kontrollfragen
• Was definiert ein Datenbankmodell? Wasunterscheidet Modell und Schema?
• Welche Konzepte definiert das ER-Modell?• Durch welche Eigenschaften sindBeziehungstypen charakterisiert?
• Was unterscheidet abhängigeEntity-Typen von normalen Entity-Typen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–45
Kontrollfragen
• Was definiert ein Datenbankmodell? Wasunterscheidet Modell und Schema?
• Welche Konzepte definiert das ER-Modell?• Durch welche Eigenschaften sindBeziehungstypen charakterisiert?
• Was unterscheidet abhängigeEntity-Typen von normalen Entity-Typen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–45
Teil IV
Datenbankentwurf
Datenbankentwurf
1. Phasen des Datenbankentwurfs
2. Weiteres Vorgehen beim Entwurf
3. Kapazitätserhaltende Abbildungen
4. ER-auf-RM-Abbildung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–1
Datenbankentwurf
1. Phasen des Datenbankentwurfs
2. Weiteres Vorgehen beim Entwurf
3. Kapazitätserhaltende Abbildungen
4. ER-auf-RM-Abbildung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–1
Datenbankentwurf
1. Phasen des Datenbankentwurfs
2. Weiteres Vorgehen beim Entwurf
3. Kapazitätserhaltende Abbildungen
4. ER-auf-RM-Abbildung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–1
Datenbankentwurf
1. Phasen des Datenbankentwurfs
2. Weiteres Vorgehen beim Entwurf
3. Kapazitätserhaltende Abbildungen
4. ER-auf-RM-Abbildung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–1
Lernziele für heute …
• Kenntnisse über Ziele und Ablauf desDatenbankentwurfsprozesses
• Kenntnisse der Regeln zur Abbildung vonER-Schemata auf Relationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–2
Lernziele für heute …
• Kenntnisse über Ziele und Ablauf desDatenbankentwurfsprozesses
• Kenntnisse der Regeln zur Abbildung vonER-Schemata auf Relationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–2
Phasen des Datenbankentwurfs
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung
• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Entwurfsaufgabe
• Datenhaltung für mehrere Anwendungssysteme undmehrere Jahre
• daher: besondere Bedeutung• Anforderungen an Entwurf
• Anwendungsdaten jeder Anwendung sollen aus Daten derDatenbank ableitbar sein (und zwar möglichst effizient)
• nur „vernünftige“ (wirklich benötigte) Daten sollengespeichert werden
• nicht-redundante Speicherung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–3
Phasenmodell
Anforderungsanalyse
KonzeptionellerEntwurf
Verteilungsentwurf
Logischer Entwurf
Datendefinition
Physischer Entwurf
Implementierung &Wartung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–4
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:
• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:
• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:
• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:
• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:
• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:
• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:
• nur Datenanalyse und Folgeschritte• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:
• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Anforderungsanalyse
• Vorgehensweise: Sammlung des Informationsbedarfs inden Fachabteilungen
• Ergebnis:• informale Beschreibung (Texte, tabellarischeAufstellungen, Formblätter, usw.) des Fachproblems
• Trennen der Information über Daten (Datenanalyse) vonden Information über Funktionen (Funktionsanalyse)
• „Klassischer“ DB-Entwurf:• nur Datenanalyse und Folgeschritte
• Funktionsentwurf:• siehe Methoden des Software Engineering
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–5
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems
• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell
• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte
• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Konzeptioneller Entwurf
• erste formale Beschreibung des Fachproblems• Sprachmittel: semantisches Datenmodell• Vorgehensweise:
• Modellierung von Sichten z.B. für verschiedeneFachabteilungen
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
• Ergebnis: konzeptionelles Gesamtschema, z.B.ER-Diagramm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–6
Phasen des konzeptionellen Entwurf
Sichtenentwurf
Sichtenanalyse
Sichtenintegration
konzeptioneller Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–7
Weiteres Vorgehen beim Entwurf
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten
• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung
• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Weiteres Vorgehen beim Entwurf
• ER-Modellierung von verschiedenen Sichten aufGesamtinformation, z.B. für verschiedene Fachabteilungeneines Unternehmens konzeptueller Entwurf
• Analyse und Integration der Sichten• Ergebnis: konzeptionelles Gesamtschema
• Verteilungsentwurf bei verteilter Speicherung• Abbildung auf konkretes Implementierungsmodell (z.B.Relationenmodell) logischer Entwurf
• Datendefinition, Implementierung und Wartungphysischer Entwurf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–8
Sichtenintegration
• Analyse der vorliegenden Sichten in Bezug auf Konflikte
• Integration der Sichten in ein Gesamtschema
Sicht #1 Sicht #2
Sicht #3
GlobalesSchema
Konsoli-
dierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–9
Sichtenintegration
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
Sicht #1 Sicht #2
Sicht #3
GlobalesSchema
Konsoli-
dierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–9
Sichtenintegration
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
Sicht #1 Sicht #2
Sicht #3
GlobalesSchema
Konsoli-
dierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–9
Sichtenintegration
• Analyse der vorliegenden Sichten in Bezug auf Konflikte• Integration der Sichten in ein Gesamtschema
Sicht #1 Sicht #2
Sicht #3
GlobalesSchema
Konsoli-
dierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–9
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme
• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde
• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Integrationskonflikte
• Namenskonflikte: Homonyme / Synonyme• Homonyme: Schloss; Kunde• Synonyme: Auto, KFZ, Fahrzeug
• Typkonflikte: verschiedene Strukturen für das gleicheElement
• Wertebereichskonflikte: verschiedene Wertebereiche fürein Element
• Bedingungskonflikte: z.B. verschiedene Schlüssel für einElement
• Strukturkonflikte: gleicher Sachverhalt durchunterschiedliche Konstrukte ausgedrückt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–10
Verteilungsentwurf
• sollen Daten auf mehreren Rechnern verteilt vorliegen,muss Art und Weise der verteilten Speicherung festgelegtwerden
• z.B. bei einer RelationKUNDE (KNr, Name, Adresse, PLZ, Konto)
• horizontale Verteilung:KUNDE_1 (KNr, Name, Adresse, PLZ, Konto)where PLZ < 50.000KUNDE_2 (KNr, Name, Adresse, PLZ, Konto)where PLZ >= 50.000
• vertikale Verteilung (Verbindung über KNr Attribut):KUNDE_Adr (KNr, Name, Adresse, PLZ)KUNDE_Konto (KNr, Konto)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–11
Logischer Entwurf
• Sprachmittel: Datenmodell des ausgewählten„Realisierungs“-DBMS z.B. relationales Modell
• Vorgehensweise:
1. (automatische) Transformation des konzeptionellenSchemas z.B. ER→ relationales Modell
2. Verbesserung des relationalen Schemas anhand vonGütekriterien(Normalisierung, siehe Kapitel 5):Entwurfsziele: Redundanzvermeidung, …
• Ergebnis: logisches Schema, z.B. Sammlung vonRelationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–12
Logischer Entwurf
• Sprachmittel: Datenmodell des ausgewählten„Realisierungs“-DBMS z.B. relationales Modell
• Vorgehensweise:
1. (automatische) Transformation des konzeptionellenSchemas z.B. ER→ relationales Modell
2. Verbesserung des relationalen Schemas anhand vonGütekriterien(Normalisierung, siehe Kapitel 5):Entwurfsziele: Redundanzvermeidung, …
• Ergebnis: logisches Schema, z.B. Sammlung vonRelationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–12
Logischer Entwurf
• Sprachmittel: Datenmodell des ausgewählten„Realisierungs“-DBMS z.B. relationales Modell
• Vorgehensweise:1. (automatische) Transformation des konzeptionellenSchemas z.B. ER→ relationales Modell
2. Verbesserung des relationalen Schemas anhand vonGütekriterien(Normalisierung, siehe Kapitel 5):Entwurfsziele: Redundanzvermeidung, …
• Ergebnis: logisches Schema, z.B. Sammlung vonRelationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–12
Logischer Entwurf
• Sprachmittel: Datenmodell des ausgewählten„Realisierungs“-DBMS z.B. relationales Modell
• Vorgehensweise:1. (automatische) Transformation des konzeptionellenSchemas z.B. ER→ relationales Modell
2. Verbesserung des relationalen Schemas anhand vonGütekriterien(Normalisierung, siehe Kapitel 5):Entwurfsziele: Redundanzvermeidung, …
• Ergebnis: logisches Schema, z.B. Sammlung vonRelationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–12
Logischer Entwurf
• Sprachmittel: Datenmodell des ausgewählten„Realisierungs“-DBMS z.B. relationales Modell
• Vorgehensweise:1. (automatische) Transformation des konzeptionellenSchemas z.B. ER→ relationales Modell
2. Verbesserung des relationalen Schemas anhand vonGütekriterien(Normalisierung, siehe Kapitel 5):Entwurfsziele: Redundanzvermeidung, …
• Ergebnis: logisches Schema, z.B. Sammlung vonRelationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–12
Datendefinition
• Umsetzung des logischen Schemas in ein konkretesSchema
• Sprachmittel: DDL und DML eines DBMS z.B. Oracle, DB2,SQL Server
• Datenbankdeklaration in der DDL des DBMS• Realisierung der Integritätssicherung• Definition der Benutzersichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–13
Physischer Entwurf
• Ergänzen des physischen Entwurfs umZugriffsunterstützung bzgl. Effizienzverbesserung, z.B.Definition von Indexen
• Index• Zugriffspfad: Datenstruktur für zusätzlichen,schlüsselbasierten Zugriff auf Tupel(⟨Schlüsselattributwert, Tupeladresse⟩)
• meist als B*-Baum realisiert
• Sprachmittel: Speicherstruktursprache SSL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–14
Indexe in SQL
create [ unique ] index indexnameon relname (
attrname [ asc | desc ],attrname [ asc | desc ],
…)
• Beispiel
create index WeinIdx on WEINE (Name)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–15
Notwendigkeit für Zugriffspfade
• Beispiel: Tabelle mit 100 GB Daten, Festplattentransferrateca. 50 MB/s
• Operation: Suchen eines Tupels (Selektion)• Implementierung: sequentielles Durchsuchen• Aufwand: 102.400/50 = 2.048 sec. ≈ 34 min.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–16
Notwendigkeit für Zugriffspfade
• Beispiel: Tabelle mit 100 GB Daten, Festplattentransferrateca. 50 MB/s
• Operation: Suchen eines Tupels (Selektion)
• Implementierung: sequentielles Durchsuchen• Aufwand: 102.400/50 = 2.048 sec. ≈ 34 min.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–16
Notwendigkeit für Zugriffspfade
• Beispiel: Tabelle mit 100 GB Daten, Festplattentransferrateca. 50 MB/s
• Operation: Suchen eines Tupels (Selektion)• Implementierung: sequentielles Durchsuchen
• Aufwand: 102.400/50 = 2.048 sec. ≈ 34 min.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–16
Notwendigkeit für Zugriffspfade
• Beispiel: Tabelle mit 100 GB Daten, Festplattentransferrateca. 50 MB/s
• Operation: Suchen eines Tupels (Selektion)• Implementierung: sequentielles Durchsuchen• Aufwand: 102.400/50 = 2.048 sec. ≈ 34 min.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–16
Implementierung und Wartung
• Phasen• der Wartung,• der weiteren Optimierung der physischen Ebene,• der Anpassung an neue Anforderungen undSystemplattformen,
• der Portierung auf neue Datenbankmanagementsysteme• etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–17
Kapazitätserhaltende Abbildungen
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema
• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität
• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM
• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität
• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?
• Qualität der Abbildung?• Erhaltung der Informationskapazität
• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität
• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität
• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?
• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Umsetzung des konzeptionellen Schemas
• Umsetzung auf logisches Schema• Beispiel: ER→ RM• korrekt?• Qualität der Abbildung?
• Erhaltung der Informationskapazität• Kann man nach der Abbildung genau die selben Datenabspeichern wie vorher?
• ... oder etwa mehr?• ... oder etwa weniger?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–18
Kapazitätserhöhende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• Abbildung auf R = LizenzNo,Weingut mit genaueinem Schlüssel K = LizenzNo
• mögliche ungültige Relation:BESITZT LizenzNo Weingut
007 Helena42 Helena
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–19
Kapazitätserhöhende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• Abbildung auf R = LizenzNo,Weingut mit genaueinem Schlüssel K = LizenzNo
• mögliche ungültige Relation:BESITZT LizenzNo Weingut
007 Helena42 Helena
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–19
Kapazitätserhöhende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• Abbildung auf R = LizenzNo,Weingut mit genaueinem Schlüssel K = LizenzNo
• mögliche ungültige Relation:BESITZT LizenzNo Weingut
007 Helena42 Helena
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–19
Kapazitätserhaltende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• korrekte AusprägungBESITZT LizenzNo Weingut
007 Helena42 Müller
• korrekte Schlüsselmenge
K = LizenzNo, Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–20
Kapazitätserhaltende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• korrekte AusprägungBESITZT LizenzNo Weingut
007 Helena42 Müller
• korrekte Schlüsselmenge
K = LizenzNo, Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–20
Kapazitätserhaltende Abbildung
Lizenz besitzt Erzeuger
WeingutLizenzNo
• korrekte AusprägungBESITZT LizenzNo Weingut
007 Helena42 Müller
• korrekte Schlüsselmenge
K = LizenzNo, Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–20
Kapazitätsvermindernde Abbildung
Wein enthält Rebsorte
SortennameWName
• Relationenschema mit einem Schlüssel WName• als Ausprägung nicht mehr möglich:
ENTHÄLT WName SortennameZinfandel Red Blossom ZinfandelBordeaux Blanc Cabernet SauvignonBordeaux Blanc Muscadelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–21
Kapazitätsvermindernde Abbildung
Wein enthält Rebsorte
SortennameWName
• Relationenschema mit einem Schlüssel WName
• als Ausprägung nicht mehr möglich:ENTHÄLT WName Sortenname
Zinfandel Red Blossom ZinfandelBordeaux Blanc Cabernet SauvignonBordeaux Blanc Muscadelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–21
Kapazitätsvermindernde Abbildung
Wein enthält Rebsorte
SortennameWName
• Relationenschema mit einem Schlüssel WName• als Ausprägung nicht mehr möglich:
ENTHÄLT WName SortennameZinfandel Red Blossom ZinfandelBordeaux Blanc Cabernet SauvignonBordeaux Blanc Muscadelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–21
Kapazitätserhaltende Abbildung
• kapazitätserhaltend mit Schlüssel beider Entity-Typen imRelationenschema als neuer Schlüssel
K = WName,Sortenname
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–22
ER-auf-RM-Abbildung
Beispielabbildung ER-RM: Eingabe
Rebsorte
Wein
produziertErzeuger
enthält
Anteil
SortennameFarbe
Weingut Adresse
Restsüße
Farbe
Jahrgang
WName
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–23
Beispielabbildung ER-RM: Ergebnis
1. REBSORTE = Farbe,Sortenname2. ENTHÄLT = Sortenname,WName,Anteil3. WEIN = Farbe,WName,Jahrgang,Restsüße4. PRODUZIERT = WName,Weingut5. ERZEUGER = Weingut,Adresse
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–24
ER-Abbildung auf Relationen
• Entity-Typen und Beziehungstypen: jeweils aufRelationenschemata
• Attribute: Attribute des Relationenschemas, Schlüsselwerden übernommen
• Kardinalitäten der Beziehungen: durch Wahl der Schlüsselbei den zugehörigen Relationenschemata ausgedrückt
• in einigen Fällen: Verschmelzen der Relationenschematavon Entity- und Beziehungstypen
• zwischen den verbleibenden Relationenschemata diverseFremdschlüsselbedingungen einführen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–25
ER-Abbildung auf Relationen
• Entity-Typen und Beziehungstypen: jeweils aufRelationenschemata
• Attribute: Attribute des Relationenschemas, Schlüsselwerden übernommen
• Kardinalitäten der Beziehungen: durch Wahl der Schlüsselbei den zugehörigen Relationenschemata ausgedrückt
• in einigen Fällen: Verschmelzen der Relationenschematavon Entity- und Beziehungstypen
• zwischen den verbleibenden Relationenschemata diverseFremdschlüsselbedingungen einführen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–25
ER-Abbildung auf Relationen
• Entity-Typen und Beziehungstypen: jeweils aufRelationenschemata
• Attribute: Attribute des Relationenschemas, Schlüsselwerden übernommen
• Kardinalitäten der Beziehungen: durch Wahl der Schlüsselbei den zugehörigen Relationenschemata ausgedrückt
• in einigen Fällen: Verschmelzen der Relationenschematavon Entity- und Beziehungstypen
• zwischen den verbleibenden Relationenschemata diverseFremdschlüsselbedingungen einführen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–25
ER-Abbildung auf Relationen
• Entity-Typen und Beziehungstypen: jeweils aufRelationenschemata
• Attribute: Attribute des Relationenschemas, Schlüsselwerden übernommen
• Kardinalitäten der Beziehungen: durch Wahl der Schlüsselbei den zugehörigen Relationenschemata ausgedrückt
• in einigen Fällen: Verschmelzen der Relationenschematavon Entity- und Beziehungstypen
• zwischen den verbleibenden Relationenschemata diverseFremdschlüsselbedingungen einführen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–25
ER-Abbildung auf Relationen
• Entity-Typen und Beziehungstypen: jeweils aufRelationenschemata
• Attribute: Attribute des Relationenschemas, Schlüsselwerden übernommen
• Kardinalitäten der Beziehungen: durch Wahl der Schlüsselbei den zugehörigen Relationenschemata ausgedrückt
• in einigen Fällen: Verschmelzen der Relationenschematavon Entity- und Beziehungstypen
• zwischen den verbleibenden Relationenschemata diverseFremdschlüsselbedingungen einführen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–25
Abbildung von Beziehungstypen
• neues Relationenschema mit allen Attributen desBeziehungstyps, zusätzlich Übernahme allerPrimärschlüssel der beteiligten Entity-Typen
• Festlegung der Schlüssel:• m:n-Beziehung: beide Primärschlüssel zusammen werdenSchlüssel im neuen Relationenschema
• 1:n-Beziehung: Primärschlüssel der n-Seite (bei derfunktionalen Notation die Seite ohne Pfeilspitze) wirdSchlüssel im neuen Relationenschema
• 1:1-Beziehung: beide Primärschlüssel werden je einSchlüssel im neuen Relationenschema, derPrimärschlüssel wird dann aus diesen Schlüsseln gewählt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–26
Abbildung von Beziehungstypen
• neues Relationenschema mit allen Attributen desBeziehungstyps, zusätzlich Übernahme allerPrimärschlüssel der beteiligten Entity-Typen
• Festlegung der Schlüssel:• m:n-Beziehung: beide Primärschlüssel zusammen werdenSchlüssel im neuen Relationenschema
• 1:n-Beziehung: Primärschlüssel der n-Seite (bei derfunktionalen Notation die Seite ohne Pfeilspitze) wirdSchlüssel im neuen Relationenschema
• 1:1-Beziehung: beide Primärschlüssel werden je einSchlüssel im neuen Relationenschema, derPrimärschlüssel wird dann aus diesen Schlüsseln gewählt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–26
Abbildung von Beziehungstypen
• neues Relationenschema mit allen Attributen desBeziehungstyps, zusätzlich Übernahme allerPrimärschlüssel der beteiligten Entity-Typen
• Festlegung der Schlüssel:• m:n-Beziehung: beide Primärschlüssel zusammen werdenSchlüssel im neuen Relationenschema
• 1:n-Beziehung: Primärschlüssel der n-Seite (bei derfunktionalen Notation die Seite ohne Pfeilspitze) wirdSchlüssel im neuen Relationenschema
• 1:1-Beziehung: beide Primärschlüssel werden je einSchlüssel im neuen Relationenschema, derPrimärschlüssel wird dann aus diesen Schlüsseln gewählt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–26
n:m-Beziehungen
Wein enthält Rebsorte
Sortenname Farbe
WName
Restsüße
Farbe
Jahrgang
Anteil
• Umsetzung1. REBSORTE = Farbe,Sortenname2. ENTHÄLT = Sortenname,WName,Anteil3. WEIN = Farbe,WName,Jahrgang,Restsüße
• Attribute Sortenname und WName sind gemeinsamSchlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–27
n:m-Beziehungen
Wein enthält Rebsorte
Sortenname Farbe
WName
Restsüße
Farbe
Jahrgang
Anteil
• Umsetzung1. REBSORTE = Farbe,Sortenname2. ENTHÄLT = Sortenname,WName,Anteil3. WEIN = Farbe,WName,Jahrgang,Restsüße
• Attribute Sortenname und WName sind gemeinsamSchlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–27
1:n-Beziehungen
Anbaugebietsitzt inErzeuger
Adresse RegionWeingut Name
• Umsetzung (zunächst)• ERZEUGER mit den Attributen Weingut und Adresse,• ANBAUGEBIET mit den Attributen Name und Region und• SITZT_IN mit den Attributen Weingut und Name unddem Primärschlüssel der n-Seite Weingut alsPrimärschlüssel dieses Schemas.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–28
1:n-Beziehungen
Anbaugebietsitzt inErzeuger
Adresse RegionWeingut Name
• Umsetzung (zunächst)• ERZEUGER mit den Attributen Weingut und Adresse,• ANBAUGEBIET mit den Attributen Name und Region und• SITZT_IN mit den Attributen Weingut und Name unddem Primärschlüssel der n-Seite Weingut alsPrimärschlüssel dieses Schemas.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–28
Mögliche Verschmelzungen
• optionale Beziehungen ([0,1] oder [0,n]) werden nichtverschmolzen
• bei Kardinalitäten [1,1] oder [1,n] (zwingende Beziehungen)Verschmelzung möglich:
• 1:n-Beziehung: das Entity-Relationenschema der n-Seitekann in das Relationenschema der Beziehung integriertwerden
• 1:1-Beziehung: beide Entity-Relationenschemata können indas Relationenschema der Beziehung integriert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–29
Mögliche Verschmelzungen
• optionale Beziehungen ([0,1] oder [0,n]) werden nichtverschmolzen
• bei Kardinalitäten [1,1] oder [1,n] (zwingende Beziehungen)Verschmelzung möglich:
• 1:n-Beziehung: das Entity-Relationenschema der n-Seitekann in das Relationenschema der Beziehung integriertwerden
• 1:1-Beziehung: beide Entity-Relationenschemata können indas Relationenschema der Beziehung integriert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–29
Mögliche Verschmelzungen
• optionale Beziehungen ([0,1] oder [0,n]) werden nichtverschmolzen
• bei Kardinalitäten [1,1] oder [1,n] (zwingende Beziehungen)Verschmelzung möglich:
• 1:n-Beziehung: das Entity-Relationenschema der n-Seitekann in das Relationenschema der Beziehung integriertwerden
• 1:1-Beziehung: beide Entity-Relationenschemata können indas Relationenschema der Beziehung integriert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–29
Mögliche Verschmelzungen
• optionale Beziehungen ([0,1] oder [0,n]) werden nichtverschmolzen
• bei Kardinalitäten [1,1] oder [1,n] (zwingende Beziehungen)Verschmelzung möglich:
• 1:n-Beziehung: das Entity-Relationenschema der n-Seitekann in das Relationenschema der Beziehung integriertwerden
• 1:1-Beziehung: beide Entity-Relationenschemata können indas Relationenschema der Beziehung integriert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–29
1:1-Beziehungen
Lizenz besitzt Erzeuger
Weingut AdresseHektoLiterLizenzNo
• Umsetzung (zunächst)• ERZEUGER mit den Attributen Weingut und Adresse• LIZENZ mit den beiden Attributen LizenzNo undHektoliter
• BESITZT mit den Primärschlüsseln der beiden beteiligtenEntity-Typen jeweils als Schlüssel dieses Schemas, alsoLizenzNo und Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–30
1:1-Beziehungen: Verschmelzung
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl 42-009 250
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–31
1:1-Beziehungen: Verschmelzung /2
Erzeuger ohne Lizenz erfordern Nullwerte:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥
freie Lizenzen führen zu weiteren Nullwerten:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥⊥ ⊥ 42-003 100.000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–32
1:1-Beziehungen: Verschmelzung /2
Erzeuger ohne Lizenz erfordern Nullwerte:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥
freie Lizenzen führen zu weiteren Nullwerten:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥⊥ ⊥ 42-003 100.000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–32
1:1-Beziehungen: Verschmelzung /2
Erzeuger ohne Lizenz erfordern Nullwerte:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥
freie Lizenzen führen zu weiteren Nullwerten:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥⊥ ⊥ 42-003 100.000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–32
1:1-Beziehungen: Verschmelzung /2
Erzeuger ohne Lizenz erfordern Nullwerte:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥
freie Lizenzen führen zu weiteren Nullwerten:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥⊥ ⊥ 42-003 100.000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–32
1:1-Beziehungen: Verschmelzung /2
Erzeuger ohne Lizenz erfordern Nullwerte:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥
freie Lizenzen führen zu weiteren Nullwerten:
ERZEUGER Weingut Adresse LizenzNo HektoliterRotkäppchen Freiberg 42-007 10.000Weingut Müller Dagstuhl ⊥ ⊥⊥ ⊥ 42-003 100.000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–32
Abhängige Entity-Typen
NWeinJahrgang Weingehört-zu1
JahrRestsüße WName Farbe
• Umsetzung
1. WEINJAHRGANG = WName,Jahr,Restsüße2. WEIN = Farbe,WName• Attribut WName in WEINJAHRGANG ist Fremdschlüssel zurRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–33
Abhängige Entity-Typen
NWeinJahrgang Weingehört-zu1
JahrRestsüße WName Farbe
• Umsetzung1. WEINJAHRGANG = WName,Jahr,Restsüße
2. WEIN = Farbe,WName• Attribut WName in WEINJAHRGANG ist Fremdschlüssel zurRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–33
Abhängige Entity-Typen
NWeinJahrgang Weingehört-zu1
JahrRestsüße WName Farbe
• Umsetzung1. WEINJAHRGANG = WName,Jahr,Restsüße2. WEIN = Farbe,WName
• Attribut WName in WEINJAHRGANG ist Fremdschlüssel zurRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–33
Abhängige Entity-Typen
NWeinJahrgang Weingehört-zu1
JahrRestsüße WName Farbe
• Umsetzung1. WEINJAHRGANG = WName,Jahr,Restsüße2. WEIN = Farbe,WName• Attribut WName in WEINJAHRGANG ist Fremdschlüssel zurRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–33
ist-Beziehung
WeinSchaumwein
WName FarbeHerstellung
• Umsetzung
1. WEIN = Farbe,WName,Jahrgang,Restsüße2. SCHAUMWEIN = WName,Herstellung• WName in SCHAUMWEIN ist Fremdschlüssel bezüglich derRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–34
ist-Beziehung
WeinSchaumwein
WName FarbeHerstellung
• Umsetzung1. WEIN = Farbe,WName,Jahrgang,Restsüße
2. SCHAUMWEIN = WName,Herstellung• WName in SCHAUMWEIN ist Fremdschlüssel bezüglich derRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–34
ist-Beziehung
WeinSchaumwein
WName FarbeHerstellung
• Umsetzung1. WEIN = Farbe,WName,Jahrgang,Restsüße2. SCHAUMWEIN = WName,Herstellung
• WName in SCHAUMWEIN ist Fremdschlüssel bezüglich derRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–34
ist-Beziehung
WeinSchaumwein
WName FarbeHerstellung
• Umsetzung1. WEIN = Farbe,WName,Jahrgang,Restsüße2. SCHAUMWEIN = WName,Herstellung• WName in SCHAUMWEIN ist Fremdschlüssel bezüglich derRelation WEIN
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–34
Rekursive Beziehungen
Anbaugebiet grenzt-an
nachName
Regionvon
• Umsetzung
1. ANBAUGEBIET = Name,Region2. GRENZT_AN = nach,von
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–35
Rekursive Beziehungen
Anbaugebiet grenzt-an
nachName
Regionvon
• Umsetzung1. ANBAUGEBIET = Name,Region
2. GRENZT_AN = nach,von
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–35
Rekursive Beziehungen
Anbaugebiet grenzt-an
nachName
Regionvon
• Umsetzung1. ANBAUGEBIET = Name,Region2. GRENZT_AN = nach,von
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–35
Rekursive funktionale Beziehungen
Kritiker SchülerVon
MentorName
Organisation Schüler
• Umsetzung
1. KRITIKER = Name,Organisation,Mentorname• Mentorname ist Fremdschlüssel auf das Attribut Name derRelation KRITIKER.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–36
Rekursive funktionale Beziehungen
Kritiker SchülerVon
MentorName
Organisation Schüler
• Umsetzung1. KRITIKER = Name,Organisation,Mentorname
• Mentorname ist Fremdschlüssel auf das Attribut Name derRelation KRITIKER.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–36
Rekursive funktionale Beziehungen
Kritiker SchülerVon
MentorName
Organisation Schüler
• Umsetzung1. KRITIKER = Name,Organisation,Mentorname• Mentorname ist Fremdschlüssel auf das Attribut Name derRelation KRITIKER.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–36
Mehrstellige Beziehungen
Weinempfiehlt
Gericht
Kritiker
WName
Restsüße
Farbe
Jahrgang
Bezeichnung Beilage
Name Organisation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–37
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel
1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel
1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel
1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel1. EMPFIEHLT = WName,Bezeichnung,Name
2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage
3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße
4. KRITIKER = Name,Organisation• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Mehrstellige Beziehungen: Ergebnis
• jeder beteiligte Entity-Typ wird nach den obigen Regelnbehandelt
• für Beziehung Empfiehlt werden Primärschlüssel derdrei beteiligten Entity-Typen in das resultierendeRelationenschema aufgenommen
• Beziehung ist allgemeiner Art (k:m:n-Beziehung): allePrimärschlüssel bilden zusammen den Schlüssel1. EMPFIEHLT = WName,Bezeichnung,Name2. GERICHT = Bezeichnung,Beilage3. WEIN = Farbe,WName,Jahrgang,Restsüße4. KRITIKER = Name,Organisation
• Die drei Schlüsselattribute von EMPFIEHLT sindwiederum Fremdschlüssel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–38
Übersicht über die Transformationen
ER-Konzept wird abgebildet auf relationales KonzeptEntity-Typ Ei Relationenschema RiAttribute von Ei Attribute von RiPrimärschlüssel Pi Primärschlüssel PiBeziehungstyp Relationenschema
Attribute: P1, P2dessen Attribute weitere Attribute1 : n P2 wird Primärschlüssel der Beziehung1 : 1 P1 und P2 werden Schlüssel der Beziehungm : n P1 ∪ P2 wird Primärschlüssel der Beziehungist-Beziehung R1 erhält zusätzlichen Schlüssel P2
E1, E2: an Beziehung beteiligte Entity-Typen,P1, P2: deren Primärschlüssel,1 : n-Beziehung: E2 ist n-Seite,ist-Beziehung: E1 ist speziellerer Entity-Typ
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–39
Zusammenfassung
• Phasen des Datenbankentwurfs
• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell• ER-Erweiterungen: Spezialisierung, Generalisierung,Partitionierung
• weitere Entwurfsschritte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–40
Zusammenfassung
• Phasen des Datenbankentwurfs• Datenbankmodell, Datenbankschema, Datenbank(instanz)
• Entity-Relationship-Modell• ER-Erweiterungen: Spezialisierung, Generalisierung,Partitionierung
• weitere Entwurfsschritte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–40
Zusammenfassung
• Phasen des Datenbankentwurfs• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell
• ER-Erweiterungen: Spezialisierung, Generalisierung,Partitionierung
• weitere Entwurfsschritte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–40
Zusammenfassung
• Phasen des Datenbankentwurfs• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell• ER-Erweiterungen: Spezialisierung, Generalisierung,Partitionierung
• weitere Entwurfsschritte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–40
Zusammenfassung
• Phasen des Datenbankentwurfs• Datenbankmodell, Datenbankschema, Datenbank(instanz)• Entity-Relationship-Modell• ER-Erweiterungen: Spezialisierung, Generalisierung,Partitionierung
• weitere Entwurfsschritte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–40
Kontrollfragen
• Welche Schritte umfasst derDatenbankentwurfsprozess?
• Welche Forderungen müssen dieAbbildungen (Transformationen) zwischenden einzelnen Entwurfsschritten erfüllen?Warum?
• Wie werden die Konzepte des ER-Modellsauf die des Relationenmodell abgebildet?
• Wie werden die verschiedenenKardinalitäten von Beziehungstypen beider Abbildung berücksichtigt?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–41
Kontrollfragen
• Welche Schritte umfasst derDatenbankentwurfsprozess?
• Welche Forderungen müssen dieAbbildungen (Transformationen) zwischenden einzelnen Entwurfsschritten erfüllen?Warum?
• Wie werden die Konzepte des ER-Modellsauf die des Relationenmodell abgebildet?
• Wie werden die verschiedenenKardinalitäten von Beziehungstypen beider Abbildung berücksichtigt?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–41
Kontrollfragen
• Welche Schritte umfasst derDatenbankentwurfsprozess?
• Welche Forderungen müssen dieAbbildungen (Transformationen) zwischenden einzelnen Entwurfsschritten erfüllen?Warum?
• Wie werden die Konzepte des ER-Modellsauf die des Relationenmodell abgebildet?
• Wie werden die verschiedenenKardinalitäten von Beziehungstypen beider Abbildung berücksichtigt?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–41
Kontrollfragen
• Welche Schritte umfasst derDatenbankentwurfsprozess?
• Welche Forderungen müssen dieAbbildungen (Transformationen) zwischenden einzelnen Entwurfsschritten erfüllen?Warum?
• Wie werden die Konzepte des ER-Modellsauf die des Relationenmodell abgebildet?
• Wie werden die verschiedenenKardinalitäten von Beziehungstypen beider Abbildung berücksichtigt?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–41
Teil V
Relationaler Entwurf
Relationaler Entwurf
1. Zielmodell des logischen Entwurfs
2. Relationaler DB-Entwurf
3. Normalformen
4. Transformationseigenschaften
5. Weitere Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–1
Relationaler Entwurf
1. Zielmodell des logischen Entwurfs
2. Relationaler DB-Entwurf
3. Normalformen
4. Transformationseigenschaften
5. Weitere Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–1
Relationaler Entwurf
1. Zielmodell des logischen Entwurfs
2. Relationaler DB-Entwurf
3. Normalformen
4. Transformationseigenschaften
5. Weitere Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–1
Relationaler Entwurf
1. Zielmodell des logischen Entwurfs
2. Relationaler DB-Entwurf
3. Normalformen
4. Transformationseigenschaften
5. Weitere Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–1
Relationaler Entwurf
1. Zielmodell des logischen Entwurfs
2. Relationaler DB-Entwurf
3. Normalformen
4. Transformationseigenschaften
5. Weitere Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–1
Lernziele für heute …
• Kenntnisse zur Verfeinerung desrelationalen Entwurfs
• Verständnis der Normalformen• Methodik und Verfahren zurNormalisierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–2
Lernziele für heute …
• Kenntnisse zur Verfeinerung desrelationalen Entwurfs
• Verständnis der Normalformen
• Methodik und Verfahren zurNormalisierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–2
Lernziele für heute …
• Kenntnisse zur Verfeinerung desrelationalen Entwurfs
• Verständnis der Normalformen• Methodik und Verfahren zurNormalisierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–2
Zielmodell des logischen Entwurfs
Relationenmodell
WEINE WeinID Name Farbe Jahrgang Weingut1042 La Rose … Rot 1998 Château …2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek3478 Pinot Noir Rot 1999 Helena4711 Riesling … Weiß 1999 Müller4961 Chardonnay Weiß 2002 Bighorn
ERZEUGER Weingut Anbaugebiet RegionCreek Barossa Valley SüdaustralienHelena Napa Valley KalifornienChâteau La Rose Saint-Emilion BordeauxChâteau La Pointe Pomerol BordeauxMüller Rheingau HessenBighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–3
Begriffe des Relationenmodells
Begriff Informale BedeutungAttribut Spalte einer TabelleWertebereich mögliche Werte eines Attributs (auch Do-
mäne)Attributwert Element eines WertebereichsRelationenschema Menge von AttributenRelation Menge von Zeilen einer TabelleTupel Zeile einer TabelleDatenbankschema Menge von RelationenschemataDatenbank Menge von Relationen (Basisrelationen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–4
Begriffe des Relationenmodells /2
Begriff Informale BedeutungSchlüssel minimale Menge von Attributen, deren
Werte ein Tupel einer Tabelle eindeutigidentifizieren
Primärschlüssel ein beim Datenbankentwurf ausge-zeichneter Schlüssel
Fremdschlüssel Attributmenge, die in einer anderenRelation Schlüssel ist
Fremdschlüsselbedingung alle Attributwerte des Fremdschlüsselstauchen in der anderen Relation alsWerte des Schlüssels auf
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–5
Formalisierung Relationenmodell
• Attribute und Domänen• U nichtleere, endliche Menge: Universum• A ∈ U : Attribut• D = D1, . . . ,Dm Menge endlicher, nichtleerer Mengen:jedes Di: Wertebereich oder Domäne
• total definierte Funktion dom : U −→ D• dom(A): Domäne von Aw ∈ dom(A): Attributwert für A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–6
Formalisierung Relationenmodell /2
• Relationenschemata und Relationen• R ⊆ U : Relationenschema• Relation r über R = A1, . . . ,An (kurz: r(R)) ist endlicheMenge von Abbildungen t : R −→
∪mi=1 Di, Tupel genannt
• Es gilt t(A) ∈ dom(A) (t(A) Restriktion von t auf A ∈ R)• für X ⊆ R analog t(X) X-Wert von t• Menge aller Relationen über R: REL(R) := r | r(R)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–7
Formalisierung Relationenmodell /3
• Datenbankschema und Datenbank• Menge von Relationenschemata S := R1, . . . ,Rp:Datenbankschema
• Datenbank über S: Menge von Relationen d := r1, . . . , rp,wobei ri(Ri)
• Datenbank d über S: d(S)• Relation r ∈ d: Basisrelation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–8
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]
• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und
• WeinID für WEINE• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels
• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel
• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Integritätsbedingungen
• Identifizierende Attributmenge K := B1, . . . ,Bk ⊆ R:
∀t1, t2 ∈ r [t1 = t2 =⇒ ∃B ∈ K : t1(B) = t2(B)]• Schlüssel: ist minimale identifizierende Attributmenge
• Name, Jahrgang, Weingut und• WeinID für WEINE
• Primattribut: Element eines Schlüssels• Primärschlüssel: ausgezeichneter Schlüssel• Oberschlüssel oder Superkey: jede Obermenge einesSchlüssels (= identifizierende Attributmenge)
• Fremdschlüssel: X(R1) → Y(R2)
t(X)|t ∈ r1 ⊆ t(Y)|t ∈ r2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–9
Relationaler DB-Entwurf
Relationaler DB-Entwurf: Überblick
• Verfeinern des logischen Entwurfs
• Ziel: Vermeidung von Redundanzen durch Aufspalten vonRelationenschemata, ohne gleichzeitig
• semantische Informationen zu verlieren(Abhängigkeitstreue)
• die Möglichkeit zur Rekonstruktion der Relationen zuverlieren (Verbundtreue)
• Redundanzvermeidung durch Normalformen (s.u.)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–10
Relationaler DB-Entwurf: Überblick
• Verfeinern des logischen Entwurfs• Ziel: Vermeidung von Redundanzen durch Aufspalten vonRelationenschemata, ohne gleichzeitig
• semantische Informationen zu verlieren(Abhängigkeitstreue)
• die Möglichkeit zur Rekonstruktion der Relationen zuverlieren (Verbundtreue)
• Redundanzvermeidung durch Normalformen (s.u.)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–10
Relationaler DB-Entwurf: Überblick
• Verfeinern des logischen Entwurfs• Ziel: Vermeidung von Redundanzen durch Aufspalten vonRelationenschemata, ohne gleichzeitig
• semantische Informationen zu verlieren(Abhängigkeitstreue)
• die Möglichkeit zur Rekonstruktion der Relationen zuverlieren (Verbundtreue)
• Redundanzvermeidung durch Normalformen (s.u.)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–10
Relationaler DB-Entwurf: Überblick
• Verfeinern des logischen Entwurfs• Ziel: Vermeidung von Redundanzen durch Aufspalten vonRelationenschemata, ohne gleichzeitig
• semantische Informationen zu verlieren(Abhängigkeitstreue)
• die Möglichkeit zur Rekonstruktion der Relationen zuverlieren (Verbundtreue)
• Redundanzvermeidung durch Normalformen (s.u.)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–10
Relationaler DB-Entwurf: Überblick
• Verfeinern des logischen Entwurfs• Ziel: Vermeidung von Redundanzen durch Aufspalten vonRelationenschemata, ohne gleichzeitig
• semantische Informationen zu verlieren(Abhängigkeitstreue)
• die Möglichkeit zur Rekonstruktion der Relationen zuverlieren (Verbundtreue)
• Redundanzvermeidung durch Normalformen (s.u.)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–10
Relation WEINE mit Redundanzen
WeinID Name … Weingut Anbaugebiet Region1042 La Rose Gr. Cru … Ch. La Rose Saint-Emilion Bordeaux2168 Creek Shiraz … Creek Barossa Valley Südaustralien3456 Zinfandel … Helena Napa Valley Kalifornien2171 Pinot Noir … Creek Barossa Valley Südaustralien3478 Pinot Noir … Helena Napa Valley Kalifornien4711 Riesling Res. … Müller Rheingau Hessen4961 Chardonnay … Bighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–11
Redundanzen
• Redundanzen in Basisrelationen aus mehreren Gründenunerwünscht:
• Redundante Informationen belegen unnötigenSpeicherplatz
• Änderungsoperationen auf Basisrelationen mitRedundanzen nur schwer korrekt umsetzbar: wenn eineInformation redundant vorkommt, muss eine Änderungdiese Information in allen ihren Vorkommen verändern
• mit normalen relationalen Änderungsoperationen und denin relationalen Systemen vorkommenden lokalenIntegritätsbedingungen (Schlüsseln) nur schwer realisierbar
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–12
Redundanzen
• Redundanzen in Basisrelationen aus mehreren Gründenunerwünscht:
• Redundante Informationen belegen unnötigenSpeicherplatz
• Änderungsoperationen auf Basisrelationen mitRedundanzen nur schwer korrekt umsetzbar: wenn eineInformation redundant vorkommt, muss eine Änderungdiese Information in allen ihren Vorkommen verändern
• mit normalen relationalen Änderungsoperationen und denin relationalen Systemen vorkommenden lokalenIntegritätsbedingungen (Schlüsseln) nur schwer realisierbar
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–12
Redundanzen
• Redundanzen in Basisrelationen aus mehreren Gründenunerwünscht:
• Redundante Informationen belegen unnötigenSpeicherplatz
• Änderungsoperationen auf Basisrelationen mitRedundanzen nur schwer korrekt umsetzbar: wenn eineInformation redundant vorkommt, muss eine Änderungdiese Information in allen ihren Vorkommen verändern
• mit normalen relationalen Änderungsoperationen und denin relationalen Systemen vorkommenden lokalenIntegritätsbedingungen (Schlüsseln) nur schwer realisierbar
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–12
Redundanzen
• Redundanzen in Basisrelationen aus mehreren Gründenunerwünscht:
• Redundante Informationen belegen unnötigenSpeicherplatz
• Änderungsoperationen auf Basisrelationen mitRedundanzen nur schwer korrekt umsetzbar: wenn eineInformation redundant vorkommt, muss eine Änderungdiese Information in allen ihren Vorkommen verändern
• mit normalen relationalen Änderungsoperationen und denin relationalen Systemen vorkommenden lokalenIntegritätsbedingungen (Schlüsseln) nur schwer realisierbar
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–12
Änderungsanomalien
• Einfügen in die redundanzbehaftete WEINE-Relation:insert into WEINE (WeinID, Name, Farbe,
Jahrgang, Weingut, Anbaugebiet, Region)values (4711, 'Chardonnay', 'Weiß', 2004,
'Helena', 'Rheingau', 'Kalifornien')
• WeinID 4711 bereits anderem Wein zugeordnet: verletzt FDWeinID→Name
• Weingut Helena war bisher im Napa Valley angesiedelt:verletzt FD Weingut→Anbaugebiet
• Rheingau liegt nicht in Kalifornien: verletzt FDAnbaugebiet→Region
• auch update- und delete-Anomalien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–13
Änderungsanomalien
• Einfügen in die redundanzbehaftete WEINE-Relation:insert into WEINE (WeinID, Name, Farbe,
Jahrgang, Weingut, Anbaugebiet, Region)values (4711, 'Chardonnay', 'Weiß', 2004,
'Helena', 'Rheingau', 'Kalifornien')
• WeinID 4711 bereits anderem Wein zugeordnet: verletzt FDWeinID→Name
• Weingut Helena war bisher im Napa Valley angesiedelt:verletzt FD Weingut→Anbaugebiet
• Rheingau liegt nicht in Kalifornien: verletzt FDAnbaugebiet→Region
• auch update- und delete-Anomalien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–13
Funktionale Abhängigkeiten
Funktionale Abhängigkeit zwischen Attributemengen X und YWenn in jedem Tupel der Relation der Attributwert unter denX-Komponenten den Attributwert unter den Y-Komponentenfestlegt.
• Unterscheiden sich zwei Tupel in den X-Attributen nicht,so haben sie auch gleiche Werte für alle Y-Attribute
• Notation für funktionale Abhängigkeit (FD, von functionaldependency): X→Y
• Beispiel:WeinID →Name, WeingutAnbaugebiet→Region
• aber nicht: Weingut→Name
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–14
Funktionale Abhängigkeiten
Funktionale Abhängigkeit zwischen Attributemengen X und YWenn in jedem Tupel der Relation der Attributwert unter denX-Komponenten den Attributwert unter den Y-Komponentenfestlegt.
• Unterscheiden sich zwei Tupel in den X-Attributen nicht,so haben sie auch gleiche Werte für alle Y-Attribute
• Notation für funktionale Abhängigkeit (FD, von functionaldependency): X→Y
• Beispiel:WeinID →Name, WeingutAnbaugebiet→Region
• aber nicht: Weingut→Name
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–14
Schlüssel als Spezialfall
• für Beispiel auf Folie 5-11WeinID→Name, Farbe, Jahrgang, Weingut,
Anbaugebiet, Region• Immer: WeinID→WeinID,dann gesamtes Schema auf rechter Seite
• Wenn linke Seite minimal: Schlüssel• Formal: Schlüssel X liegt vor, wenn für RelationenschemaR FD X→R gilt und X minimal
Ziel des Datenbankentwurfsalle gegebenen funktionalen Abhängigkeiten inSchlüsselabhängigkeiten umformen, ohne dabei semantischeInformation zu verlieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–15
Schlüssel als Spezialfall
• für Beispiel auf Folie 5-11WeinID→Name, Farbe, Jahrgang, Weingut,
Anbaugebiet, Region• Immer: WeinID→WeinID,dann gesamtes Schema auf rechter Seite
• Wenn linke Seite minimal: Schlüssel• Formal: Schlüssel X liegt vor, wenn für RelationenschemaR FD X→R gilt und X minimal
Ziel des Datenbankentwurfsalle gegebenen funktionalen Abhängigkeiten inSchlüsselabhängigkeiten umformen, ohne dabei semantischeInformation zu verlieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–15
Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• Tabelle genügt A→B und B→C
• dann gilt auch A→C• nicht ableitbar C→A oder C→BFormalisierung im nächsten Abschnitt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–16
Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• Tabelle genügt A→B und B→C• dann gilt auch A→C
• nicht ableitbar C→A oder C→BFormalisierung im nächsten Abschnitt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–16
Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• Tabelle genügt A→B und B→C• dann gilt auch A→C• nicht ableitbar C→A oder C→B
Formalisierung im nächsten Abschnitt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–16
Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• Tabelle genügt A→B und B→C• dann gilt auch A→C• nicht ableitbar C→A oder C→B
Formalisierung im nächsten Abschnitt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–16
Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• Tabelle genügt A→B und B→C• dann gilt auch A→C• nicht ableitbar C→A oder C→BFormalisierung im nächsten Abschnitt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–16
Normalformen
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass
1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3
• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3
• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3
• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3
• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3
• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3• Redundanzen innerhalb einer Relation: Normalformen
• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Schemaeigenschaften
• Relationenschemata, Schlüssel und Fremdschlüssel sowählen, dass1. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können,
2. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt werden können und
3. die Anwendungsdaten möglichst nicht-redundantdargestellt werden.
• Hier: Forderung 3• Redundanzen innerhalb einer Relation: Normalformen• globale Redundanzen: Minimalität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–17
Normalformen
• legen Eigenschaften von Relationenschemata fest
• verbieten bestimmte Kombinationen von funktionalenAbhängigkeiten in Relationen
• sollen Redundanzen und Anomalien vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–18
Normalformen
• legen Eigenschaften von Relationenschemata fest• verbieten bestimmte Kombinationen von funktionalenAbhängigkeiten in Relationen
• sollen Redundanzen und Anomalien vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–18
Normalformen
• legen Eigenschaften von Relationenschemata fest• verbieten bestimmte Kombinationen von funktionalenAbhängigkeiten in Relationen
• sollen Redundanzen und Anomalien vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–18
Erste Normalform
• erlaubt nur atomare Attribute in den Relationenschemata,d.h. als Attributwerte sind Elemente von Standard-Datentypen wie integer oder string erlaubt, aberkeine Konstruktoren wie array oder set
• Nicht in 1NF:
Weingut Anbaugebiet Region WNameCh. La Rose Saint-Emilion Bordeaux La Rose Grand CruCreek Barossa Valley Südaustralien Creek Shiraz, Pinot NoirHelena Napa Valley Kalifornien Zinfandel, Pinot NoirMüller Rheingau Hessen Riesling ReserveBighorn Napa Valley Kalifornien Chardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–19
Erste Normalform
• erlaubt nur atomare Attribute in den Relationenschemata,d.h. als Attributwerte sind Elemente von Standard-Datentypen wie integer oder string erlaubt, aberkeine Konstruktoren wie array oder set
• Nicht in 1NF:
Weingut Anbaugebiet Region WNameCh. La Rose Saint-Emilion Bordeaux La Rose Grand CruCreek Barossa Valley Südaustralien Creek Shiraz, Pinot NoirHelena Napa Valley Kalifornien Zinfandel, Pinot NoirMüller Rheingau Hessen Riesling ReserveBighorn Napa Valley Kalifornien Chardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–19
Erste Normalform
• erlaubt nur atomare Attribute in den Relationenschemata,d.h. als Attributwerte sind Elemente von Standard-Datentypen wie integer oder string erlaubt, aberkeine Konstruktoren wie array oder set
• Nicht in 1NF:
Weingut Anbaugebiet Region WNameCh. La Rose Saint-Emilion Bordeaux La Rose Grand CruCreek Barossa Valley Südaustralien Creek Shiraz, Pinot NoirHelena Napa Valley Kalifornien Zinfandel, Pinot NoirMüller Rheingau Hessen Riesling ReserveBighorn Napa Valley Kalifornien Chardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–19
Erste Normalform
• erlaubt nur atomare Attribute in den Relationenschemata,d.h. als Attributwerte sind Elemente von Standard-Datentypen wie integer oder string erlaubt, aberkeine Konstruktoren wie array oder set
• Nicht in 1NF:
Weingut Anbaugebiet Region WNameCh. La Rose Saint-Emilion Bordeaux La Rose Grand CruCreek Barossa Valley Südaustralien Creek Shiraz, Pinot NoirHelena Napa Valley Kalifornien Zinfandel, Pinot NoirMüller Rheingau Hessen Riesling ReserveBighorn Napa Valley Kalifornien Chardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–19
Erste Normalform /2
• in erster Normalform:
Weingut Anbaugebiet Region WNameCh. La Rose Saint-Emilion Bordeaux La Rose Grand CruCreek Barossa Valley Südaustralien Creek ShirazCreek Barossa Valley Südaustralien Pinot NoirHelena Napa Valley Kalifornien ZinfandelHelena Napa Valley Kalifornien Pinot NoirMüller Rheingau Hessen Riesling ReserveBighorn Napa Valley Kalifornien Chardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–20
Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–21
Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–21
Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–21
Zweite Normalform
Zweite NormalformZweite Normalform eliminiert derartige partielleAbhängigkeiten bei Nichtschlüsselattributen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–22
Eliminierung partieller Abhängigkeiten
Schlüssel K
abhängigesAttribut ATeil des
Schlüssels XSattler/Saake | VL Datenbanksysteme | 22. September 2019 5–23
Zweite Normalform /2
• Beispielrelation in 2NFR1(Name, Weingut, Preis)R2(Name, Farbe)R3(Weingut, Anbaugebiet, Region)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–24
Dritte Normalform
• eliminiert (zusätzlich) transitive Abhängigkeiten
• etwa Weingut → Anbaugebiet und Anbaugebiet →Region in Relation auf Folie 5-21
• man beachte: 3NF betrachtet nur Nicht-Schlüsselattributeals Endpunkt transitiver Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–25
Dritte Normalform
• eliminiert (zusätzlich) transitive Abhängigkeiten• etwa Weingut → Anbaugebiet und Anbaugebiet →Region in Relation auf Folie 5-21
• man beachte: 3NF betrachtet nur Nicht-Schlüsselattributeals Endpunkt transitiver Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–25
Dritte Normalform
• eliminiert (zusätzlich) transitive Abhängigkeiten• etwa Weingut → Anbaugebiet und Anbaugebiet →Region in Relation auf Folie 5-21
• man beachte: 3NF betrachtet nur Nicht-Schlüsselattributeals Endpunkt transitiver Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–25
Eliminierung transitiver Abhängigkeiten
Schlüssel K
abhängigesAttribut AAttributmenge X
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–26
Dritte Normalform /2
• transitive Abhängigkeit in R3, d.h. R3 verletzt 3NF• Beispielrelation in 3NFR3_1(Weingut, Anbaugebiet)R3_2(Anbaugebiet, Region)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–27
Dritte Normalform: formal
Relationenschema R, X ⊆ R und F ist eine FD-Menge über R
Dritte Normalform• A ∈ R heißt transitiv abhängig von X bezüglich F genaudann, wenn es ein Y ⊆ R gibt mit X→Y, Y→X, Y→A,A ∈ XY
• erweitertes Relationenschema R = (R,K) ist in 3NFbezüglich F genau dann, wenn ∃A ∈ R:
• A ist Nicht-Primattribut in R• ∧ A transitiv abhängig von einem K ∈ K bezüglich Fi.
• Nicht-Primattribut: A ist in keinem Schlüssel von Renthalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–28
Boyce-Codd-Normalform
Verschärfung der 3NF: Eliminierung transitiver Abhängigkeitenauch zwischen PrimattributenName Weingut Händler PreisLa Rose Grand Cru Château La Rose Weinkontor 39.90Creek Shiraz Creek Wein.de 7.99Pinot Noir Creek Wein.de 10.99Zinfandel Helena GreatWines.com 5.99Pinot Noir Helena GreatWines.com 19.99Riesling Reserve Müller Weinkeller 19.99Chardonnay Bighorn Wein-Dealer 9.90
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–29
Boyce-Codd-Normalform
Name, Weingut→PreisWeingut →HändlerHändler →Weingut
• Schlüsselkandidaten: Name, Weingut und Name,Händler
• in 3NF, nicht jedoch in BCNF
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–30
Boyce-Codd-Normalform
Name, Weingut→PreisWeingut →HändlerHändler →Weingut
• Schlüsselkandidaten: Name, Weingut und Name,Händler
• in 3NF, nicht jedoch in BCNF
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–30
Boyce-Codd-Normalform
Name, Weingut→PreisWeingut →HändlerHändler →Weingut
• Schlüsselkandidaten: Name, Weingut und Name,Händler
• in 3NF, nicht jedoch in BCNF
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–30
Boyce-Codd-Normalform /2
• erweitertes Relationenschema R = (R,K), FD-Menge F• BCNF formal:
Boyce-Codd-Normalform
∃A ∈ R : A transitiv abhängig von einem K ∈ K bezüglich F.
• Schema in BCNF:WEINE(Name, Weingut, Preis)WEINHANDEL(Weingut, Händler)
• BCNF kann jedoch Abhängigkeitstreue verletzen, daher oftnur bis 3NF
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–31
Boyce-Codd-Normalform /2
• erweitertes Relationenschema R = (R,K), FD-Menge F• BCNF formal:
Boyce-Codd-Normalform
∃A ∈ R : A transitiv abhängig von einem K ∈ K bezüglich F.
• Schema in BCNF:WEINE(Name, Weingut, Preis)WEINHANDEL(Weingut, Händler)
• BCNF kann jedoch Abhängigkeitstreue verletzen, daher oftnur bis 3NF
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–31
Minimalität
• Global Redundanzen vermeiden
• andere Kriterien (wie Normalformen) mit möglichst wenigSchemata erreichen
• Beispiel: Attributmenge ABC, FD-Menge A→B,B→C• Datenbankschemata in dritter Normalform:
S = (AB, A), (BC, B)
S′ = (AB, A), (BC, B), (AC, A)
Redundanzen in S′
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–32
Minimalität
• Global Redundanzen vermeiden• andere Kriterien (wie Normalformen) mit möglichst wenigSchemata erreichen
• Beispiel: Attributmenge ABC, FD-Menge A→B,B→C• Datenbankschemata in dritter Normalform:
S = (AB, A), (BC, B)
S′ = (AB, A), (BC, B), (AC, A)
Redundanzen in S′
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–32
Minimalität
• Global Redundanzen vermeiden• andere Kriterien (wie Normalformen) mit möglichst wenigSchemata erreichen
• Beispiel: Attributmenge ABC, FD-Menge A→B,B→C
• Datenbankschemata in dritter Normalform:
S = (AB, A), (BC, B)
S′ = (AB, A), (BC, B), (AC, A)
Redundanzen in S′
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–32
Minimalität
• Global Redundanzen vermeiden• andere Kriterien (wie Normalformen) mit möglichst wenigSchemata erreichen
• Beispiel: Attributmenge ABC, FD-Menge A→B,B→C• Datenbankschemata in dritter Normalform:
S = (AB, A), (BC, B)
S′ = (AB, A), (BC, B), (AC, A)
Redundanzen in S′
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–32
Schemaeigenschaften
Kennung Schemaeigenschaft Kurzcharakteristik1NF nur atomare Attribute2NF keine partielle Abhängigkeit eines
Nicht-Primattributes von einemSchlüssel
S1 3NF keine transitive Abhängigkeit ei-nes Nicht-Primattributes von einemSchlüssel
BCNF keine transitive Abhängigkeit einesAttributes von einem Schlüssel
S2 Minimalität minimale Anzahl von Relationen-schemata, die die anderen Eigen-schaften erfüllt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–33
Transformationseigenschaften
Transformationseigenschaften
• Bei einer Zerlegung einer Relation in mehrere Relationenist darauf zu achten, dass
1. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt (Abhängigkeitstreue) und
2. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können (Verbundtreue)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–34
Transformationseigenschaften
• Bei einer Zerlegung einer Relation in mehrere Relationenist darauf zu achten, dass1. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt (Abhängigkeitstreue) und
2. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können (Verbundtreue)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–34
Transformationseigenschaften
• Bei einer Zerlegung einer Relation in mehrere Relationenist darauf zu achten, dass1. nur semantisch sinnvolle und konsistenteAnwendungsdaten dargestellt (Abhängigkeitstreue) und
2. alle Anwendungsdaten aus den Basisrelationen hergeleitetwerden können (Verbundtreue)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–34
Abhängigkeitstreue
• Abhängigkeitstreue: eine Menge von Abhängigkeiten kannäquivalent in eine zweite Menge von Abhängigkeitentransformiert werden
• spezieller: in die Menge der Schlüsselabhängigkeiten, dadiese vom Datenbanksystem effizient überprüft werdenkann
• die Menge der Abhängigkeiten soll äquivalent zu derMenge der Schlüsselbedingungen im resultierendenDatenbankschema sein
• Äquivalenz sichert zu, dass mit denSchlüsselabhängigkeiten semantisch genau die gleichenIntegritätsbedingungen ausgedrückt werden wie mit denfunktionalen oder anderen Abhängigkeiten vorher
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–35
Abhängigkeitstreue
• Abhängigkeitstreue: eine Menge von Abhängigkeiten kannäquivalent in eine zweite Menge von Abhängigkeitentransformiert werden
• spezieller: in die Menge der Schlüsselabhängigkeiten, dadiese vom Datenbanksystem effizient überprüft werdenkann
• die Menge der Abhängigkeiten soll äquivalent zu derMenge der Schlüsselbedingungen im resultierendenDatenbankschema sein
• Äquivalenz sichert zu, dass mit denSchlüsselabhängigkeiten semantisch genau die gleichenIntegritätsbedingungen ausgedrückt werden wie mit denfunktionalen oder anderen Abhängigkeiten vorher
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–35
Abhängigkeitstreue
• Abhängigkeitstreue: eine Menge von Abhängigkeiten kannäquivalent in eine zweite Menge von Abhängigkeitentransformiert werden
• spezieller: in die Menge der Schlüsselabhängigkeiten, dadiese vom Datenbanksystem effizient überprüft werdenkann
• die Menge der Abhängigkeiten soll äquivalent zu derMenge der Schlüsselbedingungen im resultierendenDatenbankschema sein
• Äquivalenz sichert zu, dass mit denSchlüsselabhängigkeiten semantisch genau die gleichenIntegritätsbedingungen ausgedrückt werden wie mit denfunktionalen oder anderen Abhängigkeiten vorher
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–35
Abhängigkeitstreue
• Abhängigkeitstreue: eine Menge von Abhängigkeiten kannäquivalent in eine zweite Menge von Abhängigkeitentransformiert werden
• spezieller: in die Menge der Schlüsselabhängigkeiten, dadiese vom Datenbanksystem effizient überprüft werdenkann
• die Menge der Abhängigkeiten soll äquivalent zu derMenge der Schlüsselbedingungen im resultierendenDatenbankschema sein
• Äquivalenz sichert zu, dass mit denSchlüsselabhängigkeiten semantisch genau die gleichenIntegritätsbedingungen ausgedrückt werden wie mit denfunktionalen oder anderen Abhängigkeiten vorher
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–35
Abhängigkeitstreue: Beispiel
• Zerlegung des Relationenschemas WEINE (Folie 5-21) in3NF:
R1(Name, Weingut, Preis)R2(Name, Farbe)R3_1(Weingut, Anbaugebiet)R3_2(Anbaugebiet, Region)
mit SchlüsselabhängigkeitenName, Weingut→PreisName →FarbeWeingut →AnbaugebietAnbaugebiet →Region
• äquivalent zu FDs f1 . . . f4 (Folie 5-21) abhängigkeitstreu
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–36
Abhängigkeitstreue: Beispiel /2
• Postleitzahl-Struktur der Deutschen PostADRESSE(PLZ (P), Ort (O), Strasse(S),
Hausnummer(H))und funktionalen Abhängigkeiten F
OSH→P, P→O• Schlüsselkandidaten: OSH und PSH 3NF• nicht in BCNF (wegen PSH→P→O): daher Zerlegung vonADRESSE
• aber: jede Zerlegung würde OSH→P zerstören• Menge der sich ergebenden FDs ist nicht äquivalent zu F,die Zerlegung damit nicht abhängigkeitstreu
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–37
Abhängigkeitstreue formal
• lokal erweitertes DatenbankschemaS = (R1,K1), . . . , (Rp,Kp); ein Menge F lokalerAbhängigkeiten
AbhängigkeitstreueS charakterisiert vollständig F (oder: ist abhängigkeitstreubezüglich F) genau dann, wenn
F ≡ K→R | (R,K) ∈ S, K ∈ K
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–38
Verbundtreue
• zur Erfüllung des Kriteriums der Normalformen müssenRelationenschemata teilweise in kleinereRelationenschemata zerlegt werden
• für Beschränkung auf „sinnvolle“ Zerlegungen giltForderung, dass die Originalrelation wieder aus denzerlegten Relationen mit dem natürlichen Verbundzurückgewonnen werden kann Verbundtreue
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–39
Verbundtreue
• zur Erfüllung des Kriteriums der Normalformen müssenRelationenschemata teilweise in kleinereRelationenschemata zerlegt werden
• für Beschränkung auf „sinnvolle“ Zerlegungen giltForderung, dass die Originalrelation wieder aus denzerlegten Relationen mit dem natürlichen Verbundzurückgewonnen werden kann Verbundtreue
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–39
Verbundtreue: Beispiele
• Zerlegung des Relationenschemas R = ABC in
R1 = AB und R2 = BC
• Dekomposition bei Vorliegen der Abhängigkeiten
F = A→B, C→B
ist nicht verbundtreu• dagegen bei Vorliegen von
F′ = A→B,B→C
verbundtreu
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–40
Verbundtreue Dekomposition
• Originalrelation:
A B C1 2 34 2 3
• Dekomposition:
A B1 24 2
B C2 3
• Verbund (verbundtreu):
A B C1 2 34 2 3
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–41
Nicht verbundtreue Dekomposition
• Originalrelation:A B C1 2 34 2 5
• Dekomposition:A B1 24 2
B C2 32 5
• Verbund (nicht verbundtreu):A B C1 2 34 2 51 2 54 2 3
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–42
Verbundtreue formal
VerbundtreueDie Dekomposition einer Attributmenge X in X1, . . . , Xp mitX =
∪pi=1 Xi heißt verbundtreu (π ▷◁-treu, lossless) bezüglich
einer Menge von Abhängigkeiten F über X genau dann, wenn
∀r ∈ SATX(F) : πX1(r) ▷◁ · · · ▷◁ πXp(r) = r
gilt.
• einfaches Kriterium für Verbundtreue bei Dekompositionin zwei Relationenschemata: Dekomposition von X in X1und X2 ist verbundtreu bzgl. F, wenn X1 ∩ X2→X1 ∈ F+ oderX1 ∩ X2→X2 ∈ F+
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–43
Transformationseigenschaften
Kennung Transformationseigenschaft KurzcharakteristikT1 Abhängigkeitstreue alle gegebenen Abhängigkeiten
sind durch Schlüssel repräsentiertT2 Verbundtreue Originalrelationen können durch
den Verbund der Basisrelationenwiedergewonnen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–44
Weitere Abhängigkeiten
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)
• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)
• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)
• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)
• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)
• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)
• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)
• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)
• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)
• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Weitere Abhängigkeiten
• Mehrwertige Abhängigkeit (kurz: MVD)• innerhalb einer Relation r wird einem Attributwert von Xeine Menge von Y-Werten zugeordnet, unabhängig von denWerten der restlichen Attribute Vierte Normalform
• Verbundabhängigkeit (kurz: JD)• R kann ohne Informationsverlust in R1, . . . ,Rp aufgetrenntwerden: ▷◁ [R1, . . . ,Rp]
• Inklusionsabhängigkeit (kurz: IND)• auf der rechten Seite einer Fremdschlüsselabhängigkeitnicht unbedingt der Primärschlüssel einer Relation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–45
Mehrwertige Abhängigkeiten
• Folge der 1NF: Mehrwertige Abhängigkeiten erzeugenRedundanz:
WEIN_EMPFEHLUNG WName Jahrgang GerichtChardonnay 2002 GeflügelChardonnay 2002 FischChardonnay 2003 FischChardonnay 2003 GeflügelShiraz 2003 WildShiraz 2003 LammShiraz 2004 WildShiraz 2004 Lamm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–46
Mehrwertige Abhängigkeiten /2
• eine (oder mehrere) Gruppe von Attributwerten ist voneinem Schlüssel bestimmt, unabhängig von anderenAttributen
• hier: Menge von Jahrgängen plus Menge von GerichtenWName →→ Jahrgang, WName →→ Gericht
• Resultat: Redundanz durch Bildung aller Kombinationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–47
Mehrwertige Abhängigkeiten formal
• Relation r(R) mit X, Y ⊆ R, Z := R− (X ∪ Y) genügt der MVDX→→Y gdw.
∀t1, t2 ∈ r : [(t1 = t2 ∧ t1(X) = t2(X))=⇒ ∃t3 ∈ r : t3(X) = t1(X) ∧ t3(Y) = t1(Y) ∧
t3(Z) = t2(Z)]• Relation r(R) mit R = XYZ und X→→Y:
• wenn (x1, y1, z1) ∈ r und (x1, y2, z2) ∈ r• dann auch: (x1, y1, z2) ∈ r und (x1, y2, z1) ∈ r
• Bsp.: wegen (’Chardonnay’, 2002, ’Geflügel’) und(’Chardonnay’, 2003, ’Fisch’) müssen auch(’Chardonnay’, 2002, ’Fisch’) und(’Chardonnay’, 2003, ’Geflügel’) enthalten sein
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–48
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung
• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Mehrwertige Abhängigkeiten und 4NF
• wünschenswerte Schemaeigenschaft bei Vorliegen vonMVDs: vierte Normalform
• fordert die Beseitigung derartiger Redundanzen: keinezwei MVDs zwischen Attributen einer Relation
• Beispiel von Folie 5-46 verletzt diese Forderung• Prinzip
• Elimination der rechten Seite einer der beidenmehrwertigen Abhängigkeiten,
• linke Seite mit dieser rechten Seite in neue Relationkopiert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–49
Vierte Normalform
WEIN_JAHR WName JahrgangChardonnay 2002Chardonnay 2003Shiraz 2003Shiraz 2004
WEIN_GERICHT WName GerichtChardonnay GeflügelChardonnay FischShiraz WildShiraz Lamm
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–50
Vierte Normalform formal
• Relationenschema R mit X, Y ⊆ R, MVD-Menge M über R• MVD X→→Y heißt trivial genau dann, wenn Y ⊆ X oderX ∪ Y = R
Vierte Normalformerweitertes Relationenschema R = (R,K) ist in vierterNormalform (4NF) bezüglich M genau dann, wenn für alleX→→Y ∈ M+ gilt:
X→→Y ist trivial oder X ⊇ K für ein K ∈ K.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–51
Nichttriviale MVDs
• Erweiterung der Relation WEIN_JAHR von Folie 5-50 umAttribute Farbe und Restsüße
• MVD WName→→Jahrgang ist nicht mehr trivial• Zerlegung:
WEIN_JAHR1(WName, Jahrgang)WEIN_JAHR2(WName, Farbe, Restsüße)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–52
Nichttriviale MVDs
• Erweiterung der Relation WEIN_JAHR von Folie 5-50 umAttribute Farbe und Restsüße
• MVD WName→→Jahrgang ist nicht mehr trivial
• Zerlegung:WEIN_JAHR1(WName, Jahrgang)WEIN_JAHR2(WName, Farbe, Restsüße)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–52
Nichttriviale MVDs
• Erweiterung der Relation WEIN_JAHR von Folie 5-50 umAttribute Farbe und Restsüße
• MVD WName→→Jahrgang ist nicht mehr trivial• Zerlegung:
WEIN_JAHR1(WName, Jahrgang)WEIN_JAHR2(WName, Farbe, Restsüße)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–52
Zusammenfassung
• funktionale Abhängigkeiten• Normalformen (1NF - 3NF, BCNF)• Abhängigkeitstreue und Verbundtreue• Entwurfsverfahren• mehrwertige Abhängigkeiten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–53
Kontrollfragen
• Welches Ziel hat die Normalisierungrelationaler Schemata?
• Welche Eigenschaften relationalerSchemata werden bei den Normalformenberücksichtigt?
• Was unterscheidet 3NF und BCNF?• Was fordern Abhängigkeitstreue undVerbundtreue?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–54
Kontrollfragen
• Welches Ziel hat die Normalisierungrelationaler Schemata?
• Welche Eigenschaften relationalerSchemata werden bei den Normalformenberücksichtigt?
• Was unterscheidet 3NF und BCNF?• Was fordern Abhängigkeitstreue undVerbundtreue?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–54
Kontrollfragen
• Welches Ziel hat die Normalisierungrelationaler Schemata?
• Welche Eigenschaften relationalerSchemata werden bei den Normalformenberücksichtigt?
• Was unterscheidet 3NF und BCNF?
• Was fordern Abhängigkeitstreue undVerbundtreue?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–54
Kontrollfragen
• Welches Ziel hat die Normalisierungrelationaler Schemata?
• Welche Eigenschaften relationalerSchemata werden bei den Normalformenberücksichtigt?
• Was unterscheidet 3NF und BCNF?• Was fordern Abhängigkeitstreue undVerbundtreue?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–54
Teil VI
Relationale Theorie
Relationale Theorie
1. Formalisierung
2. Rechnen mit FDs
3. Mehr zu Normalformen
4. Entwurfsverfahren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1
Relationale Theorie
1. Formalisierung
2. Rechnen mit FDs
3. Mehr zu Normalformen
4. Entwurfsverfahren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1
Relationale Theorie
1. Formalisierung
2. Rechnen mit FDs
3. Mehr zu Normalformen
4. Entwurfsverfahren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1
Relationale Theorie
1. Formalisierung
2. Rechnen mit FDs
3. Mehr zu Normalformen
4. Entwurfsverfahren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1
Lernziele für heute …
• Vertiefte Kenntnisse der theoretischenGrundlagen des relationalen Entwurfs
• Korrektheit der Normalisierung• Details des Syntheseverfahrens
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–2
Lernziele für heute …
• Vertiefte Kenntnisse der theoretischenGrundlagen des relationalen Entwurfs
• Korrektheit der Normalisierung
• Details des Syntheseverfahrens
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–2
Lernziele für heute …
• Vertiefte Kenntnisse der theoretischenGrundlagen des relationalen Entwurfs
• Korrektheit der Normalisierung• Details des Syntheseverfahrens
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–2
Formalisierung
Wiederholung: Formalisierung Relationenmodell
• Attribute und Domänen• U nichtleere, endliche Menge: Universum• A ∈ U : Attribut• D = D1, . . . ,Dm Menge endlicher, nichtleerer Mengen:jedes Di: Wertebereich oder Domäne
• total definierte Funktion dom : U −→ D• dom(A): Domäne von Aw ∈ dom(A): Attributwert für A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–3
Wiederholung: Formalisierung Relationenmodell /2
• Relationenschemata und Relationen• R ⊆ U : Relationenschema• Relation r über R = A1, . . . ,An (kurz: r(R)) ist endlicheMenge von Abbildungen t : R −→
∪mi=1 Di, Tupel genannt
• Es gilt t(A) ∈ dom(A) (t(A) Restriktion von t auf A ∈ R)• für X ⊆ R analog t(X) X-Wert von t• Menge aller Relationen über R: REL(R) := r | r(R)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–4
Wiederholung: Formalisierung Relationenmodell /3
• Datenbankschema und Datenbank• Menge von Relationenschemata S := R1, . . . ,Rp:Datenbankschema
• Datenbank über S: Menge von Relationen d := r1, . . . , rp,wobei ri(Ri)
• Datenbank d über S: d(S)• Relation r ∈ d: Basisrelation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–5
Rechnen mit FDs
Wiederholung: Ableitung von FDs
r A B Ca1 b1 c1a2 b1 c1a3 b2 c1a4 b1 c1
• genügt A→B und B→C• dann gilt auch A→C• nicht ableitbar C→A oder C→B
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–6
Formale Ableitung von FDs
• Gilt für f über R SATR(F) ⊆ SATR(f), dann impliziert F die FDf (kurz: F |= f)
• obiges Beispiel:
F = A→B,B→C |= A→C
• Hüllenbildung: Ermittlung aller funktionalenAbhängigkeiten, die aus einer gegebenen FD-Mengeabgeleitet werden können
• Hülle F+R := f | (f FD über R) ∧ F |= f• Beispiel:
A→B,B→C+ = A→B,B→C,A→C,AB→C,A→BC, . . . ,AB→AB, . . .
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–7
Ableitungsregeln
F1 Reflexivität X ⊇ Y =⇒ X→YF2 Augmentation X→Y =⇒ XZ→YZ sowie XZ→YF3 Transitivität X→Y, Y→Z =⇒ X→ZF4 Dekomposition X→YZ =⇒ X→YF5 Vereinigung X→Y, X→Z =⇒ X→YZF6 Pseudotransitivität X→Y,WY→Z =⇒ WX→Z
F1-F3 bekannt als Armstrong-Axiome (sound, complete)• gültig (sound): Regeln leiten keine FDs ab, die logischnicht impliziert
• vollständig (complete): alle implizierten FDs werdenabgeleitet
• unabhängig (independent) oder auch bzgl. ⊆ minimal:keine Regel kann weggelassen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–8
Beweis: F1
• Annahme: X ⊇ Y, X, Y ⊂ R, t1, t2 ∈ r(R) mit t1(X) = t2(X)• dann folgt: t1(Y) = t2(Y) wegen X ⊇ Y• daraus folgt: X→Y
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–9
Beweis: F2
• Annahme: X→Y gilt in r(R), jedoch nicht: XZ→YZ• dann müssen zwei Tupel t1, t2 ∈ r(R) existieren, so dassgilt(1) t1(X) = t2(X)(2) t1(Y) = t2(Y)(3) t1(XZ) = t2(XZ)(4) t1(YZ) = t2(YZ)
• Widerspruch wegen t1(Z) = t2(Z) aus (1) und (3), worausfolgt: t1(YZ) = t2(YZ) (in Verbindung mit (4))
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–10
Beweis: F3
• Annahme: in r(R) gelten:(1) X→Y(2) Y→Z
• demzufolge für zwei beliebige Tupel t1, t2 ∈ r(R) mitt1(X) = t2(X) muss gelten:(3) t1(Y) = t2(Y) (wegen (1))(4) t1(Z) = t2(Z) (wegen (3) und (2))
• daher gilt: X→Z
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–11
Alternative Regelmenge
• B-Axiome oder RAP-Regeln
R Reflexivität =⇒ X→XA Akkumulation X→YZ, Z→AW =⇒ X→YZAP Projektivität X→YZ =⇒ X→Y
• Regelmenge ist vollständig, da Armstrong-Axiome darausabgeleitet werden können
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–12
Membership-Problem
Membership-ProblemKann eine bestimmte FD X→Y aus der vorgegebenen MengeF abgeleitet werden, d.h. wird sie von F impliziert?
Membership-Problem: „X→Y ∈ F+ ?“
• Hülle einer Attributmenge X bzgl. F istX+F := A | X→A ∈ F+
• Membership-Problem kann durch das modifizierteProblem
Membership-Problem (2): „Y ⊆ X+F ?“in linearer Zeit gelöst werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–13
Algorithmus Closure: Ermittlung der Hülle X+F von X bzgl. F
Closure(F, X):X+ := Xrepeat
X+ := X+ /* R-Regel */forall FDs Y→Z ∈ F
if Y ⊆ X+ then X+ := X+ ∪ Z /* A-Regel */until X+ = X+
return X+
Member(F, X→Y): /* Test auf X→Y ∈ F+ */return Y ⊆Closure(F, X) /* P-Regel */
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–14
Algorithmus Closure: Beispiel
A→C ∈ A→B︸ ︷︷ ︸f1
,B→C︸ ︷︷ ︸f2
+?
• Member(f1, f2,A→C)• C ⊆ Closure(f1, f2,A)• X+ ist initial A, schrittweises Hinzunehmen von B und C
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–15
Überdeckungen
• F heißt äquivalent zu G• oder: F Überdeckung von G; kurz: F ≡ G falls F+ = G+
• d.h.:∀g ∈ G : g ∈ F+ ∧ ∀f ∈ F : f ∈ G+
• wichtige Entwurfsaufgabe: Finden einer Überdeckung, die• einerseits so wenig Attribute wie möglich in ihrenfunktionalen Abhängigkeiten und
• andererseits möglichst wenig funktionale Abhängigkeiteninsgesamt enthält
• verschiedene Formen von Überdeckung: nicht-redundant,reduziert, minimal, ringförmig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–16
Reduktionsoperationen
• Ziel: Entfernen überflüssiger Attribute auf linker bzw.rechter Seite von FDs
• Linksreduktion: entfernt unwesentliche Attribute auf derlinken Seite einer FD
• Rechtsreduktion: entsprechend auf der rechten Seite• erw. Relationenschema R = (R,K), FD-Menge F über R, Aist ein Attribut aus R und X→Y eine FD aus F
Unwesentliche AttributeA heißt unwesentlich in X→Y bzgl. F, wenn
• X = AZ, Z = X =⇒ (F− X→Y) ∪ Z→Y ≡ F oder• Y = AW,W = Y =⇒ (F− X→Y) ∪ X→W ≡ F
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–17
Reduktionsoperationen /2
• A kann also aus der FD X→Y entfernt werden, ohne dasssich die Hülle von F ändert
• FD X→Y heißt linksreduziert, wenn kein Attribut in Xunwesentlich ist.
• FD X→Y heißt rechtsreduziert, wenn kein Attribut in Yunwesentlich ist.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–18
Minimale Überdeckung
• Eine minimale Überdeckung ist eine Überdeckung, dieeine minimale Anzahl von FDs enthält
• Auswahl der kleinsten aller nicht-redundantenÜberdeckungen
• FD-Menge F heißt minimal gdw.
∀F′[F′ ≡ F⇒ |F| ≤ |F′|
]• Bestimmung etwa durch reduzierte Überdeckung mitanschließender Äquivalenzklassenbildung (später)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–19
Reduzierte Überdeckung
ReducedCover(F):forall FD X→Y ∈ F /* Linksreduktion */
forall A ∈ X /* A unwesentlich ? */if Y ⊆ Closure(F, X− A)then ersetze X→Y durch (X− A)→Y in F
forall verbleibende FD X→Y ∈ F /* Rechtsreduktion */forall B ∈ Y /* B unwesentlich ? */
if B ⊆ Closure(F− X→Y ∪ X→(Y− B), X)then ersetze X→Y durch X→(Y− B)
Eliminiere FDs der Form X→∅Vereinige FDs der Form X→Y1, X→Y2, . . . zu X→Y1Y2 . . .return resultierende FDs
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–20
Reduzierte Überdeckung: Beispiel
• Geg.: FD-Menge
F = f1 : A→B, f2 : AB→C, f3 : A→C, f4 : B→A, f5 : C→E
1. Linksreduktion: bei FD f2 Attribut A streichen, daC ⊆ Closure(F, A) (wegen f3)
2. Rechtsreduktion: FD f3 durch A→ ersetzt, daC ⊆ Closure(A→B,B→C,A→,B→A, C→E, A)
3. Streichen von A→
• Ergebnis:
ReducedCover(F) = A→B,B→C,B→A, C→E
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–21
Äquivalenzklassen
• FDs mit äquivalenten linken Seiten werden zu einerÄquivalenzklasse zusammengefasst
• FDs X1→Y1 und X2→Y2 liegen in einer Äquivalenzklasse,wenn X1→X2 und X2→X1 gelten
• In einigen Fällen können nun zwei solche FDs in einerÄquivalenzklasse zu einer FD X→Y1Y2 zusammengefasstwerden
• Da die FDs einer Äquivalenzklasse in die FormX1→X2, X2→X3, . . . , Xn→X1, X1→Y überführt werdenkönnen, nennt man eine Überdeckung dieser Form eineringförmige Überdeckung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–22
Äquivalenzklassen /2
• linke Seiten sind äquivalent, wenn sie sich gegenseitigfunktional bestimmen
• Relationenschema R mit Xi, Y ⊂ R, FD-MengeXi→Xj und Xi→Y mit 1 ≤ i, j ≤ n kann dargestellt werdendurch (X1, X2, . . . , Xn)→Y
X4
X3 X1
X2
Y
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–23
Mehr zu Normalformen
Wiederholung: Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–24
Wiederholung: Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–24
Wiederholung: Zweite Normalform
• partielle Abhängigkeit liegt vor, wenn ein Attributfunktional schon von einem Teil des Schlüssels abhängt
Name Weingut Farbe Anbaugebiet Region PreisLa Rose … Ch. La Rose Rot Saint-Emilion Bordeaux 39.00Creek Shiraz Creek Rot Barossa Valley Südaustralien 7.99Pinot Noir Creek Rot Barossa Valley Südaustralien 10.99Zinfandel Helena Rot Napa Valley Kalifornien 5.99Pinot Noir Helena Rot Napa Valley Kalifornien 19.99Riesling Reserve Müller Weiß Rheingau Hessen 14.99Chardonnay Bighorn Weiß Napa Valley Kalifornien 9.90
f1: Name, Weingut→Preisf2: Name →Farbef3: Weingut →Anbaugebiet, Regionf4: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–24
Formale Definition der zweiten Normalform
• Hinweis: partiell abhängiges Attribut stören nur, wenn eskein Primattribut ist
• 2NF formal: erweitertes Relationenschema R = (R,K),FD-Menge F über R
Zweite Normalform
• Y hängt partiell von X bzgl. F ab, wenn die FD X→Y nichtlinksreduziert ist
• Y hängt voll von X ab, wenn die FD X→Y linksreduziert ist• R ist in 2NF, wenn R in 1NF ist und jedes Nicht-Primattribut von R voll von jedem Schlüssel von Rabhängt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–25
Entwurfsverfahren
Entwurfsverfahren: Ziele
• Universum U und FD-Menge F gegeben• lokal erweitertes DatenbankschemaS = (R1,K1), . . . , (Rp,Kp)berechnen mit
• T1: S charakterisiert vollständig F• S1: S ist in 3NF bezüglich F• T2: Dekomposition von U in R1, . . . ,Rp ist verbundtreubezüglich F
• S2: Minimalität, d.h. ∃S′ : S′ erfüllt T1, S1, T2 und |S′| < |S|
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–26
Entwurfsverfahren: Beispiel
• Datenbankschemata schlecht entworfen, wenn nur einsdieser vier Kriterien nicht erfüllt
• Beispiel: S = (AB, A), (BC, B), (AC, A) erfüllt T1, S1und T2 bezüglich F = A→B,B→C,A→Cin dritter Relation AC-Tupel redundant oder inkonsistent
• korrekt: S′ = (AB, A), (BC, B)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–27
Dekomposition
• Geg.: initiales Universalrelationenschema R = (U ,K(F))mit allen Attributen und einer von erfassten FDs F über Rimplizierten Schlüsselmenge
• Attributmenge U und eine FD-Menge F• suche alle K→U mit K minimal, für die K→U ∈ F+ gilt(K(F))
• Ges.: Zerlegung in D = R1,R2, . . . von3NF-Relationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–28
Dekomposition: Algorithmus
Decompose(R):Setze D := Rwhile R′ ∈ D, das 3NF nicht erfüllt
/* Finde Attribut A, das transitiv von K abhängig ist */if Schlüssel K mit K→Y, Y→K, Y→A,A ∈ KY then
/* Zerlege Relationenschema R bzgl. A */R1 := R− A , R2 := YAR1 := (R1,K) , R2 := (R2,K2 = Y)D := (D−R′) ∪ R1 ∪ R2
end ifend whilereturn D
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–29
Dekomposition: Beispiel
• initiales Relationenschema R = ABC• funktionale Abhängigkeiten F = A→B,B→C• Schlüssel K = A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–30
Dekomposition: Beispiel /2
• initiales Relationenschema R mit Name, Weingut, Preis,Farbe, Anbaugebiet, Region
• funktionale Abhängigkeiten
f1: Name, Weingut→Preisf2: Name, Weingut→Weingutf3: Name, Weingut→Namef4: Name →Farbef5: Weingut →Anbaugebiet, Regionf6: Anbaugebiet →Region
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–31
Dekomposition: Bewertung
• Vorteile: 3NF, Verbundtreue• Nachteile: restliche Kriterien nicht, reihenfolgeabhängig,NP-vollständig (Schlüsselsuche)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–32
Details zum Syntheseverfahren
• Prinzip: Synthese formt Original-FD-Menge F inresultierende Menge von Schlüsselabhängigkeiten G soum, dass F ≡ G gilt
• „Abhängigkeitstreue“ im Verfahren verankert• 3NF und Minimalität wird auch erreicht,reihenfolgeunabhängig
• Zeitkomplexität: quadratisch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–33
Vergleich Dekomposition — Synthese
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
...
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
...
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
. . .R1,K1 Rn,Kn . . .R1,K1 Rn,Kn
Dekomposition Synthese
. . .R!1,K !
1 R!n,K !
n FDs F !!
FDs F !
FDs F
R,K
U, FDs F
!
!
!
!
!
!
i
...
Dekomposition Synthese
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–34
Syntheseverfahren für Relationenschema R mit FDs F
Ges.: verlustfreie und abhängigkeitstreue Zerlegung inR1, . . .Rn, wobei alle Ri in 3NF sind
Synthesize(F):F := MinimalCover(F) /* Bestimme minimale Überdeckung */Bilde Äquivalenzklassen Ci von FDs aus F mit gleichen oder
äquivalenten linken Seiten, d.h. Ci = Xi→Ai1, Xi→Ai2, . . . Bilde zu jeder Äquivalenzklasse Ci ein Schema der Form
RCi = Xi ∪ Ai1 ∪ Ai2 ∪ . . . if keines der Schemata RCi enthält einen Schlüssel von Rthen erzeuge weiteres Relationenschema RK mit Attributen
aus R, die Schlüssel bildenreturn RK,RC1 ,RC2 , . . .
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–35
Synthese Beispiel
• FD-Menge
F = A→B,AB→C,A→C,B→A, C→E
• minimale Überdeckung
F = A→B,B→C,B→A, C→E
• Zusammenfassung zu Äquivalenzklassen
C1 = A→B,B→C,B→AC2 = C→E
• Syntheseergebnis
(ABC, A, B), (CE, C)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–36
Erreichung der Verbundtreue
• Erreichen der Verbundtreue durch einfachen „Trick“:• Erweitern der Original-FD-Menge F um U→δ umDummy-Attribut δ
• δ wird nach Synthese entfernt• Beispiel: A→B, C→E
• Syntheseergebnis (AB, A), (CE, C) ist nicht verbundtreu,da Universalschlüssel in keinem Schema enthalten ist
• Dummy-FD ABCE→δ; reduziert auf AC→δ
• liefert drittes Relationenschema
(AC, AC)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–37
Synthese: Beispiel
• Relationenschema und FD-Menge von Folie 5-21• Ablauf
1. minimale Überdeckung: Entfernen von f2, f3 sowie Regionin f5
2. Äquivalenzklassen:
C1 = Name,Weingut→PreisC2 = Name→FarbeC3 = Weingut→AnbaugebietC4 = Anbaugebiet→Region
3. Ableitung der Relationenschemata
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–38
Zusammenfassung
• Formalisierung des Relationenmodells und derfunktionalen Abhängigkeiten
• Algorithmen zur Normalisierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–39
Kontrollfragen
• Was muß beim Syntheseverfahrenbeachtet werden, um Spezialfälle wiezyklische Abhängigkeiten oder fehlendeSchlüssel zu berücksichtigen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–40
Teil VII
Die relationale Anfragesprache SQL
Die relationale Anfragesprache SQL
1. Aufbau von SQL-Anfragen
2. Erweiterungen des SFW-Blocks
3. Aggregatfunktionen und Gruppierungen
4. Rekursion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–1
Die relationale Anfragesprache SQL
1. Aufbau von SQL-Anfragen
2. Erweiterungen des SFW-Blocks
3. Aggregatfunktionen und Gruppierungen
4. Rekursion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–1
Die relationale Anfragesprache SQL
1. Aufbau von SQL-Anfragen
2. Erweiterungen des SFW-Blocks
3. Aggregatfunktionen und Gruppierungen
4. Rekursion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–1
Die relationale Anfragesprache SQL
1. Aufbau von SQL-Anfragen
2. Erweiterungen des SFW-Blocks
3. Aggregatfunktionen und Gruppierungen
4. Rekursion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–1
Lernziele für heute …
• Erweiterte Kenntnisse zum relationalenSQL
• Kenntnisse von Erweiterungen desSFW-Blocks
• Verständnis der Formulierung undAuswertung rekursiver Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–2
Lernziele für heute …
• Erweiterte Kenntnisse zum relationalenSQL
• Kenntnisse von Erweiterungen desSFW-Blocks
• Verständnis der Formulierung undAuswertung rekursiver Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–2
Lernziele für heute …
• Erweiterte Kenntnisse zum relationalenSQL
• Kenntnisse von Erweiterungen desSFW-Blocks
• Verständnis der Formulierung undAuswertung rekursiver Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–2
Aufbau von SQL-Anfragen
Struktur einer SQL-Anfrage
-- Anfrageselect projektionslistefrom relationenliste[ where bedingung ]
select• Projektionsliste• arithmetische Operationen und Aggregatfunktionen
from• zu verwendende Relationen, evtl. Umbenennungen
where• Selektions-, Verbundbedingungen• Geschachtelte Anfragen (wieder ein SFW-Block)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–3
Struktur einer SQL-Anfrage
-- Anfrageselect projektionslistefrom relationenliste[ where bedingung ]
select• Projektionsliste• arithmetische Operationen und Aggregatfunktionen
from• zu verwendende Relationen, evtl. Umbenennungen
where• Selektions-, Verbundbedingungen• Geschachtelte Anfragen (wieder ein SFW-Block)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–3
Struktur einer SQL-Anfrage
-- Anfrageselect projektionslistefrom relationenliste[ where bedingung ]
select• Projektionsliste• arithmetische Operationen und Aggregatfunktionen
from• zu verwendende Relationen, evtl. Umbenennungen
where• Selektions-, Verbundbedingungen• Geschachtelte Anfragen (wieder ein SFW-Block)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–3
Struktur einer SQL-Anfrage
-- Anfrageselect projektionslistefrom relationenliste[ where bedingung ]
select• Projektionsliste• arithmetische Operationen und Aggregatfunktionen
from• zu verwendende Relationen, evtl. Umbenennungen
where• Selektions-, Verbundbedingungen• Geschachtelte Anfragen (wieder ein SFW-Block)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–3
Auswahl von Tabellen: Die from-Klausel
• einfachste Form; hinter jedem Relationennamen kannoptional eine Tupelvariable stehen
select *from relationenliste
• Beispielanfrage:
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–4
Auswahl von Tabellen: Die from-Klausel
• einfachste Form; hinter jedem Relationennamen kannoptional eine Tupelvariable stehen
select *from relationenliste
• Beispielanfrage:
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–4
Auswahl von Tabellen: Die from-Klausel
• einfachste Form; hinter jedem Relationennamen kannoptional eine Tupelvariable stehen
select *from relationenliste
• Beispielanfrage:
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–4
Auswahl von Tabellen: Die from-Klausel
• einfachste Form; hinter jedem Relationennamen kannoptional eine Tupelvariable stehen
select *from relationenliste
• Beispielanfrage:
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–4
Die select-Klausel
• Festlegung der Projektionsattribute
select [distinct] projektionslistefrom …
• mitprojektionsliste := attribut |
arithmetischer-ausdruck |aggregat-funktion [, …]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–5
Die select-Klausel
• Festlegung der Projektionsattribute
select [distinct] projektionslistefrom …
• mit
projektionsliste := attribut |arithmetischer-ausdruck |aggregat-funktion [, …]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–5
Die select-Klausel
• Festlegung der Projektionsattribute
select [distinct] projektionslistefrom …
• mitprojektionsliste := attribut |
arithmetischer-ausdruck |aggregat-funktion [, …]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–5
Die select-Klausel: Projektionsliste
• Attribute der hinter from stehenden Relationen, optionalmit Präfix, der Relationennamen oder Namen derTupelvariablen angibt
• arithmetische Ausdrücke über Attributen dieserRelationen und passenden Konstanten
• Aggregatfunktionen über Attributen dieser Relationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–6
Die select-Klausel: Projektionsliste
• Attribute der hinter from stehenden Relationen, optionalmit Präfix, der Relationennamen oder Namen derTupelvariablen angibt
• arithmetische Ausdrücke über Attributen dieserRelationen und passenden Konstanten
• Aggregatfunktionen über Attributen dieser Relationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–6
Die select-Klausel: Projektionsliste
• Attribute der hinter from stehenden Relationen, optionalmit Präfix, der Relationennamen oder Namen derTupelvariablen angibt
• arithmetische Ausdrücke über Attributen dieserRelationen und passenden Konstanten
• Aggregatfunktionen über Attributen dieser Relationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–6
Die select-Klausel
• Spezialfall der Projektionsliste: *• liefert alle Attribute der Relation(en) aus dem from-Teil
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–7
Die select-Klausel
• Spezialfall der Projektionsliste: *• liefert alle Attribute der Relation(en) aus dem from-Teil
select *from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–7
distinct eliminiert Duplikate
select Name from WEINE
• liefert die Ergebnisrelation als Multimenge:NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirPinot NoirRiesling ReserveChardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–8
distinct eliminiert Duplikate
select Name from WEINE
• liefert die Ergebnisrelation als Multimenge:
NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirPinot NoirRiesling ReserveChardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–8
distinct eliminiert Duplikate
select Name from WEINE
• liefert die Ergebnisrelation als Multimenge:NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirPinot NoirRiesling ReserveChardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–8
distinct eliminiert Duplikate /2
select distinct Name from WEINE
• ergibt Projektion aus der Relationenalgebra:NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling ReserveChardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–9
distinct eliminiert Duplikate /2
select distinct Name from WEINE
• ergibt Projektion aus der Relationenalgebra:NameLa Rose Grand CruCreek ShirazZinfandelPinot NoirRiesling ReserveChardonnay
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–9
Tupelvariablen und Relationennamen
• Anfrage
select Name from WEINE
• ist äquivalent zu
select WEINE.Name from WEINE
• und
select W.Name from WEINE W
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–10
Tupelvariablen und Relationennamen
• Anfrage
select Name from WEINE
• ist äquivalent zu
select WEINE.Name from WEINE
• und
select W.Name from WEINE W
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–10
Tupelvariablen und Relationennamen
• Anfrage
select Name from WEINE
• ist äquivalent zu
select WEINE.Name from WEINE
• und
select W.Name from WEINE W
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–10
Verbunde
Kartesisches Produkt
• bei mehr als einer Relation wird das kartesische Produktgebildet:
select *from WEINE, ERZEUGER
• alle Kombinationen werden ausgegeben!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–11
Kartesisches Produkt
• bei mehr als einer Relation wird das kartesische Produktgebildet:
select *from WEINE, ERZEUGER
• alle Kombinationen werden ausgegeben!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–11
Tupelvariablen für mehrfachen Zugriff
• Einführung von Tupelvariablen erlaubt mehrfachen Zugriffauf eine Relation:
select *from WEINE w1, WEINE w2
• Spalten lauten dann:
w1.WeinID, w1.Name, w1.Farbe, w1.Jahrgang,w1.Weingut,
w2.WeinID, w2.Name, w2.Farbe, w2.Jahrgang,w2.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–12
Tupelvariablen für mehrfachen Zugriff
• Einführung von Tupelvariablen erlaubt mehrfachen Zugriffauf eine Relation:select *from WEINE w1, WEINE w2
• Spalten lauten dann:
w1.WeinID, w1.Name, w1.Farbe, w1.Jahrgang,w1.Weingut,
w2.WeinID, w2.Name, w2.Farbe, w2.Jahrgang,w2.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–12
Tupelvariablen für mehrfachen Zugriff
• Einführung von Tupelvariablen erlaubt mehrfachen Zugriffauf eine Relation:select *from WEINE w1, WEINE w2
• Spalten lauten dann:
w1.WeinID, w1.Name, w1.Farbe, w1.Jahrgang,w1.Weingut,
w2.WeinID, w2.Name, w2.Farbe, w2.Jahrgang,w2.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–12
Natürlicher Verbund in SQL92
• frühe SQL-Versionen
• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen
• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren
• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Natürlicher Verbund in SQL92
• frühe SQL-Versionen• üblicherweise realisierter Standard in aktuellen Systemen• kennen nur Kreuzprodukt, keinen explizitenVerbundoperator
• Verbund durch Prädikat hinter where realisieren• Beispiel für natürlichen Verbund:
select *from WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–13
Verbund explizit: natural join
• neuere SQL-Versionen
• kennen mehrere explizite Verbundoperatoren (engl. join)• als Abkürzung für die ausführliche Anfrage mitKreuzprodukt aufzufassen
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–14
Verbund explizit: natural join
• neuere SQL-Versionen• kennen mehrere explizite Verbundoperatoren (engl. join)
• als Abkürzung für die ausführliche Anfrage mitKreuzprodukt aufzufassen
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–14
Verbund explizit: natural join
• neuere SQL-Versionen• kennen mehrere explizite Verbundoperatoren (engl. join)• als Abkürzung für die ausführliche Anfrage mitKreuzprodukt aufzufassen
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–14
Verbund explizit: natural join
• neuere SQL-Versionen• kennen mehrere explizite Verbundoperatoren (engl. join)• als Abkürzung für die ausführliche Anfrage mitKreuzprodukt aufzufassen
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–14
Verbund explizit: natural join
• neuere SQL-Versionen• kennen mehrere explizite Verbundoperatoren (engl. join)• als Abkürzung für die ausführliche Anfrage mitKreuzprodukt aufzufassen
select *from WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–14
Verbunde als explizite Operatoren: join
• Verbund mit beliebigem Prädikat:
select *from WEINE join ERZEUGER
on WEINE.Weingut = ERZEUGER.Weingut
• Gleichverbund mit using:
select *from WEINE join ERZEUGER
using (Weingut)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–15
Verbund explizit: cross join
• Kreuzprodukt
select *from WEINE, ERZEUGER
• als cross join
select *from WEINE cross join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–16
Tupelvariable für Zwischenergebnisse
• „Zwischenrelationen“ aus SQL-Operationen oder einemSFW-Block können über Tupelvariablen mit Namenversehen werdenselect Ergebnis.Weingutfrom (WEINE natural join ERZEUGER) as Ergebnis
• für from sind Tupelvariablen Pflicht• as ist optional
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–17
Präfixe für Eindeutigkeit
select Name, Jahrgang, Weingut -- (falsch!)from WEINE natural join ERZEUGER
• Attribut Weingut existiert sowohl in der Tabelle WEINEals auch in ERZEUGER!
• richtig mit Präfix:
select Name, Jahrgang, ERZEUGER.Weingutfrom WEINE natural join ERZEUGER
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–18
Tupelvariablen für Eindeutigkeit
• bei der Verwendung von Tupelvariablen, kann der Nameeiner Tupelvariablen zur Qualifizierung eines Attributsbenutzt werden:
select w1.Name, w2.Weingutfrom WEINE w1, WEINE w2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–19
Selektionen
Die where-Klausel
select …from …where bedingung
• Formen der Bedingung:• Vergleich eines Attributs mit einer Konstanten:
attribut θ konstantemögliche Vergleichssymbole θ abhängig vom Wertebereich;etwa =, <>, >, <, >= sowie <=.
• Vergleich zwischen zwei Attributen mit kompatiblenWertebereichen:
attribut1 θ attribut2• logische Konnektoren or, and und not
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–20
Verbundbedingung
• Verbundbedingung hat die Form:
relation1.attribut = relation2.attribut
• Beispiel:
select Name, Jahrgang, ERZEUGER.Weingutfrom WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–21
Bereichsselektion
• Bereichsselektionattrib between konstante1 and konstante2
ist Abkürzung für
attrib ≥ konstante1 andattrib ≤ konstante2
• schränkt damit Attributwerte auf das abgeschlosseneIntervall [konstante1, konstante2] ein
• Beispiel:
select * from WEINEwhere Jahrgang between 2000 and 2005
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–22
Ungewissheitsselektion
• Notationattribut like spezialkonstante
• Mustererkennung in Strings (Suche nach mehrerenTeilzeichenketten)
• Spezialkonstante kann die Sondersymbole ‘%’ und ‘_’beinhalten
• ‘%’ steht für kein oder beliebig viele Zeichen• ‘_’ steht für genau ein Zeichen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–23
Ungewissheitsselektion /2
select * from WEINEwhere Name like 'La Rose%'
ist Abkürzung für
select * from WEINEwhere Name = 'La Rose'
or Name = 'La RoseA' or Name = 'La RoseAA' …or Name = 'La RoseB' or Name = 'La RoseBB' ……or Name = 'La Rose Grand Cru' …or Name = 'La Rose Grand Cru Classe' ……or Name = 'La RoseZZZZZZZZZZZZZ' …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–24
Mengenoperationen
Mengenoperationen
• Mengenoperationen erfordern kompatible Wertebereichefür Paare korrespondierender Attribute:
• beide Wertebereiche sind gleich oder• beide sind auf character basierende Wertebereiche(unabhängig von der Länge der Strings) oder
• beide sind numerische Wertebereiche (unabhängig vondem genauen Typ) wie integer oder float
• Ergebnisschema := Schema der „linken“ Relation
select A, B, C from R1unionselect A, C, D from R2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–25
Mengenoperationen in SQL
• Vereinigung, Durchschnitt und Differenz als union,intersect und except
• orthogonal einsetzbar:
select *from (select Weingut from ERZEUGER
except select Weingut from WEINE)
äquivalent zu
select *from ERZEUGER except corresponding WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–26
Mengenoperationen in SQL /2
• über corresponding by-Klausel: Angabe derAttributliste, über die Mengenoperation ausgeführt wird
select *from ERZEUGER except corresponding by (Weingut)
WEINE
• bei Vereinigung: Defaultfall ist Duplikateliminierung(union distinct); ohne Duplikateliminierung durchunion all
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–27
Mengenoperationen in SQL /2
R A B C1 2 32 3 4
S A C D2 3 42 4 5
R union S A B C1 2 32 3 42 4 5
R union all S A B C1 2 32 3 42 3 42 4 5
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–28
Mengenoperationen in SQL /3
R A B C1 2 32 3 4
S A C D2 3 42 4 5
R union corresponding S A C1 32 42 3
R union corresponding by (A) S A12
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–29
Geschachtelte Anfragen /1
Schachtelung von Anfragen
• für Vergleiche mit Wertemengen notwendig:• Standardvergleiche in Verbindung mit den Quantoren all(∀) oder any (∃)
• spezielle Prädikate für den Zugriff auf Mengen, in undexists
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–30
in-Prädikat und geschachtelte Anfragen
• Notation:
attribut in ( SFW-block )
• Beispiel:
select Namefrom WEINEwhere Weingut in (
select Weingut from ERZEUGERwhere Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–31
in-Prädikat und geschachtelte Anfragen
• Notation:
attribut in ( SFW-block )
• Beispiel:
select Namefrom WEINEwhere Weingut in (
select Weingut from ERZEUGERwhere Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–31
in-Prädikat und geschachtelte Anfragen
• Notation:
attribut in ( SFW-block )
• Beispiel:
select Namefrom WEINEwhere Weingut in (
select Weingut from ERZEUGERwhere Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–31
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen
1. Auswertung der inneren Anfrage zu den Weingütern ausBordeaux
2. Einsetzen des Ergebnisses als Menge von Konstanten indie äußere Anfrage hinter in
3. Auswertung der modifizierten Anfrage
select Name from WEINEwhere Weingut in (
'Château La Rose', 'Château La Pointe')
NameLa Rose Grand Cru
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–32
Auswertung von geschachtelten Anfragen /2
• interne Auswertung: Umformung in einen Verbund
select Namefrom WEINE natural join ERZEUGERwhere Region = 'Bordeaux'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–33
Auswertung von geschachtelten Anfragen /2
• interne Auswertung: Umformung in einen Verbund
select Namefrom WEINE natural join ERZEUGERwhere Region = 'Bordeaux'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–33
Negation des in-Prädikats
• Simulation des Differenzoperators
πWeingut(ERZEUGER)− πWeingut(WEINE)
durch SQL-Anfrage
select Weingutfrom ERZEUGERwhere Weingut not in (
select Weingut from WEINE )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–34
Negation des in-Prädikats
• Simulation des Differenzoperators
πWeingut(ERZEUGER)− πWeingut(WEINE)
durch SQL-Anfrage
select Weingutfrom ERZEUGERwhere Weingut not in (
select Weingut from WEINE )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–34
Negation des in-Prädikats
• Simulation des Differenzoperators
πWeingut(ERZEUGER)− πWeingut(WEINE)
durch SQL-Anfrage
select Weingutfrom ERZEUGERwhere Weingut not in (
select Weingut from WEINE )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–34
Mächtigkeit des SQL-Kerns
Relationenalgebra SQLProjektion select distinctSelektion where ohne SchachtelungVerbund from, where
from mit join oder natural joinUmbenennung from mit Tupelvariable; asDifferenz where mit Schachtelung
except correspondingDurchschnitt where mit Schachtelung
intersect correspondingVereinigung union corresponding
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–35
Erweiterungen des SFW-Blocks
Weiteres zu SQL
• Erweiterungen des SFW-Blocks• innerhalb der from-Klausel weitere Verbundoperationen(äußerer Verbund),
• innerhalb der where-Klausel weitere Arten vonBedingungen und Bedingungen mit Quantoren,
• innerhalb der select-Klausel die Anwendung vonskalaren Operationen und Aggregatfunktionen,
• zusätzliche Klauseln group by und having• rekursive Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–36
Skalare Ausdrücke
Skalare Ausdrücke
• Umbenennung von Spalten: ausdruck as neuer-name• skalare Operationen auf
• numerischen Wertebereichen: etwa +, −, ∗ und /,• Strings: Operationen wie char_length (aktuelle Längeeines Strings), die Konkatenation ∥ und die Operationsubstring (Suchen einer Teilzeichenkette an bestimmtenPositionen des Strings),
• Datumstypen und Zeitintervallen: Operationen wiecurrent_date (aktuelles Datum), current_time(aktuelle Zeit), +, − und ∗
• bedingte Ausdrücke• Typkonvertierung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–37
Skalare Ausdrücke: Hinweise
• skalare Ausdrücke können mehrere Attribute umfassen• Anwendung ist tupelweise: pro Eingabetupel entsteht einErgebnistupel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–38
Skalare Ausdrücke: Beispiele
• Ausgabe der Namen aller Grand Cru-Weine
select substring(Name from 1 for(char_length(Name) -position('Grand Cru' in Name)))
from WEINE where Name like '%Grand Cru'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–39
Skalare Ausdrücke: Beispiele /2
• Annahme: zusätzliches Attribut HerstDatum in WEINEalter table WEINE add column HerstDatum date
update WEINE set HerstDatum = date '2004-08-13'where Name = 'Zinfandel'
• Anfrage:
select Name,year(current_date - HerstDatum) as Alter
from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–40
Bedingte Ausdrücke
• case-Anweisung: Ausgabe eines Wertes in Abhängigkeitvon der Auswertung eines Prädikats
casewhen prädikat1 then ausdruck1…when prädikatn−1 then ausdruckn−1[ else ausdruckn ]
end
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–41
Bedingte Ausdrücke: Beispiele
• Einsatz in select- und where-Klauselselect case
when Farbe = 'Rot' then 'Rotwein'when Farbe = 'Weiß' then 'Weißwein'else 'Sonstiges'
end as Weinart, Name from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–42
Typkonvertierung
• explizite Konvertierung des Typs von Ausdrücken
cast(ausdruck as typname)
• Beispiel: int-Werte als Zeichenkette fürKonkatenationsoperator
select cast(Jahrgang as varchar) || 'er ' ||Name as Bezeichnung
from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–43
Geschachtelte Anfragen /2
Quantoren und Mengenvergleiche
• Quantoren: all, any, some und exists• Notation
attribut θ all | any | some (select attributfrom …where …)
• all: where-Bedingung wird erfüllt, wenn für alle Tupeldes inneren SFW-Blocks der θ-Vergleich mit attribut truewird
• any bzw. some: where-Bedingung wird erfüllt, wenn derθ-Vergleich mit mindestens einem Tupel des innerenSFW-Blocks true wird
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–44
Bedingungen mit Quantoren: Beispiele
• Bestimmung des ältesten Weines
select *from WEINEwhere Jahrgang <= all (
select Jahrgang from WEINE)
• alle Weingüter, die Rotweine produzieren
select *from ERZEUGERwhere Weingut = any (
select Weingut from WEINEwhere Farbe = 'Rot')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–45
Vergleich von Wertemengen
• Test auf Gleichheit zweier Mengen allein mit Quantorennicht möglich
• Beispiel: „Gib alle Erzeuger aus, die sowohl Rot- als auchWeißweine produzieren.“
• falsche Anfrage
select Weingutfrom WEINEwhere Farbe = 'Rot' and Farbe = 'Weiß'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–46
Vergleich von Wertemengen /2
• richtige Formulierung
select w1.Weingutfrom WEINE w1, WEINE w2where w1.Weingut = w2.Weingut
and w1.Farbe = 'Rot' and w2.Farbe = 'Weiß'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–47
Das exists/not exists-Prädikat
• einfache Form der Schachtelung
exists ( SFW-block )
• liefert true, wenn das Ergebnis der inneren Anfrage nichtleer ist
• speziell bei verzahnt geschachtelten (korrelierte) Anfragensinnvoll
• in der inneren Anfrage wird Relationen- oderTupelvariablen-Name aus dem from-Teil der äußerenAnfrage verwendet
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–48
Verzahnt geschachtelte Anfragen
• Weingüter mit 1999er Rotwein
select * from ERZEUGERwhere 1999 in (
select Jahrgang from WEINEwhere Farbe='Rot' and
WEINE.Weingut = ERZEUGER.Weingut)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–49
Verzahnt geschachtelte Anfragen: konzeptionelle Auswertung
1. Untersuchung des ersten ERZEUGER-Tupels in deräußeren Anfrage (Creek) und Einsetzen in innere Anfrage
2. Auswertung der inneren Anfrage
select Jahrgang from WEINEwhere Farbe='Rot' and WEINE.Weingut = 'Creek'
3. Weiter bei 1. mit zweitem Tupel …
Alternative: Umformulierung in Verbund
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–50
Beispiel für exists
• Weingüter aus Bordeaux ohne gespeicherte Weine
select * from ERZEUGER ewhere Region = 'Bordeaux' and not exists (
select * from WEINEwhere Weingut = e.Weingut)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–51
Aggregatfunktionen undGruppierungen
Aggregatfunktionen und Gruppierung
• Aggregatfunktionen berechnen neue Werte für einegesamte Spalte, etwa die Summe oder den Durchschnittder Werte einer Spalte
• Beispiel: Ermittlung des Durchschnittspreises aller Artikeloder des Gesamtumsatzes über alle verkauften Produkte
• bei zusätzlicher Anwendung von Gruppierung: Berechnungder Funktionen pro Gruppe, z.B. der Durchschnittspreispro Warengruppe oder der Gesamtumsatz pro Kunde
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–52
Aggregatfunktionen
• Aggregatfunktionen in Standard-SQL:• count: berechnet Anzahl der Werte einer Spalte oderalternativ (im Spezialfall count(∗)) die Anzahl der Tupeleiner Relation
• sum: berechnet die Summe der Werte einer Spalte (nur beinumerischen Wertebereichen)
• avg: berechnet den arithmetischen Mittelwert der Werteeiner Spalte (nur bei numerischen Wertebereichen)
• max bzw. min: berechnen den größten bzw. kleinsten Werteiner Spalte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–53
Aggregatfunktionen /2
• Argumente einer Aggregatfunktion:• ein Attribut der durch die from-Klausel spezifiziertenRelation,
• ein gültiger skalarer Ausdruck oder• im Falle der count-Funktion auch das Symbol ∗
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–54
Aggregatfunktionen /3
• vor dem Argument (außer im Fall von count(∗)) optionalauch die Schlüsselwörter distinct oder all
• distinct: vor Anwendung der Aggregatfunktion werdendoppelte Werte aus der Menge von Werten, auf die dieFunktion angewendet wird
• all: Duplikate gehen mit in die Berechnung ein(Default-Voreinstellung)
• Nullwerte werden in jedem Fall vor Anwendung derFunktion aus der Wertemenge eliminiert (außer im Fall voncount(∗))
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–55
Aggregatfunktionen - Beispiele
• Anzahl der Weine:select count(*) as Anzahlfrom WEINE
ergibtAnzahl7
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–56
Aggregatfunktionen - Beispiele /2
• Anzahl der verschiedenen Weinregionen:
select count(distinct Region)from ERZEUGER
• Weine, die älter als der Durchschnitt sind:
select Name, Jahrgangfrom WEINEwhere Jahrgang < (
select avg(Jahrgang) from WEINE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–57
Aggregatfunktionen /2
• Schachtelung von Aggregatfunktionen nicht erlaubt
select f1(f2(A)) as Ergebnisfrom R … -- (falsch!)
• mögliche Formulierung:
select f1(Temp) as Ergebnisfrom ( select f2(A) as Temp from R …)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–58
Aggregatfunktionen in where-Klausel
• Aggregatfunktionen liefern nur einen Wert Einsatz inKonstanten-Selektionen der where-Klausel möglich
• alle Weingüter, die nur einen Wein liefern:
select * from ERZEUGER ewhere 1 = (
select count(*) from WEINE wwhere w.Weingut = e.Weingut)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–59
group by und having
• Notation
select …from …[where …][group by attributliste ][having bedingung ]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–60
Gruppierung: Schema
• Relation REL:A B C D1 2 3 41 2 4 52 3 3 43 3 4 53 3 6 7
…
• Anfrage:
select A, sum(D) from REL where …group by A, Bhaving A<4 and sum(D)<10 and max(C)=4
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–61
Gruppierung: Schritt 1
• from und where
A B C D1 2 3 41 2 4 52 3 3 43 3 4 53 3 6 7
…
à
A B C D1 2 3 41 2 4 52 3 3 43 3 4 53 3 6 7
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–62
Gruppierung: Schritt 2
• group by A, B
A B C D1 2 3 41 2 4 52 3 3 43 3 4 53 3 6 7
à
A B NC D
1 2 3 44 5
2 3 3 43 3 4 5
6 7
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–63
Gruppierung: Schritt 3
• select A, sum(D)
A B NC D
1 2 3 44 5
2 3 3 43 3 4 5
6 7
à
A sum(D) NC D
1 9 3 44 5
2 4 3 43 12 4 5
6 7
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–64
Gruppierung: Schritt 4
• having A<4 and sum(D)<10 and max(C)=4
A sum(D) NC D
1 9 3 44 5
2 4 3 43 12 4 5
6 7
àA sum(D)1 9
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–65
Gruppierung - Beispiel
• Anzahl der Rot- und Weißweine:
select Farbe, count(*) as Anzahlfrom WEINEgroup by Farbe
• Ergebnisrelation:Farbe AnzahlRot 5Weiß 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–66
having - Beispiel
• Regionen mit mehr als einem Wein
select Region, count(*) as Anzahlfrom ERZEUGER natural join WEINEgroup by Regionhaving count(*) > 1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–67
Attribute für Aggregation bzw. having
• zulässige Attribute hinter select bei Gruppierung aufRelation mit Schema R
• Gruppierungsattribute G• Aggregationen auf Nicht-Gruppierungsattributen R− G
• zulässige Attribute für having• dito
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–68
Äußere Verbunde
Äußere Verbunde
• zusätzlich zu klassischen Verbund (inner join): inSQL-92 auch äußerer Verbund Übernahme von„dangling tuples“ in das Ergebnis und Auffüllen mitNullwerten
• outer join übernimmt alle Tupel beider Operanden(Langfassung: full outer join)
• left outer join bzw. right outer joinübernimmt alle Tupel des linken bzw. des rechtenOperanden
• äußerer natürlicher Verbund jeweils mit Schlüsselwortnatural, also z.B. natural left outer join
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–69
Äußere Verbunde /2
LINKS A B1 22 3
RECHTS B C3 44 5
NATURAL JOIN A B C2 3 4
OUTER A B C1 2 ⊥2 3 4⊥ 4 5
LEFT A B C1 2 ⊥2 3 4
RIGHT A B C2 3 4⊥ 4 5
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–70
Äußerer Verbund: Beispiel
select Anbaugebiet, count(WeinID) as Anzahlfrom ERZEUGER natural left outer join WEINEgroup by Anbaugebiet
Anbaugebiet AnzahlBarossa Valley 2Napa Valley 3Saint-Emilion 1Pomerol 0Rheingau 1
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–71
Simulation des (linken) äußeren Verbundes
select *from ERZEUGER natural join WEINE
union allselect ERZEUGER.*, cast(null as int),
cast(null as varchar(20)),cast(null as varchar(10)), cast(null as int),cast(null as varchar(20))
from ERZEUGER ewhere not exists (
select * from WEINEwhere WEINE.Weingut = e.Weingut)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–72
Sortierung
Sortierung mit order by
• Notationorder by attributliste
• Beispiel:
select *from WEINEorder by Jahrgang
• Sortierung aufsteigend (asc) oder absteigend (desc)• Sortierung als letzte Operation einer AnfrageSortierattribut muss in der select-Klausel vorkommen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–73
Sortierung /2
• Sortierung auch mit berechneten Attributen (Aggregaten)als Sortierkriterium
select Weingut, count(*) as Anzahlfrom ERZEUGER natural join WEINEgroup by Weingutorder by Anzahl desc
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–74
Sortierung: Top-k-Anfragen
• Anfrage, die die besten k Elemente bzgl. einerRangfunktion liefert
select w1.Name, count(*) as Rangfrom WEINE w1, WEINE w2where w1.Jahrgang <= w2.Jahrgang -- Schritt 1group by w1.Name, w1.WeinID -- Schritt 2having count(*) <= 4 -- Schritt 3order by Rang -- Schritt 4
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–75
Sortierung: Top-k-Anfragen
• Ermittlung der k = 4 jüngste Weine• Erläuterung
• Schritt 1: Zuordnung aller Weine die älter sind• Schritt 2: Gruppierung nach Namen, Berechnung des Rangs• Schritt 3: Beschränkung auf Ränge ≤ 4• Schritt 4: Sortierung nach Rang
Name RangZinfandel 1Creek Shiraz 2Chardonnay 3Pinot Noir 4
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–76
Nullwerte
Behandlung von Nullwerten
• skalare Ausdrücke: Ergebnis null, sobald Nullwert in dieBerechnung eingeht
• in allen Aggregatfunktionen bis auf count(∗) werdenNullwerte vor Anwendung der Funktion entfernt
• fast alle Vergleiche mit Nullwert ergeben Wahrheitswertunknown (statt true oder false)
• Ausnahme: is null ergibt true, is not null ergibtfalse
• Boolesche Ausdrücke basieren dann auf dreiwertiger Logik
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–77
Behandlung von Nullwerten
• skalare Ausdrücke: Ergebnis null, sobald Nullwert in dieBerechnung eingeht
• in allen Aggregatfunktionen bis auf count(∗) werdenNullwerte vor Anwendung der Funktion entfernt
• fast alle Vergleiche mit Nullwert ergeben Wahrheitswertunknown (statt true oder false)
• Ausnahme: is null ergibt true, is not null ergibtfalse
• Boolesche Ausdrücke basieren dann auf dreiwertiger Logik
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–77
Behandlung von Nullwerten
• skalare Ausdrücke: Ergebnis null, sobald Nullwert in dieBerechnung eingeht
• in allen Aggregatfunktionen bis auf count(∗) werdenNullwerte vor Anwendung der Funktion entfernt
• fast alle Vergleiche mit Nullwert ergeben Wahrheitswertunknown (statt true oder false)
• Ausnahme: is null ergibt true, is not null ergibtfalse
• Boolesche Ausdrücke basieren dann auf dreiwertiger Logik
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–77
Behandlung von Nullwerten
• skalare Ausdrücke: Ergebnis null, sobald Nullwert in dieBerechnung eingeht
• in allen Aggregatfunktionen bis auf count(∗) werdenNullwerte vor Anwendung der Funktion entfernt
• fast alle Vergleiche mit Nullwert ergeben Wahrheitswertunknown (statt true oder false)
• Ausnahme: is null ergibt true, is not null ergibtfalse
• Boolesche Ausdrücke basieren dann auf dreiwertiger Logik
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–77
Behandlung von Nullwerten
• skalare Ausdrücke: Ergebnis null, sobald Nullwert in dieBerechnung eingeht
• in allen Aggregatfunktionen bis auf count(∗) werdenNullwerte vor Anwendung der Funktion entfernt
• fast alle Vergleiche mit Nullwert ergeben Wahrheitswertunknown (statt true oder false)
• Ausnahme: is null ergibt true, is not null ergibtfalse
• Boolesche Ausdrücke basieren dann auf dreiwertiger Logik
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–77
Behandlung von Nullwerten /2
and true unknown falsetrue true unknown falseunknown unknown unknown falsefalse false false false
or true unknown falsetrue true true trueunknown true unknown unknownfalse true unknown false
nottrue falseunknown unknownfalse true
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–78
Selektionen nach Nullwerten
• Null-Selektion wählt Tupel aus, die bei einem bestimmtenAttribut Nullwerte enthalten
• Notationattribut is null
• Beispiel
select * from ERZEUGERwhere Anbaugebiet is null
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–79
Selektionen nach Nullwerten
• Null-Selektion wählt Tupel aus, die bei einem bestimmtenAttribut Nullwerte enthalten
• Notationattribut is null
• Beispiel
select * from ERZEUGERwhere Anbaugebiet is null
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–79
Rekursion
Benannte Anfragen
• Anfrageausdruck, der in der Anfrage mehrfach referenziertwerden kann
with anfrage-name [(spalten-liste) ] as( anfrage-ausdruck )
• Anfrage ohne with
select *from WEINEwhere Jahrgang >= (
select avg(Jahrgang) from WEINE) - 2and Jahrgang <= (
select avg(Jahrgang) from WEINE) + 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–80
Benannte Anfragen
• Anfrageausdruck, der in der Anfrage mehrfach referenziertwerden kann
with anfrage-name [(spalten-liste) ] as( anfrage-ausdruck )
• Anfrage ohne with
select *from WEINEwhere Jahrgang >= (
select avg(Jahrgang) from WEINE) - 2and Jahrgang <= (
select avg(Jahrgang) from WEINE) + 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–80
Benannte Anfragen
• Anfrageausdruck, der in der Anfrage mehrfach referenziertwerden kann
with anfrage-name [(spalten-liste) ] as( anfrage-ausdruck )
• Anfrage ohne with
select *from WEINEwhere Jahrgang >= (
select avg(Jahrgang) from WEINE) - 2and Jahrgang <= (
select avg(Jahrgang) from WEINE) + 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–80
Benannte Anfragen
• Anfrageausdruck, der in der Anfrage mehrfach referenziertwerden kann
with anfrage-name [(spalten-liste) ] as( anfrage-ausdruck )
• Anfrage ohne withselect *from WEINEwhere Jahrgang >= (
select avg(Jahrgang) from WEINE) - 2and Jahrgang <= (
select avg(Jahrgang) from WEINE) + 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–80
Benannte Anfragen /2
• Anfrage mit with
with ALTER(Durchschnitt) as (select avg(Jahrgang) from WEINE)
select *from WEINE, ALTERwhere Jahrgang >= Durchschnitt - 2and Jahrgang <= Durchschnitt + 2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–81
Rekursive Anfragen
• Anwendung: Bill of Material-Anfragen, Berechnung dertransitiven Hülle (Flugverbindungen etc.)
• Beispiel:
BUSLINIE Abfahrt Ankunft DistanzNuriootpa Penrice 7Nuriootpa Tanunda 7Tanunda Seppeltsfield 9Tanunda Bethany 4Bethany Lyndoch 14
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–82
Rekursive Anfragen
• Anwendung: Bill of Material-Anfragen, Berechnung dertransitiven Hülle (Flugverbindungen etc.)
• Beispiel:
BUSLINIE Abfahrt Ankunft DistanzNuriootpa Penrice 7Nuriootpa Tanunda 7Tanunda Seppeltsfield 9Tanunda Bethany 4Bethany Lyndoch 14
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–82
Rekursive Anfragen
• Anwendung: Bill of Material-Anfragen, Berechnung dertransitiven Hülle (Flugverbindungen etc.)
• Beispiel:
BUSLINIE Abfahrt Ankunft DistanzNuriootpa Penrice 7Nuriootpa Tanunda 7Tanunda Seppeltsfield 9Tanunda Bethany 4Bethany Lyndoch 14
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–82
Rekursive Anfragen
• Anwendung: Bill of Material-Anfragen, Berechnung dertransitiven Hülle (Flugverbindungen etc.)
• Beispiel:BUSLINIE Abfahrt Ankunft Distanz
Nuriootpa Penrice 7Nuriootpa Tanunda 7Tanunda Seppeltsfield 9Tanunda Bethany 4Bethany Lyndoch 14
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–82
Rekursive Anfrage: Busfahrt mit max. 2x Umsteigen
select Abfahrt, Ankunft from BUSLINIEwhere Abfahrt = 'Nuriootpa'
unionselect B1.Abfahrt, B2.Ankunftfrom BUSLINIE B1, BUSLINIE B2where B1.Abfahrt = 'Nuriootpa'
and B1.Ankunft = B2.Abfahrtunion
select B1.Abfahrt, B3.Ankunftfrom BUSLINIE B1, BUSLINIE B2, BUSLINIE B3where B1.Abfahrt = 'Nuriootpa'
and B1.Ankunft = B2.Abfahrtand B2.Ankunft = B3.Abfahrt
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–83
Rekursion in SQL:2003
• Formulierung über erweiterte with recursive-Anfrage• Notationwith recursive rekursive-tabelle as (
anfrage-ausdruck -- rekursiver Teil)[traversierungsklausel] [zyklusklausel]anfrage-ausdruck -- nicht rekursiver Teil
• nicht rekursiver Teil: Anfrage auf Rekursionstabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–84
Rekursion in SQL:2003 /2
• rekursiver Teil:-- Initialisierungselect …from tabelle where …-- Rekursionsschrittunion allselect …from tabelle, rekursionstabellewhere rekursionsbedingung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–85
Rekursion in SQL:2003: Beispiel
with recursive TOUR(Abfahrt, Ankunft) as (select Abfahrt, Ankunftfrom BUSLINIEwhere Abfahrt = 'Nuriootpa'
union allselect T.Abfahrt, B.Ankunftfrom TOUR T, BUSLINIE Bwhere T.Ankunft = B.Abfahrt)
select distinct * from TOUR
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–86
Schrittweiser Aufbau der Rekursionstabelle TOUR
InitialisierungAbfahrt AnkunftNuriootpa PenriceNuriootpa Tanunda
Schritt 1Abfahrt AnkunftNuriootpa PenriceNuriootpa TanundaNuriootpa SeppeltsfieldNuriootpa Bethany
Schritt 2Abfahrt AnkunftNuriootpa PenriceNuriootpa TanundaNuriootpa SeppeltsfieldNuriootpa BethanyNuriootpa Lyndoch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–87
Rekursion: Beispiel /2
• arithmetische Operationen im Rekursionsschritt
with recursive TOUR(Abfahrt, Ankunft, Strecke) as (select Abfahrt, Ankunft, Distanz as Streckefrom BUSLINIEwhere Abfahrt = 'Nuriootpa'
union allselect T.Abfahrt, B.Ankunft,
Strecke + Distanz as Streckefrom TOUR T, BUSLINIE Bwhere T.Ankunft = B.Abfahrt)
select distinct * from TOUR
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–88
Sicherheit rekursiver Anfragen
• Sicherheit (= Endlichkeit der Berechnung) ist wichtigeAnforderung an Anfragesprache
• Problem: Zyklen bei Rekursion
insert into BUSLINIE (Abfahrt, Ankunft, Distanz)values ('Lyndoch', 'Tanunda', 12)
• Behandlung in SQL• Begrenzung der Rekursionstiefe• Zyklenerkennung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–89
Sicherheit rekursiver Anfragen /2
• Einschränkung der Rekursionstiefe
with recursive TOUR(Abfahrt, Ankunft, Umsteigen) as (select Abfahrt, Ankunft, 0from BUSLINIEwhere Abfahrt = 'Nuriootpa'
union allselect T.Abfahrt, B.Ankunft, Umsteigen + 1from TOUR T, BUSLINIE Bwhere T.Ankunft = B.Abfahrt and Umsteigen < 2)
select distinct * from TOUR
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–90
Sicherheit durch Zyklenerkennung
• Zyklusklausel• beim Erkennen von Duplikaten im Berechnungspfad vonattrib: Zyklus = '*' (Pseudospalte vom Typ char(1))
• Sicherstellen der Endlichkeit des Ergebnisses „von Hand“
cycle attrib set marke to '*' default '-'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–91
Sicherheit durch Zyklenerkennung
with recursive TOUR(Abfahrt, Ankunft, Weg) as (select Abfahrt, Ankunft,
Abfahrt || '-' || Ankunft as Wegfrom BUSLINIE where Abfahrt = 'Nuriootpa'
union allselect T.Abfahrt, B.Ankunft,
Weg || '-' || B.Ankunft as Wegfrom TOUR T, BUSLINIE B
where T.Ankunft = B.Abfahrt)cycle Ankunft set Zyklus to '*' default '-'select Weg, Zyklus from TOUR
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–92
Sicherheit durch Zyklenerkennung /2
Weg ZyklusNuriootpa-Penrice -Nuriootpa-Tanunda -Nuriootpa-Tanunda-Seppeltsfield -Nuriootpa-Tanunda-Bethany -Nuriootpa-Tanunda-Bethany-Lyndoch -Nuriootpa-Tanunda-Bethany-Lyndoch-Tanunda *
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–93
SQL-Versionen
• Geschichte• SEQUEL (1974, IBM Research Labs San Jose)• SEQUEL2 (1976, IBM Research Labs San Jose)• SQL (1982, IBM)• ANSI-SQL (SQL-86; 1986)• ISO-SQL (SQL-89; 1989; drei Sprachen Level 1, Level 2, + IEF)• (ANSI / ISO) SQL2 (als SQL-92 verabschiedet)• (ANSI / ISO) SQL3 (als SQL:1999 verabschiedet)• (ANSI / ISO) SQL:2003 …aktuell SQL:2011
• trotz Standardisierung: teilweise Inkompatibilitätenzwischen Systemen der einzelnen Hersteller
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–94
Zusammenfassung
• SQL als Standardsprache• SQL-Kern mit Bezug zur Relationenalgebra• Erweiterungen: Gruppierung, Rekursion etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–95
Kontrollfragen
• Welche Möglichkeiten der Formulierungvon Verbunden gibt es?
• Was berechnen Aggregationen undGruppierungen?
• Welche Operationen stehen für denUmgang mit Nullwerten zur Verfügung?
• Welchem Zweck dienen rekursiveAnfragen in SQL?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–96
Kontrollfragen
• Welche Möglichkeiten der Formulierungvon Verbunden gibt es?
• Was berechnen Aggregationen undGruppierungen?
• Welche Operationen stehen für denUmgang mit Nullwerten zur Verfügung?
• Welchem Zweck dienen rekursiveAnfragen in SQL?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–96
Kontrollfragen
• Welche Möglichkeiten der Formulierungvon Verbunden gibt es?
• Was berechnen Aggregationen undGruppierungen?
• Welche Operationen stehen für denUmgang mit Nullwerten zur Verfügung?
• Welchem Zweck dienen rekursiveAnfragen in SQL?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–96
Kontrollfragen
• Welche Möglichkeiten der Formulierungvon Verbunden gibt es?
• Was berechnen Aggregationen undGruppierungen?
• Welche Operationen stehen für denUmgang mit Nullwerten zur Verfügung?
• Welchem Zweck dienen rekursiveAnfragen in SQL?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–96
Teil VIII
Grundlagen von Anfragen: Algebra &Kalkül
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Grundlagen von Anfragen: Algebra & Kalkül
1. Kriterien für Anfragesprachen
2. Anfragealgebren
3. Erweiterungen der Relationenalgebra
4. Anfragekalküle
5. Beispiele für Bereichskalkül
6. Eigenschaften des Bereichskalküls
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–1
Lernziele für heute …
• Verständnis der formalen Grundlagenrelationaler Anfragesprachen
• Kenntnisse zur Formulierung vonAnfragen in der relationalen Algebra
• Kenntnisse zur Formulierung vonKalkülanfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–2
Lernziele für heute …
• Verständnis der formalen Grundlagenrelationaler Anfragesprachen
• Kenntnisse zur Formulierung vonAnfragen in der relationalen Algebra
• Kenntnisse zur Formulierung vonKalkülanfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–2
Lernziele für heute …
• Verständnis der formalen Grundlagenrelationaler Anfragesprachen
• Kenntnisse zur Formulierung vonAnfragen in der relationalen Algebra
• Kenntnisse zur Formulierung vonKalkülanfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–2
Kriterien für Anfragesprachen
Einführung
• bisher:
• Relationenschemata mit Basisrelationen, die in derDatenbank gespeichert sind
• jetzt:
• „abgeleitete“ Relationenschemata mit virtuellenRelationen, die aus den Basisrelationen berechnet werden(Basisrelationen bleiben unverändert)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–3
Einführung
• bisher:• Relationenschemata mit Basisrelationen, die in derDatenbank gespeichert sind
• jetzt:
• „abgeleitete“ Relationenschemata mit virtuellenRelationen, die aus den Basisrelationen berechnet werden(Basisrelationen bleiben unverändert)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–3
Einführung
• bisher:• Relationenschemata mit Basisrelationen, die in derDatenbank gespeichert sind
• jetzt:
• „abgeleitete“ Relationenschemata mit virtuellenRelationen, die aus den Basisrelationen berechnet werden(Basisrelationen bleiben unverändert)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–3
Einführung
• bisher:• Relationenschemata mit Basisrelationen, die in derDatenbank gespeichert sind
• jetzt:• „abgeleitete“ Relationenschemata mit virtuellenRelationen, die aus den Basisrelationen berechnet werden(Basisrelationen bleiben unverändert)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–3
Begriffe
• Anfrage: Folge von Operationen, die aus denBasisrelationen eine Ergebnisrelation berechnet
• Ergebnisrelation interaktiv auf dem Bildschirm anzeigenoder
• per Programm weiterverarbeiten („Einbettung“)
• Sicht: Folge von Operationen, die unter einem Sichtnamenlangfristig abgespeichert wird und unter diesem Namenwieder aufgerufen werden kann; ergibt eine Sichtrelation
• Snapshot: Ergebnisrelation einer Anfrage, die unter einemSnapshot-Namen abgelegt wird, aber nie ein zweites Mal(mit geänderten Basisrelationen) berechnet wird (etwaJahresbilanzen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–4
Begriffe
• Anfrage: Folge von Operationen, die aus denBasisrelationen eine Ergebnisrelation berechnet
• Ergebnisrelation interaktiv auf dem Bildschirm anzeigenoder
• per Programm weiterverarbeiten („Einbettung“)
• Sicht: Folge von Operationen, die unter einem Sichtnamenlangfristig abgespeichert wird und unter diesem Namenwieder aufgerufen werden kann; ergibt eine Sichtrelation
• Snapshot: Ergebnisrelation einer Anfrage, die unter einemSnapshot-Namen abgelegt wird, aber nie ein zweites Mal(mit geänderten Basisrelationen) berechnet wird (etwaJahresbilanzen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–4
Begriffe
• Anfrage: Folge von Operationen, die aus denBasisrelationen eine Ergebnisrelation berechnet
• Ergebnisrelation interaktiv auf dem Bildschirm anzeigenoder
• per Programm weiterverarbeiten („Einbettung“)
• Sicht: Folge von Operationen, die unter einem Sichtnamenlangfristig abgespeichert wird und unter diesem Namenwieder aufgerufen werden kann; ergibt eine Sichtrelation
• Snapshot: Ergebnisrelation einer Anfrage, die unter einemSnapshot-Namen abgelegt wird, aber nie ein zweites Mal(mit geänderten Basisrelationen) berechnet wird (etwaJahresbilanzen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–4
Begriffe
• Anfrage: Folge von Operationen, die aus denBasisrelationen eine Ergebnisrelation berechnet
• Ergebnisrelation interaktiv auf dem Bildschirm anzeigenoder
• per Programm weiterverarbeiten („Einbettung“)
• Sicht: Folge von Operationen, die unter einem Sichtnamenlangfristig abgespeichert wird und unter diesem Namenwieder aufgerufen werden kann; ergibt eine Sichtrelation
• Snapshot: Ergebnisrelation einer Anfrage, die unter einemSnapshot-Namen abgelegt wird, aber nie ein zweites Mal(mit geänderten Basisrelationen) berechnet wird (etwaJahresbilanzen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–4
Begriffe
• Anfrage: Folge von Operationen, die aus denBasisrelationen eine Ergebnisrelation berechnet
• Ergebnisrelation interaktiv auf dem Bildschirm anzeigenoder
• per Programm weiterverarbeiten („Einbettung“)
• Sicht: Folge von Operationen, die unter einem Sichtnamenlangfristig abgespeichert wird und unter diesem Namenwieder aufgerufen werden kann; ergibt eine Sichtrelation
• Snapshot: Ergebnisrelation einer Anfrage, die unter einemSnapshot-Namen abgelegt wird, aber nie ein zweites Mal(mit geänderten Basisrelationen) berechnet wird (etwaJahresbilanzen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–4
Kriterien für Anfragesprachen
• Ad-Hoc-Formulierung: Benutzer soll eine Anfrageformulieren können, ohne ein vollständiges Programmschreiben zu müssen
• Deskriptivität: Benutzer soll formulieren „Was will ichhaben?“ und nicht „Wie komme ich an das, was ich habenwill?“
• Mengenorientiertheit: jede Operation soll auf Mengen vonDaten gleichzeitig arbeiten, nicht navigierend nur aufeinzelnen Elementen („one-tuple-at-a-time“)
• Abgeschlossenheit: Ergebnis ist wieder eine Relation undkann wieder als Eingabe für die nächste Anfrageverwendet werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–5
Kriterien für Anfragesprachen
• Ad-Hoc-Formulierung: Benutzer soll eine Anfrageformulieren können, ohne ein vollständiges Programmschreiben zu müssen
• Deskriptivität: Benutzer soll formulieren „Was will ichhaben?“ und nicht „Wie komme ich an das, was ich habenwill?“
• Mengenorientiertheit: jede Operation soll auf Mengen vonDaten gleichzeitig arbeiten, nicht navigierend nur aufeinzelnen Elementen („one-tuple-at-a-time“)
• Abgeschlossenheit: Ergebnis ist wieder eine Relation undkann wieder als Eingabe für die nächste Anfrageverwendet werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–5
Kriterien für Anfragesprachen
• Ad-Hoc-Formulierung: Benutzer soll eine Anfrageformulieren können, ohne ein vollständiges Programmschreiben zu müssen
• Deskriptivität: Benutzer soll formulieren „Was will ichhaben?“ und nicht „Wie komme ich an das, was ich habenwill?“
• Mengenorientiertheit: jede Operation soll auf Mengen vonDaten gleichzeitig arbeiten, nicht navigierend nur aufeinzelnen Elementen („one-tuple-at-a-time“)
• Abgeschlossenheit: Ergebnis ist wieder eine Relation undkann wieder als Eingabe für die nächste Anfrageverwendet werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–5
Kriterien für Anfragesprachen
• Ad-Hoc-Formulierung: Benutzer soll eine Anfrageformulieren können, ohne ein vollständiges Programmschreiben zu müssen
• Deskriptivität: Benutzer soll formulieren „Was will ichhaben?“ und nicht „Wie komme ich an das, was ich habenwill?“
• Mengenorientiertheit: jede Operation soll auf Mengen vonDaten gleichzeitig arbeiten, nicht navigierend nur aufeinzelnen Elementen („one-tuple-at-a-time“)
• Abgeschlossenheit: Ergebnis ist wieder eine Relation undkann wieder als Eingabe für die nächste Anfrageverwendet werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–5
Kriterien für Anfragesprachen /2
• Adäquatheit: alle Konstrukte des zugrundeliegendenDatenmodells werden unterstützt
• Orthogonalität: Sprachkonstrukte sind in ähnlichenSituationen auch ähnlich anwendbar
• Optimierbarkeit: Sprache besteht aus wenigenOperationen, für die es Optimierungsregeln gibt
• Effizienz: jede Operation ist effizient ausführbar (imRelationenmodell hat jede Operation eine Komplexität≤ O(n2),n Anzahl der Tupel einer Relation).
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–6
Kriterien für Anfragesprachen /2
• Adäquatheit: alle Konstrukte des zugrundeliegendenDatenmodells werden unterstützt
• Orthogonalität: Sprachkonstrukte sind in ähnlichenSituationen auch ähnlich anwendbar
• Optimierbarkeit: Sprache besteht aus wenigenOperationen, für die es Optimierungsregeln gibt
• Effizienz: jede Operation ist effizient ausführbar (imRelationenmodell hat jede Operation eine Komplexität≤ O(n2),n Anzahl der Tupel einer Relation).
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–6
Kriterien für Anfragesprachen /2
• Adäquatheit: alle Konstrukte des zugrundeliegendenDatenmodells werden unterstützt
• Orthogonalität: Sprachkonstrukte sind in ähnlichenSituationen auch ähnlich anwendbar
• Optimierbarkeit: Sprache besteht aus wenigenOperationen, für die es Optimierungsregeln gibt
• Effizienz: jede Operation ist effizient ausführbar (imRelationenmodell hat jede Operation eine Komplexität≤ O(n2),n Anzahl der Tupel einer Relation).
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–6
Kriterien für Anfragesprachen /2
• Adäquatheit: alle Konstrukte des zugrundeliegendenDatenmodells werden unterstützt
• Orthogonalität: Sprachkonstrukte sind in ähnlichenSituationen auch ähnlich anwendbar
• Optimierbarkeit: Sprache besteht aus wenigenOperationen, für die es Optimierungsregeln gibt
• Effizienz: jede Operation ist effizient ausführbar (imRelationenmodell hat jede Operation eine Komplexität≤ O(n2),n Anzahl der Tupel einer Relation).
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–6
Kriterien für Anfragesprachen /3
• Sicherheit: keine Anfrage, die syntaktisch korrekt ist, darfin eine Endlosschleife geraten oder ein unendlichesErgebnis liefern
• Eingeschränktheit: (folgt aus Sicherheit, Optimierbarkeit,Effizienz) Anfragesprache darf keine kompletteProgrammiersprache sein
• Vollständigkeit: Sprache muss mindestens die Anfrageneiner Standardsprache (wie etwa die in diesem Kapiteleinzuführende Relationenalgebra oder den sicherenRelationenkalkül) ausdrücken können
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–7
Kriterien für Anfragesprachen /3
• Sicherheit: keine Anfrage, die syntaktisch korrekt ist, darfin eine Endlosschleife geraten oder ein unendlichesErgebnis liefern
• Eingeschränktheit: (folgt aus Sicherheit, Optimierbarkeit,Effizienz) Anfragesprache darf keine kompletteProgrammiersprache sein
• Vollständigkeit: Sprache muss mindestens die Anfrageneiner Standardsprache (wie etwa die in diesem Kapiteleinzuführende Relationenalgebra oder den sicherenRelationenkalkül) ausdrücken können
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–7
Kriterien für Anfragesprachen /3
• Sicherheit: keine Anfrage, die syntaktisch korrekt ist, darfin eine Endlosschleife geraten oder ein unendlichesErgebnis liefern
• Eingeschränktheit: (folgt aus Sicherheit, Optimierbarkeit,Effizienz) Anfragesprache darf keine kompletteProgrammiersprache sein
• Vollständigkeit: Sprache muss mindestens die Anfrageneiner Standardsprache (wie etwa die in diesem Kapiteleinzuführende Relationenalgebra oder den sicherenRelationenkalkül) ausdrücken können
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–7
Anfragealgebren
Anfragealgebren
• Mathematik: Algebra definiert durch Wertebereich und aufdiesem definierte Operatoren
• für Datenbankanfragen: Inhalte der Datenbank sind Werte,und Operatoren definieren Funktionen zum Berechnenvon Anfrageergebnissen
• Relationenalgebra• Algebra-Erweiterungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–8
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉• Tabellen vereinigen: Vereinigung ∪• Tabellen voneinander abziehen: Differenz −• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉• Tabellen vereinigen: Vereinigung ∪• Tabellen voneinander abziehen: Differenz −• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉
• Tabellen vereinigen: Vereinigung ∪• Tabellen voneinander abziehen: Differenz −• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉• Tabellen vereinigen: Vereinigung ∪
• Tabellen voneinander abziehen: Differenz −• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉• Tabellen vereinigen: Vereinigung ∪• Tabellen voneinander abziehen: Differenz −
• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra
• Spalten ausblenden: Projektion π
• Zeilen heraussuchen: Selektion σ
• Tabellen verknüpfen: Verbund (Join) ⋊⋉• Tabellen vereinigen: Vereinigung ∪• Tabellen voneinander abziehen: Differenz −• Spalten umbenennen: Umbenennung β(wichtig für ⋊⋉ und ∪,−)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–9
Relationenalgebra: Übersicht
a1 b2
a2 b2
b2 c3
b3 c4
a2 b3 b4 c5
a1 b2
a2 b2
a2 b3
c3
c3
c4
Verbund
Selektion Projektion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–10
Projektion
• SyntaxπAttributmenge (Relation)
• SemantikπX(r) := t(X) | t ∈ r
für r(R) und X ⊆ R Attributmenge in R• Eigenschaft für Y ⊆ X ⊆ R
πY(πX(r)) = πY(r)
• Achtung: π entfernt Duplikate (Mengensemantik)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–11
Projektion: Beispiel
πRegion(ERZEUGER)
RegionSüdaustralienKalifornienBordeauxHessen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–12
Projektion: Beispiel
πRegion(ERZEUGER)
RegionSüdaustralienKalifornienBordeauxHessen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–12
Projektion: Beispiel 2
πAnbaugebiet,Region(ERZEUGER)
Anbaugebiet RegionBarossa Valley SüdaustralienNapa Valley KalifornienSaint-Emilion BordeauxPomerol BordeauxRheingau Hessen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–13
Projektion: Beispiel 2
πAnbaugebiet,Region(ERZEUGER)
Anbaugebiet RegionBarossa Valley SüdaustralienNapa Valley KalifornienSaint-Emilion BordeauxPomerol BordeauxRheingau Hessen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–13
Selektion
• SyntaxσBedingung(Relation)
• Semantik (für A ∈ R)
σA=a(r) := t ∈ r | t(A) = a
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–14
Selektionsbedingungen
• KonstantenselektionAttribut θ Konstante
boolesches Prädikat θ ist = oder =, bei linear geordnetenWertebereichen auch ≤, <, ≥ oder >
• AttributselektionAttribut1 θ Attribut2
• logische Verknüpfung mehrerer Konstanten- oderAttribut-Selektionen mit ∧,∨ oder ¬
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–15
Selektion: Eigenschaften
• Kommutativität
σA=a(σB=b(r)) = σB=b(σA=a(r))
• falls A ∈ X, X ⊆ R
πX(σA=a(r)) = σA=a(πX(r))
• Distributivität bzgl. ∪, ∩, −
σA=a(r ∪ s) = σA=a(r) ∪ σA=a(s)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–16
Selektion: Beispiel
σJahrgang>2000(WEINE)
WeinID Name Farbe Jahrgang Weingut2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek4961 Chardonnay Weiß 2002 Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–17
Selektion: Beispiel
σJahrgang>2000(WEINE)
WeinID Name Farbe Jahrgang Weingut2168 Creek Shiraz Rot 2003 Creek3456 Zinfandel Rot 2004 Helena2171 Pinot Noir Rot 2001 Creek4961 Chardonnay Weiß 2002 Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–17
Verbund
• Syntax des (natürlichen) Verbundes (engl.: natural join)Relation1 ⋊⋉ Relation2
• Semantik
r1 ⋊⋉ r2 := t | t(R1 ∪ R2) ∧[∀i ∈ 1, 2∃ti ∈ ri : ti = t(Ri)]
• Verbund verknüpft Tabellen über gleichbenannten Spaltenbei gleichen Attributwerten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–18
Verbund: Eigenschaften
• Schema für r(R) ⋊⋉ r(S) ist Vereinigung der AttributmengenRS = R ∪ S
• aus R1 ∩ R2 = folgt r1 ⋊⋉ r2 = r1 × r2• Kommutativität: r1 ⋊⋉ r2 = r2 ⋊⋉ r1• Assoziativität: (r1 ⋊⋉ r2) ⋊⋉ r3 = r1 ⋊⋉ (r2 ⋊⋉ r3)• daher erlaubt:
⋊⋉pi=1 ri
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–19
Verbund: Eigenschaften
• Schema für r(R) ⋊⋉ r(S) ist Vereinigung der AttributmengenRS = R ∪ S
• aus R1 ∩ R2 = folgt r1 ⋊⋉ r2 = r1 × r2
• Kommutativität: r1 ⋊⋉ r2 = r2 ⋊⋉ r1• Assoziativität: (r1 ⋊⋉ r2) ⋊⋉ r3 = r1 ⋊⋉ (r2 ⋊⋉ r3)• daher erlaubt:
⋊⋉pi=1 ri
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–19
Verbund: Eigenschaften
• Schema für r(R) ⋊⋉ r(S) ist Vereinigung der AttributmengenRS = R ∪ S
• aus R1 ∩ R2 = folgt r1 ⋊⋉ r2 = r1 × r2• Kommutativität: r1 ⋊⋉ r2 = r2 ⋊⋉ r1
• Assoziativität: (r1 ⋊⋉ r2) ⋊⋉ r3 = r1 ⋊⋉ (r2 ⋊⋉ r3)• daher erlaubt:
⋊⋉pi=1 ri
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–19
Verbund: Eigenschaften
• Schema für r(R) ⋊⋉ r(S) ist Vereinigung der AttributmengenRS = R ∪ S
• aus R1 ∩ R2 = folgt r1 ⋊⋉ r2 = r1 × r2• Kommutativität: r1 ⋊⋉ r2 = r2 ⋊⋉ r1• Assoziativität: (r1 ⋊⋉ r2) ⋊⋉ r3 = r1 ⋊⋉ (r2 ⋊⋉ r3)
• daher erlaubt:⋊⋉pi=1 ri
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–19
Verbund: Eigenschaften
• Schema für r(R) ⋊⋉ r(S) ist Vereinigung der AttributmengenRS = R ∪ S
• aus R1 ∩ R2 = folgt r1 ⋊⋉ r2 = r1 × r2• Kommutativität: r1 ⋊⋉ r2 = r2 ⋊⋉ r1• Assoziativität: (r1 ⋊⋉ r2) ⋊⋉ r3 = r1 ⋊⋉ (r2 ⋊⋉ r3)• daher erlaubt:
⋊⋉pi=1 ri
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–19
Verbund: Beispiel
WEINE ⋊⋉ ERZEUGER
WeinID Name . . . Weingut Anbaugebiet Region1042 La Rose Grand Cru . . . Ch. La Rose Saint-Emilion Bordeaux2168 Creek Shiraz . . . Creek Barossa Valley Südaustralien3456 Zinfandel . . . Helena Napa Valley Kalifornien2171 Pinot Noir . . . Creek Barossa Valley Südaustralien3478 Pinot Noir . . . Helena Napa Valley Kalifornien4711 Riesling Reserve . . . Müller Rheingau Hessen4961 Chardonnay . . . Bighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–20
Verbund: Beispiel
WEINE ⋊⋉ ERZEUGER
WeinID Name . . . Weingut Anbaugebiet Region1042 La Rose Grand Cru . . . Ch. La Rose Saint-Emilion Bordeaux2168 Creek Shiraz . . . Creek Barossa Valley Südaustralien3456 Zinfandel . . . Helena Napa Valley Kalifornien2171 Pinot Noir . . . Creek Barossa Valley Südaustralien3478 Pinot Noir . . . Helena Napa Valley Kalifornien4711 Riesling Reserve . . . Müller Rheingau Hessen4961 Chardonnay . . . Bighorn Napa Valley Kalifornien
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–20
Umbenennung
• Syntaxβneu←alt(Relation)
• SemantikβB←A(r) := t′ | ∃t ∈ r : t′(R− A) = t(R− A) ∧ t′(B) = t(A)
• ändert Attributnamen von alt in neuβName←Nachname (KRITIKER)
• durch Umbenennung nun möglich• Verbunde, wo bisher kartesische Produkte ausgeführtwurden (unterschiedliche Attribute werden gleichbenannt),
• kartesische Produkte, wo bisher Verbunde ausgeführtwurden (gleiche Attribute werden unterschiedlichgenannt),
• Mengenoperationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–21
Umbenennung
• Syntaxβneu←alt(Relation)
• SemantikβB←A(r) := t′ | ∃t ∈ r : t′(R− A) = t(R− A) ∧ t′(B) = t(A)
• ändert Attributnamen von alt in neuβName←Nachname (KRITIKER)
• durch Umbenennung nun möglich• Verbunde, wo bisher kartesische Produkte ausgeführtwurden (unterschiedliche Attribute werden gleichbenannt),
• kartesische Produkte, wo bisher Verbunde ausgeführtwurden (gleiche Attribute werden unterschiedlichgenannt),
• Mengenoperationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–21
Umbenennung
• Syntaxβneu←alt(Relation)
• SemantikβB←A(r) := t′ | ∃t ∈ r : t′(R− A) = t(R− A) ∧ t′(B) = t(A)
• ändert Attributnamen von alt in neuβName←Nachname (KRITIKER)
• durch Umbenennung nun möglich• Verbunde, wo bisher kartesische Produkte ausgeführtwurden (unterschiedliche Attribute werden gleichbenannt),
• kartesische Produkte, wo bisher Verbunde ausgeführtwurden (gleiche Attribute werden unterschiedlichgenannt),
• MengenoperationenSattler/Saake | VL Datenbanksysteme | 22. September 2019 8–21
Berechnung des Kreuzproduktes
• natürlicher Verbund entartet zum Kreuzprodukt, wennkeine gemeinsamen Attribute existieren
• Erzwingen durch Umbenennung
• Beispiel: R1(A,B, C) und R2(C,D)R1× R2 ≡ R1 ⋊⋉ βE←C(R2)
• Kreuzprodukt + Selektion simuliert natürlichen VerbundR1 ⋊⋉ R2 ≡ σR1.C=R2.C(R1× R2)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–22
Berechnung des Kreuzproduktes
• natürlicher Verbund entartet zum Kreuzprodukt, wennkeine gemeinsamen Attribute existieren
• Erzwingen durch Umbenennung
• Beispiel: R1(A,B, C) und R2(C,D)R1× R2 ≡ R1 ⋊⋉ βE←C(R2)
• Kreuzprodukt + Selektion simuliert natürlichen VerbundR1 ⋊⋉ R2 ≡ σR1.C=R2.C(R1× R2)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–22
Berechnung des Kreuzproduktes
• natürlicher Verbund entartet zum Kreuzprodukt, wennkeine gemeinsamen Attribute existieren
• Erzwingen durch Umbenennung• Beispiel: R1(A,B, C) und R2(C,D)
R1× R2 ≡ R1 ⋊⋉ βE←C(R2)
• Kreuzprodukt + Selektion simuliert natürlichen VerbundR1 ⋊⋉ R2 ≡ σR1.C=R2.C(R1× R2)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–22
Berechnung des Kreuzproduktes
• natürlicher Verbund entartet zum Kreuzprodukt, wennkeine gemeinsamen Attribute existieren
• Erzwingen durch Umbenennung• Beispiel: R1(A,B, C) und R2(C,D)
R1× R2 ≡ R1 ⋊⋉ βE←C(R2)
• Kreuzprodukt + Selektion simuliert natürlichen VerbundR1 ⋊⋉ R2 ≡ σR1.C=R2.C(R1× R2)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–22
Mengenoperationen: Semantik
• formal für r1(R) und r2(R)
• Vereinigung r1 ∪ r2 := t | t ∈ r1 ∨ t ∈ r2• Durchschnitt r1 ∩ r2 := t | t ∈ r1 ∧ t ∈ r2• Differenz r1 − r2 := t | t ∈ r1 ∧ t ∈ r2
• Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2) überflüssig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–23
Mengenoperationen: Semantik
• formal für r1(R) und r2(R)• Vereinigung r1 ∪ r2 := t | t ∈ r1 ∨ t ∈ r2
• Durchschnitt r1 ∩ r2 := t | t ∈ r1 ∧ t ∈ r2• Differenz r1 − r2 := t | t ∈ r1 ∧ t ∈ r2
• Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2) überflüssig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–23
Mengenoperationen: Semantik
• formal für r1(R) und r2(R)• Vereinigung r1 ∪ r2 := t | t ∈ r1 ∨ t ∈ r2• Durchschnitt r1 ∩ r2 := t | t ∈ r1 ∧ t ∈ r2
• Differenz r1 − r2 := t | t ∈ r1 ∧ t ∈ r2
• Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2) überflüssig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–23
Mengenoperationen: Semantik
• formal für r1(R) und r2(R)• Vereinigung r1 ∪ r2 := t | t ∈ r1 ∨ t ∈ r2• Durchschnitt r1 ∩ r2 := t | t ∈ r1 ∧ t ∈ r2• Differenz r1 − r2 := t | t ∈ r1 ∧ t ∈ r2
• Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2) überflüssig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–23
Mengenoperationen: Semantik
• formal für r1(R) und r2(R)• Vereinigung r1 ∪ r2 := t | t ∈ r1 ∨ t ∈ r2• Durchschnitt r1 ∩ r2 := t | t ∈ r1 ∧ t ∈ r2• Differenz r1 − r2 := t | t ∈ r1 ∧ t ∈ r2
• Durchschnitt ∩ wegen r1 ∩ r2 = r1 − (r1 − r2) überflüssig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–23
Unabhängigkeit und Vollständigkeit
• Minimale Relationenalgebra:Ω = π, σ, ⋊⋉, β, ∪ und −
• unabhängig: kein Operator kann weggelassen werdenohne Vollständigkeit zu verlieren
• andere unabhängige Menge: ⋊⋉ und β durch × ersetzen• Relationale Vollständigkeit: jede andere Menge vonOperationen genauso mächtig wie Ω
• strenge relationale Vollständigkeit: zu jedem Ausdruck mitOperatoren aus Ω gibt es einen Ausdruck auch mit deranderen Menge von Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–24
Unabhängigkeit und Vollständigkeit
• Minimale Relationenalgebra:Ω = π, σ, ⋊⋉, β, ∪ und −
• unabhängig: kein Operator kann weggelassen werdenohne Vollständigkeit zu verlieren
• andere unabhängige Menge: ⋊⋉ und β durch × ersetzen• Relationale Vollständigkeit: jede andere Menge vonOperationen genauso mächtig wie Ω
• strenge relationale Vollständigkeit: zu jedem Ausdruck mitOperatoren aus Ω gibt es einen Ausdruck auch mit deranderen Menge von Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–24
Unabhängigkeit und Vollständigkeit
• Minimale Relationenalgebra:Ω = π, σ, ⋊⋉, β, ∪ und −
• unabhängig: kein Operator kann weggelassen werdenohne Vollständigkeit zu verlieren
• andere unabhängige Menge: ⋊⋉ und β durch × ersetzen
• Relationale Vollständigkeit: jede andere Menge vonOperationen genauso mächtig wie Ω
• strenge relationale Vollständigkeit: zu jedem Ausdruck mitOperatoren aus Ω gibt es einen Ausdruck auch mit deranderen Menge von Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–24
Unabhängigkeit und Vollständigkeit
• Minimale Relationenalgebra:Ω = π, σ, ⋊⋉, β, ∪ und −
• unabhängig: kein Operator kann weggelassen werdenohne Vollständigkeit zu verlieren
• andere unabhängige Menge: ⋊⋉ und β durch × ersetzen• Relationale Vollständigkeit: jede andere Menge vonOperationen genauso mächtig wie Ω
• strenge relationale Vollständigkeit: zu jedem Ausdruck mitOperatoren aus Ω gibt es einen Ausdruck auch mit deranderen Menge von Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–24
Unabhängigkeit und Vollständigkeit
• Minimale Relationenalgebra:Ω = π, σ, ⋊⋉, β, ∪ und −
• unabhängig: kein Operator kann weggelassen werdenohne Vollständigkeit zu verlieren
• andere unabhängige Menge: ⋊⋉ und β durch × ersetzen• Relationale Vollständigkeit: jede andere Menge vonOperationen genauso mächtig wie Ω
• strenge relationale Vollständigkeit: zu jedem Ausdruck mitOperatoren aus Ω gibt es einen Ausdruck auch mit deranderen Menge von Operationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–24
Erweiterungen derRelationenalgebra
Erweiterungen der Relationenalgebra
• weitere Verbundoperationen• Division• Gruppierung und geschachtelte Relationen• …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–25
Verbundvarianten
• für L(AB), R(BC), S(DE)
• Gleichverbund (engl. equi-join): Gleichheitsbedingungüber explizit angegebene und evtl. verschiedene Attribute
r(R) ⋊⋉C=D r(S)
• Theta-Verbund (engl. θ-join): beliebige Verbundbedingung
r(R) ⋊⋉C>D r(S)
• Semi-Verbund: nur Attribute eines Operanden erscheinenim Ergebnis
r(L)⋉ r(R) = πL(r(L) ⋊⋉ r(R))
• äußere Verbunde (engl. outer join)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–26
Verbundvarianten
• für L(AB), R(BC), S(DE)• Gleichverbund (engl. equi-join): Gleichheitsbedingungüber explizit angegebene und evtl. verschiedene Attribute
r(R) ⋊⋉C=D r(S)
• Theta-Verbund (engl. θ-join): beliebige Verbundbedingung
r(R) ⋊⋉C>D r(S)
• Semi-Verbund: nur Attribute eines Operanden erscheinenim Ergebnis
r(L)⋉ r(R) = πL(r(L) ⋊⋉ r(R))
• äußere Verbunde (engl. outer join)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–26
Verbundvarianten
• für L(AB), R(BC), S(DE)• Gleichverbund (engl. equi-join): Gleichheitsbedingungüber explizit angegebene und evtl. verschiedene Attribute
r(R) ⋊⋉C=D r(S)
• Theta-Verbund (engl. θ-join): beliebige Verbundbedingung
r(R) ⋊⋉C>D r(S)
• Semi-Verbund: nur Attribute eines Operanden erscheinenim Ergebnis
r(L)⋉ r(R) = πL(r(L) ⋊⋉ r(R))
• äußere Verbunde (engl. outer join)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–26
Verbundvarianten
• für L(AB), R(BC), S(DE)• Gleichverbund (engl. equi-join): Gleichheitsbedingungüber explizit angegebene und evtl. verschiedene Attribute
r(R) ⋊⋉C=D r(S)
• Theta-Verbund (engl. θ-join): beliebige Verbundbedingung
r(R) ⋊⋉C>D r(S)
• Semi-Verbund: nur Attribute eines Operanden erscheinenim Ergebnis
r(L)⋉ r(R) = πL(r(L) ⋊⋉ r(R))
• äußere Verbunde (engl. outer join)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–26
Verbundvarianten
• für L(AB), R(BC), S(DE)• Gleichverbund (engl. equi-join): Gleichheitsbedingungüber explizit angegebene und evtl. verschiedene Attribute
r(R) ⋊⋉C=D r(S)
• Theta-Verbund (engl. θ-join): beliebige Verbundbedingung
r(R) ⋊⋉C>D r(S)
• Semi-Verbund: nur Attribute eines Operanden erscheinenim Ergebnis
r(L)⋉ r(R) = πL(r(L) ⋊⋉ r(R))
• äußere Verbunde (engl. outer join)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–26
Äußere Verbunde
• Übernahme von „dangling tuples“ in das Ergebnis undAuffüllen mit Nullwerten
• voller äußerer Verbund übernimmt alle Tupel beiderOperanden
r ⊐▷◁⊏ s• linker äußerer Verbund übernimmt alle Tupel des linkenOperanden
r ⊐▷◁ s• rechter äußerer Verbund übernimmt alle Tupel desrechten Operanden
r ▷◁⊏ s
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–27
Äußere Verbunde
• Übernahme von „dangling tuples“ in das Ergebnis undAuffüllen mit Nullwerten
• voller äußerer Verbund übernimmt alle Tupel beiderOperanden
r ⊐▷◁⊏ s
• linker äußerer Verbund übernimmt alle Tupel des linkenOperanden
r ⊐▷◁ s• rechter äußerer Verbund übernimmt alle Tupel desrechten Operanden
r ▷◁⊏ s
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–27
Äußere Verbunde
• Übernahme von „dangling tuples“ in das Ergebnis undAuffüllen mit Nullwerten
• voller äußerer Verbund übernimmt alle Tupel beiderOperanden
r ⊐▷◁⊏ s• linker äußerer Verbund übernimmt alle Tupel des linkenOperanden
r ⊐▷◁ s
• rechter äußerer Verbund übernimmt alle Tupel desrechten Operanden
r ▷◁⊏ s
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–27
Äußere Verbunde
• Übernahme von „dangling tuples“ in das Ergebnis undAuffüllen mit Nullwerten
• voller äußerer Verbund übernimmt alle Tupel beiderOperanden
r ⊐▷◁⊏ s• linker äußerer Verbund übernimmt alle Tupel des linkenOperanden
r ⊐▷◁ s• rechter äußerer Verbund übernimmt alle Tupel desrechten Operanden
r ▷◁⊏ s
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–27
Äußere Verbunde /2
LINKS A B1 22 3
RECHTS B C3 44 5
⋊⋉ A B C2 3 4
⊐▷◁⊏ A B C1 2 ⊥2 3 4⊥ 4 5
⊐▷◁ A B C1 2 ⊥2 3 4
▷◁⊏ A B C2 3 4⊥ 4 5
left outer join full outer joinright outer joinnatural join
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–28
Problem: Quantoren
• Allquantor in Relationenalgebra ausdrücken, obwohl inSelektionsbedingungen nicht erlaubt
• Division (kann aus Ω hergeleitet werden)• r1(R1) und r2(R2) gegeben mit R2 ⊆ R1, R′ = R1 − R2. Dannist
r′(R′) = t | ∀t2 ∈ r2∃t1 ∈ r1 : t1(R′) = t ∧ t1(R2) = t2= r1 ÷ r2
• Division von r1 durch r2
r1 ÷ r2 = πR′(r1)− πR′((πR′(r1) ⋊⋉ r2)− r1)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–29
Problem: Quantoren
• Allquantor in Relationenalgebra ausdrücken, obwohl inSelektionsbedingungen nicht erlaubt
• Division (kann aus Ω hergeleitet werden)
• r1(R1) und r2(R2) gegeben mit R2 ⊆ R1, R′ = R1 − R2. Dannist
r′(R′) = t | ∀t2 ∈ r2∃t1 ∈ r1 : t1(R′) = t ∧ t1(R2) = t2= r1 ÷ r2
• Division von r1 durch r2
r1 ÷ r2 = πR′(r1)− πR′((πR′(r1) ⋊⋉ r2)− r1)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–29
Problem: Quantoren
• Allquantor in Relationenalgebra ausdrücken, obwohl inSelektionsbedingungen nicht erlaubt
• Division (kann aus Ω hergeleitet werden)• r1(R1) und r2(R2) gegeben mit R2 ⊆ R1, R′ = R1 − R2. Dannist
r′(R′) = t | ∀t2 ∈ r2∃t1 ∈ r1 : t1(R′) = t ∧ t1(R2) = t2= r1 ÷ r2
• Division von r1 durch r2
r1 ÷ r2 = πR′(r1)− πR′((πR′(r1) ⋊⋉ r2)− r1)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–29
Problem: Quantoren
• Allquantor in Relationenalgebra ausdrücken, obwohl inSelektionsbedingungen nicht erlaubt
• Division (kann aus Ω hergeleitet werden)• r1(R1) und r2(R2) gegeben mit R2 ⊆ R1, R′ = R1 − R2. Dannist
r′(R′) = t | ∀t2 ∈ r2∃t1 ∈ r1 : t1(R′) = t ∧ t1(R2) = t2= r1 ÷ r2
• Division von r1 durch r2
r1 ÷ r2 = πR′(r1)− πR′((πR′(r1) ⋊⋉ r2)− r1)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–29
Division: Beispiel
WEIN_EMPFEHLUNG Wein KritikerLa Rose Grand Cru ParkerPinot Noir ParkerRiesling Reserve ParkerLa Rose Grand Cru ClarkePinot Noir ClarkeRiesling Reserve Gault-Millau
GUIDES1 KritikerParkerClarke
GUIDES2 KritikerParkerGault-Millau
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–30
Divisionsbeispiele
• Division mit erster Tabelle
WEIN_EMPFEHLUNG÷ GUIDES1liefert
WeinLa Rose Grand CruPinot Noir
• Division mit zweiter Kritikerliste
WEIN_EMPFEHLUNG÷ GUIDES2liefert
WeinRiesling Reserve
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–31
Divisionsbeispiele
• Division mit erster Tabelle
WEIN_EMPFEHLUNG÷ GUIDES1liefert
WeinLa Rose Grand CruPinot Noir
• Division mit zweiter Kritikerliste
WEIN_EMPFEHLUNG÷ GUIDES2liefert
WeinRiesling Reserve
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–31
Begriff Division
• Analogie zur arithmetischen Operation der ganzzahligenDivision
DivisionDie ganzzahlige Division ist in dem Sinne die Inverse zurMultiplikation, indem sie als Ergebnis die größte Zahl liefert,für die die Multiplikation mit dem Divisor kleiner ist als derDividend.
Analog gilt: r = r1 ÷ r2 ist die größte Relation, für dier ⋊⋉ r2 ⊆ r1 ist.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–32
Division in SQL: Simulation des Allquantors
select distinct Weinfrom WEIN_EMPFEHLUNG w1where not exists (
select * from GUIDES2 gwhere not exists (
select * from WEIN_EMPFEHLUNG w2where g.Kritiker = w2.Kritiker
and w1.Wein = w2.Wein))
• „Gib alle Weine aus, so dass kein Wein existiert, der nichtvon allen Kritikern in der Relation GUIDES2 empfohlenwird“.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–33
Division in SQL: Simulation des Allquantors
select distinct Weinfrom WEIN_EMPFEHLUNG w1where not exists (
select * from GUIDES2 gwhere not exists (
select * from WEIN_EMPFEHLUNG w2where g.Kritiker = w2.Kritiker
and w1.Wein = w2.Wein))
• „Gib alle Weine aus, so dass kein Wein existiert, der nichtvon allen Kritikern in der Relation GUIDES2 empfohlenwird“.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–33
Gruppierungsoperator γ
γf1(x1),f2(x2),...,fn(xn);A(r(R))
• erweitert Attributschema von r(R) um neue Attribute, diemit den Funktionsanwendungen f1(x1), f2(x2), . . . , fn(xn)korrespondieren
• Anwendung der Funktionen fi(xi) auf die Teilmengederjenigen Tupel von r(R) die gleiche Attributwerte für dieAttribute A haben
select f1(x1), f2(x2), …, fn(xn), Afrom Rgroup by A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–34
Gruppierungsoperator γ
γf1(x1),f2(x2),...,fn(xn);A(r(R))
• erweitert Attributschema von r(R) um neue Attribute, diemit den Funktionsanwendungen f1(x1), f2(x2), . . . , fn(xn)korrespondieren
• Anwendung der Funktionen fi(xi) auf die Teilmengederjenigen Tupel von r(R) die gleiche Attributwerte für dieAttribute A haben
select f1(x1), f2(x2), …, fn(xn), Afrom Rgroup by A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–34
Gruppierungsoperator γ
γf1(x1),f2(x2),...,fn(xn);A(r(R))
• erweitert Attributschema von r(R) um neue Attribute, diemit den Funktionsanwendungen f1(x1), f2(x2), . . . , fn(xn)korrespondieren
• Anwendung der Funktionen fi(xi) auf die Teilmengederjenigen Tupel von r(R) die gleiche Attributwerte für dieAttribute A haben
select f1(x1), f2(x2), …, fn(xn), Afrom Rgroup by A
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–34
Semantik des Gruppierungsoperators
• leere Attributmenge A = ∅:
γF(X);∅(r(R)) = r(R)× r(R)F(X)
mit r(R)F(X) ist Relation mit Attribut F(X) und einem Tupelals Wert von F(X) auf r(R)
• ohne Funktion:
γ∅;∅(r(R)) = r(R)
• allgemeiner Fall:
γF(X);A(r(R)) =∪t∈R
γF(X);∅(σA=t.A(r(R)))
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–35
Semantik des Gruppierungsoperators
• leere Attributmenge A = ∅:
γF(X);∅(r(R)) = r(R)× r(R)F(X)
mit r(R)F(X) ist Relation mit Attribut F(X) und einem Tupelals Wert von F(X) auf r(R)
• ohne Funktion:
γ∅;∅(r(R)) = r(R)
• allgemeiner Fall:
γF(X);A(r(R)) =∪t∈R
γF(X);∅(σA=t.A(r(R)))
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–35
Semantik des Gruppierungsoperators
• leere Attributmenge A = ∅:
γF(X);∅(r(R)) = r(R)× r(R)F(X)
mit r(R)F(X) ist Relation mit Attribut F(X) und einem Tupelals Wert von F(X) auf r(R)
• ohne Funktion:
γ∅;∅(r(R)) = r(R)
• allgemeiner Fall:
γF(X);A(r(R)) =∪t∈R
γF(X);∅(σA=t.A(r(R)))
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–35
Anfragekalküle
Anfragekalküle
• Kalkül: eine formale logische Sprache zur Formulierungvon Aussagen
• Ziel: Einsatz eines derartigen Kalküls zur Formulierung vonDatenbank-Anfragen
• Logikbasierter Ansatz:
• Datenbankinhalte entsprechen Belegungen von Prädikateneiner Logik
• Anfragen abgeleiteten Prädikaten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–36
Anfragekalküle
• Kalkül: eine formale logische Sprache zur Formulierungvon Aussagen
• Ziel: Einsatz eines derartigen Kalküls zur Formulierung vonDatenbank-Anfragen
• Logikbasierter Ansatz:
• Datenbankinhalte entsprechen Belegungen von Prädikateneiner Logik
• Anfragen abgeleiteten Prädikaten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–36
Anfragekalküle
• Kalkül: eine formale logische Sprache zur Formulierungvon Aussagen
• Ziel: Einsatz eines derartigen Kalküls zur Formulierung vonDatenbank-Anfragen
• Logikbasierter Ansatz:
• Datenbankinhalte entsprechen Belegungen von Prädikateneiner Logik
• Anfragen abgeleiteten Prädikaten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–36
Anfragekalküle
• Kalkül: eine formale logische Sprache zur Formulierungvon Aussagen
• Ziel: Einsatz eines derartigen Kalküls zur Formulierung vonDatenbank-Anfragen
• Logikbasierter Ansatz:• Datenbankinhalte entsprechen Belegungen von Prädikateneiner Logik
• Anfragen abgeleiteten Prädikaten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–36
Anfragekalküle
• Kalkül: eine formale logische Sprache zur Formulierungvon Aussagen
• Ziel: Einsatz eines derartigen Kalküls zur Formulierung vonDatenbank-Anfragen
• Logikbasierter Ansatz:• Datenbankinhalte entsprechen Belegungen von Prädikateneiner Logik
• Anfragen abgeleiteten Prädikaten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–36
Ein allgemeiner Kalkül
• Motivation: mathematische Notation
x2 | x ∈ N ∧ x3 > 0 ∧ x3 < 1000
• Anfrage hat die Form
f(x) | p(x)
• x bezeichnet Menge von freien Variablen
x = x1 : D1, . . . , xn : Dn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–37
Ein allgemeiner Kalkül
• Motivation: mathematische Notation
x2 | x ∈ N ∧ x3 > 0 ∧ x3 < 1000
• Anfrage hat die Form
f(x) | p(x)
• x bezeichnet Menge von freien Variablen
x = x1 : D1, . . . , xn : Dn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–37
Ein allgemeiner Kalkül
• Motivation: mathematische Notation
x2 | x ∈ N ∧ x3 > 0 ∧ x3 < 1000
• Anfrage hat die Form
f(x) | p(x)
• x bezeichnet Menge von freien Variablen
x = x1 : D1, . . . , xn : Dn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–37
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x
• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x
• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x
• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x
• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ein allgemeiner Kalkül /2
• Funktion f bezeichnet Ergebnisfunktion über x• wichtige Spezialfälle: Angabe einer Variable selber (f isthier die Identitätsfunktion) und Tupelkonstruktion(Ergebnis vom Typ tuple of)
• p Selektionsprädikat über freien Variablen x• Terme aus Variablen, Konstanten undFunktionsanwendungen
• Prädikate der Datentypen, etwa ≤, <, >, ≥, ...→ atomare Formeln über Termen
• Bezug zur aktuellen Datenbank→ Datenbankprädikate, z.B.Relationennamen im RM
• prädikatenlogischen Operatoren ∧, ∨, ¬, ∀, ∃→ Formeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–38
Ergebnisbestimmung einer Anfrage
x = x1 : D1, . . . , xn : Dn
1. Bestimme aller Belegungen der freien Variablen in x, fürdie das Prädikat p wahr wird.
2. Wende Funktion f auf die durch diese Belegungengegebenen Werte an.
Sicherheit von AnfragenUnter welchen Umständen liefern Kalkülanfragen endlicheErgebnisse?
→ Sicherheit von Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–39
Ergebnisbestimmung einer Anfrage
x = x1 : D1, . . . , xn : Dn
1. Bestimme aller Belegungen der freien Variablen in x, fürdie das Prädikat p wahr wird.
2. Wende Funktion f auf die durch diese Belegungengegebenen Werte an.
Sicherheit von AnfragenUnter welchen Umständen liefern Kalkülanfragen endlicheErgebnisse?
→ Sicherheit von Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–39
Ergebnisbestimmung einer Anfrage
x = x1 : D1, . . . , xn : Dn
1. Bestimme aller Belegungen der freien Variablen in x, fürdie das Prädikat p wahr wird.
2. Wende Funktion f auf die durch diese Belegungengegebenen Werte an.
Sicherheit von AnfragenUnter welchen Umständen liefern Kalkülanfragen endlicheErgebnisse?
→ Sicherheit von Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–39
Ergebnisbestimmung einer Anfrage
x = x1 : D1, . . . , xn : Dn
1. Bestimme aller Belegungen der freien Variablen in x, fürdie das Prädikat p wahr wird.
2. Wende Funktion f auf die durch diese Belegungengegebenen Werte an.
Sicherheit von AnfragenUnter welchen Umständen liefern Kalkülanfragen endlicheErgebnisse?
→ Sicherheit von Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–39
Ergebnisbestimmung einer Anfrage
x = x1 : D1, . . . , xn : Dn
1. Bestimme aller Belegungen der freien Variablen in x, fürdie das Prädikat p wahr wird.
2. Wende Funktion f auf die durch diese Belegungengegebenen Werte an.
Sicherheit von AnfragenUnter welchen Umständen liefern Kalkülanfragen endlicheErgebnisse?
→ Sicherheit von Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–39
Relationale Kalküle
• Bereichskalkül: Variablen nehmen Werte elementarerDatentypen (Bereiche) an
• Tupelkalkül: Variablen variieren über Tupelwerte(entsprechend den Zeilen einer Relation)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–40
Relationale Kalküle
• Bereichskalkül: Variablen nehmen Werte elementarerDatentypen (Bereiche) an
• Tupelkalkül: Variablen variieren über Tupelwerte(entsprechend den Zeilen einer Relation)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–40
Tupelkalkül
• Grundlage von SFW-Anfragen in SQL
• Variablen sind tupelwertig• Beispiel:
w | w ∈ WEINE ∧ w.Farbe = 'Rot'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–41
Tupelkalkül
• Grundlage von SFW-Anfragen in SQL• Variablen sind tupelwertig
• Beispiel:
w | w ∈ WEINE ∧ w.Farbe = 'Rot'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–41
Tupelkalkül
• Grundlage von SFW-Anfragen in SQL• Variablen sind tupelwertig• Beispiel:
w | w ∈ WEINE ∧ w.Farbe = 'Rot'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–41
Tupelkalkül: Beispiele
• konstruierte Tupel
⟨w.Name,w.Weingut⟩ | w ∈ WEINE ∧ w.Farbe = 'Rot'
• Verbund
⟨e.Weingut⟩ | e ∈ ERZEUGER ∧ w ∈ WEINE∧ e.Weingut = w.Weingut
• Schachtelung
⟨w.Name,w.Weingut⟩ | w ∈ WEINE∧∃e ∈ ERZEUGER(w.Weingut = e.Weingut∧
e.Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–42
Tupelkalkül: Beispiele
• konstruierte Tupel
⟨w.Name,w.Weingut⟩ | w ∈ WEINE ∧ w.Farbe = 'Rot'• Verbund
⟨e.Weingut⟩ | e ∈ ERZEUGER ∧ w ∈ WEINE∧ e.Weingut = w.Weingut
• Schachtelung
⟨w.Name,w.Weingut⟩ | w ∈ WEINE∧∃e ∈ ERZEUGER(w.Weingut = e.Weingut∧
e.Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–42
Tupelkalkül: Beispiele
• konstruierte Tupel
⟨w.Name,w.Weingut⟩ | w ∈ WEINE ∧ w.Farbe = 'Rot'• Verbund
⟨e.Weingut⟩ | e ∈ ERZEUGER ∧ w ∈ WEINE∧ e.Weingut = w.Weingut
• Schachtelung
⟨w.Name,w.Weingut⟩ | w ∈ WEINE∧∃e ∈ ERZEUGER(w.Weingut = e.Weingut∧
e.Region = 'Bordeaux')
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–42
Motivation: Die Sprache QBE
• „Query by Example“• Anfragen in QBE: Einträge in Tabellengerüsten• Intuition: Beispieleinträge in Tabellen• Vorläufer verschiedener tabellenbasierterAnfrageschnittstellen kommerzieller Systeme
• basiert auf logischem Kalkül mit Bereichsvariablen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–43
Anfragen in QBE: Selektion und Projektion
• Anfrage: „Alle Rotweine, die vor 2015 produziert wurden“
WEINE Name Weingut Farbe JahrgangP. Rot < 2015
n | WEINE(n, _,'Rot', j) ∧ j < 2015
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–44
Anfragen in QBE: Selektion und Projektion
• Anfrage: „Alle Rotweine, die vor 2015 produziert wurden“
WEINE Name Weingut Farbe JahrgangP. Rot < 2015
n | WEINE(n, _,'Rot', j) ∧ j < 2015
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–44
Anfragen in QBE: Selektion und Projektion
• Anfrage: „Alle Rotweine, die vor 2015 produziert wurden“
WEINE Name Weingut Farbe JahrgangP. Rot < 2015
n | WEINE(n, _,'Rot', j) ∧ j < 2015
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–44
Anfragen in QBE: Selektion und Projektion
• Anfrage: „Alle Rotweine, die vor 2015 produziert wurden“
WEINE Name Weingut Farbe JahrgangP. Rot < 2015
n | WEINE(n, _,'Rot', j) ∧ j < 2015
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–44
Anfragen in QBE: Verbund
• Anfrage: „Alle Rotweine aus der Region Bordeaux“
WEINE Name Weingut Farbe JahrgangP. _w Rot
ERZEUGER Weingut Region Anbaugebiet_w Bordeaux
n | WEINE(n,w,'Rot', _) ∧ ERZEUGER(w,'Bordeaux', _)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–45
Anfragen in QBE: Verbund
• Anfrage: „Alle Rotweine aus der Region Bordeaux“
WEINE Name Weingut Farbe JahrgangP. _w Rot
ERZEUGER Weingut Region Anbaugebiet_w Bordeaux
n | WEINE(n,w,'Rot', _) ∧ ERZEUGER(w,'Bordeaux', _)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–45
Anfragen in QBE: Verbund
• Anfrage: „Alle Rotweine aus der Region Bordeaux“
WEINE Name Weingut Farbe JahrgangP. _w Rot
ERZEUGER Weingut Region Anbaugebiet_w Bordeaux
n | WEINE(n,w,'Rot', _) ∧ ERZEUGER(w,'Bordeaux', _)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–45
Anfragen in QBE: Verbund
• Anfrage: „Alle Rotweine aus der Region Bordeaux“
WEINE Name Weingut Farbe JahrgangP. _w Rot
ERZEUGER Weingut Region Anbaugebiet_w Bordeaux
n | WEINE(n,w,'Rot', _) ∧ ERZEUGER(w,'Bordeaux', _)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–45
Anfragen in QBE: Verbund
• Anfrage: „Alle Rotweine aus der Region Bordeaux“
WEINE Name Weingut Farbe JahrgangP. _w Rot
ERZEUGER Weingut Region Anbaugebiet_w Bordeaux
n | WEINE(n,w,'Rot', _) ∧ ERZEUGER(w,'Bordeaux', _)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–45
Anfragen in QBE: Selbstverbund
• Anfrage: „Regionen mit zwei oder mehr Erzeugern“
ERZEUGER Weingut Region Anbaugebiet_eins P. _region¬ _eins _region
r | ERZEUGER(x, r, _) ∧ ERZEUGER(y, r, _) ∧ x = y
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–46
Anfragen in QBE: Selbstverbund
• Anfrage: „Regionen mit zwei oder mehr Erzeugern“
ERZEUGER Weingut Region Anbaugebiet_eins P. _region¬ _eins _region
r | ERZEUGER(x, r, _) ∧ ERZEUGER(y, r, _) ∧ x = y
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–46
Anfragen in QBE: Selbstverbund
• Anfrage: „Regionen mit zwei oder mehr Erzeugern“
ERZEUGER Weingut Region Anbaugebiet_eins P. _region¬ _eins _region
r | ERZEUGER(x, r, _) ∧ ERZEUGER(y, r, _) ∧ x = y
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–46
QBE in MS-Access
• MS-Access: Datenbankprogramm für Windows• Basisrelationen mit Schlüsseln• Fremdschlüssel über graphische Angabe von Beziehungen• graphische Definition von Anfragen (SQL-ähnlich)• interaktive Definition von Formularen und Berichten
• Unterstützung von QBE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–47
Access: Projektion und Selektion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–48
Access: Verbund
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–49
Bereichskalkül
• Terme:
• Konstanten, etwa 42 oder 'MZ-4'• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:
• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül
• Terme:• Konstanten, etwa 42 oder 'MZ-4'
• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:
• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül
• Terme:• Konstanten, etwa 42 oder 'MZ-4'• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:
• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül
• Terme:• Konstanten, etwa 42 oder 'MZ-4'• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:
• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül
• Terme:• Konstanten, etwa 42 oder 'MZ-4'• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:
• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül
• Terme:• Konstanten, etwa 42 oder 'MZ-4'• Variablen zu Datentypen, etwa xDatentypangabe erfolgt in der Regel implizit und wird nichtexplizit deklariert!
• Funktionsanwendung f(t1, . . . , tn): Funktion f, Terme ti, etwaplus(12, x) bzw. in Infixnotation 12+ x
• Atomare Formeln:• Prädikatanwendung Θ(t1, . . . , tn),Θ ∈ <,>,≤,≥, =,=, . . . Datentypprädikat, Terme tiZweistellige Prädikate wie üblich in Infix-Notation.Beispiele: x = y, 42 > x oder 3+ 7 = 11.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–50
Bereichskalkül /2
• Atomare Formeln (fortg.):
• Prädikatanwendungen für Datenbankprädikate, notiert alsR(t1, . . . , tn) für einen Relationennamen RVoraussetzung: n muss die Stelligkeit der Relation R seinund alle ti müssen vom passenden Typ seinBeispiel: ERZEUGER(x, ’Hessen’, z)
• Formeln wie üblich mit ∧, ∨, ¬, ∀ und ∃
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–51
Bereichskalkül /2
• Atomare Formeln (fortg.):• Prädikatanwendungen für Datenbankprädikate, notiert alsR(t1, . . . , tn) für einen Relationennamen RVoraussetzung: n muss die Stelligkeit der Relation R seinund alle ti müssen vom passenden Typ seinBeispiel: ERZEUGER(x, ’Hessen’, z)
• Formeln wie üblich mit ∧, ∨, ¬, ∀ und ∃
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–51
Bereichskalkül /2
• Atomare Formeln (fortg.):• Prädikatanwendungen für Datenbankprädikate, notiert alsR(t1, . . . , tn) für einen Relationennamen RVoraussetzung: n muss die Stelligkeit der Relation R seinund alle ti müssen vom passenden Typ seinBeispiel: ERZEUGER(x, ’Hessen’, z)
• Formeln wie üblich mit ∧, ∨, ¬, ∀ und ∃
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–51
Bereichskalkül /3
• Anfragen: x1, . . . , xn | ϕ(x1, . . . , xn)
• ϕ ist Formel über den in der Ergebnisliste aufgeführtenVariablen x1 bis xn
• Ergebnis ist eine Menge von Tupeln• Tupelkonstruktion erfolgt implizit aus den Werten derVariablen in der Ergebnisliste
• Beispiel
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–52
Bereichskalkül /3
• Anfragen: x1, . . . , xn | ϕ(x1, . . . , xn)• ϕ ist Formel über den in der Ergebnisliste aufgeführtenVariablen x1 bis xn
• Ergebnis ist eine Menge von Tupeln• Tupelkonstruktion erfolgt implizit aus den Werten derVariablen in der Ergebnisliste
• Beispiel
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–52
Bereichskalkül /3
• Anfragen: x1, . . . , xn | ϕ(x1, . . . , xn)• ϕ ist Formel über den in der Ergebnisliste aufgeführtenVariablen x1 bis xn
• Ergebnis ist eine Menge von Tupeln
• Tupelkonstruktion erfolgt implizit aus den Werten derVariablen in der Ergebnisliste
• Beispiel
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–52
Bereichskalkül /3
• Anfragen: x1, . . . , xn | ϕ(x1, . . . , xn)• ϕ ist Formel über den in der Ergebnisliste aufgeführtenVariablen x1 bis xn
• Ergebnis ist eine Menge von Tupeln• Tupelkonstruktion erfolgt implizit aus den Werten derVariablen in der Ergebnisliste
• Beispiel
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–52
Bereichskalkül /3
• Anfragen: x1, . . . , xn | ϕ(x1, . . . , xn)• ϕ ist Formel über den in der Ergebnisliste aufgeführtenVariablen x1 bis xn
• Ergebnis ist eine Menge von Tupeln• Tupelkonstruktion erfolgt implizit aus den Werten derVariablen in der Ergebnisliste
• Beispiel
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–52
Basiskalkül
• Einschränkung des Bereichskalküls:• Wertebereich: ganze Zahlen• Datentypprädikate werden wie bei der Relationenalgebraauf Gleichheit und elementare Vergleichsoperatoreneingeschränkt
• Funktionsanwendungen sind nicht erlaubt; nur Konstantendürfen neben Bereichsvariablen als Terme verwendetwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–53
Sichere Anfragen
Semantisch sichere AnfragenAnfragen, die für jeden Datenbankzustand σ(R) einendliches Ergebnis liefern
• Beispiel für nicht sichere Anfrage:
x, y | ¬R(x, y)
• Beispiel für sichere Anfrage:
x, y | R(x, y)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–54
Sichere Anfragen
Semantisch sichere AnfragenAnfragen, die für jeden Datenbankzustand σ(R) einendliches Ergebnis liefern
• Beispiel für nicht sichere Anfrage:
x, y | ¬R(x, y)
• Beispiel für sichere Anfrage:
x, y | R(x, y)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–54
Sichere Anfragen
Semantisch sichere AnfragenAnfragen, die für jeden Datenbankzustand σ(R) einendliches Ergebnis liefern
• Beispiel für nicht sichere Anfrage:
x, y | ¬R(x, y)
• Beispiel für sichere Anfrage:
x, y | R(x, y)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–54
Sichere Anfragen /2
• Weiteres Beispiel für sichere Anfrage:
x, y | y = 10 ∧ x > 0 ∧ x < 10
Sicherheit folgt direkt aus den Regeln der Arithmetik.
Semantische SicherheitSemantische Sicherheit ist im Allgemeinen nichtentscheidbar!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–55
Sichere Anfragen /2
• Weiteres Beispiel für sichere Anfrage:
x, y | y = 10 ∧ x > 0 ∧ x < 10
Sicherheit folgt direkt aus den Regeln der Arithmetik.
Semantische SicherheitSemantische Sicherheit ist im Allgemeinen nichtentscheidbar!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–55
Syntaktisch sichere Anfragen
• Syntaktisch sichere Anfragen: Anfragen, die syntaktischenEinschränkungen unterliegen, um die semantischeSicherheit zu erzwingen.
• Grundidee:
Syntaktische SicherheitJede freie Variable xi muss überall in ϕ(x1, . . . ) durchpositives Auftreten xi = t oder R(. . . , xi, . . . ) an endlicheBereiche gebunden werden.
• Bindung an endliche Bereiche muss für die ganzeBedingung gelten, also insbesondere für alle Zweige einerDisjunktion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–56
Syntaktisch sichere Anfragen
• Syntaktisch sichere Anfragen: Anfragen, die syntaktischenEinschränkungen unterliegen, um die semantischeSicherheit zu erzwingen.
• Grundidee:
Syntaktische SicherheitJede freie Variable xi muss überall in ϕ(x1, . . . ) durchpositives Auftreten xi = t oder R(. . . , xi, . . . ) an endlicheBereiche gebunden werden.
• Bindung an endliche Bereiche muss für die ganzeBedingung gelten, also insbesondere für alle Zweige einerDisjunktion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–56
Syntaktisch sichere Anfragen
• Syntaktisch sichere Anfragen: Anfragen, die syntaktischenEinschränkungen unterliegen, um die semantischeSicherheit zu erzwingen.
• Grundidee:Syntaktische SicherheitJede freie Variable xi muss überall in ϕ(x1, . . . ) durchpositives Auftreten xi = t oder R(. . . , xi, . . . ) an endlicheBereiche gebunden werden.
• Bindung an endliche Bereiche muss für die ganzeBedingung gelten, also insbesondere für alle Zweige einerDisjunktion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–56
Syntaktisch sichere Anfragen
• Syntaktisch sichere Anfragen: Anfragen, die syntaktischenEinschränkungen unterliegen, um die semantischeSicherheit zu erzwingen.
• Grundidee:Syntaktische SicherheitJede freie Variable xi muss überall in ϕ(x1, . . . ) durchpositives Auftreten xi = t oder R(. . . , xi, . . . ) an endlicheBereiche gebunden werden.
• Bindung an endliche Bereiche muss für die ganzeBedingung gelten, also insbesondere für alle Zweige einerDisjunktion
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–56
Sichere Anfragen im Überblick
syntaktisch sichere Anfragen
sichere Anfragen
Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–57
Beispiele für Bereichskalkül
Beispiele Bereichskalkül
• Anfrage: „Alle Weingüter von Erzeugern in Hessen.“
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
• Vereinfachte Notation: Ansonsten ungebundene Variablen(hier y und z) im Bedingungsteil existentiell mit ∃gebunden
• Vollständige Version:
x | ∃y∃zERZEUGER(x, y, z) ∧ z = ’Hessen’
• Einsparung von Bereichsvariablen, indem Konstanten alsParameter des Prädikats eingesetzt werden:
x | ERZEUGER(x, y, ’Hessen’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–58
Beispiele Bereichskalkül
• Anfrage: „Alle Weingüter von Erzeugern in Hessen.“
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
• Vereinfachte Notation: Ansonsten ungebundene Variablen(hier y und z) im Bedingungsteil existentiell mit ∃gebunden
• Vollständige Version:
x | ∃y∃zERZEUGER(x, y, z) ∧ z = ’Hessen’
• Einsparung von Bereichsvariablen, indem Konstanten alsParameter des Prädikats eingesetzt werden:
x | ERZEUGER(x, y, ’Hessen’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–58
Beispiele Bereichskalkül
• Anfrage: „Alle Weingüter von Erzeugern in Hessen.“
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
• Vereinfachte Notation: Ansonsten ungebundene Variablen(hier y und z) im Bedingungsteil existentiell mit ∃gebunden
• Vollständige Version:
x | ∃y∃zERZEUGER(x, y, z) ∧ z = ’Hessen’
• Einsparung von Bereichsvariablen, indem Konstanten alsParameter des Prädikats eingesetzt werden:
x | ERZEUGER(x, y, ’Hessen’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–58
Beispiele Bereichskalkül
• Anfrage: „Alle Weingüter von Erzeugern in Hessen.“
x | ERZEUGER(x, y, z) ∧ z = ’Hessen’
• Vereinfachte Notation: Ansonsten ungebundene Variablen(hier y und z) im Bedingungsteil existentiell mit ∃gebunden
• Vollständige Version:
x | ∃y∃zERZEUGER(x, y, z) ∧ z = ’Hessen’
• Einsparung von Bereichsvariablen, indem Konstanten alsParameter des Prädikats eingesetzt werden:
x | ERZEUGER(x, y, ’Hessen’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–58
Beispiele Bereichskalkül /2
• Abkürzung für beliebige, unterschiedliche existentiellgebundene Variablen ist _ Symbol:
x | ERZEUGER(x, _, z) ∧ z = ’Hessen’
• Verschiedene Auftreten des Symbols _ stehen hierbei fürpaarweise verschiedene Variablen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–59
Beispiele Bereichskalkül /3
• Anfrage: „Regionen mit mehr als zwei Weingütern.“
z | ERZEUGER(x, y, z) ∧ ERZEUGER(x′, y′, z) ∧ x = x′
• Anfrage zeigt eine Verbundbildung über das dritte Attributder ERZEUGER-Relation
• Verbundbildung kann einfach durch die Verwendung derselben Bereichsvariablen als Parameter in verschiedenenRelationsprädikaten erfolgen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–60
Beispiele Bereichskalkül /3
• Anfrage: „Regionen mit mehr als zwei Weingütern.“
z | ERZEUGER(x, y, z) ∧ ERZEUGER(x′, y′, z) ∧ x = x′
• Anfrage zeigt eine Verbundbildung über das dritte Attributder ERZEUGER-Relation
• Verbundbildung kann einfach durch die Verwendung derselben Bereichsvariablen als Parameter in verschiedenenRelationsprädikaten erfolgen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–60
Beispiele Bereichskalkül /3
• Anfrage: „Regionen mit mehr als zwei Weingütern.“
z | ERZEUGER(x, y, z) ∧ ERZEUGER(x′, y′, z) ∧ x = x′
• Anfrage zeigt eine Verbundbildung über das dritte Attributder ERZEUGER-Relation
• Verbundbildung kann einfach durch die Verwendung derselben Bereichsvariablen als Parameter in verschiedenenRelationsprädikaten erfolgen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–60
Beispiele Bereichskalkül /4
• Anfrage: „Aus welcher Region sind welche Weine mitJahrgang vor 1970 im Angebot?“
y, r | WEINE(x, y, z, j,w) ∧ ERZEUGER(w,a, r) ∧ j < 1970
• Verbund über zwei Relationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–61
Beispiele Bereichskalkül /4
• Anfrage: „Aus welcher Region sind welche Weine mitJahrgang vor 1970 im Angebot?“
y, r | WEINE(x, y, z, j,w) ∧ ERZEUGER(w,a, r) ∧ j < 1970
• Verbund über zwei Relationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–61
Beispiele Bereichskalkül /5
• Anfrage: „Aus welchen Regionen gibt es Rotweine?“
z | ERZEUGER(x, y, z)∧∃a∃b∃c∃d(WEIN(a,b, c,d, x)∧c = ’Rot’)
• Einsatz einer existentiell gebundenen Unteranfrage• derartige Unteranfragen können aufgrund der Regeln derPrädikatenlogik wie folgt aufgelöst werden:
z | ERZEUGER(x, y, z) ∧ (WEIN(a,b, c,d, x) ∧ c = ’Rot’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–62
Beispiele Bereichskalkül /5
• Anfrage: „Aus welchen Regionen gibt es Rotweine?“
z | ERZEUGER(x, y, z)∧∃a∃b∃c∃d(WEIN(a,b, c,d, x)∧c = ’Rot’)
• Einsatz einer existentiell gebundenen Unteranfrage
• derartige Unteranfragen können aufgrund der Regeln derPrädikatenlogik wie folgt aufgelöst werden:
z | ERZEUGER(x, y, z) ∧ (WEIN(a,b, c,d, x) ∧ c = ’Rot’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–62
Beispiele Bereichskalkül /5
• Anfrage: „Aus welchen Regionen gibt es Rotweine?“
z | ERZEUGER(x, y, z)∧∃a∃b∃c∃d(WEIN(a,b, c,d, x)∧c = ’Rot’)
• Einsatz einer existentiell gebundenen Unteranfrage• derartige Unteranfragen können aufgrund der Regeln derPrädikatenlogik wie folgt aufgelöst werden:
z | ERZEUGER(x, y, z) ∧ (WEIN(a,b, c,d, x) ∧ c = ’Rot’)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–62
Beispiele Bereichskalkül /6
• Anfrage: „Welches Weingut hat nur Weine mit Jahrgangnach 1995 im Angebot?“
x | ERZEUGER(x, y, z) ∧ ∀a∀b∀c∀d(WEIN(a,b, c,d, x) =⇒ d > 1995)
• universell gebundene Teilformeln können nicht aufgelöstwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–63
Beispiele Bereichskalkül /6
• Anfrage: „Welches Weingut hat nur Weine mit Jahrgangnach 1995 im Angebot?“
x | ERZEUGER(x, y, z) ∧ ∀a∀b∀c∀d(WEIN(a,b, c,d, x) =⇒ d > 1995)
• universell gebundene Teilformeln können nicht aufgelöstwerden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–63
Eigenschaften des Bereichskalküls
Ausdrucksfähigkeit Bereichskalkül
Ausdrucksfähigkeit des BereichskalkülsBereichskalkül ist streng relational vollständig, d.h. zu jedemTerm τ der Relationenalgebra gibt es einen äquivalenten(sicheren) Ausdruck η des Bereichskalküls.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–64
Umsetzung von Relationenoperationen
Geg.: Relationenschemata R(A1, . . . ,An) und S(B1, . . . ,Bm)
• Vereinigung (für n = m)
R ∪ S = x1 . . . xn | R(x1, . . . , xn) ∨ S(x1, . . . , xn)
• Differenz (für n = m)
R− S = x1 . . . xn | R(x1, . . . , xn) ∧ ¬S(x1, . . . , xn)
• Natürlicher Verbund
R ⋊⋉ S = x1 . . . xnxn+1 . . . xn+m−i | R(x1, . . . , xn) ∧S(x1, . . . , xi, xn+1, . . . , xn+m−i)
Annahme: die ersten i Attribute von R und S sind dieVerbundattribute, also Aj = Bj für j = 1 . . . i
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–65
Umsetzung von Relationenoperationen
Geg.: Relationenschemata R(A1, . . . ,An) und S(B1, . . . ,Bm)
• Vereinigung (für n = m)
R ∪ S = x1 . . . xn | R(x1, . . . , xn) ∨ S(x1, . . . , xn)
• Differenz (für n = m)
R− S = x1 . . . xn | R(x1, . . . , xn) ∧ ¬S(x1, . . . , xn)
• Natürlicher Verbund
R ⋊⋉ S = x1 . . . xnxn+1 . . . xn+m−i | R(x1, . . . , xn) ∧S(x1, . . . , xi, xn+1, . . . , xn+m−i)
Annahme: die ersten i Attribute von R und S sind dieVerbundattribute, also Aj = Bj für j = 1 . . . i
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–65
Umsetzung von Relationenoperationen
Geg.: Relationenschemata R(A1, . . . ,An) und S(B1, . . . ,Bm)
• Vereinigung (für n = m)
R ∪ S = x1 . . . xn | R(x1, . . . , xn) ∨ S(x1, . . . , xn)
• Differenz (für n = m)
R− S = x1 . . . xn | R(x1, . . . , xn) ∧ ¬S(x1, . . . , xn)
• Natürlicher Verbund
R ⋊⋉ S = x1 . . . xnxn+1 . . . xn+m−i | R(x1, . . . , xn) ∧S(x1, . . . , xi, xn+1, . . . , xn+m−i)
Annahme: die ersten i Attribute von R und S sind dieVerbundattribute, also Aj = Bj für j = 1 . . . i
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–65
Umsetzung von Relationenoperationen /2
• Projektion
πA(R) = y1 . . . yk | ∃x1 . . . ∃xn(R(x1, . . . , xn) ∧ y1 = xi1∧ · · · ∧ yk = xik)
Attributliste der Projektion: A = (Ai1 , . . . ,Aik)
• Selektion
σϕ(R) = x1 . . . xn | R(x1, . . . , xn) ∧ ϕ′
ϕ′ wird aus ϕ gewonnen, indem Variable xi an Stelle derAttributnamen Ai eingesetzt werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–66
Umsetzung von Relationenoperationen /2
• Projektion
πA(R) = y1 . . . yk | ∃x1 . . . ∃xn(R(x1, . . . , xn) ∧ y1 = xi1∧ · · · ∧ yk = xik)
Attributliste der Projektion: A = (Ai1 , . . . ,Aik)• Selektion
σϕ(R) = x1 . . . xn | R(x1, . . . , xn) ∧ ϕ′
ϕ′ wird aus ϕ gewonnen, indem Variable xi an Stelle derAttributnamen Ai eingesetzt werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–66
Zusammenfassung
• formale Modelle für Anfragen in Datenbanksystemen• Relationenalgebra
• operationaler Ansatz• Anfrage als Schachtelung von Operatoren auf Relationen
• Anfragekalküle• logikbasierter Ansatz• Anfragen als abgeleitete Prädikate• im Buch: Abschnitte 4.2.3, 4.2.4 und 9.3
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–67
Kontrollfragen
• Welche Bedeutung haben Äquivalenz,Unabhängigkeit und Vollständigkeit in derRelationenalgebra?
• Wie lässt sich die Semantik vonerweiterten SQL-Operationen in derRelationenalgebra ausdrücken?
• Was unterscheidet Relationenalgebra undrelationale Anfragekalküle?
• Welche Rolle spielt die Sicherheit vonAnfragen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–68
Kontrollfragen
• Welche Bedeutung haben Äquivalenz,Unabhängigkeit und Vollständigkeit in derRelationenalgebra?
• Wie lässt sich die Semantik vonerweiterten SQL-Operationen in derRelationenalgebra ausdrücken?
• Was unterscheidet Relationenalgebra undrelationale Anfragekalküle?
• Welche Rolle spielt die Sicherheit vonAnfragen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–68
Kontrollfragen
• Welche Bedeutung haben Äquivalenz,Unabhängigkeit und Vollständigkeit in derRelationenalgebra?
• Wie lässt sich die Semantik vonerweiterten SQL-Operationen in derRelationenalgebra ausdrücken?
• Was unterscheidet Relationenalgebra undrelationale Anfragekalküle?
• Welche Rolle spielt die Sicherheit vonAnfragen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–68
Kontrollfragen
• Welche Bedeutung haben Äquivalenz,Unabhängigkeit und Vollständigkeit in derRelationenalgebra?
• Wie lässt sich die Semantik vonerweiterten SQL-Operationen in derRelationenalgebra ausdrücken?
• Was unterscheidet Relationenalgebra undrelationale Anfragekalküle?
• Welche Rolle spielt die Sicherheit vonAnfragen?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–68
Teil IX
Transaktionen, Integrität und Trigger
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Transaktionen, Integrität und Trigger
1. Grundbegriffe
2. Transaktionsbegriff
3. Transaktionen in SQL
4. Integritätsbedingungen in SQL
5. Trigger
6. Schemaevolution
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–1
Lernziele für heute …
• Verständnis des Transaktionskonzeptes inDatenbanken
• Verständnis der Grundlagen derIntegritätssicherung in Datenbanken
• Kenntnisse zur Formulierung undImplementierung vonIntegritätsbedingungen sowieSchemaänderungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–2
Lernziele für heute …
• Verständnis des Transaktionskonzeptes inDatenbanken
• Verständnis der Grundlagen derIntegritätssicherung in Datenbanken
• Kenntnisse zur Formulierung undImplementierung vonIntegritätsbedingungen sowieSchemaänderungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–2
Lernziele für heute …
• Verständnis des Transaktionskonzeptes inDatenbanken
• Verständnis der Grundlagen derIntegritätssicherung in Datenbanken
• Kenntnisse zur Formulierung undImplementierung vonIntegritätsbedingungen sowieSchemaänderungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–2
Grundbegriffe
Integrität
• Integritätsbedingung (engl. integrity constraint oderassertion): Bedingung für die „Zulässigkeit“ oder„Korrektheit“
• in Bezug auf Datenbanken:
• (einzelne) Datenbankzustände,• Zustandsübergänge vom alten in den neuenDatenbankzustand,
• langfristige Datenbankentwicklungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–3
Integrität
• Integritätsbedingung (engl. integrity constraint oderassertion): Bedingung für die „Zulässigkeit“ oder„Korrektheit“
• in Bezug auf Datenbanken:
• (einzelne) Datenbankzustände,• Zustandsübergänge vom alten in den neuenDatenbankzustand,
• langfristige Datenbankentwicklungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–3
Integrität
• Integritätsbedingung (engl. integrity constraint oderassertion): Bedingung für die „Zulässigkeit“ oder„Korrektheit“
• in Bezug auf Datenbanken:• (einzelne) Datenbankzustände,
• Zustandsübergänge vom alten in den neuenDatenbankzustand,
• langfristige Datenbankentwicklungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–3
Integrität
• Integritätsbedingung (engl. integrity constraint oderassertion): Bedingung für die „Zulässigkeit“ oder„Korrektheit“
• in Bezug auf Datenbanken:• (einzelne) Datenbankzustände,• Zustandsübergänge vom alten in den neuenDatenbankzustand,
• langfristige Datenbankentwicklungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–3
Integrität
• Integritätsbedingung (engl. integrity constraint oderassertion): Bedingung für die „Zulässigkeit“ oder„Korrektheit“
• in Bezug auf Datenbanken:• (einzelne) Datenbankzustände,• Zustandsübergänge vom alten in den neuenDatenbankzustand,
• langfristige Datenbankentwicklungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–3
Klassifikation von Integrität
Bedingungsklasse zeitlicher Kontextstatisch Datenbankzustanddynamisch transitional Zustandsübergang
temporal Zustandsfolge
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–4
Inhärente Integritätsbedingungen im RM
1. Typintegrität:
• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:
• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen
• Erlauben oder Verbieten von Nullwerten2. Schlüsselintegrität:
• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:
• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:
• Angabe eines Schlüssels für eine Relation3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:
• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Inhärente Integritätsbedingungen im RM
1. Typintegrität:• SQL erlaubt Angabe von Wertebereichen zu Attributen• Erlauben oder Verbieten von Nullwerten
2. Schlüsselintegrität:• Angabe eines Schlüssels für eine Relation
3. Referentielle Integrität:• die Angabe von Fremdschlüsseln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–5
Transaktionsbegriff
Beispielszenarien
• Platzreservierung für Flüge gleichzeitig aus vielenReisebüros→ Platz könnte mehrfach verkauft werden, wenn mehrereReisebüros den Platz als verfügbar identifizieren
• überschneidende Kontooperationen einer Bank• statistische Datenbankoperationen→ Ergebnisse sind verfälscht, wenn während derBerechnung Daten geändert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–6
Beispielszenarien
• Platzreservierung für Flüge gleichzeitig aus vielenReisebüros→ Platz könnte mehrfach verkauft werden, wenn mehrereReisebüros den Platz als verfügbar identifizieren
• überschneidende Kontooperationen einer Bank
• statistische Datenbankoperationen→ Ergebnisse sind verfälscht, wenn während derBerechnung Daten geändert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–6
Beispielszenarien
• Platzreservierung für Flüge gleichzeitig aus vielenReisebüros→ Platz könnte mehrfach verkauft werden, wenn mehrereReisebüros den Platz als verfügbar identifizieren
• überschneidende Kontooperationen einer Bank• statistische Datenbankoperationen→ Ergebnisse sind verfälscht, wenn während derBerechnung Daten geändert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–6
Transaktion
TransaktionEine Transaktion ist eine Folge von Operationen (Aktionen),die die Datenbank von einem konsistenten Zustand in einenkonsistenten, eventuell veränderten, Zustand überführt,wobei das ACID-Prinzip eingehalten werden muss.
• Aspekte:
• Semantische Integrität: Korrekter (konsistenter)DB-Zustand nach Ende der Transaktion
• Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriffmehrerer Benutzer auf dieselben Daten vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–7
Transaktion
TransaktionEine Transaktion ist eine Folge von Operationen (Aktionen),die die Datenbank von einem konsistenten Zustand in einenkonsistenten, eventuell veränderten, Zustand überführt,wobei das ACID-Prinzip eingehalten werden muss.
• Aspekte:
• Semantische Integrität: Korrekter (konsistenter)DB-Zustand nach Ende der Transaktion
• Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriffmehrerer Benutzer auf dieselben Daten vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–7
Transaktion
TransaktionEine Transaktion ist eine Folge von Operationen (Aktionen),die die Datenbank von einem konsistenten Zustand in einenkonsistenten, eventuell veränderten, Zustand überführt,wobei das ACID-Prinzip eingehalten werden muss.
• Aspekte:• Semantische Integrität: Korrekter (konsistenter)DB-Zustand nach Ende der Transaktion
• Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriffmehrerer Benutzer auf dieselben Daten vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–7
Transaktion
TransaktionEine Transaktion ist eine Folge von Operationen (Aktionen),die die Datenbank von einem konsistenten Zustand in einenkonsistenten, eventuell veränderten, Zustand überführt,wobei das ACID-Prinzip eingehalten werden muss.
• Aspekte:• Semantische Integrität: Korrekter (konsistenter)DB-Zustand nach Ende der Transaktion
• Ablaufintegrität: Fehler durch „gleichzeitigen“ Zugriffmehrerer Benutzer auf dieselben Daten vermeiden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–7
ACID-Eigenschaften
• Atomicity (Atomarität):Transaktion wird entweder ganz oder gar nicht ausgeführt
• Consistency (Konsistenz oder auch Integritätserhaltung):Datenbank ist vor Beginn und nach Beendigung einerTransaktion jeweils in einem konsistenten Zustand
• Isolation (Isolation):Nutzer, der mit einer Datenbank arbeitet, sollte denEindruck haben, dass er mit dieser Datenbank alleinearbeitet
• Durability (Dauerhaftigkeit / Persistenz):nach erfolgreichem Abschluss einer Transaktion muss dasErgebnis dieser Transaktion „dauerhaft“ in der Datenbankgespeichert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–8
ACID-Eigenschaften
• Atomicity (Atomarität):Transaktion wird entweder ganz oder gar nicht ausgeführt
• Consistency (Konsistenz oder auch Integritätserhaltung):Datenbank ist vor Beginn und nach Beendigung einerTransaktion jeweils in einem konsistenten Zustand
• Isolation (Isolation):Nutzer, der mit einer Datenbank arbeitet, sollte denEindruck haben, dass er mit dieser Datenbank alleinearbeitet
• Durability (Dauerhaftigkeit / Persistenz):nach erfolgreichem Abschluss einer Transaktion muss dasErgebnis dieser Transaktion „dauerhaft“ in der Datenbankgespeichert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–8
ACID-Eigenschaften
• Atomicity (Atomarität):Transaktion wird entweder ganz oder gar nicht ausgeführt
• Consistency (Konsistenz oder auch Integritätserhaltung):Datenbank ist vor Beginn und nach Beendigung einerTransaktion jeweils in einem konsistenten Zustand
• Isolation (Isolation):Nutzer, der mit einer Datenbank arbeitet, sollte denEindruck haben, dass er mit dieser Datenbank alleinearbeitet
• Durability (Dauerhaftigkeit / Persistenz):nach erfolgreichem Abschluss einer Transaktion muss dasErgebnis dieser Transaktion „dauerhaft“ in der Datenbankgespeichert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–8
ACID-Eigenschaften
• Atomicity (Atomarität):Transaktion wird entweder ganz oder gar nicht ausgeführt
• Consistency (Konsistenz oder auch Integritätserhaltung):Datenbank ist vor Beginn und nach Beendigung einerTransaktion jeweils in einem konsistenten Zustand
• Isolation (Isolation):Nutzer, der mit einer Datenbank arbeitet, sollte denEindruck haben, dass er mit dieser Datenbank alleinearbeitet
• Durability (Dauerhaftigkeit / Persistenz):nach erfolgreichem Abschluss einer Transaktion muss dasErgebnis dieser Transaktion „dauerhaft“ in der Datenbankgespeichert werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–8
Kommandos einer Transaktionssprache
• Beginn einer Transaktion:Begin-of-Transaction-Kommando BOT (in SQL implizit!)
• commit: die Transaktion soll erfolgreich beendet werden• abort: die Transaktion soll abgebrochen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–9
Kommandos einer Transaktionssprache
• Beginn einer Transaktion:Begin-of-Transaction-Kommando BOT (in SQL implizit!)
• commit: die Transaktion soll erfolgreich beendet werden
• abort: die Transaktion soll abgebrochen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–9
Kommandos einer Transaktionssprache
• Beginn einer Transaktion:Begin-of-Transaction-Kommando BOT (in SQL implizit!)
• commit: die Transaktion soll erfolgreich beendet werden• abort: die Transaktion soll abgebrochen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–9
Transaktion: Integritätsverletzung
• Beispiel:
• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte Notation
Transfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Integritätsverletzung
• Beispiel:• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte Notation
Transfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Integritätsverletzung
• Beispiel:• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte Notation
Transfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Integritätsverletzung
• Beispiel:• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte Notation
Transfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Integritätsverletzung
• Beispiel:• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte NotationTransfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Integritätsverletzung
• Beispiel:• Übertragung eines Betrages B von einem HaushaltspostenK1 auf einen anderen Posten K2
• Bedingung: Summe der Kontostände der Haushaltspostenbleibt konstant
• vereinfachte NotationTransfer = < K1:=K1-B; K2:=K2+B >;
• Realisierung in SQL: als Sequenz zweier elementarerÄnderungen Bedingung ist zwischen den einzelnenÄnderungsschritten nicht unbedingt erfüllt!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–10
Transaktion: Verhalten bei Systemabsturz
1T
2T
3T
4T
5T
tZeit
Fehler
f
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–11
Transaktion: Verhalten bei Systemabsturz /2
• Folgen:
• Inhalt des flüchtigen Speichers zum Zeitpunkt tf istunbrauchbar→ Transaktionen in unterschiedlicher Weisedavon betroffen
• Transaktionszustände:
• zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4)• bereits vor dem Fehlerzeitpunkt beendete Transaktionen(T1, T3 und T5)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–12
Transaktion: Verhalten bei Systemabsturz /2
• Folgen:• Inhalt des flüchtigen Speichers zum Zeitpunkt tf istunbrauchbar→ Transaktionen in unterschiedlicher Weisedavon betroffen
• Transaktionszustände:
• zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4)• bereits vor dem Fehlerzeitpunkt beendete Transaktionen(T1, T3 und T5)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–12
Transaktion: Verhalten bei Systemabsturz /2
• Folgen:• Inhalt des flüchtigen Speichers zum Zeitpunkt tf istunbrauchbar→ Transaktionen in unterschiedlicher Weisedavon betroffen
• Transaktionszustände:
• zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4)• bereits vor dem Fehlerzeitpunkt beendete Transaktionen(T1, T3 und T5)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–12
Transaktion: Verhalten bei Systemabsturz /2
• Folgen:• Inhalt des flüchtigen Speichers zum Zeitpunkt tf istunbrauchbar→ Transaktionen in unterschiedlicher Weisedavon betroffen
• Transaktionszustände:• zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4)
• bereits vor dem Fehlerzeitpunkt beendete Transaktionen(T1, T3 und T5)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–12
Transaktion: Verhalten bei Systemabsturz /2
• Folgen:• Inhalt des flüchtigen Speichers zum Zeitpunkt tf istunbrauchbar→ Transaktionen in unterschiedlicher Weisedavon betroffen
• Transaktionszustände:• zum Fehlerzeitpunkt noch aktive Transaktionen (T2 und T4)• bereits vor dem Fehlerzeitpunkt beendete Transaktionen(T1, T3 und T5)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–12
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:
• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:
• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:
• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:
• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:
• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:• seriell, etwa T1 vor T2
• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Vereinfachtes Modell für Transaktion
• Repräsentation von Datenbankänderungen einerTransaktion
• read(A,x): weise den Wert des DB-Objektes A der Variablenx zu
• write(x, A): speichere den Wert der Variablen x imDB-Objekt A
• Beispiel einer Transaktion T:
read(A, x); x := x− 200; write(x, A);read(B, y); y := y+ 100; write(y, B);
• Ausführungsvarianten für zwei Transaktionen T1, T2:• seriell, etwa T1 vor T2• „gemischt“, etwa abwechselnd Schritte von T1 und T2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–13
Probleme im Mehrbenutzerbetrieb
• Inkonsistentes Lesen: Nonrepeatable Read• Abhängigkeiten von nicht freigegebenen Daten: Dirty Read• Das Phantom-Problem• Verlorengegangenes Ändern: Lost Update
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–14
Nonrepeatable Read
Beispiel:
• Zusicherung x = A+ B+ C am Ende der Transaktion T1• x, y, z seien lokale Variablen• Ti ist die Transaktion i• Integritätsbedingung A+ B+ C = 0
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–15
Beispiel für inkonsistentes Lesen
T1 T2read(A, x);
read(A, y);y := y/2;write(y,A);read(C, z);z := z+ y;write(z, C);commit;
read(B, y);x := x+ y;read(C, z);x := x+ z;commit;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–16
Dirty Read
T1 T2read(A, x);x := x+ 100;write(x,A);
read(A, x);read(B, y);y := y+ x;write(y,B);commit;
abort;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–17
Das Phantom-Problem
T1 T2select count (*)into Xfrom Kunde;
insertinto Kundevalues (’Meier’, 0, …);commit;
update Kundeset Bonus =
Bonus +10000/X;commit;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–18
Lost Update
T1 T2 Aread(A, x); 10
read(A, x); 10x := x+ 1; 10
x := x+ 1; 10write(x,A); 11
write(x,A); 11
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–19
Serialisierbarkeit
SerialisierbarkeitEine verschränkte Ausführung mehrerer Transaktionen heißtserialisierbar, wenn ihr Effekt identisch zum Effekt einer(beliebig gewählten) seriellen Ausführung dieserTransaktionen ist.
• Schedule: „Ablaufplan“ für Transaktion, bestehend ausAbfolge von Transaktionsoperationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–20
Serialisierbarkeit
SerialisierbarkeitEine verschränkte Ausführung mehrerer Transaktionen heißtserialisierbar, wenn ihr Effekt identisch zum Effekt einer(beliebig gewählten) seriellen Ausführung dieserTransaktionen ist.
• Schedule: „Ablaufplan“ für Transaktion, bestehend ausAbfolge von Transaktionsoperationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–20
Transaktionen in SQL
Transaktionen in SQL-DBS
Aufweichung von ACID in SQL: Isolationsebenen
set transaction[ read only | read write , ][isolation level
read uncommitted |read committed |repeatable read |serializable , ]
[ diagnostics size …]
Standardeinstellung:
set transaction read write,isolation level serializable
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–21
Transaktionen in SQL-DBS
Aufweichung von ACID in SQL: Isolationsebenen
set transaction[ read only | read write , ][isolation level
read uncommitted |read committed |repeatable read |serializable , ]
[ diagnostics size …]
Standardeinstellung:
set transaction read write,isolation level serializable
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–21
Bedeutung der Isolationsebenen
• read uncommitted
• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed
• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed
• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed
• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed
• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed
• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read
• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable
• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Bedeutung der Isolationsebenen
• read uncommitted• schwächste Stufe: Zugriff auf nicht geschriebene Daten,nur für read only Transaktionen
• statistische und ähnliche Transaktionen (ungefährerÜberblick, nicht korrekte Werte)
• keine Sperren→ effizient ausführbar, keine anderenTransaktionen werden behindert
• read committed• nur Lesen endgültig geschriebener Werte, abernonrepeatable read möglich
• repeatable read• kein nonrepeatable read, aber Phantomproblem kannauftreten
• serializable• garantierte Serialisierbarkeit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–22
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit5 select Name from WEINE where
WeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit5 select Name from WEINE where
WeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit5 select Name from WEINE where
WeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit5 select Name from WEINE where
WeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit
5 select Name from WEINE whereWeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
Isolationsebenen: read committed
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014−→ Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
3 select Name from WEINE whereWeinID = 1014−→ Riesling
4 commit5 select Name from WEINE where
WeinID = 1014−→ Riesling Superiore
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–23
read committed /2
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014
2 update WEINEset Name = 'Riesling Superore'where WeinID = 1014
3 update WEINEset Name = 'Superiore Riesling'where WeinID = 1014−→ blockiert
4 commit5 commit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–24
read committed /2
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014
2 update WEINEset Name = 'Riesling Superore'where WeinID = 1014
3 update WEINEset Name = 'Superiore Riesling'where WeinID = 1014−→ blockiert
4 commit5 commit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–24
read committed /2
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014
2 update WEINEset Name = 'Riesling Superore'where WeinID = 1014
3 update WEINEset Name = 'Superiore Riesling'where WeinID = 1014−→ blockiert
4 commit5 commit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–24
read committed /2
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014
2 update WEINEset Name = 'Riesling Superore'where WeinID = 1014
3 update WEINEset Name = 'Superiore Riesling'where WeinID = 1014−→ blockiert
4 commit5 commit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–24
read committed /2
T1 T2set transaction
isolation levelread committed
1 select Name from WEINE whereWeinID = 1014
2 update WEINEset Name = 'Riesling Superore'where WeinID = 1014
3 update WEINEset Name = 'Superiore Riesling'where WeinID = 1014−→ blockiert
4 commit5 commit
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–24
Isolationsebenen: serializable
T1 T2set transaction
isolation levelserializable
1 select Name into N fromWEINE where WeinID = 1014
−→ N := Riesling2 update WEINE
set Name = 'Riesling Superiore'where WeinID = 1014
4 commit5 update WEINE
set Name = 'Superior' || Nwhere WeinID = 1014−→ Abbruch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–25
Isolationsebenen: serializable
T1 T2set transaction
isolation levelserializable
1 select Name into N fromWEINE where WeinID = 1014
−→ N := Riesling
2 update WEINEset Name = 'Riesling Superiore'where WeinID = 1014
4 commit5 update WEINE
set Name = 'Superior' || Nwhere WeinID = 1014−→ Abbruch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–25
Isolationsebenen: serializable
T1 T2set transaction
isolation levelserializable
1 select Name into N fromWEINE where WeinID = 1014
−→ N := Riesling2 update WEINE
set Name = 'Riesling Superiore'where WeinID = 1014
4 commit5 update WEINE
set Name = 'Superior' || Nwhere WeinID = 1014−→ Abbruch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–25
Isolationsebenen: serializable
T1 T2set transaction
isolation levelserializable
1 select Name into N fromWEINE where WeinID = 1014
−→ N := Riesling2 update WEINE
set Name = 'Riesling Superiore'where WeinID = 1014
4 commit
5 update WEINEset Name = 'Superior' || Nwhere WeinID = 1014−→ Abbruch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–25
Isolationsebenen: serializable
T1 T2set transaction
isolation levelserializable
1 select Name into N fromWEINE where WeinID = 1014
−→ N := Riesling2 update WEINE
set Name = 'Riesling Superiore'where WeinID = 1014
4 commit5 update WEINE
set Name = 'Superior' || Nwhere WeinID = 1014−→ Abbruch
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–25
Integritätsbedingungen in SQL
Integritätsbedingungen in SQL-DDL
• not null: Nullwerte verboten
• default: Angabe von Default-Werten• check ( search-condition ): Attributspezifische Bedingung(in der Regel Ein-Tupel-Integritätsbedingung)
• primary key: Angabe eines Primärschlüssel• foreign key ( Attribut(e) )references Tabelle( Attribut(e) ):Angabe der referentiellen Integrität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–26
Integritätsbedingungen in SQL-DDL
• not null: Nullwerte verboten• default: Angabe von Default-Werten
• check ( search-condition ): Attributspezifische Bedingung(in der Regel Ein-Tupel-Integritätsbedingung)
• primary key: Angabe eines Primärschlüssel• foreign key ( Attribut(e) )references Tabelle( Attribut(e) ):Angabe der referentiellen Integrität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–26
Integritätsbedingungen in SQL-DDL
• not null: Nullwerte verboten• default: Angabe von Default-Werten• check ( search-condition ): Attributspezifische Bedingung(in der Regel Ein-Tupel-Integritätsbedingung)
• primary key: Angabe eines Primärschlüssel• foreign key ( Attribut(e) )references Tabelle( Attribut(e) ):Angabe der referentiellen Integrität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–26
Integritätsbedingungen in SQL-DDL
• not null: Nullwerte verboten• default: Angabe von Default-Werten• check ( search-condition ): Attributspezifische Bedingung(in der Regel Ein-Tupel-Integritätsbedingung)
• primary key: Angabe eines Primärschlüssel
• foreign key ( Attribut(e) )references Tabelle( Attribut(e) ):Angabe der referentiellen Integrität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–26
Integritätsbedingungen in SQL-DDL
• not null: Nullwerte verboten• default: Angabe von Default-Werten• check ( search-condition ): Attributspezifische Bedingung(in der Regel Ein-Tupel-Integritätsbedingung)
• primary key: Angabe eines Primärschlüssel• foreign key ( Attribut(e) )references Tabelle( Attribut(e) ):Angabe der referentiellen Integrität
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–26
Integritätsbedingungen: Wertebereiche
• create domain: Festlegung eines benutzerdefiniertenWertebereichs
• Beispiel
create domain WeinFarbe varchar(4)default 'Rot'check (value in ('Rot', 'Weiß', 'Rose'))
• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Farbe WeinFarbe, …)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–27
Integritätsbedingungen: Wertebereiche
• create domain: Festlegung eines benutzerdefiniertenWertebereichs
• Beispiel
create domain WeinFarbe varchar(4)default 'Rot'check (value in ('Rot', 'Weiß', 'Rose'))
• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Farbe WeinFarbe, …)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–27
Integritätsbedingungen: Wertebereiche
• create domain: Festlegung eines benutzerdefiniertenWertebereichs
• Beispiel
create domain WeinFarbe varchar(4)default 'Rot'check (value in ('Rot', 'Weiß', 'Rose'))
• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Farbe WeinFarbe, …)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–27
Integritätsbedingungen: check-Klausel
• check: Festlegung weitere lokale Integritätsbedingungeninnerhalb der zu definierenden Wertebereiche, Attributeund Relationenschemata
• Beispiel: Einschränkung der zulässigen Werte• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Jahr int check(Jahr between 1980 and 2010),…
)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–28
Integritätsbedingungen: check-Klausel
• check: Festlegung weitere lokale Integritätsbedingungeninnerhalb der zu definierenden Wertebereiche, Attributeund Relationenschemata
• Beispiel: Einschränkung der zulässigen Werte
• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Jahr int check(Jahr between 1980 and 2010),…
)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–28
Integritätsbedingungen: check-Klausel
• check: Festlegung weitere lokale Integritätsbedingungeninnerhalb der zu definierenden Wertebereiche, Attributeund Relationenschemata
• Beispiel: Einschränkung der zulässigen Werte• Anwendung
create table WEINE (WeinID int primary key,Name varchar(20) not null,Jahr int check(Jahr between 1980 and 2010),…
)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–28
Erhaltung der referentiellen Integrität
• Überprüfung der Fremdschlüsselbedingungen nachDatenbankänderungen
• für πA(r1) ⊆ πK(r2),z.B. πWeingut(WEINE) ⊆ πWeingut(ERZEUGER)
• Tupel t wird eingefügt in r1 ⇒ überprüfen, ob t′ ∈ r2existiert mit: t′(K) = t(A), d.h. t(A) ∈ πK(r2)falls nicht⇒ abweisen
• Tupel t′ wird aus r2 gelöscht⇒ überprüfen, obσA=t′(K)(r1) = , d.h. kein Tupel aus r1 referenziert t′falls nicht leer⇒ abweisen oder Tupel aus r1, die t′referenzieren, löschen (bei kaskadierendem Löschen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–29
Erhaltung der referentiellen Integrität
• Überprüfung der Fremdschlüsselbedingungen nachDatenbankänderungen
• für πA(r1) ⊆ πK(r2),z.B. πWeingut(WEINE) ⊆ πWeingut(ERZEUGER)
• Tupel t wird eingefügt in r1 ⇒ überprüfen, ob t′ ∈ r2existiert mit: t′(K) = t(A), d.h. t(A) ∈ πK(r2)falls nicht⇒ abweisen
• Tupel t′ wird aus r2 gelöscht⇒ überprüfen, obσA=t′(K)(r1) = , d.h. kein Tupel aus r1 referenziert t′falls nicht leer⇒ abweisen oder Tupel aus r1, die t′referenzieren, löschen (bei kaskadierendem Löschen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–29
Erhaltung der referentiellen Integrität
• Überprüfung der Fremdschlüsselbedingungen nachDatenbankänderungen
• für πA(r1) ⊆ πK(r2),z.B. πWeingut(WEINE) ⊆ πWeingut(ERZEUGER)
• Tupel t wird eingefügt in r1 ⇒ überprüfen, ob t′ ∈ r2existiert mit: t′(K) = t(A), d.h. t(A) ∈ πK(r2)falls nicht⇒ abweisen
• Tupel t′ wird aus r2 gelöscht⇒ überprüfen, obσA=t′(K)(r1) = , d.h. kein Tupel aus r1 referenziert t′falls nicht leer⇒ abweisen oder Tupel aus r1, die t′referenzieren, löschen (bei kaskadierendem Löschen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–29
Erhaltung der referentiellen Integrität
• Überprüfung der Fremdschlüsselbedingungen nachDatenbankänderungen
• für πA(r1) ⊆ πK(r2),z.B. πWeingut(WEINE) ⊆ πWeingut(ERZEUGER)
• Tupel t wird eingefügt in r1 ⇒ überprüfen, ob t′ ∈ r2existiert mit: t′(K) = t(A), d.h. t(A) ∈ πK(r2)falls nicht⇒ abweisen
• Tupel t′ wird aus r2 gelöscht⇒ überprüfen, obσA=t′(K)(r1) = , d.h. kein Tupel aus r1 referenziert t′falls nicht leer⇒ abweisen oder Tupel aus r1, die t′referenzieren, löschen (bei kaskadierendem Löschen)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–29
Überprüfungsmodi von Bedingungen
• on update | deleteAngabe eines Auslöseereignisses, das die Überprüfungder Bedingung anstößt
• cascade | set null | set default | no actionKaskadierung: Behandlung einiger Integritätsverletzungenpflanzt sich über mehrere Stufen fort, z.B. Löschen alsReaktion auf Verletzung der referentieller Integrität
• deferred | immediate legt Überprüfungszeitpunkt füreine Bedingung fest
• deferred: Zurückstellen an das Ende der Transaktion• immediate: sofortige Prüfung bei jeder relevantenDatenbankänderung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–30
Überprüfungsmodi von Bedingungen
• on update | deleteAngabe eines Auslöseereignisses, das die Überprüfungder Bedingung anstößt
• cascade | set null | set default | no actionKaskadierung: Behandlung einiger Integritätsverletzungenpflanzt sich über mehrere Stufen fort, z.B. Löschen alsReaktion auf Verletzung der referentieller Integrität
• deferred | immediate legt Überprüfungszeitpunkt füreine Bedingung fest
• deferred: Zurückstellen an das Ende der Transaktion• immediate: sofortige Prüfung bei jeder relevantenDatenbankänderung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–30
Überprüfungsmodi von Bedingungen
• on update | deleteAngabe eines Auslöseereignisses, das die Überprüfungder Bedingung anstößt
• cascade | set null | set default | no actionKaskadierung: Behandlung einiger Integritätsverletzungenpflanzt sich über mehrere Stufen fort, z.B. Löschen alsReaktion auf Verletzung der referentieller Integrität
• deferred | immediate legt Überprüfungszeitpunkt füreine Bedingung fest
• deferred: Zurückstellen an das Ende der Transaktion• immediate: sofortige Prüfung bei jeder relevantenDatenbankänderung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–30
Überprüfungsmodi von Bedingungen
• on update | deleteAngabe eines Auslöseereignisses, das die Überprüfungder Bedingung anstößt
• cascade | set null | set default | no actionKaskadierung: Behandlung einiger Integritätsverletzungenpflanzt sich über mehrere Stufen fort, z.B. Löschen alsReaktion auf Verletzung der referentieller Integrität
• deferred | immediate legt Überprüfungszeitpunkt füreine Bedingung fest
• deferred: Zurückstellen an das Ende der Transaktion
• immediate: sofortige Prüfung bei jeder relevantenDatenbankänderung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–30
Überprüfungsmodi von Bedingungen
• on update | deleteAngabe eines Auslöseereignisses, das die Überprüfungder Bedingung anstößt
• cascade | set null | set default | no actionKaskadierung: Behandlung einiger Integritätsverletzungenpflanzt sich über mehrere Stufen fort, z.B. Löschen alsReaktion auf Verletzung der referentieller Integrität
• deferred | immediate legt Überprüfungszeitpunkt füreine Bedingung fest
• deferred: Zurückstellen an das Ende der Transaktion• immediate: sofortige Prüfung bei jeder relevantenDatenbankänderung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–30
Überprüfungsmodi: Beispiel
• Kaskadierendes Löschen
create table WEINE (WeinID int primary key,Name varchar(50) not null,Preis float not null,Jahr int not null,Weingut varchar(30),foreign key (Weingut)
references ERZEUGER (Weingut)on delete cascade)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–31
Die assertion-Klausel
• Assertion: Prädikat, das eine Bedingung ausdrückt, die vonder Datenbank immer erfüllt sein muss
• Syntax (SQL:2003)
create assertion name check ( prädikat )
• Beispiele:
create assertion Preise check( ( select sum (Preis)
from WEINE) < 10000 );create assertion Preise2 check
( not exists (select * from WEINE where Preis > 200) )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–32
Die assertion-Klausel
• Assertion: Prädikat, das eine Bedingung ausdrückt, die vonder Datenbank immer erfüllt sein muss
• Syntax (SQL:2003)
create assertion name check ( prädikat )
• Beispiele:
create assertion Preise check( ( select sum (Preis)
from WEINE) < 10000 );create assertion Preise2 check
( not exists (select * from WEINE where Preis > 200) )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–32
Die assertion-Klausel
• Assertion: Prädikat, das eine Bedingung ausdrückt, die vonder Datenbank immer erfüllt sein muss
• Syntax (SQL:2003)
create assertion name check ( prädikat )
• Beispiele:
create assertion Preise check( ( select sum (Preis)
from WEINE) < 10000 );create assertion Preise2 check
( not exists (select * from WEINE where Preis > 200) )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–32
Trigger
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:
• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen• Propagierung von DB-Änderungen
• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:
• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen• Propagierung von DB-Änderungen
• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen• Propagierung von DB-Änderungen
• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen
• Propagierung von DB-Änderungen• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen• Propagierung von DB-Änderungen
• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Trigger
• Trigger: Anweisung/Prozedur, die bei Eintreten einesbestimmten Ereignisses automatisch vom DBMSausgeführt wird
• Anwendung:• Erzwingen von Integritätsbedingungen („Implementierung“von Integritätsregeln)
• Auditing von DB-Aktionen• Propagierung von DB-Änderungen
• Definition:create trigger …after OperationAnweisungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–33
Beispiel für Trigger
• Realisierung eines berechneten Attributs durch zweiTrigger:
• Einfügen von neuen Aufträgen
create trigger Auftragszählung+on insertion of Auftrag A:update Kundeset AnzAufträge = AnzAufträge + 1where KName = new A.KName
• analog für Löschen von Aufträgen:
create trigger Auftragszählung-on deletion …:update …- 1 …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–34
Beispiel für Trigger
• Realisierung eines berechneten Attributs durch zweiTrigger:
• Einfügen von neuen Aufträgen
create trigger Auftragszählung+on insertion of Auftrag A:update Kundeset AnzAufträge = AnzAufträge + 1where KName = new A.KName
• analog für Löschen von Aufträgen:
create trigger Auftragszählung-on deletion …:update …- 1 …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–34
Beispiel für Trigger
• Realisierung eines berechneten Attributs durch zweiTrigger:
• Einfügen von neuen Aufträgen
create trigger Auftragszählung+on insertion of Auftrag A:update Kundeset AnzAufträge = AnzAufträge + 1where KName = new A.KName
• analog für Löschen von Aufträgen:
create trigger Auftragszählung-on deletion …:update …- 1 …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–34
Trigger: Entwurf und Implementierung
• Spezifikation von
• Ereignis und Bedingung für Aktivierung des Triggers• Aktion(en) zur Ausführung
• Syntax in SQL:2003 festgelegt• verfügbar in den meisten kommerziellen Systemen (abermit anderer Syntax)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–35
Trigger: Entwurf und Implementierung
• Spezifikation von• Ereignis und Bedingung für Aktivierung des Triggers
• Aktion(en) zur Ausführung
• Syntax in SQL:2003 festgelegt• verfügbar in den meisten kommerziellen Systemen (abermit anderer Syntax)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–35
Trigger: Entwurf und Implementierung
• Spezifikation von• Ereignis und Bedingung für Aktivierung des Triggers• Aktion(en) zur Ausführung
• Syntax in SQL:2003 festgelegt• verfügbar in den meisten kommerziellen Systemen (abermit anderer Syntax)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–35
Trigger: Entwurf und Implementierung
• Spezifikation von• Ereignis und Bedingung für Aktivierung des Triggers• Aktion(en) zur Ausführung
• Syntax in SQL:2003 festgelegt
• verfügbar in den meisten kommerziellen Systemen (abermit anderer Syntax)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–35
Trigger: Entwurf und Implementierung
• Spezifikation von• Ereignis und Bedingung für Aktivierung des Triggers• Aktion(en) zur Ausführung
• Syntax in SQL:2003 festgelegt• verfügbar in den meisten kommerziellen Systemen (abermit anderer Syntax)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–35
SQL:2003-Trigger
• Syntax:
create trigger Nameafter | before Ereignison Relation[ when Bedingung ]
begin atomic SQL-Anweisungen end
• Ereignis:
• insert• update [ of Attributliste ]• delete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–36
SQL:2003-Trigger
• Syntax:
create trigger Nameafter | before Ereignison Relation[ when Bedingung ]
begin atomic SQL-Anweisungen end
• Ereignis:
• insert• update [ of Attributliste ]• delete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–36
SQL:2003-Trigger
• Syntax:
create trigger Nameafter | before Ereignison Relation[ when Bedingung ]
begin atomic SQL-Anweisungen end
• Ereignis:• insert
• update [ of Attributliste ]• delete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–36
SQL:2003-Trigger
• Syntax:
create trigger Nameafter | before Ereignison Relation[ when Bedingung ]
begin atomic SQL-Anweisungen end
• Ereignis:• insert• update [ of Attributliste ]
• delete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–36
SQL:2003-Trigger
• Syntax:
create trigger Nameafter | before Ereignison Relation[ when Bedingung ]
begin atomic SQL-Anweisungen end
• Ereignis:• insert• update [ of Attributliste ]• delete
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–36
Weitere Angaben bei Triggern
• for each row bzw. for each statement: Aktivierungdes Triggers für jede Einzeländerungen einermengenwertigen Änderung oder nur einmal für diegesamte Änderung
• before bzw. after: Aktivierung vor oder nach derÄnderung
• referencing new as bzw. referencing old as:Binden einer Tupelvariable an die neu eingefügten bzw.gerade gelöschten („alten“) Tupel einer Relation Tupel der Differenzrelationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–37
Weitere Angaben bei Triggern
• for each row bzw. for each statement: Aktivierungdes Triggers für jede Einzeländerungen einermengenwertigen Änderung oder nur einmal für diegesamte Änderung
• before bzw. after: Aktivierung vor oder nach derÄnderung
• referencing new as bzw. referencing old as:Binden einer Tupelvariable an die neu eingefügten bzw.gerade gelöschten („alten“) Tupel einer Relation Tupel der Differenzrelationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–37
Weitere Angaben bei Triggern
• for each row bzw. for each statement: Aktivierungdes Triggers für jede Einzeländerungen einermengenwertigen Änderung oder nur einmal für diegesamte Änderung
• before bzw. after: Aktivierung vor oder nach derÄnderung
• referencing new as bzw. referencing old as:Binden einer Tupelvariable an die neu eingefügten bzw.gerade gelöschten („alten“) Tupel einer Relation Tupel der Differenzrelationen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–37
Beispiel für Trigger
• Kein Kundenkonto darf unter 0 absinken:
create trigger bad_accountafter update of Kto on KUNDEreferencing new as INSERTEDwhen (exists
(select * from INSERTED where Kto < 0))begin atomic
rollback;end
ähnlicher Trigger für insert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–38
Beispiel für Trigger
• Kein Kundenkonto darf unter 0 absinken:
create trigger bad_accountafter update of Kto on KUNDEreferencing new as INSERTEDwhen (exists
(select * from INSERTED where Kto < 0))begin atomic
rollback;end
ähnlicher Trigger für insert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–38
Beispiel für Trigger
• Kein Kundenkonto darf unter 0 absinken:
create trigger bad_accountafter update of Kto on KUNDEreferencing new as INSERTEDwhen (exists
(select * from INSERTED where Kto < 0))begin atomic
rollback;end
ähnlicher Trigger für insert
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–38
Beispiel für Trigger /2
• Erzeuger müssen gelöscht werden, wenn sie keine Weinemehr anbieten:
create trigger unnützes_Weingutafter delete on WEINEreferencing old as Ofor each rowwhen (not exists
(select * from WEINE Wwhere W.Weingut = O.Weingut))
begin atomicdelete from ERZEUGER where Weingut = O.Weingut;
end
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–39
Beispiel für Trigger /2
• Erzeuger müssen gelöscht werden, wenn sie keine Weinemehr anbieten:
create trigger unnützes_Weingutafter delete on WEINEreferencing old as Ofor each rowwhen (not exists
(select * from WEINE Wwhere W.Weingut = O.Weingut))
begin atomicdelete from ERZEUGER where Weingut = O.Weingut;
end
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–39
Integritätssicherung durch Trigger
1. Bestimme Objekt oi, für das die Bedingung ϕ überwachtwerden soll
• i.d.R. mehrere oi betrachten, wenn Bedingungrelationsübergreifend ist
• Kandidaten für oi sind Tupel der Relationsnamen, die in ϕ
auftauchen2. Bestimme die elementaren Datenbankänderungen uij aufObjekten oi, die ϕ verletzen können
• Regeln: z.B. Existenzforderungen beim Löschen und Ändernprüfen, jedoch nicht beim Einfügen etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–40
Integritätssicherung durch Trigger
1. Bestimme Objekt oi, für das die Bedingung ϕ überwachtwerden soll
• i.d.R. mehrere oi betrachten, wenn Bedingungrelationsübergreifend ist
• Kandidaten für oi sind Tupel der Relationsnamen, die in ϕ
auftauchen2. Bestimme die elementaren Datenbankänderungen uij aufObjekten oi, die ϕ verletzen können
• Regeln: z.B. Existenzforderungen beim Löschen und Ändernprüfen, jedoch nicht beim Einfügen etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–40
Integritätssicherung durch Trigger
1. Bestimme Objekt oi, für das die Bedingung ϕ überwachtwerden soll
• i.d.R. mehrere oi betrachten, wenn Bedingungrelationsübergreifend ist
• Kandidaten für oi sind Tupel der Relationsnamen, die in ϕ
auftauchen
2. Bestimme die elementaren Datenbankänderungen uij aufObjekten oi, die ϕ verletzen können
• Regeln: z.B. Existenzforderungen beim Löschen und Ändernprüfen, jedoch nicht beim Einfügen etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–40
Integritätssicherung durch Trigger
1. Bestimme Objekt oi, für das die Bedingung ϕ überwachtwerden soll
• i.d.R. mehrere oi betrachten, wenn Bedingungrelationsübergreifend ist
• Kandidaten für oi sind Tupel der Relationsnamen, die in ϕ
auftauchen2. Bestimme die elementaren Datenbankänderungen uij aufObjekten oi, die ϕ verletzen können
• Regeln: z.B. Existenzforderungen beim Löschen und Ändernprüfen, jedoch nicht beim Einfügen etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–40
Integritätssicherung durch Trigger
1. Bestimme Objekt oi, für das die Bedingung ϕ überwachtwerden soll
• i.d.R. mehrere oi betrachten, wenn Bedingungrelationsübergreifend ist
• Kandidaten für oi sind Tupel der Relationsnamen, die in ϕ
auftauchen2. Bestimme die elementaren Datenbankänderungen uij aufObjekten oi, die ϕ verletzen können
• Regeln: z.B. Existenzforderungen beim Löschen und Ändernprüfen, jedoch nicht beim Einfügen etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–40
Integritätssicherung durch Trigger /2
3. Bestimme je nach Anwendung die Reaktion ri aufIntegritätsverletzung
• Rücksetzen der Transaktion (rollback)• korrigierende Datenbankänderungen
4. Formuliere folgende Trigger:
create trigger t-phi-ij after uij on oiwhen ¬ϕbegin ri end
5. Wenn möglich, vereinfache entstandenen Trigger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–41
Integritätssicherung durch Trigger /2
3. Bestimme je nach Anwendung die Reaktion ri aufIntegritätsverletzung
• Rücksetzen der Transaktion (rollback)
• korrigierende Datenbankänderungen
4. Formuliere folgende Trigger:
create trigger t-phi-ij after uij on oiwhen ¬ϕbegin ri end
5. Wenn möglich, vereinfache entstandenen Trigger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–41
Integritätssicherung durch Trigger /2
3. Bestimme je nach Anwendung die Reaktion ri aufIntegritätsverletzung
• Rücksetzen der Transaktion (rollback)• korrigierende Datenbankänderungen
4. Formuliere folgende Trigger:
create trigger t-phi-ij after uij on oiwhen ¬ϕbegin ri end
5. Wenn möglich, vereinfache entstandenen Trigger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–41
Integritätssicherung durch Trigger /2
3. Bestimme je nach Anwendung die Reaktion ri aufIntegritätsverletzung
• Rücksetzen der Transaktion (rollback)• korrigierende Datenbankänderungen
4. Formuliere folgende Trigger:
create trigger t-phi-ij after uij on oiwhen ¬ϕbegin ri end
5. Wenn möglich, vereinfache entstandenen Trigger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–41
Integritätssicherung durch Trigger /2
3. Bestimme je nach Anwendung die Reaktion ri aufIntegritätsverletzung
• Rücksetzen der Transaktion (rollback)• korrigierende Datenbankänderungen
4. Formuliere folgende Trigger:
create trigger t-phi-ij after uij on oiwhen ¬ϕbegin ri end
5. Wenn möglich, vereinfache entstandenen Trigger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–41
Trigger in Oracle
• Implementierung in PL/SQL• Notationcreate [ or replace ] trigger trigger-name
before | afterinsert or update [ of spalten ]
or delete on tabelle[ for each row[ when ( prädikat ) ] ]PL/SQL-Block
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–42
Trigger in Oracle: Arten
• Anweisungsebene (statement level trigger): Trigger wirdausgelöst vor bzw. nach der DML-Anweisung
• Tupelebene (row level trigger): Trigger wird vor bzw. nachjeder einzelnen Modifikation ausgelöst (one tuple at atime)
Trigger auf Tupelebene:
• Prädikat zur Einschränkung (when)• Zugriff auf altes (:old.col) bzw. neues (:new.col) Tupel
• für delete: nur (:old.col)• für insert: nur (:new.col)• in when-Klausel nur (new.col) bzw. (old.col)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–43
Trigger in Oracle /2
• Transaktionsabbruch durchraise_application_error(code, message)
• Unterscheidung der Art der DML-Anweisung
if deleting then ... end if;if updating then ... end if;if inserting then ... end if;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–44
Trigger in Oracle: Beispiel
• Kein Kundenkonto darf unter 0 absinken:
create or replace trigger bad_accountafter insert or update of Kto on KUNDEfor each rowwhen (:new.Kto < 0)begin
raise_application_error(-20221,'Nicht unter 0');
end;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–45
Schemaevolution
Schemaevolution und Datenbankmigration
• Änderung eines Datenbankschemas durchneue/veränderte Anforderungen
• Hinzufügen oder Löschen von Tabellen, Spalten,Integritätsbedingungen
• Umbenennen oder Datentypänderungen
• erfordert oft auch Anpassung/Übertragung dervorhandenen Datenbank Datenbankmigration
• leider nur eingeschränkte Unterstützung durchDB-Werkzeuge (DDL + Export/Import der Daten)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–46
Schemaevolution und Datenbankmigration
• Änderung eines Datenbankschemas durchneue/veränderte Anforderungen
• Hinzufügen oder Löschen von Tabellen, Spalten,Integritätsbedingungen
• Umbenennen oder Datentypänderungen
• erfordert oft auch Anpassung/Übertragung dervorhandenen Datenbank Datenbankmigration
• leider nur eingeschränkte Unterstützung durchDB-Werkzeuge (DDL + Export/Import der Daten)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–46
Schemaevolution und Datenbankmigration
• Änderung eines Datenbankschemas durchneue/veränderte Anforderungen
• Hinzufügen oder Löschen von Tabellen, Spalten,Integritätsbedingungen
• Umbenennen oder Datentypänderungen
• erfordert oft auch Anpassung/Übertragung dervorhandenen Datenbank Datenbankmigration
• leider nur eingeschränkte Unterstützung durchDB-Werkzeuge (DDL + Export/Import der Daten)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–46
Schemaevolution und Datenbankmigration
• Änderung eines Datenbankschemas durchneue/veränderte Anforderungen
• Hinzufügen oder Löschen von Tabellen, Spalten,Integritätsbedingungen
• Umbenennen oder Datentypänderungen
• erfordert oft auch Anpassung/Übertragung dervorhandenen Datenbank Datenbankmigration
• leider nur eingeschränkte Unterstützung durchDB-Werkzeuge (DDL + Export/Import der Daten)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–46
Schemaevolution und Datenbankmigration
• Änderung eines Datenbankschemas durchneue/veränderte Anforderungen
• Hinzufügen oder Löschen von Tabellen, Spalten,Integritätsbedingungen
• Umbenennen oder Datentypänderungen
• erfordert oft auch Anpassung/Übertragung dervorhandenen Datenbank Datenbankmigration
• leider nur eingeschränkte Unterstützung durchDB-Werkzeuge (DDL + Export/Import der Daten)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–46
SQL-DDL zum Löschen von Tabellen
• Löschen von Tabellendefinitionen(beachte Unterschied zu delete)
drop table relationenname [ restrict | cascade ]
• cascade: erzwingt Löschen aller Sichten undIntegritätsbedingungen, die zu dieser Basisrelationgehören
• restrict (Defaultfall): das drop-Kommando wirdzurückgewiesen, falls noch solche Sichten undIntegritätsbedingungen existieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–47
SQL-DDL zum Löschen von Tabellen
• Löschen von Tabellendefinitionen(beachte Unterschied zu delete)
drop table relationenname [ restrict | cascade ]
• cascade: erzwingt Löschen aller Sichten undIntegritätsbedingungen, die zu dieser Basisrelationgehören
• restrict (Defaultfall): das drop-Kommando wirdzurückgewiesen, falls noch solche Sichten undIntegritätsbedingungen existieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–47
SQL-DDL zum Löschen von Tabellen
• Löschen von Tabellendefinitionen(beachte Unterschied zu delete)
drop table relationenname [ restrict | cascade ]
• cascade: erzwingt Löschen aller Sichten undIntegritätsbedingungen, die zu dieser Basisrelationgehören
• restrict (Defaultfall): das drop-Kommando wirdzurückgewiesen, falls noch solche Sichten undIntegritätsbedingungen existieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–47
SQL-DDL zur Änderung von Tabellen
alter table relationenname modifikation
• add column spaltendefinition fügt eine neue Spaltehinzu; alle bereits in der Tabelle existierenden Tupelerhalten als Wert der neuen Spalte den angegebenenDefaultwert bzw. den null-Wert
• drop column spaltenname löscht die angegebene Spalte(inkl. restrict- bzw. cascade)
• alter column spaltenname set default defaultwertverändert Defaultwert der Spalte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–48
SQL-DDL zur Änderung von Tabellen
alter table relationenname modifikation
• add column spaltendefinition fügt eine neue Spaltehinzu; alle bereits in der Tabelle existierenden Tupelerhalten als Wert der neuen Spalte den angegebenenDefaultwert bzw. den null-Wert
• drop column spaltenname löscht die angegebene Spalte(inkl. restrict- bzw. cascade)
• alter column spaltenname set default defaultwertverändert Defaultwert der Spalte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–48
SQL-DDL zur Änderung von Tabellen
alter table relationenname modifikation
• add column spaltendefinition fügt eine neue Spaltehinzu; alle bereits in der Tabelle existierenden Tupelerhalten als Wert der neuen Spalte den angegebenenDefaultwert bzw. den null-Wert
• drop column spaltenname löscht die angegebene Spalte(inkl. restrict- bzw. cascade)
• alter column spaltenname set default defaultwertverändert Defaultwert der Spalte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–48
SQL-DDL zur Änderung von Tabellen
alter table relationenname modifikation
• add column spaltendefinition fügt eine neue Spaltehinzu; alle bereits in der Tabelle existierenden Tupelerhalten als Wert der neuen Spalte den angegebenenDefaultwert bzw. den null-Wert
• drop column spaltenname löscht die angegebene Spalte(inkl. restrict- bzw. cascade)
• alter column spaltenname set default defaultwertverändert Defaultwert der Spalte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–48
Änderung von Tabellen: Beispiele
alter table WEINEadd column Preis decimal(5,2)
alter table WEINEalter column Jahrgang set default 2007
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–49
Änderung von Tabellen: Beispiele
alter table WEINEadd column Preis decimal(5,2)
alter table WEINEalter column Jahrgang set default 2007
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–49
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namenalter table WEINE
drop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namenalter table WEINE
drop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namenalter table WEINE
drop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namen
alter table WEINEdrop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namen
alter table WEINEdrop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Änderung von Integritätsbedingungen
• nachträgliches Hinzufügen/Löschen vonTabellenbedingungen über alter table
• Vergabe von Namen für Bedingungen über constraintbed-name-Klausel
alter table WEINEadd constraint WeinBed_Eindeutigunique (Name, Weingut)
• Löschen über Namenalter table WEINE
drop constraint WeinBed_Eindeutig
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–50
Zusammenfassung
• Zusicherung von Korrektheit bzw. Integrität der Daten• inhärente Integritätsbedingungen des Relationenmodells• zusätzliche SQL-Integritätsbedingungen: check-Klausel,assertion-Anweisung
• Trigger zur „Implementierung“ von Integritätsbedingungenbzw. -regeln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–51
Kontrollfragen
• Welchem Zweck dient dieIntegritätssicherung? Welche Formen vonIntegritätsbedingungen gibt es?
• Wie lassen sich Integritätsbedingungenund -regeln in SQL-Systemenformulieren?
• Welche Forderungen ergeben sich ausdem ACID-Prinzip? Wie werden diese inDatenbanksystemen erreicht?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–52
Kontrollfragen
• Welchem Zweck dient dieIntegritätssicherung? Welche Formen vonIntegritätsbedingungen gibt es?
• Wie lassen sich Integritätsbedingungenund -regeln in SQL-Systemenformulieren?
• Welche Forderungen ergeben sich ausdem ACID-Prinzip? Wie werden diese inDatenbanksystemen erreicht?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–52
Kontrollfragen
• Welchem Zweck dient dieIntegritätssicherung? Welche Formen vonIntegritätsbedingungen gibt es?
• Wie lassen sich Integritätsbedingungenund -regeln in SQL-Systemenformulieren?
• Welche Forderungen ergeben sich ausdem ACID-Prinzip? Wie werden diese inDatenbanksystemen erreicht?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–52
Teil X
Sichten und Zugriffskontrolle
Sichten und Zugriffskontrolle
1. Sichtenkonzept
2. Änderungen auf Sichten
3. Rechtevergabe
4. Privacy-Aspekte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1
Sichten und Zugriffskontrolle
1. Sichtenkonzept
2. Änderungen auf Sichten
3. Rechtevergabe
4. Privacy-Aspekte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1
Sichten und Zugriffskontrolle
1. Sichtenkonzept
2. Änderungen auf Sichten
3. Rechtevergabe
4. Privacy-Aspekte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1
Sichten und Zugriffskontrolle
1. Sichtenkonzept
2. Änderungen auf Sichten
3. Rechtevergabe
4. Privacy-Aspekte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1
Lernziele für heute …
• Verständnis des Sichtenkonzeptes vonDatenbanken
• Kenntnisse zur Formulierung und Nutzungvon Sichten in SQL
• Verständnis der Probleme beiÄnderungen über Sichten
• Verständnis zu Datenschutzaspekten imZusammenhang mitaggregierten/statistischen Daten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–2
Lernziele für heute …
• Verständnis des Sichtenkonzeptes vonDatenbanken
• Kenntnisse zur Formulierung und Nutzungvon Sichten in SQL
• Verständnis der Probleme beiÄnderungen über Sichten
• Verständnis zu Datenschutzaspekten imZusammenhang mitaggregierten/statistischen Daten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–2
Lernziele für heute …
• Verständnis des Sichtenkonzeptes vonDatenbanken
• Kenntnisse zur Formulierung und Nutzungvon Sichten in SQL
• Verständnis der Probleme beiÄnderungen über Sichten
• Verständnis zu Datenschutzaspekten imZusammenhang mitaggregierten/statistischen Daten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–2
Lernziele für heute …
• Verständnis des Sichtenkonzeptes vonDatenbanken
• Kenntnisse zur Formulierung und Nutzungvon Sichten in SQL
• Verständnis der Probleme beiÄnderungen über Sichten
• Verständnis zu Datenschutzaspekten imZusammenhang mitaggregierten/statistischen Daten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–2
Sichtenkonzept
Sichten
Sichtenvirtuelle Relationen (bzw virtuelle Datenbankobjekte inanderen Datenmodellen) (englisch view)
• Sichten sind externe DB-Schemata folgend der3-Ebenen-Schemaarchitektur
• Sichtdefinition
• Relationenschema (implizit oder explizit)• Berechnungsvorschrift für virtuelle Relation, etwaSQL-Anfrage
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–3
Sichten
Sichtenvirtuelle Relationen (bzw virtuelle Datenbankobjekte inanderen Datenmodellen) (englisch view)
• Sichten sind externe DB-Schemata folgend der3-Ebenen-Schemaarchitektur
• Sichtdefinition
• Relationenschema (implizit oder explizit)• Berechnungsvorschrift für virtuelle Relation, etwaSQL-Anfrage
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–3
Sichten
Sichtenvirtuelle Relationen (bzw virtuelle Datenbankobjekte inanderen Datenmodellen) (englisch view)
• Sichten sind externe DB-Schemata folgend der3-Ebenen-Schemaarchitektur
• Sichtdefinition
• Relationenschema (implizit oder explizit)• Berechnungsvorschrift für virtuelle Relation, etwaSQL-Anfrage
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–3
Sichten
Sichtenvirtuelle Relationen (bzw virtuelle Datenbankobjekte inanderen Datenmodellen) (englisch view)
• Sichten sind externe DB-Schemata folgend der3-Ebenen-Schemaarchitektur
• Sichtdefinition• Relationenschema (implizit oder explizit)
• Berechnungsvorschrift für virtuelle Relation, etwaSQL-Anfrage
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–3
Sichten
Sichtenvirtuelle Relationen (bzw virtuelle Datenbankobjekte inanderen Datenmodellen) (englisch view)
• Sichten sind externe DB-Schemata folgend der3-Ebenen-Schemaarchitektur
• Sichtdefinition• Relationenschema (implizit oder explizit)• Berechnungsvorschrift für virtuelle Relation, etwaSQL-Anfrage
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–3
Sichten /2
• Vorteile
• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme
• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme• automatische Anfragetransformation
• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Sichten /2
• Vorteile• Vereinfachung von Anfragen für den Benutzer derDatenbank, etwa indem oft benötigte Teilanfragen als Sichtrealisiert werden
• Möglichkeit der Strukturierung derDatenbankbeschreibung, zugeschnitten aufBenutzerklassen
• logische Datenunabhängigkeit ermöglicht Stabilität derSchnittstelle für Anwendungen gegenüber Änderungen derDatenbankstruktur
• Beschränkung von Zugriffen auf eine Datenbank imZusammenhang mit der Zugriffskontrolle
• Probleme• automatische Anfragetransformation• Durchführung von Änderungen auf Sichten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–4
Drei-Ebenen-Schema-Architektur
Konzeptuelles Schema
externesSchema 1
externesSchema N
internesSchema
...
Anfragebearbeitung
Datendarstellung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–5
Definition von Sichten in SQL
create view SichtName [ SchemaDeklaration ]as SQLAnfrage[ with check option ]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–6
Sichten - Beispiel
• alle Rotweine aus Bordeaux
create view Rotweine asselect Name, Jahrgang, WEINE.Weingutfrom WEINE natural join ERZEUGERwhere Farbe = 'Rot'
and Region = 'Bordeaux'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–7
Sichten - Beispiel
• alle Rotweine aus Bordeaux
create view Rotweine asselect Name, Jahrgang, WEINE.Weingutfrom WEINE natural join ERZEUGERwhere Farbe = 'Rot'
and Region = 'Bordeaux'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–7
Änderungen auf Sichten
Kriterien für Änderungen auf Sichten
• EffektkonformitätBenutzer sieht Effekt als wäre die Änderung auf derSichtrelation direkt ausgeführt worden
• MinimalitätBasisdatenbank sollte nur minimal geändert werden, umden erwähnten Effekt zu erhalten
• KonsistenzerhaltungÄnderung einer Sicht darf zu keinenIntegritätsverletzungen der Basisdatenbank führen
• Respektierung des DatenschutzesWird die Sicht aus Datenschutzgründen eingeführt, darfder bewusst ausgeblendete Teil der Basisdatenbank vonÄnderungen der Sicht nicht betroffen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–8
Kriterien für Änderungen auf Sichten
• EffektkonformitätBenutzer sieht Effekt als wäre die Änderung auf derSichtrelation direkt ausgeführt worden
• MinimalitätBasisdatenbank sollte nur minimal geändert werden, umden erwähnten Effekt zu erhalten
• KonsistenzerhaltungÄnderung einer Sicht darf zu keinenIntegritätsverletzungen der Basisdatenbank führen
• Respektierung des DatenschutzesWird die Sicht aus Datenschutzgründen eingeführt, darfder bewusst ausgeblendete Teil der Basisdatenbank vonÄnderungen der Sicht nicht betroffen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–8
Kriterien für Änderungen auf Sichten
• EffektkonformitätBenutzer sieht Effekt als wäre die Änderung auf derSichtrelation direkt ausgeführt worden
• MinimalitätBasisdatenbank sollte nur minimal geändert werden, umden erwähnten Effekt zu erhalten
• KonsistenzerhaltungÄnderung einer Sicht darf zu keinenIntegritätsverletzungen der Basisdatenbank führen
• Respektierung des DatenschutzesWird die Sicht aus Datenschutzgründen eingeführt, darfder bewusst ausgeblendete Teil der Basisdatenbank vonÄnderungen der Sicht nicht betroffen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–8
Kriterien für Änderungen auf Sichten
• EffektkonformitätBenutzer sieht Effekt als wäre die Änderung auf derSichtrelation direkt ausgeführt worden
• MinimalitätBasisdatenbank sollte nur minimal geändert werden, umden erwähnten Effekt zu erhalten
• KonsistenzerhaltungÄnderung einer Sicht darf zu keinenIntegritätsverletzungen der Basisdatenbank führen
• Respektierung des DatenschutzesWird die Sicht aus Datenschutzgründen eingeführt, darfder bewusst ausgeblendete Teil der Basisdatenbank vonÄnderungen der Sicht nicht betroffen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–8
Projektionssicht
WNW := πWeinID,Name,Weingut(WEINE)
• In SQL mit create view-Anweisung:create view WNW as
select WeinID, Name, Weingut from WEINE
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–9
Projektionssicht /2
• Änderungsanweisung für die Sicht WNW:insert into WNWvalues (3333, 'Dornfelder', 'Müller')
• Korrespondierende Anweisung auf der BasisrelationWEINE:insert into WEINE
values (3333, 'Dornfelder',null, null, 'Müller')
→ Problem der Konsistenzerhaltung falls Farbe oderJahrgang als not null deklariert!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–10
Projektionssicht /2
• Änderungsanweisung für die Sicht WNW:insert into WNWvalues (3333, 'Dornfelder', 'Müller')
• Korrespondierende Anweisung auf der BasisrelationWEINE:insert into WEINE
values (3333, 'Dornfelder',null, null, 'Müller')
→ Problem der Konsistenzerhaltung falls Farbe oderJahrgang als not null deklariert!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–10
Selektionssichten
WJ := σJahrgang>2000(πWeinID,Jahrgang(WEINE))
create view WJ asselect WeinID, Jahrgangfrom WEINEwhere Jahrgang > 2000
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–11
Selektionssichten /2
• Tupelmigration: TupelWEINE(3456, ’Zinfandel’, ’Rot’, 2004, ’Helena’), wird aus derSicht „herausbewegt“:
update WJset Jahrgang = 1998where WeinID = 3456
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–12
Kontrolle der Tupelmigration
create view WJ asselect WeinID, Jahrgangfrom WEINEwhere Jahrgang > 2000with check option
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–13
Verbundsichten
WE := WEINE ▷◁ ERZEUGER
• In SQL:
create view WE asselect WeinID, Name, Farbe, Jahrgang,
WEINE.Weingut, Anbaugebiet, Regionfrom WEINE, ERZEUGERwhere WEINE.Weingut = ERZEUGER.Weingut
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–14
Verbundsichten /2
• Änderungsoperationen hier in der Regel nicht eindeutigübersetzbar:insert into WEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena', 'Barossa Valley', 'Südaustralien')
• Änderung wird transformiert zu
insert into WEINEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena')
• plus Änderung auf ERZEUGER !
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–15
Verbundsichten /2
• Änderungsoperationen hier in der Regel nicht eindeutigübersetzbar:insert into WEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena', 'Barossa Valley', 'Südaustralien')
• Änderung wird transformiert zu
insert into WEINEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena')
• plus Änderung auf ERZEUGER !
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–15
Verbundsichten /2
• Änderungsoperationen hier in der Regel nicht eindeutigübersetzbar:insert into WEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena', 'Barossa Valley', 'Südaustralien')
• Änderung wird transformiert zu
insert into WEINEvalues (3333, 'Dornfelder', 'Rot', 2002,
'Helena')
• plus Änderung auf ERZEUGER !
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–15
Verbundsichten /3
• zusätzliche Aktionen auf ERZEUGER
1. Einfügeanweisung auf ERZEUGER:
insert into ERZEUGERvalues ('Helena', 'Barossa Valley', 'Südaustralien')
2. oder alternativ:
update ERZEUGERset Anbaugebiet = 'Barossa Valley',
Region = 'Südaustralien'where Weingut = 'Helena'
besser bzgl. Minimalitätsforderung, widerspricht aberEffektkonformität!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–16
Verbundsichten /3
• zusätzliche Aktionen auf ERZEUGER1. Einfügeanweisung auf ERZEUGER:
insert into ERZEUGERvalues ('Helena', 'Barossa Valley', 'Südaustralien')
2. oder alternativ:
update ERZEUGERset Anbaugebiet = 'Barossa Valley',
Region = 'Südaustralien'where Weingut = 'Helena'
besser bzgl. Minimalitätsforderung, widerspricht aberEffektkonformität!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–16
Verbundsichten /3
• zusätzliche Aktionen auf ERZEUGER1. Einfügeanweisung auf ERZEUGER:
insert into ERZEUGERvalues ('Helena', 'Barossa Valley', 'Südaustralien')
2. oder alternativ:
update ERZEUGERset Anbaugebiet = 'Barossa Valley',
Region = 'Südaustralien'where Weingut = 'Helena'
besser bzgl. Minimalitätsforderung, widerspricht aberEffektkonformität!
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–16
Aggregierungssichten
create view FM (Farbe, MinJahrgang) asselect Farbe, min(Jahrgang)from WEINEgroup by Farbe
• Folgende Änderung ist nicht eindeutig umsetzbar:
update FMset MinJahrgang = 1993where Farbe = 'Rot'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–17
Aggregierungssichten
create view FM (Farbe, MinJahrgang) asselect Farbe, min(Jahrgang)from WEINEgroup by Farbe
• Folgende Änderung ist nicht eindeutig umsetzbar:
update FMset MinJahrgang = 1993where Farbe = 'Rot'
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–17
Klassifikation der Problembereiche
1. Verletzung der Schemadefinition (z.B. Einfügen vonNullwerten bei Projektionssichten)
2. Datenschutz: Seiteneffekte auf nicht-sichtbaren Teil derDatenbank vermeiden (Tupelmigration, Selektionssichten)
3. nicht immer eindeutige Transformation: Auswahlproblem4. Aggregierungssichten (u.a.): keine sinnvolleTransformation möglich
5. elementare Sichtänderung soll genau einer atomarenÄnderung auf Basisrelation entsprechen: 1:1-Beziehungzwischen Sichttupeln und Tupeln der Basisrelation (keinHerausprojizieren von Schlüsseln)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–18
Klassifikation der Problembereiche
1. Verletzung der Schemadefinition (z.B. Einfügen vonNullwerten bei Projektionssichten)
2. Datenschutz: Seiteneffekte auf nicht-sichtbaren Teil derDatenbank vermeiden (Tupelmigration, Selektionssichten)
3. nicht immer eindeutige Transformation: Auswahlproblem4. Aggregierungssichten (u.a.): keine sinnvolleTransformation möglich
5. elementare Sichtänderung soll genau einer atomarenÄnderung auf Basisrelation entsprechen: 1:1-Beziehungzwischen Sichttupeln und Tupeln der Basisrelation (keinHerausprojizieren von Schlüsseln)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–18
Klassifikation der Problembereiche
1. Verletzung der Schemadefinition (z.B. Einfügen vonNullwerten bei Projektionssichten)
2. Datenschutz: Seiteneffekte auf nicht-sichtbaren Teil derDatenbank vermeiden (Tupelmigration, Selektionssichten)
3. nicht immer eindeutige Transformation: Auswahlproblem
4. Aggregierungssichten (u.a.): keine sinnvolleTransformation möglich
5. elementare Sichtänderung soll genau einer atomarenÄnderung auf Basisrelation entsprechen: 1:1-Beziehungzwischen Sichttupeln und Tupeln der Basisrelation (keinHerausprojizieren von Schlüsseln)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–18
Klassifikation der Problembereiche
1. Verletzung der Schemadefinition (z.B. Einfügen vonNullwerten bei Projektionssichten)
2. Datenschutz: Seiteneffekte auf nicht-sichtbaren Teil derDatenbank vermeiden (Tupelmigration, Selektionssichten)
3. nicht immer eindeutige Transformation: Auswahlproblem4. Aggregierungssichten (u.a.): keine sinnvolleTransformation möglich
5. elementare Sichtänderung soll genau einer atomarenÄnderung auf Basisrelation entsprechen: 1:1-Beziehungzwischen Sichttupeln und Tupeln der Basisrelation (keinHerausprojizieren von Schlüsseln)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–18
Klassifikation der Problembereiche
1. Verletzung der Schemadefinition (z.B. Einfügen vonNullwerten bei Projektionssichten)
2. Datenschutz: Seiteneffekte auf nicht-sichtbaren Teil derDatenbank vermeiden (Tupelmigration, Selektionssichten)
3. nicht immer eindeutige Transformation: Auswahlproblem4. Aggregierungssichten (u.a.): keine sinnvolleTransformation möglich
5. elementare Sichtänderung soll genau einer atomarenÄnderung auf Basisrelation entsprechen: 1:1-Beziehungzwischen Sichttupeln und Tupeln der Basisrelation (keinHerausprojizieren von Schlüsseln)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–18
Behandlung von Sichten in SQL
• SQL-92-Standard
• Integritätsverletzende Sichtänderungen nicht erlaubt• datenschutzverletzende Sichtänderungen:Benutzerkontrolle (with check option)
• Sichten mit nicht-eindeutiger Transformation: Sicht nichtänderbar (SQL-92 restriktiver als notwendig)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–19
Behandlung von Sichten in SQL
• SQL-92-Standard• Integritätsverletzende Sichtänderungen nicht erlaubt
• datenschutzverletzende Sichtänderungen:Benutzerkontrolle (with check option)
• Sichten mit nicht-eindeutiger Transformation: Sicht nichtänderbar (SQL-92 restriktiver als notwendig)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–19
Behandlung von Sichten in SQL
• SQL-92-Standard• Integritätsverletzende Sichtänderungen nicht erlaubt• datenschutzverletzende Sichtänderungen:Benutzerkontrolle (with check option)
• Sichten mit nicht-eindeutiger Transformation: Sicht nichtänderbar (SQL-92 restriktiver als notwendig)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–19
Behandlung von Sichten in SQL
• SQL-92-Standard• Integritätsverletzende Sichtänderungen nicht erlaubt• datenschutzverletzende Sichtänderungen:Benutzerkontrolle (with check option)
• Sichten mit nicht-eindeutiger Transformation: Sicht nichtänderbar (SQL-92 restriktiver als notwendig)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–19
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Einschränkungen für Sichtänderungen
• änderbar nur Selektions- und Projektionssichten(Verbund und Mengenoperationen nicht erlaubt)
• 1:1-Zuordnung von Sichttupeln zu Basistupeln: keindistinct in Projektionssichten
• Arithmetik und Aggregatfunktionen im select-Teil sindverboten
• genau eine Referenz auf einen Relationsnamen im from-Teil erlaubt (auch kein Selbstverbund)
• keine Unteranfragen mit „Selbstbezug“ im where-Teilerlaubt (Relationsname im obersten SFW-Block nicht infrom-Teilen von Unteranfragen verwenden)
• group by und having verboten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–20
Sichtänderungen in SQL:2003
• seit SQL:2003 Aufhebung einiger Einschränkungen,insbesondere
• Updates auf union all-Sichten (ohneDuplikateliminierung)
• Inserts in Verbundsichten mitPrimär-/Fremdschlüsselbeziehungen (mit einigenEinschränkungen)
• Updates auf Verbundsichten mit Cursor (siehe folgendesKapitel)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–21
Sichtänderungen in SQL:2003
• seit SQL:2003 Aufhebung einiger Einschränkungen,insbesondere
• Updates auf union all-Sichten (ohneDuplikateliminierung)
• Inserts in Verbundsichten mitPrimär-/Fremdschlüsselbeziehungen (mit einigenEinschränkungen)
• Updates auf Verbundsichten mit Cursor (siehe folgendesKapitel)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–21
Sichtänderungen in SQL:2003
• seit SQL:2003 Aufhebung einiger Einschränkungen,insbesondere
• Updates auf union all-Sichten (ohneDuplikateliminierung)
• Inserts in Verbundsichten mitPrimär-/Fremdschlüsselbeziehungen (mit einigenEinschränkungen)
• Updates auf Verbundsichten mit Cursor (siehe folgendesKapitel)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–21
Sichtänderungen in SQL:2003
• seit SQL:2003 Aufhebung einiger Einschränkungen,insbesondere
• Updates auf union all-Sichten (ohneDuplikateliminierung)
• Inserts in Verbundsichten mitPrimär-/Fremdschlüsselbeziehungen (mit einigenEinschränkungen)
• Updates auf Verbundsichten mit Cursor (siehe folgendesKapitel)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–21
Alternative: Sichtänderungen mit Instead-of-Triggern
• Definition von Triggern auf Sichten zuranwendungsspezifischen Propagierung der Änderungenauf die Basistabellen
create view V_WEINERZEUGER asselect * from WEINE natural join ERZEUGER;
create trigger V_WEINERZEUGER_Insertinstead of insert on V_WEINERZEUGER
referencing new as Nfor each rowbegin
insert into WEINE values (:N.WeinID, :N.Name,:N.Farbe, :N.Jahrgang, :N.Weingut);
end;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–22
Alternative: Sichtänderungen mit Instead-of-Triggern
• Definition von Triggern auf Sichten zuranwendungsspezifischen Propagierung der Änderungenauf die Basistabellen
create view V_WEINERZEUGER asselect * from WEINE natural join ERZEUGER;
create trigger V_WEINERZEUGER_Insertinstead of insert on V_WEINERZEUGER
referencing new as Nfor each rowbegin
insert into WEINE values (:N.WeinID, :N.Name,:N.Farbe, :N.Jahrgang, :N.Weingut);
end;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–22
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!
• having versus where• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen
• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!
• having versus where• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!
• having versus where• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!
• having versus where• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!• having versus where
• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Auswertung von Anfragen an Sichten
• select: Sichtattribute evtl. umbenennen bzw. durchBerechnungsterm ersetzen
• from: Namen der Originalrelationen• konjunktive Verknüpfung der where-Klauseln vonSichtdefinition und Anfrage (evtl. Umbenennungen)
• Vorsicht bei Aggregationssichten!• having versus where• keine geschachtelten Aggregationen in SQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–23
Rechtevergabe
Rechtevergabe in Datenbanksystemen
• Zugriffsrechte(AutorisierungsID, DB-Ausschnitt,
Operation)
• AutorisierungsID ist interne Kennung eines„Datenbankbenutzers“
• Datenbank-Ausschnitte: Relationen und Sichten• DB-Operationen: Lesen, Einfügen, Ändern, Löschen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–24
Rechtevergabe in Datenbanksystemen
• Zugriffsrechte(AutorisierungsID, DB-Ausschnitt,
Operation)• AutorisierungsID ist interne Kennung eines„Datenbankbenutzers“
• Datenbank-Ausschnitte: Relationen und Sichten• DB-Operationen: Lesen, Einfügen, Ändern, Löschen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–24
Rechtevergabe in Datenbanksystemen
• Zugriffsrechte(AutorisierungsID, DB-Ausschnitt,
Operation)• AutorisierungsID ist interne Kennung eines„Datenbankbenutzers“
• Datenbank-Ausschnitte: Relationen und Sichten
• DB-Operationen: Lesen, Einfügen, Ändern, Löschen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–24
Rechtevergabe in Datenbanksystemen
• Zugriffsrechte(AutorisierungsID, DB-Ausschnitt,
Operation)• AutorisierungsID ist interne Kennung eines„Datenbankbenutzers“
• Datenbank-Ausschnitte: Relationen und Sichten• DB-Operationen: Lesen, Einfügen, Ändern, Löschen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–24
Rechtevergabe in SQL
grant Rechteon Tabelleto BenutzerListe[with grant option]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–25
Rechtevergabe in SQL /2
• Erläuterungen:• In Rechte-Liste: all bzw. Langform all privilegesoder Liste aus select, insert, update, delete
• Hinter on: Relationen- oder Sichtname• Hinter to: Autorisierungsidentifikatoren (auch public,group)
• spezielles Recht: Recht auf die Weitergabe von Rechten(with grant option)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–26
Rechtevergabe in SQL /2
• Erläuterungen:• In Rechte-Liste: all bzw. Langform all privilegesoder Liste aus select, insert, update, delete
• Hinter on: Relationen- oder Sichtname
• Hinter to: Autorisierungsidentifikatoren (auch public,group)
• spezielles Recht: Recht auf die Weitergabe von Rechten(with grant option)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–26
Rechtevergabe in SQL /2
• Erläuterungen:• In Rechte-Liste: all bzw. Langform all privilegesoder Liste aus select, insert, update, delete
• Hinter on: Relationen- oder Sichtname• Hinter to: Autorisierungsidentifikatoren (auch public,group)
• spezielles Recht: Recht auf die Weitergabe von Rechten(with grant option)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–26
Rechtevergabe in SQL /2
• Erläuterungen:• In Rechte-Liste: all bzw. Langform all privilegesoder Liste aus select, insert, update, delete
• Hinter on: Relationen- oder Sichtname• Hinter to: Autorisierungsidentifikatoren (auch public,group)
• spezielles Recht: Recht auf die Weitergabe von Rechten(with grant option)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–26
Autorisierung für public
create view MeineAufträge asselect *from AUFTRAGwhere KName = user;
grant select, inserton MeineAufträgeto public;
„Jeder Benutzer kann seine Aufträge sehen und neueAufträge einfügen (aber nicht löschen!).“
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–27
Zurücknahme von Rechten
revoke Rechteon Tabellefrom BenutzerListe[restrict | cascade ]
• restrict: Falls Recht bereits an Dritte weitergegeben:Abbruch von revoke
• cascade: Rücknahme des Rechts mittels revoke an alleBenutzer propagiert, die es von diesem Benutzer mitgrant erhalten haben
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–28
Zurücknahme von Rechten
revoke Rechteon Tabellefrom BenutzerListe[restrict | cascade ]
• restrict: Falls Recht bereits an Dritte weitergegeben:Abbruch von revoke
• cascade: Rücknahme des Rechts mittels revoke an alleBenutzer propagiert, die es von diesem Benutzer mitgrant erhalten haben
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–28
Privacy-Aspekte
Privacy: Begriff und Anwendungsgebiete
Privacy (Privatsphäre)das Recht jedes Einzelnen auf einen geschützten privatenRaum, der von anderen nur in definierten Ausnahmefällenverletzt werden darf
• elektronische Autobahn-Mautsysteme: Überwachung vonFahrzeugen
• Kreditkartenaktivitäten und diverse Payback- bzw.Rabattkarten: Kaufverhalten von Kunden
• Mobilfunksysteme: Bewegungsprofile der Nutzer• RFID-Technologie: etwa im Einzelhandel Kaufverhalten,Warenflüsse, etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–29
Privacy: Begriff und Anwendungsgebiete
Privacy (Privatsphäre)das Recht jedes Einzelnen auf einen geschützten privatenRaum, der von anderen nur in definierten Ausnahmefällenverletzt werden darf
• elektronische Autobahn-Mautsysteme: Überwachung vonFahrzeugen
• Kreditkartenaktivitäten und diverse Payback- bzw.Rabattkarten: Kaufverhalten von Kunden
• Mobilfunksysteme: Bewegungsprofile der Nutzer• RFID-Technologie: etwa im Einzelhandel Kaufverhalten,Warenflüsse, etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–29
Privacy: Begriff und Anwendungsgebiete
Privacy (Privatsphäre)das Recht jedes Einzelnen auf einen geschützten privatenRaum, der von anderen nur in definierten Ausnahmefällenverletzt werden darf
• elektronische Autobahn-Mautsysteme: Überwachung vonFahrzeugen
• Kreditkartenaktivitäten und diverse Payback- bzw.Rabattkarten: Kaufverhalten von Kunden
• Mobilfunksysteme: Bewegungsprofile der Nutzer• RFID-Technologie: etwa im Einzelhandel Kaufverhalten,Warenflüsse, etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–29
Privacy: Begriff und Anwendungsgebiete
Privacy (Privatsphäre)das Recht jedes Einzelnen auf einen geschützten privatenRaum, der von anderen nur in definierten Ausnahmefällenverletzt werden darf
• elektronische Autobahn-Mautsysteme: Überwachung vonFahrzeugen
• Kreditkartenaktivitäten und diverse Payback- bzw.Rabattkarten: Kaufverhalten von Kunden
• Mobilfunksysteme: Bewegungsprofile der Nutzer
• RFID-Technologie: etwa im Einzelhandel Kaufverhalten,Warenflüsse, etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–29
Privacy: Begriff und Anwendungsgebiete
Privacy (Privatsphäre)das Recht jedes Einzelnen auf einen geschützten privatenRaum, der von anderen nur in definierten Ausnahmefällenverletzt werden darf
• elektronische Autobahn-Mautsysteme: Überwachung vonFahrzeugen
• Kreditkartenaktivitäten und diverse Payback- bzw.Rabattkarten: Kaufverhalten von Kunden
• Mobilfunksysteme: Bewegungsprofile der Nutzer• RFID-Technologie: etwa im Einzelhandel Kaufverhalten,Warenflüsse, etc.
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–29
Statistische Datenbanken
• Datenbanken, in denen die Einzeleinträge demDatenschutz unterliegen, aber statistische Informationenallen Benutzern zugänglich sind
• statistische Information = aggregierte Daten(Durchschnittseinkommen etc.)
• Problem: Gewinnung von Einzelinformationen durchindirekte Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–30
Statistische Datenbanken
• Datenbanken, in denen die Einzeleinträge demDatenschutz unterliegen, aber statistische Informationenallen Benutzern zugänglich sind
• statistische Information = aggregierte Daten(Durchschnittseinkommen etc.)
• Problem: Gewinnung von Einzelinformationen durchindirekte Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–30
Statistische Datenbanken
• Datenbanken, in denen die Einzeleinträge demDatenschutz unterliegen, aber statistische Informationenallen Benutzern zugänglich sind
• statistische Information = aggregierte Daten(Durchschnittseinkommen etc.)
• Problem: Gewinnung von Einzelinformationen durchindirekte Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–30
Statistische Datenbanken: Beispiel
• Benutzer X darf Daten über Kontoinhaber sowie statistische Datenabfragen, jedoch keine einzelnen Kontostände
1. Verfeinerung des Suchkriteriums (nur ein Kunde)
select count (*) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
2. Name des Kontoinhabersselect Name from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
3. statistische Anfrage, die tatsächlich aber Einzeleintrag liefert
select sum(Kontostand) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
• Abhilfe: keine Anfragen, die weniger als n Tupel selektieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–31
Statistische Datenbanken: Beispiel
• Benutzer X darf Daten über Kontoinhaber sowie statistische Datenabfragen, jedoch keine einzelnen Kontostände1. Verfeinerung des Suchkriteriums (nur ein Kunde)
select count (*) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
2. Name des Kontoinhabersselect Name from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
3. statistische Anfrage, die tatsächlich aber Einzeleintrag liefert
select sum(Kontostand) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
• Abhilfe: keine Anfragen, die weniger als n Tupel selektieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–31
Statistische Datenbanken: Beispiel
• Benutzer X darf Daten über Kontoinhaber sowie statistische Datenabfragen, jedoch keine einzelnen Kontostände1. Verfeinerung des Suchkriteriums (nur ein Kunde)
select count (*) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
2. Name des Kontoinhabersselect Name from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
3. statistische Anfrage, die tatsächlich aber Einzeleintrag liefert
select sum(Kontostand) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
• Abhilfe: keine Anfragen, die weniger als n Tupel selektieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–31
Statistische Datenbanken: Beispiel
• Benutzer X darf Daten über Kontoinhaber sowie statistische Datenabfragen, jedoch keine einzelnen Kontostände1. Verfeinerung des Suchkriteriums (nur ein Kunde)
select count (*) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
2. Name des Kontoinhabersselect Name from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
3. statistische Anfrage, die tatsächlich aber Einzeleintrag liefert
select sum(Kontostand) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
• Abhilfe: keine Anfragen, die weniger als n Tupel selektieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–31
Statistische Datenbanken: Beispiel
• Benutzer X darf Daten über Kontoinhaber sowie statistische Datenabfragen, jedoch keine einzelnen Kontostände1. Verfeinerung des Suchkriteriums (nur ein Kunde)
select count (*) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
2. Name des Kontoinhabersselect Name from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
3. statistische Anfrage, die tatsächlich aber Einzeleintrag liefert
select sum(Kontostand) from KONTOwhere Ort = 'Manebach' and Alter = 24 and …
• Abhilfe: keine Anfragen, die weniger als n Tupel selektieren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–31
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden
• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt
• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Beispiel /2
• X will Kontostand von Y herausfinden• X weiss, dass Y nicht in Ilmenau lebt• X hat abgefragt, dass in Ilmenau mehr als n Kontoinhaber leben
1. Gesamtkontostand der Ilmenauer Kunden
select sum(Kontostand) from KONTOwhere Ort = 'Ilmenau'
2. Gesamtkontostand der Ilmenauer Kunden + Kunde Y
select sum(Kontostand) from KONTOwhere Name = :Y or Ort = 'Ilmenau'
3. Differenz der Ergebnisse liefert Kontostand von Y
• Abhilfe: statistische Anfragen nicht erlauben, die paarweise einenDurchschnitt von mehr als m vorgegebenen Tupeln betreffen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–32
Statistische Datenbanken: Fazit
• kritische Parameter
• Ergebnisgröße n• Größe der Überlappung der Ergebnismengen m
Sind nur Ergebnisse von Aggregatfunktionen erlaubt, dannbenötigt eine Person 1+ (n− 2)/m Anfragen, um eineneinzelnen Attributwert zu ermitteln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–33
Statistische Datenbanken: Fazit
• kritische Parameter• Ergebnisgröße n
• Größe der Überlappung der Ergebnismengen m
Sind nur Ergebnisse von Aggregatfunktionen erlaubt, dannbenötigt eine Person 1+ (n− 2)/m Anfragen, um eineneinzelnen Attributwert zu ermitteln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–33
Statistische Datenbanken: Fazit
• kritische Parameter• Ergebnisgröße n• Größe der Überlappung der Ergebnismengen m
Sind nur Ergebnisse von Aggregatfunktionen erlaubt, dannbenötigt eine Person 1+ (n− 2)/m Anfragen, um eineneinzelnen Attributwert zu ermitteln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–33
Statistische Datenbanken: Fazit
• kritische Parameter• Ergebnisgröße n• Größe der Überlappung der Ergebnismengen m
Sind nur Ergebnisse von Aggregatfunktionen erlaubt, dannbenötigt eine Person 1+ (n− 2)/m Anfragen, um eineneinzelnen Attributwert zu ermitteln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–33
Statistische Datenbanken: Fazit
• kritische Parameter• Ergebnisgröße n• Größe der Überlappung der Ergebnismengen m
Sind nur Ergebnisse von Aggregatfunktionen erlaubt, dannbenötigt eine Person 1+ (n− 2)/m Anfragen, um eineneinzelnen Attributwert zu ermitteln
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–33
k-Anonymität
• für viele Zwecke (klinische Studien etc.) werden auchDetaildaten (Mikrodaten) benötigt
Name Alter PLZ Geschlecht FamStand Krankheit***** 38 98693 männl. verh. Schnupfen***** 29 39114 weibl. ledig Fieber***** 29 39114 weibl. ledig Anämie***** 34 98693 männl. verh. Husten***** 34 98693 männl. verh. Knochenbruch***** 27 18055 weibl. ledig Fieber***** 27 18055 weibl. ledig Schnupfen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–34
k-Anonymität
• für viele Zwecke (klinische Studien etc.) werden auchDetaildaten (Mikrodaten) benötigt
Name Alter PLZ Geschlecht FamStand Krankheit***** 38 98693 männl. verh. Schnupfen***** 29 39114 weibl. ledig Fieber***** 29 39114 weibl. ledig Anämie***** 34 98693 männl. verh. Husten***** 34 98693 männl. verh. Knochenbruch***** 27 18055 weibl. ledig Fieber***** 27 18055 weibl. ledig Schnupfen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–34
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie
• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich
• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt
• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist
• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen
• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)
• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)• Vertauschen von Attributwerten einzelner Tupel
• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität: Problem
• ist von einer Person aus dieser Relation bekannt, dass sie• männlich• 38 Jahre alt• verheiratet ist• in 98693 Ilmenau wohnt
• Schnupfen• weitere Zuordnungen (Namen etc.) etwa durch Verbundmit anderen Daten möglich?
• Lösung: Data Swapping (??)• Vertauschen von Attributwerten einzelner Tupel• statistische Analysen noch gültig?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–35
k-Anonymität
k-Anonymitätein bestimmter Sachverhalt kann nicht zwischen einervorgegebenen Anzahl k von Tupeln unterschieden werden
• eine Anfrage nach einer beliebigen Kombination von Alter,Geschlecht, Familienstand und Postleitzahl liefertentweder eine leere Relation oder mindestens k Tupel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–36
k-Anonymität
k-Anonymitätein bestimmter Sachverhalt kann nicht zwischen einervorgegebenen Anzahl k von Tupeln unterschieden werden
• eine Anfrage nach einer beliebigen Kombination von Alter,Geschlecht, Familienstand und Postleitzahl liefertentweder eine leere Relation oder mindestens k Tupel
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–36
k-Anonymität: Ansätze
• Generalisierung: Attributwerte durch allgemeinere Werteersetzen, die einer Generalisierungshierarchieentnommen sind
• die Verallgemeinerung des Alters einer Person zuAltersklassen: 35, 39 30-40
• Weglassen von Stellen bei Postleitzahlen: 39106, 39114 39***
• Unterdrücken von Tupeln: Löschen von Tupeln, welche diek-Anonymität verletzen und damit identifizierbar sind
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–37
k-Anonymität: Ansätze
• Generalisierung: Attributwerte durch allgemeinere Werteersetzen, die einer Generalisierungshierarchieentnommen sind
• die Verallgemeinerung des Alters einer Person zuAltersklassen: 35, 39 30-40
• Weglassen von Stellen bei Postleitzahlen: 39106, 39114 39***
• Unterdrücken von Tupeln: Löschen von Tupeln, welche diek-Anonymität verletzen und damit identifizierbar sind
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–37
k-Anonymität: Ansätze
• Generalisierung: Attributwerte durch allgemeinere Werteersetzen, die einer Generalisierungshierarchieentnommen sind
• die Verallgemeinerung des Alters einer Person zuAltersklassen: 35, 39 30-40
• Weglassen von Stellen bei Postleitzahlen: 39106, 39114 39***
• Unterdrücken von Tupeln: Löschen von Tupeln, welche diek-Anonymität verletzen und damit identifizierbar sind
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–37
k-Anonymität: Ansätze
• Generalisierung: Attributwerte durch allgemeinere Werteersetzen, die einer Generalisierungshierarchieentnommen sind
• die Verallgemeinerung des Alters einer Person zuAltersklassen: 35, 39 30-40
• Weglassen von Stellen bei Postleitzahlen: 39106, 39114 39***
• Unterdrücken von Tupeln: Löschen von Tupeln, welche diek-Anonymität verletzen und damit identifizierbar sind
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–37
Zusammenfassung
• Sichten zur Strukturierung von Datenbanken• Probleme bei Änderungen über Sichten• Rechtesystem in SQL-DBS• Privacy-Aspekte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–38
Kontrollfragen
• Was versteht man unter einerDatenbank-Sicht? Wie werden Sichtendefiniert?
• Sind Sichten änderbar? Unter welchenBedingungen?
• Wie kann in Datenbanken derDatenschutz erreicht werden?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–39
Kontrollfragen
• Was versteht man unter einerDatenbank-Sicht? Wie werden Sichtendefiniert?
• Sind Sichten änderbar? Unter welchenBedingungen?
• Wie kann in Datenbanken derDatenschutz erreicht werden?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–39
Kontrollfragen
• Was versteht man unter einerDatenbank-Sicht? Wie werden Sichtendefiniert?
• Sind Sichten änderbar? Unter welchenBedingungen?
• Wie kann in Datenbanken derDatenschutz erreicht werden?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–39
Teil XI
NoSQL
NoSQL
1. Motivation für NoSQL
2. Datenmodelle für NoSQL
3. KV-Stores und Wide Column
4. Document Stores
5. Graph Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–1
NoSQL
1. Motivation für NoSQL
2. Datenmodelle für NoSQL
3. KV-Stores und Wide Column
4. Document Stores
5. Graph Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–1
NoSQL
1. Motivation für NoSQL
2. Datenmodelle für NoSQL
3. KV-Stores und Wide Column
4. Document Stores
5. Graph Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–1
NoSQL
1. Motivation für NoSQL
2. Datenmodelle für NoSQL
3. KV-Stores und Wide Column
4. Document Stores
5. Graph Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–1
NoSQL
1. Motivation für NoSQL
2. Datenmodelle für NoSQL
3. KV-Stores und Wide Column
4. Document Stores
5. Graph Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–1
Motivation für NoSQL
Motivation für NoSQL
NoSQL = Not only SQL
• im Umfeld vieler aktueller Buzzwords• NoSQL• Big Data• BASE• ....
• oft einfach als Etikett einer Neuentwicklung eines DBMSpauschal vergeben
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–2
Was ist NoSQL?
• SQL - No!• SQL-Datenbanken sind zu komplex, nicht skalierbar, ...• man braucht was einfacheres!
• Not only SQL• SQL-Datenbanken haben zu wenig (oder die falsche)Funktionalität
• Operationen auf Graphen, Data Mining Operatoren, ...• New SQL
• SQL-Datenbanken sind (software-technisch) in die Jahregekommen
• eine neue Generation von DBMS muss her (ohne dieetablierten Vorteile von SQL zu ignorieren)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–3
Kritik an RDBMS / SQL
• nicht skalierbar• Normalisierung von Relationen, vieleIntegritätsbedingungen zu prüfen
• kann man in RDBMS auch vermeiden!• starre Tabellen nicht flexibel genug
• schwach typisierte Tabellen (Tupel weichen in dentatsächlich genutzten Attributen ab)
• viele Nullwerte wenn alle potentiellen Attribute definiert• alternativ Aufspaltung auf viele Tabellen• Schema-Evolution mit alter table skaliert bei Big Data nicht
• tatsächlich in vielen Anwendungen ein Problem• Integration von spezifischen Operationen(Graphtraversierung, Data-Mining-Primitive) mit StoredProcedures zwar möglich führt aber oft zu schwerinterpretierbarem Code
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–4
Datenmodelle für NoSQL
Datenmodelle für NoSQL
• KV-Stores• Wide Column Stores• Dokumenten-orientierte Datenhaltung• Graph-Speicher• ....
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–5
Anfragesprachen für NoSQL
• unterschiedliche Ansätze:• einfache funktionale API• Programmiermodell für parallele Funktionen• angelehnt an SQL-Syntax• ....
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–6
KV-Stores und Wide Column
Datenmodell: Key-Value-Stores
• Key-Value-Store: binäre Relationen, bestehend aus• einem Zugriffsschlüssel (dem Key) und• den Nutzdaten (dem Value)
• Nutzdaten• binäre Daten ohne Einschränkung,• Dateien oder Dokumente,→ Document Databases
• oder schwachstrukturierte Tupel→ Wide Column Store
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–7
Anfragen an KV-Stores
• einfache APIstore.put(key, value)value = store.get(key)store.delete(key)
• aufgesetzte höherer Sprache angelehnt an SQL• Map-Reduce
• Framework zur Programmierung parallelerDatenaggregation auf KV-Stores
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–8
Beispielsysteme für KV-Stores
• Amazon DynamoDB• Riak
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–9
Datenmodell: Wide Column
• Basisidee: KV-Store mit schwachstrukturiertem Tupel alsValue
• Value = Liste von Attributname-Attributwert-Paaren• schwache Typisierung für Attributwerte (auchWiederholgruppen)
• nicht alle Einträge haben die selben Attributnamen• offene Tupel• Hinzufügen eines neuen Attributs unproblematisch• Nullwerte aus SQL ersetzt durch fehlende Einträge
• Beispiel in DynamoDB
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–10
Datenmodell: Wide Column /2
Key Value (Attributliste)WeinID = 1 Name = Zinfandel Farbe = Rot Jahrgang = 2004WeinID = 2 Name = Pinot Noir Weingut = Creek,
HelenaWeinID = 3 Name = Chardonnay Jahrgang = 2002 Weingut = Bighorn
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–11
Anfragen bei Wide Column
• CRUD: Create, Read, Update und Delete• in DynamoDB
• PutItem fügt einen neuen Datensatz mit der gegebenenAttribut-Wert-Liste ein bzw. ersetzt einen existierendenDatensatz mit gleichem Schlüssel.
• GetItem-Operation liest alle Felder eines über einenPrimärschlüssel identifizierten Datensatzes.
• Scan erlaubt einen Lauf über alle Datensätze mit Angabevon Filterkriterien.
• Aufruf über HTTP oder aus Programmiersprachen heraus
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–12
Beispielanfrage in DynamoDB
POST / HTTP/1.1x-amz-target: DynamoDB_20111205.GetItemcontent-type: application/x-amz-json-1.0
"TableName": "Weine"," Key ":
"HashKeyElement": "N": "1" "RangeKeyElement": "S": "Zinfandel"
,"AttributesToGet": ["Farbe", "Jahrgang"],"ConsistentRead": false
• Primärschlüssel (HashKeyElement) ist numerisch (N)• Feld Name ist Bereichsschlüssel vom Typ String (S)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–13
Beispielanfrage in DynamoDB: Ergebnis
HTTP/1.1 200x-amzn-RequestId: …content-type: application/x-amz-json-1.0content-length: …
"Item":"Farbe": "S": "Rot" ,"Jahrgang": "N": "2004" ,
"ConsumedCapacityUnits": 0.5
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–14
Document Stores
Datenmodell: dokumentenorientierte Speicherung
• Basisidee: KV-Store mit (hierarchisch) strukturiertemDokument als Value
• strukturiertes Dokument:• JSON-Format
• geschachtelte Wide Column-Daten• XML (eher unüblich auf KV-Stores)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–15
Beispiel für Dokument in JSON
"id" : "kritiker08154711","Name" : "Bond","Vorname" : "Jamie","Alter" : 42,"Adresse" :
"Strasse" : "Breiter Weg 1","PLZ" : 39007,"Stadt" : "Machdeburch"
,"Telefon" : [7007, 110]
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–16
Anfragen bei dokumentenorientierter Speicherung
• CRUD erweitert um dokumentspezifische Suche• Beispiele (MongoDB mit BSON statt JSON)
db.kritiker.find(Name: "Bond")db.kritiker.find(Alter: 40)db.kritiker.find(Alter$lt: 50)db.kritiker.find(Name: "Bond", Alter: 42)db.kritiker.find($or[Name: "Bond",
Alter: 42])
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–17
Beispielsysteme für dokumentenorientierte Speicherung
• MongoDB• CouchDB
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–18
Graph Stores
Graph-Datenmodelle: Grundlagen
• spezielle Form der Datenrepräsentation = Graphen, insb.Beziehungen zwischen Objekten
• Anwendungsgebiete:• Transportnetze• Networking: Email-Verkehr, Mobilfunk-Nutzer• Soziale Netzwerke: Eigenschaften, Communities• Web: Verlinkte Dokumente• Chemie: Struktur chemischer Komponenten• Bioinformatik: Proteinstrukturen, metabolische Pathways,Genexpressionen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–19
Grundbegriffe
• Graph G = (V, E)• V: Menge der Knoten (vertices)• E ⊆ V× V: Menge der Kanten (edges)
v1 v2
v4v3
• Kanten können mit Gewicht versehen werden
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–20
Grundbegriffe: Adjazenzmatrix
• Repräsentation von Graphen durch Matrix (Knoten alsZeilen und Spalten)
• ungerichteter Graph: symmetrische Matrix• ungewichteter Graph: Zellen nur 0 oder 1
v1 v2
v4v3
3
1
1
2
2
5
05 1v4 2
0v3 20 0
v2 0 10 0
v1 0 003
v4v3v2v1
nach
von
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–21
Grundbegriffe: Knotengrad
• Eigenschaft eines Knotens: Anzahl der verbundenenKnoten
• bei gerichteren Graphen: Unterscheidung in Eingangs- undAusgangsgrad
v1 v2
v4v3
3
1
1
2
2
5
01 1v4 1
0v3 10 0
v2 0 10 0
v1 0 001
v4v3v2v1
nach
von
3
1
1
1
2121
Ausgangsgrad
Eingangsgrad
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–22
Grundbegriffe: Traversierung
• Tiefensuche (DFS): zunächst rekursiv alle Kindknotenbesuchen bevor alle Geschwisterknoten besucht werden
• Bestimmung der Zusammenhangskomponente• Wegsuche um Labyrinth
• Breitensuche (BFS): zunächst alle Geschwisterknotenbesuchen bevor die Kindknoten besucht werden
• Bestimmung des kürzesten Weges
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–23
Subjekt-Prädikat-Objekt-Modell: RDF
• Sprache zur Repräsentation von Informationen über(Web)-Ressourcen
• Ziel: automatisierte Verarbeitung• zentraler Bestandteil von Semantic Web, Linked (Open)Data
• Repräsentation von Daten, aber auchWissensrepräsentation (z.B. Ontologie)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–24
Ontologien
• Ontologie = formale Spezifikation einerKonzeptualisierung, d.h. einer Repräsentation vonBegriffen (Konzepten) und deren Beziehungen
• Anwendung: Annotation von Daten, semantische Suche
Wein
Dessertwein Schaumwein Spätlese
Getränk
Weinbeschreibung
Farbe
Süße
Geschmack
Körper Abgang
Weingut wird beschriebenhat Hersteller
produziert
inverse zu
ist
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–25
RDF: Graphen & Tripel
• Graph = Menge von Tripeln, die Aussagen überWeb-Ressourcen repräsentieren
• Identifikation der Web-Ressourcen über Uniform ResourceIdentifier (URI)
• Tripel:subjekt prädikat objekt .
• Beispiel<http://weindb.org/weine/2171> \
<http://weindb.org/ontologie/name> "Pinot Noir".
Pinot Noirhttp://weindb.org/weine/3478 http://weindb.org/ontologie/name
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–26
RDF: Graphen & Tripel
• Subjekt: URI-Referenz, d.h. Ressource, auf die sich dieAussage bezieht
• Prädikat: Eigenschaft, ebenfalls in Form einerURI-Referenz
• Objekt: Wert der Eigenschaft als Literal (Konstante) oderURI- Referenz
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–27
RDF: Abkürzende Notation
• abkürzende Notation für Namensräume über Präfixe:
prefix wo: <http://weindb.org/ontologie/>prefix weine: <http://weindb.org/weine/>
weine:2171 wo:name "Pinot Noir".
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–28
RDF: Komplexe Graphen
• mehrere Aussagen zum gleichen Subjekt• Objekte nicht nur Literale sondern selbst Objekte (URI)
weine:2171 wo:name "Pinot Noir".weine:2171 wo:farbe "Rot".weine:2171 wo:jahrgang "1999".weine:2171 wo:erzeuger werzeuger:567 .
Rot
Pinot Noir
1999
werzeuger:567
weine:3478wo:farbe
wo:name
wo:jahrgang
wo:erzeuger
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–29
RDF: Repräsentation, Schema und Vokabulare
• Repräsentation von RDF-Daten: N-Tripel (siehe oben),RDF/XML
• RDF Schema:• objektorientierte Spezifikationssprache• erweitert RDF um Typsystem: Definition von Klassen undKlassenhierarchien mit Eigenschaften, Ressourcen alsInstanzen von Klassen
• RDF Schema ist selbst RDF-Spezifikation
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–30
RDF: Repräsentation, Schema und Vokabulare /2
• Beispiel RDF SchemaWein rdf:type rdfs:Class .Schaumwein rdf:type rdfs:Class .Schaumwein rdfs:subClassOf Wein .Name rdf:type rdf:Property .Jahrgang rdf:type rdf:Property .Jahrgang rdfs:domain Wein .Jahrgang rdfs:range xsd:integer .
• für komplexere Ontologien: OWL (Web Ontology Language)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–31
RDF: Repräsentation, Schema und Vokabulare /3
• Vokabular: vordefinierte Klassen und Eigenschaften• Bsp: Dublin Core (Metadaten für Dokumente), FOAF (SozialeNetze), ...
• wichtig z.B. für Linked Open Data
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–32
SPARQL als RDF-Anfragesprache
• SPARQL Protocol And RDF Query Language:Anfragesprache für RDF
• W3C-Recommendation• unterschiedliche Implementierungen möglich:
• Aufsatz für SQL-Backends (z.B. DB2, Oracle)• Triple Stores (RDF-Datenbank)• SPARQL-Endpoints
• syntaktisch an SQL angelehnt, aber Unterstützung fürGraph-Anfragen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–33
SPARQL-Elemente
• Grundelemente: select-where-Block und Tripelmuster?wein wo:name ?name .
• Auswertung: finden aller Belegungen (Bindung) fürVariable (?name) bei Übereinstimmung mitnicht-variablen Teilen
<http://weindb.org/weine/2171> wo:name "Pinot Noir".<http://weindb.org/weine/2168> wo:name "Creek Shiraz".<http://weindb.org/weine/2169> wo:name "Chardonnay".
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–34
SPARQL: Basic Graph Pattern
• Graphmuster (BGP = Basic Graph Pattern): Kombinationvon Tripelmustern über gemeinsame Variablen
?wein wo:name ?name .?wein wo:farbe ?farbe .?wein wo:erzeuger ?erzeuger .?erzeuger wo:weingut ?ename .
• Einsatz in SPARQL-Anfragen im where-Teil
select ?wein ?name ?farbe ?enamewhere ?wein wo:name ?name .
?wein wo:farbe ?farbe .?wein wo:erzeuger ?erzeuger .?erzeuger wo:weingut ?ename .
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–35
SPARQL: Weitere Elemente
• filter: Filterbedingungen für Bindungen• optional: optionale Muster – erfordern nicht zwingendein Matching
prefix wo: <http://weindb.org/ontologie/>select ?namewhere ?wein wo:name ?name .
optional ?wein wo:jahrgang ?jahrgang .filter ( bound(?jahrgang) && ?jahrgang < 2010 )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–36
Property-Graph-Modell
• Knoten und (gerichtete) Kanten mit Eigenschaften(Properties)
• nicht streng typisiert, d.h. Eigenschaften alsName-Wert-Paare
• Unterstützung in diversen Graph-Datenbanksystemen:neo4j, Microsoft Azure Cosmos DB, OrientDB, AmazonNeptune, …
Helena
Pinot Noir
produziert
Spätbur-gundername: Helena
farbe: Rotjahrgang: 1999
beerenfarbe: Schwarzherkunft: Frankreich
anteil: 100%besteht aus
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–37
Property-Graph-Modell in Neo4j
• Elemente: Nodes, Relationships, Properties, Labels• Properties = Key-Value-Paare: Key (=String), Value(=Java-Datentypen + Felder)
• Nodes mit Labels (≈ Klassenname)• Relationships: sind gerichtet, mit Namen und ggf.Properties
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–38
Property-Graph-Modell: Beispiel
anteil: 100%
Napa Valley
Pinot Noir
liegt in
produziert
Spätbur-gunder
besteht aus
gebiet: Napa Valleyregion: Kalifornien
farbe: Rotjahrgang: 2014
beerenfarbe: Schwarzherkunft: Frankreich
baut an
Merlot
baut an
Zinfandel
produziert
Helena
farbe: Rotjahrgang: 2019
beerenfarbe: Schwarzblauherkunft: Frankreich
Bighorn
name: Bighorn
liegt in
grenzt an
name: Helena
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–39
Anfragen auf Graphen
• keine Standardsprache• aber wiederkehrende Grundelemente
• Graph Matching: Knoten, Kanten, Pfade (siehe BGP inSPARQL)
• Filter für Knoten- und Kanteneigenschaften• Konstruktion neuer Graphen
• hier: Cypher (neo4j)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–40
Anfragen in Cypher
• Basis: Muster der Form „Knoten→ Kante→ Knoten …“(von)-[:relationship]->(nach)
• Beschränkung über Label und Properties(e:ERZEUGER)-[:LIEGT_IN]->(a:ANBAUGEBIET
gebiet: 'Napa Valley' )
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–41
Cypher: Klauseln
• match: Beispielmuster für Matching• return: Festlegung der Rückgabedaten (Projektion)• where: Filterbedingung für „gematchte“ Daten• create: Erzeugen von Knoten oder Beziehungen• set: Ändern von Property-Werten• …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–42
Cypher: Beispiele
• Anlegen von Daten
create(napavalley:ANBAUGEBIET
gebiet: 'Napa Valley', region: 'Kalifornien' ),(helena:ERZEUGER name: 'Helena' ),…(helena)-[:LIEGT_IN]->(napavalley),…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–43
Cypher: Beispiele
• Alle Weingüter aus dem Napa Valleymatch (e:ERZEUGER)-[:LIEGT_IN]->(a:ANBAUGEBIET
gebiet: 'Napa Valley' )return e
• Alle Weingüter, die die Merlot-Traube anbauenmatch (r:REBE name: 'Merlot' )<-[:BAUT_AN]-(w) \
-[:LIEGT_IN]->(g)return g
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–44
Cypher: Beispiele /2
• Alle Weingüter, die Weine mit eiem Spätburgunder-Anteilvon mehr als 50% produzieren sowie die Anzahl dieserWeine pro Weingut
match (e:ERZEUGER)-[:PRODUZIERT]->(w:WEIN)-[b:BESTEHT_AUS]->(r:REBE name: 'Spätburgunder' )
where b.anteil > 50return e.name, count(w.name)
• Alle Weingüter, direkt an das Weingut Helena grenzenoder an ein Weingut, das direkt an Helena grenzt
match (e1:ERZEUGER name: 'Helena' )-[:GRENZT_AN*..2] \-(e2:ERZEUGER)
return e2
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–45
Cypher: Beispiele /3
• alle Knoten des Typs WEINEmatch (w)where w:WEINEreturn w
• Knotengrade pro Knoten im Graphmatch (n)-[r]-()return n, count(r)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–46
Zusammenfassung
• NoSQL als Oberbegriff für diverse Datenbanktechniken• große Bandbreite: von einfachen KV-Stores bis zuGraphdatenbanken
• höhere Skalierbarkeit / Performance gegenüberSQL-DBMS meist durch Einschränkungen erkauft
• Abschwächung von ACID-Eigenschaften• begrenzte Anfragefunktionalität• Nicht-Standard bzw. proprietäre Schnittstellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–47
Weiterführende Literatur
• Lena Wiese: Advanced Data Management for SQL, NoSQL,Cloud and Distributed Databases. De Gruyter / Oldenburg,2015
• Ian Robinson, Jim Webber, Emil Eifrem: Graph Databases.O’Reilly, 2015
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–48
Teil XII
Anwendungsprogrammierung
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Anwendungsprogrammierung
1. Programmiersprachenanbindung
2. JDBC
3. SQLJ
4. LINQ
5. Objekt-relationales Mapping
6. Prozedurale SQL-Erweiterungen: SQL/PSM
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–1
Lernziele für heute …
• Wissen zu Konzepten und Schnittstellenzum Zugriff auf SQL-Datenbanken ausProgrammiersprachen heraus
• Verständnis prozeduraler Schnittstellenam Beispiel von JDBC
• Kenntnisse zu Embedded SQL undprozeduralen SQL-Erweiterungen
• Grundverständnis objektrelationalerAbbildungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–2
Lernziele für heute …
• Wissen zu Konzepten und Schnittstellenzum Zugriff auf SQL-Datenbanken ausProgrammiersprachen heraus
• Verständnis prozeduraler Schnittstellenam Beispiel von JDBC
• Kenntnisse zu Embedded SQL undprozeduralen SQL-Erweiterungen
• Grundverständnis objektrelationalerAbbildungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–2
Lernziele für heute …
• Wissen zu Konzepten und Schnittstellenzum Zugriff auf SQL-Datenbanken ausProgrammiersprachen heraus
• Verständnis prozeduraler Schnittstellenam Beispiel von JDBC
• Kenntnisse zu Embedded SQL undprozeduralen SQL-Erweiterungen
• Grundverständnis objektrelationalerAbbildungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–2
Lernziele für heute …
• Wissen zu Konzepten und Schnittstellenzum Zugriff auf SQL-Datenbanken ausProgrammiersprachen heraus
• Verständnis prozeduraler Schnittstellenam Beispiel von JDBC
• Kenntnisse zu Embedded SQL undprozeduralen SQL-Erweiterungen
• Grundverständnis objektrelationalerAbbildungen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–2
Programmiersprachenanbindung
Programmiersprachenanbindung
• Kopplungsarten:
• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …
• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …
• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ
• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen
• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Programmiersprachenanbindung
• Kopplungsarten:• prozedurale oder CALL-Schnittstellen (call level interface)
• Beispiele: SQL/CLI, ODBC, JDBC, …• Einbettung einer DB-Sprache in Programmiersprachen
• statische Einbettung: Vorübersetzer-Prinzip SQL-Anweisungen zur Übersetzungszeit festgelegt
• Beispiele: Embedded SQL, SQLJ• dynamische Einbettung: Konstruktion von SQL-Anweisungen zur Laufzeit
• Spracherweiterungen und neue Sprachentwicklungen• Beispiele: SQL/PSM, PL/SQL, Transact-SQL, PL/pgSQL
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–3
Cursor-Konzept
• Cursor: Iterator über Liste von Tupeln (Anfrageergebnis)
Relation
Cursor
Anwendungsprogramm Datenbank
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–4
JDBC
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java
• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle
• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC
• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL
• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern
• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung
• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Überblick
• Datenbankzugriffsschnittstelle für Java• abstrakte, datenbankneutrale Schnittstelle• vergleichbar mit ODBC• Low-Level-API: direkte Nutzung von SQL• Java-Package java.sql
• DriverManager: Einstiegspunkt, Laden von Treibern• Connection: Datenbankverbindung• Statement: Ausführung von Anweisungen über eineVerbindung
• ResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff aufeinzelne Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–5
JDBC: Struktur
DriverManager Connection
StatementStatement
ResultSet ResultSet
getConnection
createStatement
executeQuery
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–6
JDBC: Treiberkonzept
Java-Applikation
JDBC-Treibermanager
Native-API-
Treiber
JDBC-ODBC-Bridge
JDBC-Net-
Treiber
Native-Protokoll-Treiber
Client-Bibliothek
Client-Bibliothek
ODBCDB-
Middleware
JDBC-API
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–7
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank
• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung
• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen
• Auswahl und Laden des Treibers2. Senden einer SQL-Anweisung
• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung
• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung
• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung• Definition der Anweisung
• Belegung von Parametern3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse
• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse• Navigation über Ergebnisrelation
• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Ablauf
1. Aufbau einer Verbindung zur Datenbank• Angabe der Verbindungsinformationen• Auswahl und Laden des Treibers
2. Senden einer SQL-Anweisung• Definition der Anweisung• Belegung von Parametern
3. Verarbeiten der Anfrageergebnisse• Navigation über Ergebnisrelation• Zugriff auf Spalten
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–8
JDBC: Verbindungsaufbau
1. Treiber ladenClass.forName("com.company.DBDriver");
2. Verbindung herstellen
String url = "jdbc:subprotocol:datasource";Connection con = DriverManager.getConnection
(url, "scott", "tiger");
JDBC-URL spezifiziert
• Datenquelle/Datenbank• Verbindungsmechanismus (Protokoll, Server und Port)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–9
JDBC: Verbindungsaufbau
1. Treiber ladenClass.forName("com.company.DBDriver");
2. Verbindung herstellen
String url = "jdbc:subprotocol:datasource";Connection con = DriverManager.getConnection
(url, "scott", "tiger");
JDBC-URL spezifiziert
• Datenquelle/Datenbank• Verbindungsmechanismus (Protokoll, Server und Port)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–9
JDBC: Verbindungsaufbau
1. Treiber ladenClass.forName("com.company.DBDriver");
2. Verbindung herstellen
String url = "jdbc:subprotocol:datasource";Connection con = DriverManager.getConnection
(url, "scott", "tiger");
JDBC-URL spezifiziert
• Datenquelle/Datenbank• Verbindungsmechanismus (Protokoll, Server und Port)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–9
JDBC: Verbindungsaufbau
1. Treiber ladenClass.forName("com.company.DBDriver");
2. Verbindung herstellen
String url = "jdbc:subprotocol:datasource";Connection con = DriverManager.getConnection
(url, "scott", "tiger");
JDBC-URL spezifiziert
• Datenquelle/Datenbank• Verbindungsmechanismus (Protokoll, Server und Port)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–9
JDBC: Anfrageausführung
1. Anweisungsobjekt (Statement) erzeugen
Statement stmt = con.createStatement();
2. Anweisung ausführen
String query = "select Name, Jahrgang from WEINE";ResultSet rSet = stmt.executeQuery(query);
Klasse java.sql.Statement
• Ausführung von Anfragen (SELECT) mit executeQuery• Ausführung von Änderungsanweisungen (DELETE,INSERT, UPDATE) mit executeUpdate
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–10
JDBC: Anfrageausführung
1. Anweisungsobjekt (Statement) erzeugen
Statement stmt = con.createStatement();
2. Anweisung ausführen
String query = "select Name, Jahrgang from WEINE";ResultSet rSet = stmt.executeQuery(query);
Klasse java.sql.Statement
• Ausführung von Anfragen (SELECT) mit executeQuery• Ausführung von Änderungsanweisungen (DELETE,INSERT, UPDATE) mit executeUpdate
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–10
JDBC: Anfrageausführung
1. Anweisungsobjekt (Statement) erzeugen
Statement stmt = con.createStatement();
2. Anweisung ausführen
String query = "select Name, Jahrgang from WEINE";ResultSet rSet = stmt.executeQuery(query);
Klasse java.sql.Statement
• Ausführung von Anfragen (SELECT) mit executeQuery• Ausführung von Änderungsanweisungen (DELETE,INSERT, UPDATE) mit executeUpdate
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–10
JDBC: Anfrageausführung
1. Anweisungsobjekt (Statement) erzeugen
Statement stmt = con.createStatement();
2. Anweisung ausführen
String query = "select Name, Jahrgang from WEINE";ResultSet rSet = stmt.executeQuery(query);
Klasse java.sql.Statement
• Ausführung von Anfragen (SELECT) mit executeQuery• Ausführung von Änderungsanweisungen (DELETE,INSERT, UPDATE) mit executeUpdate
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–10
JDBC: Ergebnisverarbeitung
1. Navigation über Ergebnismenge (Cursor-Prinzip)
while (rSet.next()) // Verarbeitung der einzelnen Tupel…
2. Zugriff auf Spaltenwerte über getType-Methoden
• über Spaltenindex
String wName = rSet.getString(1);
• über Spaltenname
String wName = rSet.getString("Name");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–11
JDBC: Ergebnisverarbeitung
1. Navigation über Ergebnismenge (Cursor-Prinzip)
while (rSet.next()) // Verarbeitung der einzelnen Tupel…
2. Zugriff auf Spaltenwerte über getType-Methoden
• über Spaltenindex
String wName = rSet.getString(1);
• über Spaltenname
String wName = rSet.getString("Name");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–11
JDBC: Ergebnisverarbeitung
1. Navigation über Ergebnismenge (Cursor-Prinzip)
while (rSet.next()) // Verarbeitung der einzelnen Tupel…
2. Zugriff auf Spaltenwerte über getType-Methoden• über Spaltenindex
String wName = rSet.getString(1);
• über Spaltenname
String wName = rSet.getString("Name");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–11
JDBC: Ergebnisverarbeitung
1. Navigation über Ergebnismenge (Cursor-Prinzip)
while (rSet.next()) // Verarbeitung der einzelnen Tupel…
2. Zugriff auf Spaltenwerte über getType-Methoden• über Spaltenindex
String wName = rSet.getString(1);
• über Spaltenname
String wName = rSet.getString("Name");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–11
JDBC: Fehlerbehandlung
• Fehlerbehandlung mittels Exception-Mechanismus
• SQLException für alle SQL- und DBMS-Fehler
try // Aufruf von JDBC-Methoden…
catch (SQLException exc) System.out.println("SQLException: " +
exc.getMessage());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–12
JDBC: Fehlerbehandlung
• Fehlerbehandlung mittels Exception-Mechanismus• SQLException für alle SQL- und DBMS-Fehler
try // Aufruf von JDBC-Methoden…
catch (SQLException exc) System.out.println("SQLException: " +
exc.getMessage());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–12
JDBC: Änderungsoperationen
• DDL- und DML-Operationen mittels executeUpdate
• liefert Anzahl der betroffenen Zeilen (für DML-Operationen)
Statement stmt = con.createStatement();int rows = stmt.executeUpdate(
"update WEINE set Preis = Preis * 1.1 " +"where Jahrgang < 2000");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–13
JDBC: Änderungsoperationen
• DDL- und DML-Operationen mittels executeUpdate• liefert Anzahl der betroffenen Zeilen (für DML-Operationen)
Statement stmt = con.createStatement();int rows = stmt.executeUpdate(
"update WEINE set Preis = Preis * 1.1 " +"where Jahrgang < 2000");
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–13
JDBC: Transaktionssteuerung
• Methoden von Connection
• commit ()• rollback ()
Auto-Commit-Modus
• implizites Commit nach jeder Anweisung• Transaktion besteht nur aus einer Anweisung• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
JDBC: Transaktionssteuerung
• Methoden von Connection• commit ()
• rollback ()
Auto-Commit-Modus
• implizites Commit nach jeder Anweisung• Transaktion besteht nur aus einer Anweisung• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
JDBC: Transaktionssteuerung
• Methoden von Connection• commit ()• rollback ()
Auto-Commit-Modus
• implizites Commit nach jeder Anweisung• Transaktion besteht nur aus einer Anweisung• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
JDBC: Transaktionssteuerung
• Methoden von Connection• commit ()• rollback ()
Auto-Commit-Modus• implizites Commit nach jeder Anweisung
• Transaktion besteht nur aus einer Anweisung• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
JDBC: Transaktionssteuerung
• Methoden von Connection• commit ()• rollback ()
Auto-Commit-Modus• implizites Commit nach jeder Anweisung• Transaktion besteht nur aus einer Anweisung
• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
JDBC: Transaktionssteuerung
• Methoden von Connection• commit ()• rollback ()
Auto-Commit-Modus• implizites Commit nach jeder Anweisung• Transaktion besteht nur aus einer Anweisung• Umschalten mittels setAutoCommit (boolean)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–14
SQLJ
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext
• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen
• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen
• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen
• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen• korrekte Syntax
• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema
• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Embedded SQL für Java
• Einbettung von SQL-Anweisungen in Java-Quelltext• Vorübersetzung des erweiterten Quelltextes in echtenJava-Code durch Translator sqlj
• Überprüfung der SQL-Anweisungen• korrekte Syntax• Übereinstimmung der Anweisungen mit DB-Schema• Typkompatibilität der für Datenaustausch genutztenVariablen
• Nutzung von JDBC-Treibern
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–15
SQLJ: Prinzip
SQLJ-Programm
SQLJ-Translator
Java-Quellcode SQLJ-Profile
Java-Compiler Customizer
Bytecode Custom-Profile
JDBC-Treiber
SQLJ-Laufzeitsystem
Syntax- & Semantik-prüfung
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–16
SQLJ-Anweisungen
• Kennzeichnung durch #sql Deklarationen
• Klassendefinitionen für Iteratoren• SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen
#sql SQL-Operation ;
• Beispiel:
#sql insert into ERZEUGER (Weingut, Region) values( 'Wairau Hills', 'Marlborough') ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–17
SQLJ-Anweisungen
• Kennzeichnung durch #sql Deklarationen• Klassendefinitionen für Iteratoren
• SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen
#sql SQL-Operation ;
• Beispiel:
#sql insert into ERZEUGER (Weingut, Region) values( 'Wairau Hills', 'Marlborough') ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–17
SQLJ-Anweisungen
• Kennzeichnung durch #sql Deklarationen• Klassendefinitionen für Iteratoren• SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen
#sql SQL-Operation ;
• Beispiel:
#sql insert into ERZEUGER (Weingut, Region) values( 'Wairau Hills', 'Marlborough') ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–17
SQLJ-Anweisungen
• Kennzeichnung durch #sql Deklarationen• Klassendefinitionen für Iteratoren• SQL-Anweisungen: Anfragen, DML- und DDL-Anweisungen
#sql SQL-Operation ;
• Beispiel:
#sql insert into ERZEUGER (Weingut, Region) values( 'Wairau Hills', 'Marlborough') ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–17
Host-Variablen
• Variablen einer Host-Sprache (hier Java), die inSQL-Anweisungen auftreten können
• Verwendung: Austausch von Daten zwischen Host-Spracheund SQL
• Kennzeichnung durch ":variable"• Beispiel:
String name;int weinID = 4711;#sql select Name into :name
from WEINE where WeinID = :weinID ;System.out.println("Wein = " + name);
• Nullwerte: Indikatorvariable ":variable:indvar"
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–18
Host-Variablen
• Variablen einer Host-Sprache (hier Java), die inSQL-Anweisungen auftreten können
• Verwendung: Austausch von Daten zwischen Host-Spracheund SQL
• Kennzeichnung durch ":variable"• Beispiel:
String name;int weinID = 4711;#sql select Name into :name
from WEINE where WeinID = :weinID ;System.out.println("Wein = " + name);
• Nullwerte: Indikatorvariable ":variable:indvar"
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–18
Host-Variablen
• Variablen einer Host-Sprache (hier Java), die inSQL-Anweisungen auftreten können
• Verwendung: Austausch von Daten zwischen Host-Spracheund SQL
• Kennzeichnung durch ":variable"
• Beispiel:
String name;int weinID = 4711;#sql select Name into :name
from WEINE where WeinID = :weinID ;System.out.println("Wein = " + name);
• Nullwerte: Indikatorvariable ":variable:indvar"
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–18
Host-Variablen
• Variablen einer Host-Sprache (hier Java), die inSQL-Anweisungen auftreten können
• Verwendung: Austausch von Daten zwischen Host-Spracheund SQL
• Kennzeichnung durch ":variable"• Beispiel:
String name;int weinID = 4711;#sql select Name into :name
from WEINE where WeinID = :weinID ;System.out.println("Wein = " + name);
• Nullwerte: Indikatorvariable ":variable:indvar"
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–18
Host-Variablen
• Variablen einer Host-Sprache (hier Java), die inSQL-Anweisungen auftreten können
• Verwendung: Austausch von Daten zwischen Host-Spracheund SQL
• Kennzeichnung durch ":variable"• Beispiel:
String name;int weinID = 4711;#sql select Name into :name
from WEINE where WeinID = :weinID ;System.out.println("Wein = " + name);
• Nullwerte: Indikatorvariable ":variable:indvar"Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–18
Iteratoren
1. Deklaration des Iterators#sql public iterator WeinIter(String Name, String Weingut,
int Jahrgang);
2. Definition des IteratorobjektesWeinIter iter;
3. Ausführung der Anweisung#sql iter = select Name, Weingut, Jahrgang from WEINE ;
4. Navigationwhile (iter.next())
System.out.println(iter.Name() + " " iter.Weingut());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–19
Iteratoren
1. Deklaration des Iterators#sql public iterator WeinIter(String Name, String Weingut,
int Jahrgang);
2. Definition des IteratorobjektesWeinIter iter;
3. Ausführung der Anweisung#sql iter = select Name, Weingut, Jahrgang from WEINE ;
4. Navigationwhile (iter.next())
System.out.println(iter.Name() + " " iter.Weingut());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–19
Iteratoren
1. Deklaration des Iterators#sql public iterator WeinIter(String Name, String Weingut,
int Jahrgang);
2. Definition des IteratorobjektesWeinIter iter;
3. Ausführung der Anweisung#sql iter = select Name, Weingut, Jahrgang from WEINE ;
4. Navigationwhile (iter.next())
System.out.println(iter.Name() + " " iter.Weingut());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–19
Iteratoren
1. Deklaration des Iterators#sql public iterator WeinIter(String Name, String Weingut,
int Jahrgang);
2. Definition des IteratorobjektesWeinIter iter;
3. Ausführung der Anweisung#sql iter = select Name, Weingut, Jahrgang from WEINE ;
4. Navigationwhile (iter.next())
System.out.println(iter.Name() + " " iter.Weingut());
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–19
Dynamic SQL
• SQL-Statements als zur Laufzeit konstruierte Strings
exec sql begin declare section;AnfrageString char(256) varying;
exec sql end declare section;exec sql declare AnfrageObjekt statement;AnfrageString =
'delete from WEINE where WeinID = 4711';…exec sql prepare AnfrageObjekt from :AnfrageString;exec sql execute AnfrageObjekt;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–20
LINQ
Language Integrated Query (LINQ)
• Einbettung einer DB-Sprache (SQL) in eineProgrammiersprache (C#)
• spezielle Klassenmethoden
IEnumerable<string> res = weine.Where(w => w.Farbe == "Rot").Select(w => new w.Name );
• eigene Sprachkonstrukte (ab C# 3.0)
IEnumerable<op> res = from w in weinewhere w.Farbe == "Rot"select new w.Name ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–21
Language Integrated Query (LINQ)
• Einbettung einer DB-Sprache (SQL) in eineProgrammiersprache (C#)
• spezielle Klassenmethoden
IEnumerable<string> res = weine.Where(w => w.Farbe == "Rot").Select(w => new w.Name );
• eigene Sprachkonstrukte (ab C# 3.0)
IEnumerable<op> res = from w in weinewhere w.Farbe == "Rot"select new w.Name ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–21
Language Integrated Query (LINQ)
• Einbettung einer DB-Sprache (SQL) in eineProgrammiersprache (C#)
• spezielle Klassenmethoden
IEnumerable<string> res = weine.Where(w => w.Farbe == "Rot").Select(w => new w.Name );
• eigene Sprachkonstrukte (ab C# 3.0)
IEnumerable<op> res = from w in weinewhere w.Farbe == "Rot"select new w.Name ;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–21
Objekt-relationales Mapping
Objekt-relationales Mapping
• Einsatz von
• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)
• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation
• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung
• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping
• Einsatz von• relationalen Backends (SQL-DBMS)• objektrelationalen Anwendungen, Applikationsservern,Middleware, …
• Implementierung von „Geschäftslogik“ in Form vonObjekten (Kunde, Bestellung, Vorgang, …)
• z.B. als Java Bean, CORBA-Objekt
• erfordert: Abbildung Klasse↔ Relation• Aspekte:
• konzeptionelle Abbildung• Laufzeitunterstützung
• Technologien/Produkte: JDO, Hibernate, ADO.NET EntityFramework…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–22
Objekt-relationales Mapping: Prinzip
Laufzeitsystem
Applikation
Anwendungs-objekte
Objekt-modell
Datenbank-schema
Abbildungs-vorschrift
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–23
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle
• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle
• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen
• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen
• OO: Klasse definiert Eigenschaften von Objekten(Intension) + umfasst Menge aller Objekte (Extension)
• RM: Relation umfasst alle Tupel, Relationenschemabeschreibt Struktur
• naheliegend: Klasse = Tabelle• aber: Normalisierung zerlegt Relationen!
• 1 Klasse = 1 Tabelle• 1 Klasse = n Tabellen• n Klassen = 1 Tabelle
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–24
Klassen und Tabellen: Beispiel
WeinId : intName : stringFarbe : stringJahr : integerWeingut : string
WEINE WeinID Name Farbe Jahrgang Weingut
i
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–25
Beziehungen
• eingebetteter Fremdschlüssel in der Relation der Klasse,d.h. der Identifikator des assoziierten Objektes wird alsFremdschlüssel in zusätzlichen Spalten gespeichert
• Fremdschlüsseltabellen: die Beziehungsinstanz wird alsTupel mit den Schlüsseln der beteiligten Objekterepräsentiert
• Abbildung der in Beziehung stehenden Klassen auf eineeinzelne Tabelle: Verletzung der Normalformen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–26
Beziehungen
• eingebetteter Fremdschlüssel in der Relation der Klasse,d.h. der Identifikator des assoziierten Objektes wird alsFremdschlüssel in zusätzlichen Spalten gespeichert
• Fremdschlüsseltabellen: die Beziehungsinstanz wird alsTupel mit den Schlüsseln der beteiligten Objekterepräsentiert
• Abbildung der in Beziehung stehenden Klassen auf eineeinzelne Tabelle: Verletzung der Normalformen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–26
Beziehungen
• eingebetteter Fremdschlüssel in der Relation der Klasse,d.h. der Identifikator des assoziierten Objektes wird alsFremdschlüssel in zusätzlichen Spalten gespeichert
• Fremdschlüsseltabellen: die Beziehungsinstanz wird alsTupel mit den Schlüsseln der beteiligten Objekterepräsentiert
• Abbildung der in Beziehung stehenden Klassen auf eineeinzelne Tabelle: Verletzung der Normalformen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–26
Beziehungen: konkrete Abbildung
• 1:1-Beziehungen: eingebettete Fremdschlüssel
• 1:n-Beziehungen: eingebettete Fremdschlüssel oderFremdschlüsseltabellen
• Beziehungen mit Attributen: Fremdschlüsseltabellen• m:n-Beziehungen: Fremdschlüsseltabellen• Drei- und mehrstellige Beziehungen:Fremdschlüsseltabellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–27
Beziehungen: konkrete Abbildung
• 1:1-Beziehungen: eingebettete Fremdschlüssel• 1:n-Beziehungen: eingebettete Fremdschlüssel oderFremdschlüsseltabellen
• Beziehungen mit Attributen: Fremdschlüsseltabellen• m:n-Beziehungen: Fremdschlüsseltabellen• Drei- und mehrstellige Beziehungen:Fremdschlüsseltabellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–27
Beziehungen: konkrete Abbildung
• 1:1-Beziehungen: eingebettete Fremdschlüssel• 1:n-Beziehungen: eingebettete Fremdschlüssel oderFremdschlüsseltabellen
• Beziehungen mit Attributen: Fremdschlüsseltabellen
• m:n-Beziehungen: Fremdschlüsseltabellen• Drei- und mehrstellige Beziehungen:Fremdschlüsseltabellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–27
Beziehungen: konkrete Abbildung
• 1:1-Beziehungen: eingebettete Fremdschlüssel• 1:n-Beziehungen: eingebettete Fremdschlüssel oderFremdschlüsseltabellen
• Beziehungen mit Attributen: Fremdschlüsseltabellen• m:n-Beziehungen: Fremdschlüsseltabellen
• Drei- und mehrstellige Beziehungen:Fremdschlüsseltabellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–27
Beziehungen: konkrete Abbildung
• 1:1-Beziehungen: eingebettete Fremdschlüssel• 1:n-Beziehungen: eingebettete Fremdschlüssel oderFremdschlüsseltabellen
• Beziehungen mit Attributen: Fremdschlüsseltabellen• m:n-Beziehungen: Fremdschlüsseltabellen• Drei- und mehrstellige Beziehungen:Fremdschlüsseltabellen
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–27
Beziehungen /2
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
i
ErzeugerName : stringAnbaugebiet : stringRegion : stringWinzer: list of string
WEINE WeinID Name Farbe Jahrgang Weingut
ERZEUGER Weingut Anbaugebiet Region
WINZER Weingut Name
i
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–28
Hibernate
• Java-Framework für objekt-relationales Mapping
• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle• keine expliziten SQL-Anweisungen nötig!• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate
• Java-Framework für objekt-relationales Mapping• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle• keine expliziten SQL-Anweisungen nötig!• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate
• Java-Framework für objekt-relationales Mapping• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle
• keine expliziten SQL-Anweisungen nötig!• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate
• Java-Framework für objekt-relationales Mapping• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle• keine expliziten SQL-Anweisungen nötig!
• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate
• Java-Framework für objekt-relationales Mapping• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle• keine expliziten SQL-Anweisungen nötig!• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate
• Java-Framework für objekt-relationales Mapping• Idee: Abbildung von Java-Objekten auf Tupel einerrelationalen Datenbank
• Prinzip: Java-Klasse + Abbildungsvorschrift SQL-Tabelle• keine expliziten SQL-Anweisungen nötig!• Unterstützung der Navigation über Beziehungen(automatisches Nachladen der referenzierten Objekte)
• Anfragen über eigene Sprache (HQL bzw. QBC/QBE)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–29
Hibernate: Beispiel
public class Wein private int id;private String name;private String farbe;private int jahr;private String weingut;
public void setName(String n) name = n; public String getName() return name; public void setFarbe(String f) farbe = f; public String getFarbe() return farbe; public void setJahr(int j) jahr = j; public int getJahr() return jahr; …
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–30
Hibernate: Beispiel /2
• Deklaration der Abbildung in einer XML-Mapping-Datei
• Abbildungsvorschrift wird zur Systemlaufzeit interpretiert
<hibernate-mapping><class name="Wein" table="WEINE">
<id name="id"><generator class="native" />
</id><property name="name" /><property name="farbe" /><property name="jahr" column="jahrgang"/><property name="weingut" />
</class></hibernate-mapping>
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–31
Hibernate: Beispiel /2
• Deklaration der Abbildung in einer XML-Mapping-Datei• Abbildungsvorschrift wird zur Systemlaufzeit interpretiert
<hibernate-mapping><class name="Wein" table="WEINE">
<id name="id"><generator class="native" />
</id><property name="name" /><property name="farbe" /><property name="jahr" column="jahrgang"/><property name="weingut" />
</class></hibernate-mapping>
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–31
Hibernate: Beispiel /2
• Deklaration der Abbildung in einer XML-Mapping-Datei• Abbildungsvorschrift wird zur Systemlaufzeit interpretiert
<hibernate-mapping><class name="Wein" table="WEINE">
<id name="id"><generator class="native" />
</id><property name="name" /><property name="farbe" /><property name="jahr" column="jahrgang"/><property name="weingut" />
</class></hibernate-mapping>
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–31
Hibernate: Beispiel /2
• Deklaration der Abbildung in einer XML-Mapping-Datei• Abbildungsvorschrift wird zur Systemlaufzeit interpretiert
<hibernate-mapping><class name="Wein" table="WEINE">
<id name="id"><generator class="native" />
</id><property name="name" /><property name="farbe" /><property name="jahr" column="jahrgang"/><property name="weingut" />
</class></hibernate-mapping>
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–31
Hibernate: Objekterzeugung
Transaction tx = null;
Wein wein = new Wein();wein.setName("Pinot Noir");wein.setFarbe("Rot");wein.setJahr(1999);wein.setWeingut("Helena");
try tx = session.beginTransaction();session.save(wein);tx.commit();
catch (HibernateException exc) if (tx != null) tx.rollback();
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–32
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL
• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Hibernate: Anfragen
• Anfragen über Hibernate-eigene Anfragesprache HQL• Formulierung auf dem konzeptuellen Schema(Java-Klassen)
• Select-Klausel nicht benötigt (Ergebnisse sind immerObjekte)
• Beispiel
Query query =session.createQuery("from Wein where Farbe = 'Rot'");
Iterator iter = query.iterate();while (iter.hasNext())
Wein wein = (Wein) iter.next();…
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–33
Prozedurale SQL-Erweiterungen:SQL/PSM
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen
• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen
• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen
• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)
• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.
• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
SQL/PSM: Der Standard
• SQL-Standard für prozedurale Erweiterungen• PSM: Persistent Stored Modules
• gespeicherte Module aus Prozeduren und Funktionen• Einzelroutinen• Einbindung externer Routinen (implementiert in C, Java, …)• syntaktische Konstrukte für Schleifen, Bedingungen etc.• Basis für Methodenimplementierung für objektrelationaleKonzepte
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–34
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel
• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich
• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
Vorteile gespeicherter Prozeduren
• bewährtes Strukturierungsmittel• Angabe der Funktionen und Prozeduren erfolgt in derDatenbanksprache selbst; daher nur vom DBMS abhängig
• Optimierung durch DBMS möglich• Ausführung der Prozeduren erfolgt vollständig unterKontrolle des DBMS
• zentrale Kontrolle der Prozeduren ermöglicht eineredundanzfreie Darstellung relevanter Aspekte derAnwendungsfunktionalität
• Konzepte und Mechanismen der Rechtevergabe des DBMSkönnen auf Prozeduren erweitert werden
• Prozeduren können in der Integritätssicherung verwendetwerden (etwa als Aktionsteil von Triggern)
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–35
SQL/PSM: Variablendeklaration
• Variablen vor Gebrauch deklarieren
• Angabe von Bezeichner und Datentyp• optional mit Initialwert
declare Preis float;declare Name varchar(50);declare Menge int default 0;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–36
SQL/PSM: Variablendeklaration
• Variablen vor Gebrauch deklarieren• Angabe von Bezeichner und Datentyp
• optional mit Initialwert
declare Preis float;declare Name varchar(50);declare Menge int default 0;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–36
SQL/PSM: Variablendeklaration
• Variablen vor Gebrauch deklarieren• Angabe von Bezeichner und Datentyp• optional mit Initialwert
declare Preis float;declare Name varchar(50);declare Menge int default 0;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–36
SQL/PSM: Ablaufkontrolle
• Zuweisung
set var = 42;
• Bedingte Verzweigungen
if Bedingung then Anweisungen[ else Anweisungen ] end if;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–37
SQL/PSM: Ablaufkontrolle
• Zuweisung
set var = 42;
• Bedingte Verzweigungen
if Bedingung then Anweisungen[ else Anweisungen ] end if;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–37
SQL/PSM: Ablaufkontrolle /2
• Schleifenloop Anweisungen end loop;while Bedingung do
Anweisungen end while;repeat Anweisungen
until Bedingung end repeat;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–38
SQL/PSM: Ablaufkontrolle /3
• Schleifen mit Cursorfor SchleifenVariable as CursorName cursor for
CursorDeklarationdo
Anweisungenend for;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–39
SQL/PSM: Ablaufkontrolle /4
declare wliste varchar(500) default ' ';declare pos integer default 0;
for w as WeinCurs cursor forselect Name from WEINE where Weingut = 'Helena'
doif pos > 0 then
set wliste = wliste || ',' || w.Name;else
set wliste = w.Name;end if;set pos = pos + 1;
end for;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–40
SQL/PSM: Ausnahmebehandlung
• Auslösen einer Ausnahme (Condition)signal ConditionName;
• Deklarieren von Ausnahmendeclare fehlendes_weingut condition;declare ungueltige_region
condition for sqlstate value '40123';
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–41
SQL/PSM: Ausnahmebehandlung
• Auslösen einer Ausnahme (Condition)signal ConditionName;
• Deklarieren von Ausnahmendeclare fehlendes_weingut condition;declare ungueltige_region
condition for sqlstate value '40123';
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–41
SQL/PSM: Ausnahmebehandlung /2
• Ausnahmebehandlung
begindeclare exit handler for ConditionNamebegin
-- Anweisungen zur Ausnahmebehandlungend-- Anweisungen, die Ausnahmen auslösen können
end
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–42
SQL/PSM: Funktionen
• Funktionsdefinitioncreate function geschmack (rz int)
returns varchar(20)begin
return casewhen rz <= 9 then 'Trocken'when rz > 9 and rz <= 18 then 'Halbtrocken'when rz > 18 and rz <= 45 then 'Lieblich'else 'Süß'
endend
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–43
SQL/PSM: Funktionen /2
• Aufruf innerhalb einer Anfrage
select Name, Weingut, geschmack(Restzucker)from WEINEwhere Farbe = 'Rot' and
geschmack(Restzucker) = 'Trocken'
• Nutzung außerhalb von Anfragen
set wein_geschmack = geschmack (12);
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–44
SQL/PSM: Funktionen /2
• Aufruf innerhalb einer Anfrage
select Name, Weingut, geschmack(Restzucker)from WEINEwhere Farbe = 'Rot' and
geschmack(Restzucker) = 'Trocken'
• Nutzung außerhalb von Anfragen
set wein_geschmack = geschmack (12);
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–44
SQL/PSM: Prozeduren
• Prozedurdefinitioncreate procedure weinliste (in erz varchar(30),
out wliste varchar(500))begin
declare pos integer default 0;
for w as WeinCurs cursor forselect Name from WEINE where Weingut = erz
do-- siehe Beispiel von Folie 12-40
end for;end; end;
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–45
SQL/PSM: Prozeduren /2
• Nutzung über call-Anweisungdeclare wliste varchar(500);call weinliste ('Helena', wliste);
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–46
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen
• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
SQL/PSM: Zugriffscharakteristik
• Eigenschaften von Prozeduren, die Anfrageausführungund -optimierung beeinflussen
• deterministic: Routine liefert für gleiche Parametergleiche Ergebnisse
• no sql: Routine enthält keine SQL-Anweisungen• contains sql:Routine enthält SQL-Anweisungen(Standard für SQL-Routinen)
• reads sql data: Routine führt SQL-Anfragen(select-Anweisungen) aus
• modifies sql data: Routine, die DML-Anweisungen(insert, update, delete) enthält
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–47
Zusammenfassung
• Verbindung zwischen SQL und imperativen Sprachen• Call-Level-Schnittstelle vs. Embedded SQL• objektrelationales Mapping• SQL/PSM: imperative Erweiterungen von SQL→Implementierung von Funktionen und Prozeduren
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–48
Kontrollfragen
• Welche Konzepte gibt es, um aufSQL-Datenbanken zuzugreifen?
• Was sind die Vor- und Nachteile vonCall-Level-Schnittstellen wie JDBC imVergleich zur Einbettung von SQL?
• Wie lassen sich Anwendungsobjekte aufSQL-Tabellen abbilden? Welche Aufgabenbestehen dabei?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–49
Kontrollfragen
• Welche Konzepte gibt es, um aufSQL-Datenbanken zuzugreifen?
• Was sind die Vor- und Nachteile vonCall-Level-Schnittstellen wie JDBC imVergleich zur Einbettung von SQL?
• Wie lassen sich Anwendungsobjekte aufSQL-Tabellen abbilden? Welche Aufgabenbestehen dabei?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–49
Kontrollfragen
• Welche Konzepte gibt es, um aufSQL-Datenbanken zuzugreifen?
• Was sind die Vor- und Nachteile vonCall-Level-Schnittstellen wie JDBC imVergleich zur Einbettung von SQL?
• Wie lassen sich Anwendungsobjekte aufSQL-Tabellen abbilden? Welche Aufgabenbestehen dabei?
Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–49