Datenbanktheorie Sommersemester 2012 - Thomas Schwentick Teil A: Einleitung 1: Grundbegriffe Version von: 4. April 2012 (11:49) Inhalt 1.1 Das relationale Datenmodell 1.2 Anfragen an relationale Datenbanken DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 1 Relationales Modell: Tabellen • Grundidee des relationalen Datenmodells: ◮ Daten werden in Tabellen organisiert ◮ Einfache Operationen für Tabellen: Zeilen einer Tabelle auswählen Spalten einer Tabelle auswählen Tabellen kombinieren DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 2 Relationales Modell: Tabellen • Grundidee des relationalen Datenmodells: ◮ Daten werden in Tabellen organisiert ◮ Einfache Operationen für Tabellen: Zeilen einer Tabelle auswählen Spalten einer Tabelle auswählen Tabellen kombinieren Beispiel P ROFESSOREN PersNr Name Raum 201 Turing 134 212 Gödel 27 238 von Neumann 212 213 Knuth 144 211 Chomsky 312 205 Shannon 213 202 Dijkstra 321 DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 2 Relationales Modell: Tabellen • Grundidee des relationalen Datenmodells: ◮ Daten werden in Tabellen organisiert ◮ Einfache Operationen für Tabellen: Zeilen einer Tabelle auswählen Spalten einer Tabelle auswählen Tabellen kombinieren Beispiel P ROFESSOREN PersNr Name Raum 201 Turing 134 212 Gödel 27 238 von Neumann 212 213 Knuth 144 211 Chomsky 312 205 Shannon 213 202 Dijkstra 321 • Das relationale Datenmodell wurde 1970 von Codd vorgeschlagen und ist seit Ende der 80er Jahre der „Industriestandard“ DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 2 Relationales Modell: Tabellen Kurz-Bio: Edgar Codd • Grundidee des relationalen Datenmodells: ◮ Daten werden in Tabellen organisiert ◮ Einfache Operationen für Tabellen: Zeilen einer Tabelle auswählen Spalten einer Tabelle auswählen Tabellen kombinieren • Geboren: 23.8.1923, Isle of Portland (Eng• • • Beispiel • P ROFESSOREN PersNr Name Raum 201 Turing 134 212 Gödel 27 238 von Neumann 212 213 Knuth 144 211 Chomsky 312 205 Shannon 213 202 Dijkstra 321 land) Studium der Mathematik und Chemie in Oxford Ab 1948 Mathematischer Programmierer bei IBM 1970: A Relational Model of Data for Large Shared Data Banks Gestorben: 18.4.2003 • Das relationale Datenmodell wurde 1970 von Codd vorgeschlagen und ist seit Ende der 80er Jahre der „Industriestandard“ DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 2 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber aus Relationen DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 aus Relationen DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe a c d 1 1 4 z y x . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv Tabellenschema DBT / Schwentick / SoSe 12 Mathematisch Formal Relationsschema R Einleitung 1. Grundbegriffe 1 1 4 z y x Beispiel (R,{A1 ,A2 ,A3 }) . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname R name(R) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe R . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut R name(R) A DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe R A2 . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich R name(R) A Dom(A) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe R A2 Dom(A2 ) = N . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge R name(R) A Dom(A) sort(R) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge Anzahl Spalten Stelligkeit R name(R) A Dom(A) sort(R) arity(R) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } 3 . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge Anzahl Spalten Stelligkeit R name(R) A Dom(A) sort(R) arity(R) Zeile R-Tupel DBT / Schwentick / SoSe 12 R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } 3 t : sort(R) → dom t1 = {A1 7→ a, A 7→ 1, A3 7→ t(A) ∈ Dom(A) z} 2 Einleitung 1. Grundbegriffe . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge Anzahl Spalten Stelligkeit R name(R) A Dom(A) sort(R) arity(R) Zeile R-Tupel Tabelle Tupelmenge DBT / Schwentick / SoSe 12 R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } 3 t : sort(R) → dom t1 = {A1 7→ a, A 7→ 1, A3 7→ t(A) ∈ Dom(A) z} 2 R-Relation {t1 ,t2 ,t3 } Einleitung 1. Grundbegriffe . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen Intuitiv 1 1 4 z y x Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge Anzahl Spalten Stelligkeit R name(R) A Dom(A) sort(R) arity(R) Zeile R-Tupel Tabelle Tupelmenge Mögliche Tabellen Menge aller R-Relationen DBT / Schwentick / SoSe 12 R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } 3 t : sort(R) → dom t1 = {A1 7→ a, A 7→ 1, A3 7→ t(A) ∈ Dom(A) z} 2 R-Relation {t1 ,t2 ,t3 } inst(R) Einleitung 1. Grundbegriffe . Folie 3 Relationales Modell: Tabellen vs. Relationen (1/2) • Intuitiv bestehen relationale Datenbanken aus Tabellen • Aus mathematischer Sicht bestehen sie aber R A1 A2 A3 a c d aus Relationen • Notation: inst steht für „instances“ 1 1 4 z y x Dom für „domain“ Intuitiv Mathematisch Formal Beispiel Tabellenschema Relationsschema (R,{A1 ,A2 ,A3 }) Tabellenname Relationsname Spaltenüberschrift Attribut Mögliche Spaltenwerte Wertebereich Spaltenüberschriften Attributmenge Anzahl Spalten Stelligkeit R name(R) A Dom(A) sort(R) arity(R) Zeile R-Tupel Tabelle Tupelmenge Mögliche Tabellen Menge aller R-Relationen DBT / Schwentick / SoSe 12 R A2 Dom(A2 ) = N {A1 ,A2 ,A3 } 3 t : sort(R) → dom t1 = {A1 7→ a, A 7→ 1, A3 7→ t(A) ∈ Dom(A) z} 2 R-Relation {t1 ,t2 ,t3 } inst(R) Einleitung 1. Grundbegriffe . Folie 3 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an • Relationenschemata: ◮ Ein Relationenschema R = (name(R),sort(R)) besteht aus einem Relationennamen und einer Menge von Attributen DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an • Relationenschemata: ◮ Ein Relationenschema R = (name(R),sort(R)) besteht aus einem Relationennamen und einer Menge von Attributen • Datenbankschemata: ◮ Ein Datenbankschema beschreibt die ◮ Struktur einer Datenbank Ein Datenbankschema D ist (zunächst) einfach eine endliche Menge von Relationenschemata DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an • Relationenschemata: ◮ Ein Relationenschema R = (name(R),sort(R)) besteht • Relationen: ◮ Anders als die Zeilen einer Tabelle sind die Tupel einer Relation nicht geordnet! • Datenbanken: ◮ Eine Datenbank zu Schema D hat eine Relation je Relationsschema R ∈ D ◮ Eine Datenbank D zu Schema D ist formal eine Abbildung von D in die Menge der möglichen Relationen mit D(R) ∈ inst(R), für jedes R ∈ D aus einem Relationennamen und einer Menge von Attributen • Datenbankschemata: ◮ Ein Datenbankschema beschreibt die ◮ Struktur einer Datenbank Ein Datenbankschema D ist (zunächst) einfach eine endliche Menge von Relationenschemata DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an • Relationenschemata: ◮ Ein Relationenschema R = (name(R),sort(R)) besteht • Relationen: ◮ Anders als die Zeilen einer Tabelle sind die Tupel einer Relation nicht geordnet! • Datenbanken: ◮ Eine Datenbank zu Schema D hat eine Relation je Relationsschema R ∈ D ◮ Eine Datenbank D zu Schema D ist formal eine Abbildung von D in die Menge der möglichen Relationen mit D(R) ∈ inst(R), für jedes R ∈ D aus einem Relationennamen und einer Menge von Attributen • Datenbankschemata: ◮ Ein Datenbankschema beschreibt die ◮ Struktur einer Datenbank Ein Datenbankschema D ist (zunächst) einfach eine endliche Menge von Relationenschemata DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Tabellen vs. Relationen (2/2) • Attribute: ◮ Ein Attribut A hat einen Namen A und einen Wertebereich Dom(A) ◮ Wir unterscheiden (wie gerade eben) ◮ in der Notation nicht zwischen Attributen und ihren Namen Wir nehmen eine unendliche Menge att von Attributen als gegeben an • Relationenschemata: ◮ Ein Relationenschema R = (name(R),sort(R)) besteht aus einem Relationennamen und einer Menge von Attributen • Datenbankschemata: ◮ Ein Datenbankschema beschreibt die ◮ • Relationen: ◮ Anders als die Zeilen einer Tabelle sind die Tupel einer Relation nicht geordnet! • Datenbanken: ◮ Eine Datenbank zu Schema D hat eine Relation je Relationsschema R ∈ D ◮ Eine Datenbank D zu Schema D ist formal eine Abbildung von D in die Menge der möglichen Relationen mit D(R) ∈ inst(R), für jedes R ∈ D • Keine Angst: Ganz so formal wird es in dieser Vorlesung nicht bleiben ➞ Aller Anfang ist schwer ◮ Wann immer möglich, werden wir uns auf einer intuitiven Ebene bewegen... Struktur einer Datenbank Ein Datenbankschema D ist (zunächst) einfach eine endliche Menge von Relationenschemata DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 4 Relationales Modell: Notation • Um das Verständnis etwas zu erleichtern, werden gleichartige Objekte in dieser Vorlesung möglichst durch gleichartige Bezeichner benannt DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 5 Relationales Modell: Notation • Um das Verständnis etwas zu erleichtern, werden gleichartige Objekte in dieser Vorlesung möglichst durch gleichartige Bezeichner benannt • Einige allgemeine Konventionen: ◮ att: abzählbare Menge aller Attribute (geordnet) ◮ A,B,C : Attribute ◮ U,V,W : endliche Mengen von Attribu◮ ten Abkürzende Schreibweise: ABC statt {A,B,C} ◮ dom: abzählbare Menge aller Datenwerte ◮ a,b,c: Werte aus dom ◮ Dom(A): Wertebereich des Attributes A DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 5 Relationales Modell: Notation • Um das Verständnis etwas zu erleichtern, werden gleichartige Objekte in dieser Vorlesung möglichst durch gleichartige Bezeichner benannt • Einige allgemeine Konventionen: ◮ att: abzählbare Menge aller Attribute (geordnet) ◮ A,B,C : Attribute ◮ U,V,W : endliche Mengen von Attribu◮ ten Abkürzende Schreibweise: ABC statt • Weitere „statische“ Bezeichnungen: ◮ R: Relationenschema ◮ R,S : Relationsnamen ◮ sort(R), arity(R), name(R): Attributmenge, Stelligkeit und Name von R ◮ inst(R): Menge der Relationen zu Schema R ◮ D : Datenbankschema ◮ inst(D): Menge der Datenbanken zu Schema D {A,B,C} ◮ dom: abzählbare Menge aller Datenwerte ◮ a,b,c: Werte aus dom ◮ Dom(A): Wertebereich des Attributes A DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 5 Relationales Modell: Notation • Um das Verständnis etwas zu erleichtern, werden gleichartige Objekte in dieser Vorlesung möglichst durch gleichartige Bezeichner benannt • Einige allgemeine Konventionen: ◮ att: abzählbare Menge aller Attribute (geordnet) ◮ A,B,C : Attribute ◮ U,V,W : endliche Mengen von Attribu◮ ten Abkürzende Schreibweise: ABC statt {A,B,C} ◮ dom: abzählbare Menge aller Datenwerte ◮ a,b,c: Werte aus dom ◮ Dom(A): Wertebereich des Attributes A DBT / Schwentick / SoSe 12 • Weitere „statische“ Bezeichnungen: ◮ R: Relationenschema ◮ R,S : Relationsnamen ◮ sort(R), arity(R), name(R): Attributmenge, Stelligkeit und Name von R ◮ inst(R): Menge der Relationen zu Schema R ◮ D : Datenbankschema ◮ inst(D): Menge der Datenbanken zu Schema D • Weitere „dynamische“ Bezeichnungen: ◮ t,s: Tupel ◮ Abkürzung: t.A := t(A) für „Eintrag in Zeile t und Spalte A“ ◮ R,S : Relationen (aus dem Kontext klar, ◮ ◮ ob Relationenname gemeint ist) D : Datenbank RD : Relation mit Namen R in Datenbank D Einleitung 1. Grundbegriffe . Folie 5 Unsere Beispieldatenbank P ROFESSOREN PersNr Name Raum 201 Turing 134 212 Gödel 27 238 von Neumann 212 213 Knuth 144 211 Chomsky 312 205 Shannon 213 202 Dijkstra 321 S TUDIERENDE MatrNr Name Semester 21301 Wirth 6 22736 Pnueli 4 23195 Hartmanis 2 19216 Feigenbaum 12 22196 Yao 4 20894 Milner 8 23153 Blum 2 VORLESUNGEN VorlNr Titel Dozent 2002 Rechnerarchitektur 238 2003 Verteilte Systeme 202 2021 Berechenbarkeit 201 2004 Informationstheorie 205 2012 Formale Sprachen 211 2019 Logik 212 2031 Programmierung 202 2025 KI 201 2006 Linguistik 211 2005 Quantenmechanik 238 M ITARBEITER PersNr Name Gebiet Betreuer 4021 Sutherland Computergraphik 205 4033 Sedgewick Algorithmen 213 4012 Gandy Mengenlehre 201 4031 HabermannProgrammiersprachen 202 4029 Broder Web Research 213 DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe H ÖRT MatrNrVorlNr 21301 2031 23195 2025 22736 2019 19216 2021 19216 2019 23153 2012 23195 2021 22196 2004 S ETZT VORAUS VorlNrVorausNr 2025 2019 2021 2012 2003 2031 2031 2012 2003 2002 2006 2012 2012 2019 P RÜFT MatrNrVorlNrPersNrNote 21301 2031 213 1 23195 2025 201 2 20894 2003 202 1 . Folie 6 Beispieldatenbank: Schemas • DUni = {RP ROFESSOREN , RVORLESUNGEN , RH ÖRT , RS TUDIERENDE , RS ETZVORAUS , RM ITARBEITER , RP RÜFT } • sort(RVORLESUNGEN ) = {VorlNr, Titel, Dozent} • name(RVORLESUNGNEN ) = VORLESUNGEN • arity(RVORLESUNGEN ) = 3 DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 7 Inhalt 1.1 Das relationale Datenmodell 1.2 Anfragen an relationale Datenbanken DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 8 Anfragen: Beispiele (1) Welche Zimmernummer hat Turing? (2) Welcher Mitarbeiter ist auf Mengenlehre spezialisiert? (9) Welche Personen sind an Prüfungen in Programmierung beteiligt (Prüfer und Prüflinge)? (3) Welche Vorlesungen (Nr und Titel) bietet Chomsky an? (10) Wer bietet keine Vorlesungen an? (4) Gibt es eine Vorlesung über Logik? (12) Wer prüft Vorlesungen, die er nicht liest? (5) Welche zwei Professoren prüfen jeweils Vorlesungen, die der andere liest? (11) Wer bietet genau eine Vorlesung an? (13) Wer hört mehr als eine Vorlesung? (6) Je zwei Studierende, die dieselbe Vorlesung besuchen? (14) Wer wird von einem Prüfer geprüft, der keine Vorlesungen anbietet? (7) Welche Vorlesungen werden von Shannon oder Dijkstra angeboten? (15) Welche Veranstaltungen sind (direkte oder indirekt) Voraussetzung für Verteilte Systeme? (8) Welche Vorlesungen werden von Dijkstra angeboten oder geprüft? DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 9 Anfragen und Anfragefunktionen • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D R = q(D) q DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D R = q(D) q • Eine Anfrage ist die Spezifikation einer Anfragefunktion, meistens in der Form eines Strings DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen Beispiel • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D • SELECT Raum FROM P ROFESSOREN WHERE Name = „Turing“ ist eine Anfrage in SQL R = q(D) q • Eine Anfrage ist die Spezifikation einer Anfragefunktion, meistens in der Form eines Strings DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen Beispiel • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D R = q(D) • SELECT • Raum FROM P ROFESSOREN WHERE Name = „Turing“ ist eine Anfrage in SQL Die durch diese Anfrage spezifizierte Anfragefunktion ordnet jeder Datenbank mit einer Relation P ROFESSOREN die Menge der Werte der Raum-Attribute aller Tupel zu, deren Name-Attribut den Wert Turing hat... q • Eine Anfrage ist die Spezifikation einer Anfragefunktion, meistens in der Form eines Strings DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen Beispiel • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D • SELECT • R = q(D) q • Raum FROM P ROFESSOREN WHERE Name = „Turing“ ist eine Anfrage in SQL Die durch diese Anfrage spezifizierte Anfragefunktion ordnet jeder Datenbank mit einer Relation P ROFESSOREN die Menge der Werte der Raum-Attribute aller Tupel zu, deren Name-Attribut den Wert Turing hat... In unserer Beispieldatenbank ist das Anfrage-Ergebnis also {134} • Eine Anfrage ist die Spezifikation einer Anfragefunktion, meistens in der Form eines Strings DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 10 Anfragen und Anfragefunktionen Beispiel • Streng genommen müssen wir zwischen den Begriffen Anfrage und Anfragefunktion unterscheiden: ◮ Eine Anfragefunktion ordnet jeder Datenbank eine Ergebnisrelation zu ◮ Formaler: Eine Anfragefunktion ist eine Abbildung, die, für ein Datenbankschema D und ein Relationenschema R, jeder Datenbank D über D eine Relation R über R zuordnet D • SELECT • R = q(D) q • Raum FROM P ROFESSOREN WHERE Name = „Turing“ ist eine Anfrage in SQL Die durch diese Anfrage spezifizierte Anfragefunktion ordnet jeder Datenbank mit einer Relation P ROFESSOREN die Menge der Werte der Raum-Attribute aller Tupel zu, deren Name-Attribut den Wert Turing hat... In unserer Beispieldatenbank ist das Anfrage-Ergebnis also {134} • Obwohl die prinzipielle Unterscheidung zwi• Eine Anfrage ist die Spezifikation einer Anfragefunktion, meistens in der Form eines Strings DBT / Schwentick / SoSe 12 schen Anfrage und Anfragefunktion wichtig ist, werden wir sprachlich meistens von ihr absehen: ◮ Meistens verwenden wir die Bezeichnung Anfrage für beides! Einleitung 1. Grundbegriffe . Folie 10 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} • Wenn wir 134 in diesem Tupel durch 205 ersetzen, wie soll sich das Ergebnis ändern? Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} • Wenn wir 134 in diesem Tupel durch 205 ersetzen, wie soll sich das Ergebnis ändern? • Wenn wir Turing in diesem Tupel durch Kleene ersetzen, wie soll sich das Ergebnis ändern? Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} • Wenn wir 134 in diesem Tupel durch 205 ersetzen, wie soll sich das Ergebnis ändern? • Wenn wir Turing in diesem Tupel durch Kleene ersetzen, wie soll sich das Ergebnis ändern? • Was lernen wir daraus? ◮ Wenn sich die Datenwerte einer DB ändern, sollen sich die Ergebnisse einer Anfrage „entsprechend“ ändern Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} • Wenn wir 134 in diesem Tupel durch 205 ersetzen, wie soll sich das Ergebnis ändern? • Wenn wir Turing in diesem Tupel durch Kleene ersetzen, wie soll sich das Ergebnis ändern? • Was lernen wir daraus? ◮ Wenn sich die Datenwerte einer DB ändern, ◮ sollen sich die Ergebnisse einer Anfrage „entsprechend“ ändern Ausnahme: Explizite Vorkommen von Werten in der Anfrage sollen bei der Auswertung nicht als geändert interpretiert werden Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (1/2) Beispiel • Anfragefunktionen q sollen nicht irgendwelche Funktionen sein sondern die folgenden Eigenschaften haben: (a) Das Ergebnis sollte nicht von Details der Speicherung abhängen sondern nur von der logischen Sicht: ◮ q ist Funktion inst(D) → inst(R) (b) Anfragefunktionen sollten durch Computer ausgewertet werden können: ◮ q ist berechenbar (c) Das Ergebnis sollte möglichst nur von der Struktur der Datenbank abhängen, aber nicht so sehr von den einzelnen Werten: ◮ Hierzu betrachten wir zunächst ein Beispiel DBT / Schwentick / SoSe 12 • Wir betrachten noch einmal die folgende Anfrage: (1) Welche Zimmernummer hat Turing? • Wegen des Tupels h201,Turing,134i ist das Ergebnis für die Beispiel-DB {134} • Wenn wir 134 in diesem Tupel durch 205 ersetzen, wie soll sich das Ergebnis ändern? • Wenn wir Turing in diesem Tupel durch Kleene ersetzen, wie soll sich das Ergebnis ändern? • Was lernen wir daraus? ◮ Wenn sich die Datenwerte einer DB ändern, ◮ sollen sich die Ergebnisse einer Anfrage „entsprechend“ ändern Ausnahme: Explizite Vorkommen von Werten in der Anfrage sollen bei der Auswertung nicht als geändert interpretiert werden ➞ Eigenschaft (c): g ist generisch Einleitung 1. Grundbegriffe . Folie 11 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D q(D) π π π(D) q q(π(D)) = π(q(D)) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Wenn in einer Anfrage Konstanten vorkommen (wie in Anfrage (1)) ist diese Definition zu einschränkend: ◮ Permutation, die in der DB Turing verändern, wollen wir dann nicht betrachten • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D q(D) π π π(D) q q(π(D)) = π(q(D)) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Wenn in einer Anfrage Konstanten vorkommen (wie in Anfrage (1)) ist diese Definition zu einschränkend: ◮ Permutation, die in der DB Turing verändern, wollen wir dann nicht betrachten • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D Definition • Sei C ⊆ dom eine endliche Menge • Eine Anfragefunktion q heißt C -generisch, falls ◮ für jede Datenbank D und ◮ jede Permutation π von dom (mit π(x) = x für x ∈ C ) gilt: π(q(D)) = q(π(D)) q(D) π π π(D) q q(π(D)) = π(q(D)) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Wenn in einer Anfrage Konstanten vorkommen (wie in Anfrage (1)) ist diese Definition zu einschränkend: ◮ Permutation, die in der DB Turing verändern, wollen wir dann nicht betrachten • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D Definition • Sei C ⊆ dom eine endliche Menge • Eine Anfragefunktion q heißt C -generisch, falls ◮ für jede Datenbank D und ◮ jede Permutation π von dom (mit π(x) = x für x ∈ C ) gilt: π(q(D)) = q(π(D)) q(D) • Anfrage (1) ist also {Turing}-generisch π π π(D) q q(π(D)) = π(q(D)) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von Anfragefunktionen jetzt formal Definition • Wenn in einer Anfrage Konstanten vorkommen (wie in Anfrage (1)) ist diese Definition zu einschränkend: ◮ Permutation, die in der DB Turing verändern, wollen wir dann nicht betrachten • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D π π(D) • Sei C ⊆ dom eine endliche Menge • Eine Anfragefunktion q heißt C -generisch, falls ◮ für jede Datenbank D und ◮ jede Permutation π von dom (mit π(x) = x für x ∈ C ) gilt: π(q(D)) = q(π(D)) q(D) π q Definition q(π(D)) = π(q(D)) DBT / Schwentick / SoSe 12 • Anfrage (1) ist also {Turing}-generisch • Wir betrachten nur C -generische Anfragefunktionen q , wobei C jeweils die Menge derjenigen Konstanten ist, die in der Spezifikation von q explizit genannt werden Einleitung 1. Grundbegriffe . Folie 12 Anfragefunktionen: Eigenschaften (2/2) • Wir definieren Eigenschaft (c) von • Wenn in einer Anfrage Konstanten vorkommen (wie in Anfrage (1)) ist diese Definition zu einschränkend: ◮ Permutation, die in der DB Turing verändern, wollen wir dann nicht betrachten Anfragefunktionen jetzt formal Definition • Eine Anfragefunktion q heißt generisch, falls für jede Datenbank D und jede Permutation π von dom gilt: π(q(D)) = q(π(D)) • Illustration: q D π π(D) • Sei C ⊆ dom eine endliche Menge • Eine Anfragefunktion q heißt C -generisch, falls ◮ für jede Datenbank D und ◮ jede Permutation π von dom (mit π(x) = x für x ∈ C ) gilt: π(q(D)) = q(π(D)) q(D) π q Definition q(π(D)) = π(q(D)) • Anfrage (1) ist also {Turing}-generisch • Wir betrachten nur C -generische Anfragefunktionen q , wobei C jeweils die Menge derjenigen Konstanten ist, die in der Spezifikation von q explizit genannt • DBT / Schwentick / SoSe 12 werden Zur Beruhigung: Alle Anfragesprachen, die wir betrachten, können nur Anfragen beschreiben, die die Generizitäts-Eigenschaft (c) haben Einleitung 1. Grundbegriffe . Folie 12 „ja“/„nein“-Anfragen • Manche Anfragen lassen sich nur mit „ja“ oder „nein“ beantworten: ◮ Beispiel: (4) Gibt es eine Vorlesung über Logik? DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 13 „ja“/„nein“-Anfragen • Manche Anfragen lassen sich nur mit „ja“ oder „nein“ beantworten: ◮ Beispiel: (4) Gibt es eine Vorlesung über Logik? • Wie passen solche Anfragen in unseren allgemeinen Rahmen, der immer Relationen als Anfrageergebnisse vorsieht? DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 13 „ja“/„nein“-Anfragen • Manche Anfragen lassen sich nur mit „ja“ oder „nein“ beantworten: ◮ Beispiel: (4) Gibt es eine Vorlesung über Logik? • Wie passen solche Anfragen in unseren allgemeinen Rahmen, der immer Relationen als Anfrageergebnisse vorsieht? • Da „ja“/„nein“-Anfragen keine Datenwerte im Ergebnis haben, ist es nahe liegend, dass ihr Resultat 0stellige Relationen sind DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 13 „ja“/„nein“-Anfragen • Manche Anfragen lassen sich nur mit „ja“ oder „nein“ beantworten: ◮ Beispiel: (4) Gibt es eine Vorlesung über Logik? • Wie passen solche Anfragen in unseren allgemeinen Rahmen, der immer Relationen als Anfrageergebnisse vorsieht? • Da „ja“/„nein“-Anfragen keine Datenwerte im Ergebnis haben, ist es nahe liegend, dass ihr Resultat 0stellige Relationen sind • Es gibt zwei 0-stellige Relationen: {} und {hi} DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 13 „ja“/„nein“-Anfragen • Manche Anfragen lassen sich nur mit „ja“ oder „nein“ beantworten: ◮ Beispiel: (4) Gibt es eine Vorlesung über Logik? • Wie passen solche Anfragen in unseren allgemeinen Rahmen, der immer Relationen als Anfrageergebnisse vorsieht? • Da „ja“/„nein“-Anfragen keine Datenwerte im Ergebnis haben, ist es nahe liegend, dass ihr Resultat 0stellige Relationen sind • Es gibt zwei 0-stellige Relationen: {} und {hi} • Konvention: ◮ {hi} ≡ „ja“ ◮ {} ≡ „nein“ (Eine mathematische Rechtfertigung für diese Konvention werden wir noch kennen lernen) DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 13 Anfragesprachen • Dieselbe Anfragefunktion kann in verschiedenen Anfragesprachen beschrieben werden DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 14 Anfragesprachen • Dieselbe Anfragefunktion kann in verschiedenen Anfragesprachen beschrieben werden Beispiel SQL: SELECT Raum FROM P ROFESSOREN WHERE Name = „Turing“ Relationale Algebra: πRaum (σName=„Turing“ (P ROFESSOREN)) Datalog: R ESULT(x) :- P ROFESSOREN(y,„Turing“,x) Relationen-Kalkül: {(x) | ∃y P ROFESSOREN(y,„Turing“,x)} DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 14 Anfragesprachen • Dieselbe Anfragefunktion kann in verschiedenen Anfragesprachen beschrieben werden Beispiel SQL: SELECT Raum FROM P ROFESSOREN WHERE Name = „Turing“ Relationale Algebra: πRaum (σName=„Turing“ (P ROFESSOREN)) Datalog: R ESULT(x) :- P ROFESSOREN(y,„Turing“,x) Relationen-Kalkül: {(x) | ∃y P ROFESSOREN(y,„Turing“,x)} • Bemerkung: Anfragesprachen unterscheiden sich hinsichtlich ihrer Ausdrucksstärke und hinsichtlich ihrer algorithmischen Eigenschaften DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 14 Anfragesprachen • Dieselbe Anfragefunktion kann in verschiedenen Anfragesprachen beschrieben werden • Hierarchie der betrachteten Anfragesprachen: Datalog¬ Beispiel SQL: SELECT Raum FROM P ROFESSOREN WHERE Name = „Turing“ + Rekursion + Negation Datalog Relational vollständige Sprachen + Rekursion Relationale Algebra: + Negation πRaum (σName=„Turing“ (P ROFESSOREN)) Datalog: R ESULT(x) :- P ROFESSOREN(y,„Turing“,x) Relationen-Kalkül: {(x) | ∃y P ROFESSOREN(y,„Turing“,x)} • Bemerkung: Anfragesprachen unterschei- Rekursions-freies Datalog + Disjunktion Und-Anfragen den sich hinsichtlich ihrer Ausdrucksstärke und hinsichtlich ihrer algorithmischen Eigenschaften DBT / Schwentick / SoSe 12 Einleitung 1. Grundbegriffe . Folie 14