1515
VL Datenbanksysteme Wintersemester 2019/2020 Prof. Dr.-Ing. Kai-Uwe Sattler 1 Prof. Dr. Gunter Saake 2 Letzte Änderung: Okt. 2018 1 TU Ilmenau FG Datenbanken & Informationssysteme 2 Universität Magdeburg Institut für Technische & Betriebliche Informationssysteme Sattler/Saake | VL Datenbanksysteme | 22. September 2019 0–1

VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 2: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 3: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 4: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 5: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 6: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 7: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 8: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 9: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 10: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 11: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 12: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 13: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 14: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 15: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil I

Was sind Datenbanken?

Page 16: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Was sind Datenbanken?

1. Überblick & Motivation

2. Architekturen

3. Einsatzgebiete

4. Historisches

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1

Page 17: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Was sind Datenbanken?

1. Überblick & Motivation

2. Architekturen

3. Einsatzgebiete

4. Historisches

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1

Page 18: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Was sind Datenbanken?

1. Überblick & Motivation

2. Architekturen

3. Einsatzgebiete

4. Historisches

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1

Page 19: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Was sind Datenbanken?

1. Überblick & Motivation

2. Architekturen

3. Einsatzgebiete

4. Historisches

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–1

Page 20: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Lernziele für heute …

• Motivation für den Einsatz vonDatenbanksystemen

• Kenntnis grundlegender Architekturen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–2

Page 21: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Lernziele für heute …

• Motivation für den Einsatz vonDatenbanksystemen

• Kenntnis grundlegender Architekturen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–2

Page 22: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Überblick & Motivation

Page 23: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 24: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Anwendungsbeispiele

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–4

Page 25: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 26: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 27: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 28: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 29: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 30: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 31: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 32: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Motivation

• Datenbank-systeme sindHerzstück heutigerIT-Infrastrukturen

• …allgegenwärtig

• Datenbank-spezialisten sindgefragt

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–9

Page 33: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Motivation

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–10

Page 34: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 35: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Architekturen

Page 36: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 37: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 38: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 39: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 40: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Schemaarchitektur /3

Konzeptuelles Schema

externesSchema 1

externesSchema N

internesSchema

...

Anfragebearbeitung

Datendarstellung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 1–16

Page 41: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 42: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 43: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 44: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 45: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 46: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 47: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 48: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 49: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 50: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 51: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 52: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 53: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 54: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 55: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Einsatzgebiete

Page 56: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 57: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 58: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 59: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Historisches

Page 60: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 61: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 62: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 63: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 64: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 65: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 66: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 67: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 68: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 69: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 70: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 71: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil II

Relationale Datenbanken – Daten alsTabellen

Page 72: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 73: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 74: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 75: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 76: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 77: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 78: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 79: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 80: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 81: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationen für tabellarische Daten

Page 82: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 83: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 84: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 85: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 86: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 87: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 88: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 89: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 90: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 91: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 92: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 93: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 94: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 95: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 96: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 97: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 98: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 99: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 100: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

SQL-Datendefinition

Page 101: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 102: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 103: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 104: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 105: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 106: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 107: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 108: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 109: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 110: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 111: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Grundoperationen: DieRelationenalgebra

Page 112: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 113: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 114: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 115: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 116: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 117: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 118: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 119: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 120: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 121: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 122: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 123: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 124: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 125: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 126: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 127: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 128: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 129: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 130: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 131: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 132: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 133: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 134: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

SQL als Anfragesprache

Page 135: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 136: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 137: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 138: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 139: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 140: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 141: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 142: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 143: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 144: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 145: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 146: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 147: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 148: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 149: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 150: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Änderungsoperationen in SQL

Page 151: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 152: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 153: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 154: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 155: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Die update-Anweisung

• Syntax:

update basisrelationset attribut1 = ausdruck1

…attributn = ausdruckn[ where bedingung ]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–31

Page 156: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 157: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 158: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 159: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 160: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 161: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 162: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 163: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 164: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 165: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 166: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 167: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 168: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 169: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 170: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 171: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 172: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 173: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 174: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 175: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 176: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 177: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Anwendungsbeispiel

Page 178: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 179: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 180: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 181: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Mitfahrzentrale: Datenbank

AngebotIDVonNachDatumAnzahl PlätzePreisFahrer

Mitfahrangebot

NameKontakt

Nutzer

MitfahrangebotMitfahrer

Reservierung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 2–42

Page 182: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 183: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 184: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 185: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 186: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 187: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 188: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 189: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 190: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 191: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 192: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 193: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil III

Entity-Relationship-Modell

Page 194: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Entity-Relationship-Modell

1. Datenbankmodelle

2. ER-Modell

3. Weitere Konzepte im ER-Modell

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1

Page 195: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Entity-Relationship-Modell

1. Datenbankmodelle

2. ER-Modell

3. Weitere Konzepte im ER-Modell

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1

Page 196: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Entity-Relationship-Modell

1. Datenbankmodelle

2. ER-Modell

3. Weitere Konzepte im ER-Modell

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–1

Page 197: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 198: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 199: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Datenbankmodelle

Page 200: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 201: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 202: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 203: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 204: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 205: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 206: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 207: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

ER-Modell

Page 208: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 209: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 210: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 211: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 212: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 213: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 214: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 215: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 216: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 217: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 218: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 219: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 220: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 221: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 222: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 223: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 224: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 225: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 226: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zwei- vs. mehrstellige Beziehungen

Weinempfiehlt

Gericht

Kritiker

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–20

Page 227: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zwei- vs. mehrstellige Beziehungen

Weinempfiehlt

Gericht

Kritiker

WeinG-K

Gericht

Kritiker

G-W

K-W

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–20

Page 228: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ausprägungen im Beispiel

Gericht

Kritiker

Wein

g1

g2

w1

w2

k1 k2

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–21

Page 229: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 230: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 231: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 232: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 233: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 234: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 235: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 236: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 237: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 238: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

1:1-Beziehung

Erzeuger besitzt Lizenz

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–26

Page 239: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

M:N-Beziehungen

• keine Restriktionen• Beispiel: Bestellung umfasst Produkte

E1 E2

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–27

Page 240: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

[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

Page 241: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

[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

Page 242: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 243: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 244: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Alternative Kardinalitätsangabe

geliefert vonProdukt Lieferant

[1,1] [0,*]

geliefert vonProdukt Lieferant

N 1

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–32

Page 245: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Weitere Konzepte im ER-Modell

Page 246: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 247: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 248: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 249: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 250: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 251: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 252: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Alternative Notation für ist-Beziehung

WeinSchaumwein

Name FarbeHerstellung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–39

Page 253: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 254: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Optionalität von Attributen

Anbaugebietsitzt inErzeuger

Weingut AdresseName

RegionLand

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 3–41

Page 255: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 256: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 257: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 258: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 259: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 260: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 261: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 262: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 263: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 264: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 265: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil IV

Datenbankentwurf

Page 266: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 267: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 268: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 269: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 270: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 271: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 272: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Phasen des Datenbankentwurfs

Page 273: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 274: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 275: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 276: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 277: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 278: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 279: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Phasenmodell

Anforderungsanalyse

KonzeptionellerEntwurf

Verteilungsentwurf

Logischer Entwurf

Datendefinition

Physischer Entwurf

Implementierung &Wartung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–4

Page 280: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 281: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 282: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 283: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 284: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 285: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 286: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 287: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 288: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 289: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 290: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 291: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 292: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 293: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 294: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 295: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Phasen des konzeptionellen Entwurf

Sichtenentwurf

Sichtenanalyse

Sichtenintegration

konzeptioneller Entwurf

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–7

Page 296: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Weiteres Vorgehen beim Entwurf

Page 297: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 298: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 299: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 300: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 301: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 302: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 303: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 304: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 305: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 306: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 307: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 308: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 309: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 310: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 311: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 312: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 313: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 314: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 315: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 316: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 317: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 318: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 319: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 320: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 321: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 322: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 323: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 324: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 325: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 326: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 327: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 328: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Kapazitätserhaltende Abbildungen

Page 329: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 330: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 331: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 332: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 333: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 334: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 335: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 336: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 337: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 338: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 339: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 340: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 341: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 342: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 343: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 344: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 345: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 346: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 347: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

ER-auf-RM-Abbildung

Page 348: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 349: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 350: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 351: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 352: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 353: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 354: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 355: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 356: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 357: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 358: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 359: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 360: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 361: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 362: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 363: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 364: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 365: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 366: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 367: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 368: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 369: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 370: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 371: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 372: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 373: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 374: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 375: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 376: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 377: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 378: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 379: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 380: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 381: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 382: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 383: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Rekursive Beziehungen

Anbaugebiet grenzt-an

nachName

Regionvon

• Umsetzung1. ANBAUGEBIET = Name,Region2. GRENZT_AN = nach,von

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–35

Page 384: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 385: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 386: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 387: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Mehrstellige Beziehungen

Weinempfiehlt

Gericht

Kritiker

WName

Restsüße

Farbe

Jahrgang

Bezeichnung Beilage

Name Organisation

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 4–37

Page 388: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 389: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 390: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 391: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 392: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 393: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 394: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 395: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 396: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 397: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 398: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 399: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 400: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 401: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 402: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 403: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 404: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 405: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 406: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil V

Relationaler Entwurf

Page 407: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 408: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 409: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 410: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 411: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 412: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 413: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 414: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 415: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zielmodell des logischen Entwurfs

Page 416: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 417: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 418: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 419: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 420: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 421: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 422: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 423: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 424: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 425: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 426: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 427: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 428: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 429: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 430: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationaler DB-Entwurf

Page 431: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 432: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 433: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 434: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 435: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 436: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 437: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 438: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 439: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 440: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 441: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 442: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 443: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 444: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 445: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 446: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 447: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 448: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 449: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 450: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 451: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 452: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Normalformen

Page 453: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 454: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 455: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 456: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 457: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 458: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 459: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 460: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 461: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 462: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 463: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 464: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 465: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 466: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 467: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 468: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 469: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 470: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 471: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zweite Normalform

Zweite NormalformZweite Normalform eliminiert derartige partielleAbhängigkeiten bei Nichtschlüsselattributen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–22

Page 472: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Eliminierung partieller Abhängigkeiten

Schlüssel K

abhängigesAttribut ATeil des

Schlüssels XSattler/Saake | VL Datenbanksysteme | 22. September 2019 5–23

Page 473: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 474: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 475: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 476: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 477: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Eliminierung transitiver Abhängigkeiten

Schlüssel K

abhängigesAttribut AAttributmenge X

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 5–26

Page 478: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 479: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 480: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 481: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 482: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 483: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 484: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 485: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 486: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 487: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 488: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 489: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 490: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 491: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Transformationseigenschaften

Page 492: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 493: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 494: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 495: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 496: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 497: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 498: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 499: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 500: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 501: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 502: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 503: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 504: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 505: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 506: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 507: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 508: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 509: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Weitere Abhängigkeiten

Page 510: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 511: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 512: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 513: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 514: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 515: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 516: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 517: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 518: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 519: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 520: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 521: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 522: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 523: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 524: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 525: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 526: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 527: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 528: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 529: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 530: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 531: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 532: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 533: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 534: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 535: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil VI

Relationale Theorie

Page 536: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationale Theorie

1. Formalisierung

2. Rechnen mit FDs

3. Mehr zu Normalformen

4. Entwurfsverfahren

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1

Page 537: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationale Theorie

1. Formalisierung

2. Rechnen mit FDs

3. Mehr zu Normalformen

4. Entwurfsverfahren

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1

Page 538: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationale Theorie

1. Formalisierung

2. Rechnen mit FDs

3. Mehr zu Normalformen

4. Entwurfsverfahren

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1

Page 539: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Relationale Theorie

1. Formalisierung

2. Rechnen mit FDs

3. Mehr zu Normalformen

4. Entwurfsverfahren

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–1

Page 540: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 541: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 542: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 543: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Formalisierung

Page 544: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 545: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 546: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 547: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Rechnen mit FDs

Page 548: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 549: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 550: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 551: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 552: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 553: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 554: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 555: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 556: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 557: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 558: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 559: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 560: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 561: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 562: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 563: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 564: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 565: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 566: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Mehr zu Normalformen

Page 567: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 568: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 569: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 570: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 571: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Entwurfsverfahren

Page 572: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 573: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 574: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 575: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 576: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 577: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 578: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 579: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 580: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 581: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 582: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 583: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 584: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 585: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zusammenfassung

• Formalisierung des Relationenmodells und derfunktionalen Abhängigkeiten

• Algorithmen zur Normalisierung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 6–39

Page 586: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 587: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil VII

Die relationale Anfragesprache SQL

Page 588: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 589: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 590: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 591: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 592: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 593: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 594: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 595: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Aufbau von SQL-Anfragen

Page 596: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 597: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 598: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 599: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 600: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 601: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 602: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 603: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 604: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Die select-Klausel

• Festlegung der Projektionsattribute

select [distinct] projektionslistefrom …

• mitprojektionsliste := attribut |

arithmetischer-ausdruck |aggregat-funktion [, …]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–5

Page 605: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 606: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Die select-Klausel

• Festlegung der Projektionsattribute

select [distinct] projektionslistefrom …

• mitprojektionsliste := attribut |

arithmetischer-ausdruck |aggregat-funktion [, …]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–5

Page 607: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 608: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 609: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 610: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 611: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 612: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 613: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 614: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 615: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 616: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 617: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 618: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 619: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 620: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Verbunde

Page 621: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 622: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 623: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 624: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 625: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 626: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 627: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 628: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 629: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 630: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 631: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 632: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 633: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 634: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 635: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 636: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 637: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 638: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 639: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 640: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 641: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 642: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 643: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Selektionen

Page 644: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 645: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 646: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 647: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 648: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 649: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Mengenoperationen

Page 650: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 651: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 652: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 653: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 654: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 655: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Geschachtelte Anfragen /1

Page 656: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 657: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 658: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 659: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 660: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 661: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 662: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 663: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 664: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 665: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 666: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 667: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 668: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 669: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 670: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 671: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 672: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Erweiterungen des SFW-Blocks

Page 673: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 674: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Skalare Ausdrücke

Page 675: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 676: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 677: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 678: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 679: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 680: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 681: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 682: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Geschachtelte Anfragen /2

Page 683: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 684: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 685: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 686: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 687: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 688: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 689: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 690: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 691: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Aggregatfunktionen undGruppierungen

Page 692: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 693: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 694: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 695: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 696: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Aggregatfunktionen - Beispiele

• Anzahl der Weine:select count(*) as Anzahlfrom WEINE

ergibtAnzahl7

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–56

Page 697: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 698: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 699: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 700: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

group by und having

• Notation

select …from …[where …][group by attributliste ][having bedingung ]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–60

Page 701: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 702: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 703: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 704: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 705: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 706: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 707: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 708: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 709: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Äußere Verbunde

Page 710: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 711: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 712: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 713: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 714: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sortierung

Page 715: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 716: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 717: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 718: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 719: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Nullwerte

Page 720: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 721: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 722: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 723: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 724: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 725: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 726: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 727: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 728: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Rekursion

Page 729: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 730: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 731: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 732: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 733: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 734: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 735: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 736: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 737: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 738: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 739: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 740: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 741: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 742: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 743: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 744: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 745: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 746: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 747: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 748: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 749: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 750: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Zusammenfassung

• SQL als Standardsprache• SQL-Kern mit Bezug zur Relationenalgebra• Erweiterungen: Gruppierung, Rekursion etc.

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 7–95

Page 751: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 752: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 753: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 754: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 755: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil VIII

Grundlagen von Anfragen: Algebra &Kalkül

Page 756: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 757: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 758: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 759: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 760: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 761: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 762: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 763: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 764: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 765: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Kriterien für Anfragesprachen

Page 766: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 767: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 768: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 769: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 770: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 771: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 772: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 773: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 774: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 775: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 776: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 777: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 778: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 779: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 780: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 781: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 782: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 783: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 784: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 785: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 786: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Anfragealgebren

Page 787: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 788: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 789: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 790: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 791: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 792: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 793: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 794: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 795: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 796: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Projektion: Beispiel

πRegion(ERZEUGER)

RegionSüdaustralienKalifornienBordeauxHessen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–12

Page 797: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Projektion: Beispiel

πRegion(ERZEUGER)

RegionSüdaustralienKalifornienBordeauxHessen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–12

Page 798: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 799: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 800: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 801: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 802: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 803: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 804: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 805: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 806: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 807: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 808: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 809: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 810: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 811: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 812: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 813: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 814: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 815: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 816: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 817: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 818: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 819: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 820: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 821: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 822: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 823: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 824: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 825: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 826: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 827: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 828: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 829: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 830: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Erweiterungen derRelationenalgebra

Page 831: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Erweiterungen der Relationenalgebra

• weitere Verbundoperationen• Division• Gruppierung und geschachtelte Relationen• …

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–25

Page 832: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 833: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 834: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 835: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 836: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 837: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 838: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 839: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 840: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 841: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 842: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 843: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 844: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 845: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 846: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 847: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 848: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 849: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 850: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 851: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 852: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 853: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 854: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 855: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 856: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 857: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 858: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Anfragekalküle

Page 859: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 860: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 861: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 862: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 863: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 864: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 865: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 866: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 867: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 868: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 869: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 870: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 871: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 872: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 873: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 874: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 875: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 876: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 877: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 878: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 879: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 880: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 881: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 882: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 883: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 884: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 885: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 886: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 887: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 888: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 889: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 890: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 891: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 892: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 893: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 894: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 895: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 896: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 897: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 898: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 899: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 900: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 901: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Access: Projektion und Selektion

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–48

Page 902: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Access: Verbund

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–49

Page 903: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 904: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 905: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 906: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 907: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 908: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 909: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 910: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 911: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 912: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 913: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 914: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 915: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 916: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 917: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 918: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 919: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 920: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 921: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 922: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 923: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 924: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 925: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 926: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 927: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichere Anfragen im Überblick

syntaktisch sichere Anfragen

sichere Anfragen

Anfragen

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 8–57

Page 928: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Beispiele für Bereichskalkül

Page 929: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 930: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 931: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 932: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 933: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 934: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 935: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 936: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 937: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 938: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 939: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 940: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 941: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 942: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 943: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 944: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Eigenschaften des Bereichskalküls

Page 945: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 946: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 947: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 948: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 949: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 950: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 951: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 952: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 953: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 954: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 955: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 956: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil IX

Transaktionen, Integrität und Trigger

Page 957: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 958: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 959: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 960: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 961: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 962: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 963: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 964: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 965: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 966: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Grundbegriffe

Page 967: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 968: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 969: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 970: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 971: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 972: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Klassifikation von Integrität

Bedingungsklasse zeitlicher Kontextstatisch Datenbankzustanddynamisch transitional Zustandsübergang

temporal Zustandsfolge

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–4

Page 973: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 974: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 975: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 976: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 977: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 978: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 979: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 980: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Transaktionsbegriff

Page 981: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 982: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 983: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 984: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 985: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 986: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 987: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 988: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 989: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 990: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 991: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 992: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 993: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 994: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 995: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 996: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 997: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 998: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 999: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1000: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1001: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Transaktion: Verhalten bei Systemabsturz

1T

2T

3T

4T

5T

tZeit

Fehler

f

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 9–11

Page 1002: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1003: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1004: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1005: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1006: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1007: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1008: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1009: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1010: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1011: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1012: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1013: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1014: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1015: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1016: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1017: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1018: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1019: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1020: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1021: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1022: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Transaktionen in SQL

Page 1023: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1024: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1025: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1026: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1027: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1028: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1029: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1030: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1031: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1032: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1033: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1034: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1035: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1036: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1037: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1038: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1039: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1040: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1041: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1042: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1043: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1044: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1045: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1046: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1047: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1048: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1049: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1050: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1051: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Integritätsbedingungen in SQL

Page 1052: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1053: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1054: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1055: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1056: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1057: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1058: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1059: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1060: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1061: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1062: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1063: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1064: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1065: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1066: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1067: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1068: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1069: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1070: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1071: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1072: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ü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

Page 1073: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1074: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1075: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1076: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Trigger

Page 1077: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1078: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1079: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1080: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1081: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1082: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1083: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1084: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1085: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1086: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1087: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1088: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1089: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1090: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1091: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1092: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1093: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1094: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1095: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1096: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1097: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1098: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1099: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1100: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1101: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1102: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1103: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1104: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1105: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1106: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1107: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1108: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1109: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1110: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1111: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1112: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1113: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1114: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1115: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1116: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1117: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1118: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Schemaevolution

Page 1119: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1120: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1121: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1122: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1123: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1124: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1125: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1126: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1127: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1128: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1129: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1130: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1131: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1132: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1133: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1134: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1135: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1136: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1137: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1138: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Ä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

Page 1139: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1140: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1141: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1142: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1143: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil X

Sichten und Zugriffskontrolle

Page 1144: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichten und Zugriffskontrolle

1. Sichtenkonzept

2. Änderungen auf Sichten

3. Rechtevergabe

4. Privacy-Aspekte

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1

Page 1145: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichten und Zugriffskontrolle

1. Sichtenkonzept

2. Änderungen auf Sichten

3. Rechtevergabe

4. Privacy-Aspekte

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1

Page 1146: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichten und Zugriffskontrolle

1. Sichtenkonzept

2. Änderungen auf Sichten

3. Rechtevergabe

4. Privacy-Aspekte

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1

Page 1147: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichten und Zugriffskontrolle

1. Sichtenkonzept

2. Änderungen auf Sichten

3. Rechtevergabe

4. Privacy-Aspekte

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–1

Page 1148: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1149: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1150: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1151: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1152: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Sichtenkonzept

Page 1153: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1154: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1155: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1156: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1157: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1158: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1159: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1160: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1161: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1162: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1163: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1164: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1165: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1166: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Drei-Ebenen-Schema-Architektur

Konzeptuelles Schema

externesSchema 1

externesSchema N

internesSchema

...

Anfragebearbeitung

Datendarstellung

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–5

Page 1167: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Definition von Sichten in SQL

create view SichtName [ SchemaDeklaration ]as SQLAnfrage[ with check option ]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–6

Page 1168: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1169: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1170: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Änderungen auf Sichten

Page 1171: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1172: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1173: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1174: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1175: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1176: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1177: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1178: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1179: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1180: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Kontrolle der Tupelmigration

create view WJ asselect WeinID, Jahrgangfrom WEINEwhere Jahrgang > 2000with check option

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–13

Page 1181: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1182: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1183: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1184: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1185: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1186: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1187: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1188: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1189: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1190: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1191: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1192: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1193: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1194: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1195: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1196: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1197: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1198: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1199: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1200: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1201: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1202: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1203: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1204: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1205: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1206: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1207: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1208: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1209: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1210: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1211: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1212: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1213: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1214: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1215: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1216: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1217: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Rechtevergabe

Page 1218: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1219: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1220: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1221: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1222: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Rechtevergabe in SQL

grant Rechteon Tabelleto BenutzerListe[with grant option]

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 10–25

Page 1223: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1224: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1225: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1226: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1227: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1228: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1229: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1230: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Privacy-Aspekte

Page 1231: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1232: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1233: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1234: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1235: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1236: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1237: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1238: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1239: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1240: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1241: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1242: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1243: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1244: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1245: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1246: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1247: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1248: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1249: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1250: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1251: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1252: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1253: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1254: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1255: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1256: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1257: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1258: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1259: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1260: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1261: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1262: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1263: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1264: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1265: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1266: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1267: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1268: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1269: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1270: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1271: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1272: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1273: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1274: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1275: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1276: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1277: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1278: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil XI

NoSQL

Page 1279: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1280: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1281: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1282: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1283: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1284: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Motivation für NoSQL

Page 1285: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1286: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1287: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1288: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Datenmodelle für NoSQL

Page 1289: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Datenmodelle für NoSQL

• KV-Stores• Wide Column Stores• Dokumenten-orientierte Datenhaltung• Graph-Speicher• ....

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–5

Page 1290: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1291: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

KV-Stores und Wide Column

Page 1292: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1293: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1294: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Beispielsysteme für KV-Stores

• Amazon DynamoDB• Riak

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–9

Page 1295: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1296: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1297: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1298: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1299: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1300: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Document Stores

Page 1301: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1302: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1303: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1304: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Beispielsysteme für dokumentenorientierte Speicherung

• MongoDB• CouchDB

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 11–18

Page 1305: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Graph Stores

Page 1306: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1307: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1308: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1309: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1310: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1311: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1312: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1313: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1314: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1315: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1316: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1317: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1318: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1319: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1320: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1321: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1322: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1323: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1324: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1325: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1326: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1327: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1328: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1329: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1330: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1331: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1332: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1333: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1334: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1335: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1336: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Teil XII

Anwendungsprogrammierung

Page 1337: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1338: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1339: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1340: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1341: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1342: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1343: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1344: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1345: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1346: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1347: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Programmiersprachenanbindung

Page 1348: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1349: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1350: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1351: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1352: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1353: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1354: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1355: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1356: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1357: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Cursor-Konzept

• Cursor: Iterator über Liste von Tupeln (Anfrageergebnis)

Relation

Cursor

Anwendungsprogramm Datenbank

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–4

Page 1358: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

JDBC

Page 1359: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1360: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1361: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1362: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1363: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1364: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1365: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1366: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1367: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1368: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

JDBC: Struktur

DriverManager Connection

StatementStatement

ResultSet ResultSet

getConnection

createStatement

executeQuery

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–6

Page 1369: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1370: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1371: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1372: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1373: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1374: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1375: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1376: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1377: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1378: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1379: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1380: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1381: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1382: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1383: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1384: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1385: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1386: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1387: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1388: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1389: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1390: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1391: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1392: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1393: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1394: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1395: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1396: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1397: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1398: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1399: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1400: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1401: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

SQLJ

Page 1402: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1403: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1404: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1405: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1406: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1407: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1408: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1409: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1410: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1411: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1412: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1413: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1414: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1415: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1416: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1417: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1418: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1419: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1420: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1421: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1422: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1423: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1424: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

LINQ

Page 1425: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1426: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1427: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1428: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Objekt-relationales Mapping

Page 1429: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1430: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1431: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1432: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1433: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1434: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1435: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1436: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1437: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1438: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1439: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Objekt-relationales Mapping: Prinzip

Laufzeitsystem

Applikation

Anwendungs-objekte

Objekt-modell

Datenbank-schema

Abbildungs-vorschrift

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–23

Page 1440: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1441: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1442: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1443: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1444: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1445: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1446: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1447: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1448: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1449: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1450: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1451: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1452: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1453: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1454: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1455: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1456: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1457: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1458: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1459: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1460: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1461: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1462: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1463: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1464: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1465: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1466: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1467: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1468: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1469: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1470: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1471: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1472: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1473: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1474: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1475: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

Prozedurale SQL-Erweiterungen:SQL/PSM

Page 1476: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1477: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1478: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1479: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1480: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1481: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1482: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1483: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1484: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1485: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1486: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1487: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1488: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1489: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1490: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1491: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1492: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1493: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1494: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1495: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1496: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

SQL/PSM: Ablaufkontrolle /3

• Schleifen mit Cursorfor SchleifenVariable as CursorName cursor for

CursorDeklarationdo

Anweisungenend for;

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–39

Page 1497: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1498: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1499: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1500: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1501: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1502: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1503: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1504: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1505: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

SQL/PSM: Prozeduren /2

• Nutzung über call-Anweisungdeclare wliste varchar(500);call weinliste ('Helena', wliste);

Sattler/Saake | VL Datenbanksysteme | 22. September 2019 12–46

Page 1506: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1507: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1508: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1509: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1510: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1511: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1512: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1513: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1514: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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

Page 1515: VL Datenbanksysteme - Wintersemester 2019/2020 · 2019-09-22 · Ebenen-ArchitekturamBeispiel • KonzeptuelleSicht:DarstellunginTabellen(Relationen) Fahrer FahrerID Name Telefon

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