Kapitel 4: Relationen-Kalkül

Ähnliche Dokumente
Kapitel 4: Relationen-Kalkül

Grundlagen von Datenbanken

Kapitel 2: Das Relationale Modell

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

Kapitel DB:V (Fortsetzung)

Das Relationale Modell

Grundlagen von Datenbanken

Kapitel 3: Datenbanksysteme

Kapitel 3: Die Relationale Algebra

Kapitel 2: Das Relationale Modell

Kapitel DB:V (Fortsetzung)

Kapitel 3: Die Relationale Algebra

Mai Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Mathematik für Informatiker I

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

mit Musterlösungen Prof. Dr. Gerd Stumme, Dipl.-Inform. Christoph Schmitz 14. Mai 2007 σ KID= 11a (Schüler) π S Name (σ KID= 11a (Schüler))

Der relationale Tupel-Kalkül

Query Languages (QL) Relationale Abfragesprachen/Relational

Kap. 3 Relationenmodell mit relationaler Algebra

Logik I. Symbole, Terme, Formeln

Es geht also im die SQL Data Manipulation Language.

Motivation Anford. Anfrage- Kalküle Bereichskalkül. Sichere Anfragen Beispiele. Ausdrucksfähigkeit. Tupelkalkül. Motivation Anford.

Datenbanksysteme SS 2007

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Kapitel 7 Dr. Jérôme Kunegis. Logische Kalküle. WeST Web Science & Technologies

Wiederholung VU Datenmodellierung

Indexstrukturen in SQL

Kapitel 3: Datenbanksysteme

Abschnitt 3: Mathematische Grundlagen

Die Anweisung create table

3. Grundlagen relationaler Datenbanksysteme

Normalform. 2.1 Äquivalenz und Folgerung. 2.2 Die pränexe Normalform

Die Prädikatenlogik erster Stufe: Syntax und Semantik

TU7 Aussagenlogik II und Prädikatenlogik

d.h. zu Definitions-Stelle eindeutiger Funktionswert x X! y Y : (x,y) f umgekehrt: (x 1,y), (x 2,y) f ist o.k. X Y f(x) = y

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Relationen-Algebra. Prof. Dr. T. Kudraß 1

Kapitel 2: Grundlagen von Anfragesprachen

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Kapitel 3: Datenbanksysteme

Aggregatfunktionen in der Relationenalgebra?

4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik

Syntax der Prädikatenlogik: Komplexe Formeln

Vorlesung Datenbanksysteme vom

Fragen zum Nachdenken: Wie könnte man das Fehlen eines Attribut-Wertes interpretieren?

Logic in a Nutshell. Christian Liguda

Logik für Informatiker

Relationale Kalküle. Grundlagen der Datenbanken. Dr. Jérôme Kunegis Wintersemester 2013/14

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Grundbegriffe der Informatik

Die Logik der Sprache PL

Kapitel 3: Datenbanksysteme

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

Einführung in Datenbanksysteme. H. Wünsch

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

Wiederholung: Relationale Algebra

Relationaler Tupelkalkül Datenbanken I (Systemorientierte Informatik IV) Sommersemester Syntax des relationalen Tupelkalküls

Eigenschaften von Datenbanken, insbesondere

Abschnitt 3: Mathematische Grundlagen

Grundbegriffe aus Logik und Mengenlehre. Prädikatenlogik

Kalkülteil. Structured Query Language, SQL. 1. Semantik: erzeuge alle Kombinationen von Tupeln

4.1 SQL. Wichtige skalare Datentypen

FachPraktikum 1590 Erweiterbare Datenbanksysteme. Aufgaben Phase 1

Logik-Grundlagen. Syntax der Prädikatenlogik

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Einführung in die Logik

SQL als Zugriffssprache

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

Boolesche Algebra. Hans Joachim Oberle. Vorlesung an der TUHH im Wintersemester 2006/07 Montags, 9:45-11:15 Uhr, 14täglich TUHH, DE 22, Audimax 2

Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik

Informationsverarbeitung auf Bitebene

Aussagenlogik. Aussagen und Aussagenverknüpfungen

Modellierungsmethoden der Informatik Kapitel 2: Logikkalküle

Einführung in die mathematische Logik

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Unvollständigkeit der Arithmetik

1. Einführung in Temporallogik CTL

2.5 Relationale Algebra

Modellierungsmethoden der Informatik Kapitel 2: Logikkalküle

Transkript:

Ludwig Maximilians Universität München Institut für Informatik Lehr- und Forschungseinheit für Datenbanksysteme Skript zur Vorlesung Wintersemester 2006/2007 Vorlesung: Dr. Peer Kröger Übungen: Karsten Borgwardt, Dr. Peer Kröger Skript 2005 Christian Böhm http://www.dbs.informatik.uni-muenchen.de/lehre/dbs Begriff...das Kalkül der Kalkül... 2

Begriff Mathematik: Prädikatenkalkül Formeln wie {x x ΙN x 3 > 0 x 3 < 1000} Anwendung solcher Formeln für DB-Anfragen Bezugnahme auf DB-Relationen im Bedingungsteil: (x 1, y 1, z 1 ) Mitarbeiter, t 1 Abteilungen Terme werden gebildet aus Variablen, Konstanten usw. Atomare Formeln aus Prädikaten der Datentypen: =, <, >,, usw. Atomare Formeln können mit logischen Operatoren zu komplexen Formeln zusammengefasst werden: F 1 F 2, F 1 F 2, F 1, x: F 1, x: F 1 3 Bsp: Finde alle Großstädte in Bayern: {t t Städte t[land] = Bayern t[seinw] 500.000} Unterschied zur Rel. Algebra 4 Relationale Algebra ist prozedurale Sprache: Ausdruck gibt an, unter Benutzung welcher Operationen das Ergebnis berechnet werden soll WIE Relationen-Kalkül ist deklarative Sprache: Ausdruck beschreibt, welche Eigenschaften die Tupel der Ergebnisrelation haben müssen ohne eine Berechnungsprozedur dafür anzugeben WAS Es gibt zwei verschiedene Ansätze: Tupelkalkül: Variablen sind vom Typ Tupel Bereichskalkül: Variablen haben einfachen Typ

Der Tupelkalkül Man arbeitet mit Tupelvariablen: t Formeln: ψ(t) Ausdrücken: {t ψ(t)} Idee: Ein Ausdruck beschreibt die Menge aller Tupel, die die Formel ψ erfüllen (wahr machen) Ein Kalkül besteht immer aus Syntax: Wie sind Ausdrücke aufgebaut? Semantik: Was bedeuten die Ausdrücke? 5 Tupelvariablen Tupelvariablen haben ein definiertes Schema: Schema(t) = (A 1 : D 1, A 2 : D 2,...) Schema(t) = R 1 (t hat dasselbe Schema wie Relation) Für Zugriff auf die Komponenten t[a] oder t.a für einen Attributnamen A Schema(t) oder auch t[1], t[2] usw. Tupelvariable kann in einer Formel ψ frei oder gebunden auftreten (s. unten) 6

Atome Es gibt drei Arten von Atomen: R(t) R ist Relationenname, t Tupelvariable lies: t ist ein Tupel von R t[a] Θ s[b] t bzw. s sind zwei Tupelvariablen mit passenden Attributen lies: t[a] steht in Beziehung Θ zu... t[a] Θ c tist Tupelvariable und c eine passende Konstante Θ Vergleichsoperator: Θ {=, <,, >,, } 7 Formeln Der Aufbau von Formeln ψ ist rekursiv definiert: Atome: Verknüpfungen: Quantoren: Jedes Atom ist eine Formel Alle vorkommenden Variablen sind frei Sind ψ 1 und ψ 2 Formeln, dann auch: ψ 1 nicht (ψ 1 ψ 2 ) und (ψ 1 ψ 2 ) oder Alle Variablen behalten ihren Status. Ist ψ eine Formel, in der t als freie Variable auftritt, sind auch Formeln... ( t)(ψ) es gibt ein t, für das ψ ( t)(ψ) für alle t gilt ψ die Variable t wird gebunden. 8

Formeln 9 Gebräuchliche vereinfachende Schreibweisen: ψ 1 ψ 2 für ( ψ 1 ) ψ 2 (Implikation) t 1,...,t k : ψ(t 1,...t k ) für ( t 1 ) (...(( t k ) (ψ(t 1,...t k )))...) ( t R) (ψ(t)) für ( t) (R(t) ψ(t)) ( t R) (ψ(t)) für ( t) (R(t) ψ(t)) Bei Eindeutigkeit können Klammern weggelassen werden Beispiel: ( s)(s[a] u[b] ( u)(r(u) u[c] > t[d])) t ist s ist frei gebunden u ist frei beim ersten Auftreten und dann gebunden Ausdruck (Anfrage) Ein Ausdruck des Tupelkalküls hat die Form {t ψ(t)} In Formel ψ ist t die einzige freie Variable 10

Semantik Bedeutung, die einem korrekt gebildeten Ausdruck durch eine Interpretation zugeordnet wird: Syntax Tupelvariablen Formeln Ausdrücke Interpretation Semantik konkrete Tupel true, false Relationen 11 Belegung von Variablen Gegeben: eine Tupelvariable t mit Schema(t) = (D 1, D 2,...) eine Formel ψ(t), in der t frei vorkommt ein beliebiges konkretes Tupel r (d.h. mit Werten). Es muß nicht zu einer Relation der Datenbank gehören Bei der Belegung wird jedes freie Vorkommen von t durch r ersetzt. Insbesondere wird t[a] durch den Attributwert von r[a] ersetzt. Man schreibt: ψ(r t) 12

Beispiel Gegeben sei folgendes Relationenschema: Städte (SName: String, SEinw: Integer, Land: String) Länder (LName: String, LEinw: Integer, Partei * : String) * bei Koalitionsregierungen: jeweils eigenes Tupel pro Partei ψ(t) = (t.land=bayern t.seinw 500.000) mit Schema(t) = Schema(Städte) r 1 = (Passau, 49800, Bayern): ψ(r 1 t) = (Bayern = Bayern 49800 500.000) r 2 = (Bremen, 535.058, Bayern): ψ(r 2 t) = (Bremen = Bayern 535.058 500.000) 13 Interpretation von Formeln Interpretation I(ψ) analog zu syntaktischem Aufbau Anm: Alle Variablen sind durch konkrete Tupel belegt Atome: R(r): I(R(r)) = true r ist in R enthalten c i Θ c j : I(c i Θ c j ) = true der Vergleich ist erfüllt Logische Operatoren: ψ: I( ψ) = true I(ψ) = false ψ 1 ψ 2 : I(ψ 1 ψ 2 )=true I(ψ 1 )=true und I(ψ 2 )=true ψ 1 ψ 2 : I(ψ 1 ψ 2 )=true I(ψ 1 )=true oder I(ψ 2 )=true 14

Beispiele Atome: I(Städte (Passau, 49.800, Bayern) ) =? true I(49.800 500.000) =? false Logische Operatoren: I( 49.800 500.000) =? true I(Städte (Passau, 49.800, Bayern) 49.800 500.000) =? true I(Städte (Passau, 49.800, Bayern) 49.800 500.000) =? false 15 Interpretation von Quantoren Interpretation I(( s)(ψ)) bzw. I(( s)(ψ)): In ψ darf nur s als freie Variable auftreten. I(( s)(ψ)) = true ein Tupel r D 1 D 2... existiert, daß bei Belegung der Variablen s die Formel ψ gilt: I(ψ(r s) ) = true I(( s)(ψ)) = true für alle Tupel r D 1 D 2... gilt die Formel ψ. Beispiele: I(( s)(städte(s) s.land = Bayern)) =? true I(( s)(s.name = Passau)) =? false 16

Interpretation von Ausdrücken Interpretation von Ausdruck I({t ψ(t)}) stützt sich auf Belegung von Variablen und Interpretation von Formeln Gegeben: E = {t ψ(t)} t die einzige freie Variable in ψ(t) Schema(t) = D 1 D 2... Dann ist der Wert von E die Menge aller * (denkbaren) Tupel r D 1 D 2... für die gilt: I(ψ(r t)) = true * Grundmenge sind hier nicht nur die gespeicherten Tupel aus der DB 17 Beispiel-Anfragen Gegeben sei folgendes Relationenschema: Städte (SName: String, SEinw: Integer, Land: String) Länder (LName: String, LEinw: Integer, Partei * : String) * bei Koalitionsregierungen: jeweils eigenes Tupel pro Partei Finde alle Großstädte (SName, SEinw, Land) in Bayern: {t Städte(t) t[land] = Bayern t[seinw] 500.000} In welchem Land liegt Passau? Schema(t) = (Land:String) {t ( u Städte)(u[Sname] = Passau u[land] = t[land]} Finde alle Städte in CDU-regierten Ländern: {t Städte(t) ( u Länder)(u[Lname]=t[Land] u[partei]=cdu)} 18

Beispiel-Anfragen Gegeben sei folgendes Relationenschema: Städte (SName: String, SEinw: Integer, Land: String) Länder (LName: String, LEinw: Integer, Partei * : String) * bei Koalitionsregierungen: jeweils eigenes Tupel pro Partei Welche Länder werden von der SPD allein regiert? {t Länder(t) ( u Länder)(u[LName]=t[LName] u[partei]=spd} Gleichbedeutend mit: {t Länder(t) ( u Länder) (u[lname]=t[lname] u[partei] SPD} 19 Sichere Ausdrücke Mit den bisherigen Definitionen ist es möglich, unendliche Relationen zu beschreiben: Schema(t) = {String, String} {t t[1] = t[2] } Ergebnis: {(A,A),(B,B),...,(AA,AA),(AB,AB),...} Probleme: Ergebnis kann nicht gespeichert werden Ergebnis kann nicht in endlicher Zeit berechnet werden Definition: Ein Ausdruck heißt sicher, wenn jede Tupelvariable nur Werte einer gespeicherten Relation annehmen kann, also positiv in einem Atom R(t) vorkommt. 20

Der Bereichskalkül Tupelkalkül: Tupelvariablen t (ganze Tupel) Bereichskalkül: Bereichsvariablen x 1 :D 1, x 2 :D 2,... für einzelne Attribute (Bereich=Wertebereich=Domäne) Ein Ausdruck hat die Form: {x 1, x 2,... ψ (x 1, x 2,...)} Atome haben die Form: R 1 (x 1, x 2,...): Tupel (x 1, x 2,...) tritt in Relation R 1 auf x Θ y: x,y Bereichsvariablen bzw. Konstanten Θ {=, <,, >,, } Formeln analog zum Tupelkalkül 21 Beispiel-Anfragen Städte (SName: String, SEinw: Integer, Land: String) Länder (LName: String, LEinw: Integer, Partei * : String) * bei Koalitionsregierungen: jeweils eigenes Tupel pro Partei In welchem Land liegt Passau? {x 3 x 1, x 2 : (Städte(x 1, x 2, x 3 ) x 1 = Passau) } oder auch {x 3 x 2 : (Städte(Passau, x 2, x 3 ) ) } Finde alle Städte in CDU-regierten Ländern: {x 1 x 2, x 3, y 2 : (Städte(x 1,x 2,x 3 ) Länder (x 1,y 2,CDU))} Welche Länder werden von der SPD allein regiert? {x 1 x 2 :(Länder(x 1,x 2,SPD) y 3 :(Länder(x 1,x 2,y 3 ) y 3 SPD))} 22

Query By Example (QBE) Beruht auf dem Bereichskalkül Ausdrücke nicht wie in SQL als Text Dem Benutzer wird am Bildschirm ein Tabellen-Gerüst angeboten, das mit Spezial-Editor bearbeitet werden kann Nach Eintrag von Werten in das Tabellengerüst (Anfrage) füllt das System die Tabelle Zielgruppe: Gelegentliche Benutzer 23 Query By Example (QBE) Relationenname Attribute Komplexe Bedingungen Conditions 24 Kommandos Anfrage-Spezifikation Sprachelemente: Kommandos, z.b. P. (print), I. (insert), D. (delete)... Bereichsvariablen (beginnen mit _ ): _x, _y Konstanten (Huber, Milch) Vergleichsoperatoren und arithmetische Operatoren Condition-Box: Zusätzlicher Kasten zum Eintragen einer Liste von Bedingungen (AND, OR, kein NOT)

Beispiel-Dialog 25 Beginn: leeres Tabellengerüst Benutzer gibt interessierende Relation und P. ein Kunde P. System trägt Attributsnamen der Relation ein Kunde KName KAdr Kto Benutzer stellt Anfrage Kunde KName KAdr Kto P. P. <0 System füllt Tabelle mit Ergebnis-Werten Kunde KName KAdr Huber Innsbruck Maier München evtl. weitere Tabelle (Join) Anfragen mit Bedingungen Welche Lieferanten liefern Mehl oder Milch? P. P. _w Freie Variablen Bereichsvariable CONDITIONS _w=mehl OR _w=milch Bedeutung: {x 1, x 2 w, x 4 :Lieferant(x 1,x 2,w,x 4 ) (w=mehl w=milch)} Kommando P. für print bzw. auch für die Projektion 26

Anfragen mit Bedingungen Welche Lieferanten liefern Brie und Perrier, wobei Gesamtpreis 7,00 nicht übersteigt? P. _L Brie _y _L Perrier _z CONDITIONS _y + _z <= 7.00 Bedeutung: {l x 1, x 2, y, z: Lieferant (l, x 1, Brie, y) Lieferant (l, x 2, Perrier, z) y + z 7.00} 27 Join-Anfragen Welcher Lieferant liefert etwas das Huber bestellt hat? P. _w Auftrag KName Ware Menge Huber _w Bedeutung: {x 1 x 2, w, x 4, y 3 : Lieferant (x 1, x 2, w, x 4 ) Auftrag (Huber, w, y 3 )} Beachte: Automatische Duplikat-Elimination in QBE 28

Join-Anfragen Abkürzung! 29 Meist ist für Ergebnis neues Tabellengerüst nötig: Beispiel: Bestellungen mit Kontostand des Kunden Falsch (leider nicht möglich): Kunde KName KAdr Kto P. _n P. Auftrag KName Ware Menge _n P. P. Richtig: Kunde KName KAdr Kto _n _k Auftrag KName Ware Menge _n _w _m Bestellung Name Was Wieviel Kontostand P. P. _n P. _w P. _m P. _k Anfragen mit Ungleichung Wer liefert Milch zu Preis zw. 0,50 und 0,60? Variante mit zwei Zeilen: P. _L Milch >= 0.5 _L Milch <= 0.6 Variante mit Condition-Box P. Milch _p 30 CONDITIONS _p >= 0.5 AND _p <= 0.6

Anfragen mit Negation Finde für jede Ware den billigsten Lieferanten P. _w _p _w < _p Das Symbol in der ersten Spalte bedeutet: Es gibt kein solches Tupel Bedeutung: {x 1, x 2, w, p y 1, y 2, y 3 : Lieferant (x 1, x 2, w, p) Lieferant (y 1, y 2, w, y 3 ) y 3 < p} 31 Einfügen Einfügen von einzelnen Tupeln Kommando I. für INSERT Kunde KName KAdr Kto I. Schulz Wien 0 Einfügen von Tupeln aus einem Anfrageergebnis Beispiel: Alle Lieferanten in Kundentabelle übernehmen Kunde KName KAdr Kto I. _n _a 0 _n _a 32

Löschen und Ändern Löschen aller Kunden mit negativem Kontostand Kunde KName KAdr Kto D. < 0 Ändern eines Tupels (U. für UPDATE) Kunde KName KAdr Kto Schulz Wien U. 100 oder auch: Kunde KName KAdr Kto Meier _a _k U. Meier _a _k 110 oder auch mit Condition-Box 33 Vergleich QBE Konstanten Bereichsvariablen leere Spalten Spalten mit P. Spalten ohne P. Bereichskalkül Konstanten Bereichsvariablen paarweise verschiedene Bereichsvariablen, -quantifiziert freie Variablen -quantifizierte Variablen 34 Anmerkung: QBE ist relational vollständig, jedoch ist für manche Anfragen der relationalen Algebra eine Folge von QBE-Anfragen nötig

Umsetzung einer QBE-Anfrage (ohne Negation) Erzeuge für alle Attribute A i aller vorkommenden Tabellen-Zeilen der Anfrage eine Bereichsvariable x i Steht bei Attribut A i das Kommando P. dann schreibe x i zu den freien Variablen ({... x i,......}), sonst binde x i mit einem -Quantor ({......, x i,...}) Binde alle Variablen der Anfrage mit einem -Quantor P. P. P. _w Auftrag KName Ware Menge Huber _w >= 5 35 {x 1, x 2, x 3 x 4, x 5, x 6, x 7, w:... Umsetzung einer QBE-Anfrage P. P. P. _w Auftrag KName Ware Menge Huber _w >= 5 Füge für jede vorkommende Relation R ein Atom der Form R(x i, x i+1,...) mit an die Formel Ψ an {x 1,x 2,x 3 x 4,x 5,x 6,x 7,w: Lieferant(x 1,x 2,x 3,x 4 ) Auftrag(x 5,x 6,x 7 )... Steht bei A i ein Zusatz der Form Const bzw. Const etc., dann hänge x i = Const bzw. x i Const mit an Formel. {x 1,x 2,x 3 x 4,x 5,x 6,x 7,w: Lieferant(x 1,x 2,x 3,x 4 ) Auftrag(x 5,x 6,x 7 ) x 5 = Huber x 7 5 36

Umsetzung einer QBE-Anfrage P. P. P. _w Auftrag KName Ware Menge Huber _w >= 5 Gleiches Vorgehen bei Zusätzen der Form _Variable bzw. _Variable usw: {x 1,x 2,x 3 x 4,x 5,x 6,x 7,w: Lieferant(x 1,x 2,x 3,x 4 ) Auftrag(x 5,x 6,x 7 ) x 5 =Huber x 7 5 w = x 3 w = x 6 } Ggf. wird der Inhalt der Condition-Box mit angehängt. Meist lässt sich der Term noch vereinfachen: 37 {x 1,x 2,w x 4,x 5,x 7 : Lieferant(x 1,x 2,w,x 4 ) Auftrag(Huber,w,x 7 ) x 7 5}