25.10.2012 Grundlagen relationaler Datenbanksysteme Kapitel III Vorlesung Datenbanksysteme Univ.-Prof. Dr. Günther Specht Universität Innsbruck Institut für Informatik Datenbanken und Informationssysteme (DBIS) Vorlesungsinhalt 3. Grundlagen relationaler Datenbanksysteme – – – – – Motivation Relationenmodell Sprachen des Basismodells Relationen-Algebra Relationen-Kalkül 2 G. Specht: Datenbanksysteme 3-1 25.10.2012 Motivation 3 Motivation • Ende der 60er Jahre Grundlagenforschung am IBM-Forschungslabor San Jose, California, mit dem Ziel, die Erstellung von Datenbankanwendungen „einfacher“ zu machen. • 1970 erste Veröffentlichung von E.F. Codd zum „Relationalen Datenmodell“ • In der Folge verschiedene Prototyp-Entwicklungen, am bekanntesten wurden – System R, IBM – Ingres, University of California, Berkeley • Heute wichtigste kommerziell verfügbare Datenbanktechnologie • Inzwischen sind viele relationale DBS auf dem Markt – DB2 (IBM) – Oracle (Oracle) – SQL-Server (Microsoft) – Sybase (Sybase) – Informix (IBM) – etc. 4 G. Specht: Datenbanksysteme 3-2 25.10.2012 Relationenmodell 5 Motivation Das haben wir: E/R-Modell Bsp.: KursDB 6 G. Specht: Datenbanksysteme 3-3 25.10.2012 Motivation Da wollen wir hin: Bsp. Relationen zur KursDB Kurs Kursleiter Vorauss Fuehrt_durch KursNr Titel PersNr Name Gehalt VorNr KursNr AngNr G08 Grundlagen I 27183 Meier, I. 4300.50 G08 P13 1 G08 38197 G10 Grundlagen II 29594 Schulze, H. 3890.20 G10 P13 2 G08 38197 P13 C-Programmierung 38197 Huber, L. 4200.10 G08 I09 1 G10 43325 I09 Datenbanken 43325 Müller, K. 3400.80 G10 I09 2 G10 29594 P13 I09 1 P13 27183 2 P13 27183 1 I09 29594 2 I09 29594 3 I09 29594 Teilnehmer Nimmt_teil KursNr TnNr Name Ort AngNr KursNr TnNr 143 Schmidt, M. Bremen 2 G08 143 145 Huber, Chr. Augsburg 2 P13 143 146 Abele, I. Senden 1 G08 145 149 Kircher, B. Bochum 1 P13 146 AngNr KursNr Datum Ort 155 Meier, W. Stuttgart 1 I09 146 1 G08 2000-10-13 München 171 Möller, H. Innsbruck 2 P13 149 2 G08 2000-11-24 Bremen 173 Schulze, B. Stuttgart 1 I09 155 1 G10 2000-12-01 München 177 Mons, F. Essen 1 I09 171 2 G10 2001-02-15 Hamburg 185 Meier, K. Heidelberg 1 I09 173 1 P13 2001-05-28 Innsbruck 187 Karstens, L. Hamburg 2 P13 177 2 P13 2001-07-01 Essen 194 Gerstner, M. Innsbruck 1 I09 185 1 I09 2001-03-27 Stuttgart 2 I09 187 2 I09 2001-04-23 Hamburg 1 P13 194 3 I09 2001-05-29 München PersNr Angebot 7 Basiskonzepte Darstellung der Miniwelt in Tabellenform (Datenbank = Menge von Relationen/Tabellen) Ansatz • Einzige Datenstruktur: Tabelle ≡ Relation • Saubere mathematische Grundlage: Mengentheorie (vgl. math. Relation) • Einfache Operationen, mengenorientiert • Abgeschlossenheit: Operationen überführen Tabellen in Tabellen • ∃ Entwurfstheorie (was sind „gute“ Tabellen?) Relation = Menge von Tupeln (mit atomaren Komponenten) 8 G. Specht: Datenbanksysteme 3-4 25.10.2012 Eigenschaften • Alle Informationen werden als Relationen modelliert • Relation • Jede Zeile - genannt Tupel - entspricht einem Entity oder/und einer Beziehung • Die Spalten der Tabelle (Relation) sind benannt und werden als die Attribute bezeichnet • Die Reihenfolge der Spalten ist nicht relevant, da sie über ihren Namen identifiziert werden • Jedem Attribut ist ein Wertebereich (sog. Domain) zugeordnet. • Ein Wertebereich ist eine Menge atomarer Werte, welche - aus Sicht des DBMS - „elementar“ sind, d.h. keine weitere Substruktur mehr aufweisen. • Beziehungen werden ausschließlich über Attributwerte realisiert = zweidimensionale Tabelle von Werten = Menge von Tupeln (keine Duplikate, keine Reihenfolge!) Bem: Wie wir später noch sehen werden, werden die letzten beiden Forderungen im Kontext der objektorientierten Erweiterungen von SQL wieder aufgeweicht bzw. fallengelassen. 9 Mathematische Notation ∀ … für alle ∈ … Element aus ∉ … kein Element aus ⊆ … Subset, Teilmenge, kann auch ganze Menge sein ⊂ … „echtes“ Subset, Teilmenge ∪ … Vereinigung ⇒ … daraus folgt ∃ … es gibt ∆ … Delta ≡ … Äquivalent (Menge) ∧ … UND ∨ … ODER ¬ … NICHT ⇔ … Äquivalent (Logik) 10 G. Specht: Datenbanksysteme 3-5 25.10.2012 Schreibweisen und Definitionen • Relation R mit Attributen A1 bis A5: R ( A1, A2, A3, A4, A5) • Relation mit Attributen A bis D oft auch: ABCD • Domain dom(Ai) = Di Domäne (Wertebereich) von Ai • Schema sch(R) = {A1,..., An} Schema einer Relation • Wert • Tupel val(R) ⊆ dom(A1) x ... x dom(An) Wert einer Relation t = <A1:v1, ..., An:vn> mit vi ∈ Di, meist mit fester Reihenfolge der Attribute: t = (v1, ..., vn), t ∈ val(R) 11 Schreibweisen und Definitionen • Tupelkomponenten/Attributwerte: t (Ai) = vi oder auch t[Ai] oder t.Ai, auch mit A ⊆ sch(R) : t(A) („Set of Mappings“ Definition von Relationen: Relation ist Menge von Abbildungen tj: sch(R) → ∪ Di, so dass tj(Ai) ∈ Di) • K ⊆ sch (R) heißt Schlüsselkandidat oder auch nur kurz Schlüssel, wenn ∀ t, t' : t(K) = t'(K) ⇒ t = t' und K minimal • Primärschlüssel : ein ausgewählter Schlüsselkandidat [1] • Fremdschlüssel F in Relation R : F ⊆ sch(S) und F ⊆ sch(R) für eine Relation S, in der F Primärschlüssel ist • A ∈ sch(R) ist Schlüsselattribut, wenn es Teil eines Schlüsselkandidaten ist [1] Eine Relation kann also mehrere Attribute oder Attributkombinationen besitzen, die Schlüsseleigenschaft haben (= Schlüssel(kandidaten)), wie z. B. Personalnummer oder Sozialversicherungsnummer oder (Vorname, Nachname, Straße, Plz, Ort). Einer davon wird dann als bevorzugter Schlüssel (= Primärschlüssel) ausgewählt. 12 G. Specht: Datenbanksysteme 3-6 25.10.2012 Modellinhärente Integritätsbedingungen des Relationenbasismodells 1. „Entity Integrity“ Primärschlüsselattribute dürfen nie undefiniert (NULL) sein 2. „Referential Integrity“ Fremdschlüssel sind entweder undefiniert (NULL) oder es gibt ein entsprechendes Tupel mit diesem Primärschlüssel in der anderen Relation. 3. „Domains“ Attribute dürfen nur Werte aus der jeweiligen Domain annehmen (oder undefiniert („NULL“)) sein. Nullwerte • Nullwerte sind spezielle logische Werte und entsprechen nicht dem Leerzeichen oder dem numerischen Wert Null. Mittels Nullwerten lässt sich eine dreiwertige Logik realisieren: Prädikat = {true | false | unknown} Hinweise • In den folgenden Relationen werden Nullwerte durch "--" dargestellt, im DBS muss stattdessen NULL eingeben werden. • Im nächsten Kapitel werden wir noch ausführlicher auf Nullwerte eingehen. 13 Umsetzregeln: E/R-Modell ins Relationenmodell 1. Abbildung von Entity-Typen auf Relationen: – Entity-Typ E mit Attributen Ai aus Domäne Di (1 ≤ i ≤ k) wird abgebildet auf k-stellige Relation E(A1:D1, A2:D2, ..., Ak:Dk) – Falls außerdem "E isa F" besteht oder E ein schwacher Entity-Typ, existenz-abhängig von F ist, werden alle Schlüsselattribute von F hinzugenommen. G. Specht: Datenbanksysteme 3-7 25.10.2012 Umsetzregeln: E/R-Modell ins Relationenmodell 2. Abbildung von Relationship-Typen auf Relationen: 2.1. n:m-Beziehungen und alle 3er, 4er, ... etc. Beziehungen: – Relationship R zwischen Entity-Typen E1 ... En wird abgebildet auf Relation R, deren Attribute aus den Primärschlüsseln der Ei bestehen. • Gleiche Attributnamen werden durch Umbenennung in R eindeutig gemacht. • Falls R eigene Attribute hat, werden diese hinzugenommen. 2.2. 1:n Beziehung zwischen nur 2 Entitytypen E und F (oft)): – Keine Relation R aus Relationship, statt dessen Primärschlüssel von E in Relation F als Fremdschlüssel aufnehmen. Falls Relationship R eigene Attribute hat, müssen diese auch in F aufgenommen werden. 2.3. 1:1 Beziehung zwischen nur 2 Entitytypen E und F: – Keine Relation R aus Relationship, statt dessen Primärschlüssel von E in Relation F oder Primärschlüssel von F in Relation E als Fremdschlüssel aufnehmen. 2.4. isa Beziehungen und Existenzabhängigkeiten – "E isa F" und Existenabhängigkeiten werden nicht in Relationen abgebildet, da sonst redundante Tupel der Art isa (133, 133) entstehen. Beispiel (selbst probieren): Name Adresse Passagier Vegetarier? Passagier Pass# n (1,*) hat gebucht Preis hat gebucht Sitz# (0,*) Datum Flug (1,1) wird ausgeführt (0,*) Flugzeug G. Specht: Datenbanksysteme m vgl: n:m Darstellung: Flug n Flug# wird ausgeführt Flugzeug# Hersteller Typ 1 Flugzeug 16 3-8 25.10.2012 Bsp.: KursDB 17 Bsp.: Relationen zur KursDB Kurs Kursleiter Vorauss Fuehrt_durch KursNr Titel PersNr Name Gehalt VorNr KursNr AngNr G08 Grundlagen I 27183 Meier, I. 4300.50 G08 P13 1 G08 38197 G10 Grundlagen II 29594 Schulze, H. 3890.20 G10 P13 2 G08 38197 P13 C-Programmierung 38197 Huber, L. 4200.10 G08 I09 1 G10 43325 I09 Datenbanken 43325 Müller, K. 3400.80 G10 I09 2 G10 29594 P13 I09 1 P13 27183 2 P13 27183 1 I09 29594 2 I09 29594 3 I09 29594 Teilnehmer TnNr Name Ort Nimmt_teil AngNr KursNr TnNr 143 Schmidt, M. Bremen 2 G08 143 145 Huber, Chr. Augsburg 2 P13 143 146 Abele, I. Senden 1 G08 145 149 Kircher, B. Bochum 1 P13 146 AngNr 155 Meier, W. Stuttgart 1 I09 146 171 Möller, H. Innsbruck 2 P13 173 Schulze, B. Stuttgart 1 177 Mons, F. Essen 185 Meier, K. 187 194 KursNr Angebot KursNr Datum Ort 1 G08 2000-10-13 München 149 2 G08 2000-11-24 Bremen I09 155 1 G10 2000-12-01 München 1 I09 171 2 G10 2001-02-15 Hamburg Heidelberg 1 I09 173 1 P13 2001-05-28 Innsbruck Karstens, L. Hamburg 2 P13 177 2 P13 2001-07-01 Essen Gerstner, M. Innsbruck 1 I09 185 1 I09 2001-03-27 Stuttgart 2 I09 187 2 I09 2001-04-23 Hamburg 1 P13 194 3 I09 2001-05-29 München G. Specht: Datenbanksysteme PersNr 18 3-9 25.10.2012 Sprachen des Basismodells 19 Sprachen des Basismodells Zwei formale (mathematische) Abfragesprachen als Basis für reale Sprachen (z.B.: SQL): •Relationenalgebra: operational (wird intern verwendet für die Optimierung und Ausführung) •Relationenkalkül: deklarativ (man beschreibt was man haben möchte, nicht wie) 20 G. Specht: Datenbanksysteme 3-10 25.10.2012 Sprachen des Basismodells cont. Eigenschaften • • Mengenorientiert (im Gegensatz zu tupelorientiert, navigierend) – abgeschlossen d.h. Operationen liefern immer wieder Relationen – orthogonal d.h. Operationen lassen sich beliebig kombinieren Mathematische Fundierung: – Relationen-Algebra (5 Basisoperatoren: Vereinigung, Differenz, Produkt, Selektion, Projektion) – Relationen-Kalkül (vgl. Prädikatenkalkül 1. Ordnung) 21 Relationen-Algebra 22 G. Specht: Datenbanksysteme 3-11 25.10.2012 Die relationale Algebra: Operatoren σ Selektion π Projektion ρ Umbenennung x Kreuzprodukt A Join (Verbund) ∪ Vereinigung ∩ Durchschnitt − Mengendifferenz ÷ Division F Semi-Join (linker) E Semi-Join (rechter) C linker äußerer Join D rechter äußerer Join Charakteristisch „Konstruktion“ der Ergebnis-Relation durch ggf. geschachtelte Anwendung von Algebra-Operationen auf die Ausgangs-Relation(en). 23 Selektion σF R steht für eine Selektion (Tupelauswahl) angewandt auf Relation R unter Anwendung der Selektionsformel F Anfrage σTnNr > 155 Teilnehmer TnNr Name Ort 171 Möller, H. Innsbruck 173 Schulze, B. Stuttgart 177 Mons, F. Essen 185 Meier, K. Heidelberg 187 Karstens, L. Hamburg 194 Gerstner, M. Innsbruck Teilnehmer TnNr 143 Name Ort Schmidt, M. Bremen 145 Huber, Chr. Augsburg 146 Abele, I. Senden 149 Kircher, B. Bochum 155 Meier, W. Stuttgart 171 Möller, H. Innsbruck 173 Schulze, B. Stuttgart 177 Mons, F. Essen 185 Meier, K. Heidelberg 187 Karstens, L. Hamburg 194 Gerstner, M. Innsbruck 24 G. Specht: Datenbanksysteme 3-12 25.10.2012 Selektion cont. Selektionsformel F Vergleiche (<, >, >=, >=, <>) sowie logische Verknüpfungen (∧, ∨, ¬) davon über Attributwerte und Konstanten Anfrage: σ (TnNr <= 146) ∧ (Ort = ‚‘Innsbruck‘) Teilnehmer TnNr Name 143 Schmidt, M. Ort Bremen 145 Huber, Chr. Augsburg 146 Abele, I. Senden 171 Möller, H. Innsbruck 194 Gerstner, M. Innsbruck Ergebnis: leere Rel. Anfrage: σ (TnNr < 180) ∧ (Ort = ‚‘Innsbruck') Teilnehmer Ergebnis: Formal: TnNr Name Ort 171 Möller, H. Innsbruck sch(σF R) = sch(R) val(σF R) = {t ∈ val(R) | F(t)} 25 Projektion πAttr R Steht für eine Projektion angewandt auf Relation R, wobei Attr die Teilmenge der Attribute ist, auf die R abgebildet (projiziert) wird. Anfrage: π{TnNr,Name} Teilnehmer Teilnehmer TnNr Name Anfrage: Ort TnNr π{Ort} Teilnehmer Name Ort 143 Schmidt, M. Bremen 143 Schmidt, M. 145 Huber, Chr. Augsburg 145 Huber, Chr. Bremen 146 Abele, I. Senden 146 Abele, I. Augsburg 149 Kircher, B. Bochum 149 Kircher, B. Senden 155 Meier, W. Stuttgart 155 Meier, W. Bochum 171 Möller, H. Innsbruck 171 Möller, H. Stuttgart 173 Schulze, B. Stuttgart 173 Schulze, B. Innsbruck 187 Karstens, L. Hamburg 187 Karstens, L. Hamburg 194 Gerstner, M. Innsbruck 194 Gerstner, M. Formal: sch(πL R) = L, wobei L ⊆ sch(R) val(πL R) = {t(L): ∃ t' ∈ val(R) ∧ t'(L) = t} G. Specht: Datenbanksysteme 26 3-13 25.10.2012 Umbenennung a) Explizite Umbenennung: Operator ρ (griechisch roh, von rename) a1) Relationen-Umbenennung: ρ NeuerRelName Rel Bsp: ρ k1 Kursleiter a2) Attribut-Umbenennung ρ NeuerAttrName <- AlterAttrN ame Rel Benennt nur den Spaltennamen um (zur besseren Ausgabe) Bsp: ρ Voraussetzung_fuer <- KursNr Vorauss b) Implizite Umbenennung: Attribut-Umbenennung Es ist sinnvoll, auch den Projektions-Operator gleich mit der Möglichkeit zur Attribut-Umbenennung zu versehen: π NeuerAttrName : AlterAttrName Rel 27 Zusammengesetzte Anfragen „Gib Teilnehmer-Nummer und -Name aller Teilnehmer aus Innsbruck aus“ Anfrage π{TnNr,Name} (σOrt = Innsbruck' Teilnehmer) Die logische Abarbeitungsreihenfolge 1. Schritt Berechnung des σ-Ausdrucks ⇒ Rel1 2. Schritt Anwendung des π-Operators auf Rel1 ⇒ Erg Die alternative Formulierung σOrt = ‚Innsbruck' (π{TnNr,Name}Teilnehmer) wäre nicht korrekt. Warum? (Selektion enthält nur Ort, keine TnNr bzw. Namen mehr) 28 G. Specht: Datenbanksysteme 3-14 25.10.2012 Weitere Operatoren R∪S steht für die Vereinigung (union) der Relationen R und S, wobei R und S strukturgleich sein müssen, d.h. es muss gelten: sch(R) = sch(S). Kurzschreibweise ∪ i=1,2,..k Ri ≡ R1 ∪ R2 ∪ ... ∪ Rk R-S steht für die Differenz der Relationen R und S, d.h. alle Tupel von R, die auch in S vorkommen, werden aus R entfernt. (Auch hier gilt sch(R) = sch(S)). R x S steht für das kartesische Produkt der Relationen R und S. S R A B C D a1 b1 c1 d1 a2 b2 c2 d2 c3 d3 Anmerkung R∩S RxS ≡ R - (R - S) ableitbar, wie üblich. Formal A B C D a1 b1 c1 d1 a1 b1 c2 d2 sch(R ∪ S) = sch(R - (R - S)) = sch(R) a1 b1 c3 d3 val(R ∪ S) = val(R) ∪ val(S), a2 b2 c1 d1 val(R - S) = val(R) - val(S) a2 b2 c2 d2 sch(R x S) = sch(R) .∪. sch(S) disjunktive Vereinigung a2 b2 c3 d3 val(R x S) = {t | t(sch(R)) ∈ val(R) ∧ t(sch(S)) ∈ val(S)} 29 Verknüpfung von Tabellen Kombination von x und σ, gleichzeitig Beispiel für die Verknüpfung von Tabellen Anfrage „Welche Kurse (Ausgabe: Kurs-Nummer und -Titel) sind für welche anderen Kurse (Ausgabe: Kurs-Nummer) Voraussetzung?“ Kurs KursNr Ausgangsrelationen Titel Vorauss VorNr KursNr G08 Grundlagen I G08 P13 G10 Grundlagen II G10 P13 P13 C-Programmierung G08 I09 I09 Datenbanken G10 I09 P13 I09 Anfrage in der Relationalen Algebra πVorNr,Titel,VorausFür:Vorauss.KursNr (σ VorNr = Kurs.KursNr (Vorauss x Kurs)) G. Specht: Datenbanksysteme 30 3-15 25.10.2012 Verknüpfung von Tabellen cont. Abarbeitungsreihenfolge 1. Schritt Berechnung Vorauss x Kurs ⇒ Rel1 2. Schritt Anwendung von σ VorNr=Kurs.KursNr auf Rel1 Titel VorNr Vorauss.KursNr Kurs.KursNr G08 P13 G08 Titel Grundlagen I G08 P13 G10 Grundlagen II ... ... ... ... G08 P13 I09 Datenbanken G10 P13 G08 Grundlagen I ... ... ... ... G10 P13 I09 Datenbanken VorNr Vorauss.KursNr Kurs.KursNr ... ... ... ... G08 P13 G08 Grundlagen I P13 I09 I09 Datenbanken G10 P13 G10 Grundlagen II VorNr G08 I09 G08 Grundlagen I G08 G10 I09 G10 Grundlagen I ... P13 I09 P13 C-Programmierung P13 Titel Vorauss_für Grundlagen I P13 ... ... C-Programmierung I09 Mögliche Umbenennung von Attributen und Änderung der Attribut-Reihenfolge mittels (erweitertem) π-Operator π {VorNr, Titel, Vorauss_für: Vorauss.KursNr} Erg-Rel bzw. π {VorNr, Titel, Vorauss_für: Vorauss.KursNr}σ VorNr = Kurs.KursNr (Vorauss x Kurs) 31 Join (Verbund) Die Verknüpfung von Tabellen aufgrund von Attributwert-Beziehungen ist eine häufige Operation im relationalen Datenmodell, sie wird daher durch spezielle Join-Operation explizit unterstützt. R AF S steht für den Join (Verbund) der Relationen R und S unter Verwendung der Verbundbedingung F. R AF S ist semantisch äquivalent zu σF (R x S) Beispiel (siehe Beispiel zuvor) Vorauss A VorNr = KursNr Kurs A-Ausführungslogik entspricht: σ VorNr = Kurs.KursNr (Vorauss x Kurs) „Nested Loops Algorithmus“ for each Tupel x in Vorauss do for each Tupel y in Kurs do if x.VorNr = y.KursNr then erzeuge Resultat-Tupel x || y und füge in Ergebnisrelation ein fi done done 32 G. Specht: Datenbanksysteme 3-16 25.10.2012 Join cont. Beispiel: „Gib KursNr und Titel aller Kurse sowie den Namen des Kursleiters aus, die von dem Kursleiter mit der Personalnummer 27183 durchgeführt werden“ Kurs KursNr Titel Kursleiter PersNr Name Fuehrt_durch Gehalt AngNr KursNr PersNr G08 Grundlagen I 27183 Meier, I. 4300.50 1 G08 38197 G10 Grundlagen II 29594 Schulze, H. 3890.20 2 G08 38197 P13 C-Programmierung 38197 Huber, L. 4200.10 1 G10 43325 I09 Datenbanken 43325 Müller, K. 3400.80 2 G10 29594 1 P13 27183 2 P13 27183 1 I09 29594 2 I09 29594 2 I09 29594 Mögliche Anfrageformulierung π {Kurs.KursNr, Titel, Name} (σ PersNr = 27183 (Kurs A (Kursleiter A Fuehrt_durch))) Kurs.KursNr = Fuehrt_durch.KursNr Kursleiter.PersNr = Fuehrt_durch.PersNr Anmerkung • Die „Join-Bedingung“ kann auch mittels <, >, >=, >= sowie (∧, ∨, ¬) formuliert werden. 33 Join cont. Equi-Join, Theta-Join • Joins über “=“-Bedingung heißen: Equijoin • Joins über “<, >, ≤, ≥“ etc heißen: θ-Join (Theta-Join) Natural-Join 1. Joins mit "="-Bedingung sind am häufigsten. • Gleiche Spalten werden nur einmal benötigt. Hierauf abgestellte Join-Variante: Natural Join R A S steht für natürlichen Verbund (natural join) der Relationen R und S. Wirkungsweise • Alle in R und S auftretenden Attribute gleichen Namens werden mittels "="-Bedingung verknüpft und treten in der Ergebnisrelation nur einmal auf! (implizite Projektion!) • Haben R und S keine gemeinsamen Attribute, so hat R A S die gleiche Wirkung wie R x S. 34 G. Specht: Datenbanksysteme 3-17 25.10.2012 Join cont. Beispiel: Die vorige Anfrage mittels natürlichem Verbund formuliert π {KursNr, Titel} Kurs A ((σ PersNr = 27183 Kursleiter) A Fuehrt_durch) Anmerkung Unterschied zum Equi-Join • Attribute gleichen Namens treten in der Ergebnis-Relation (sowie in allen Zwischenergebnis-Relationen) natürlich jeweils nur einmal auf. Also: sch(R A S) = sch(R) ∪ sch(S) 35 Beispiele zur Relationenalgebra Gegeben R S T A B C B D B D 1 a d a 100 a 100 3 c c b 300 d 200 4 d f c 400 f 400 5 d b d 200 g 120 6 e f e 150 Anfragen und Ergebnisse σ D<300 S π {A,C} R π {C} B D A C C a 100 1 d d d 200 3 c c e 150 G. Specht: Datenbanksysteme 4 f f 5 b b 6 f S∪T R S - T B D B D a 100 b 300 RA R.B=S.B S A R.B C S.B D 1 a d a 100 3 c c c 400 4 d f d 200 T - S 5 d b d 200 B D 6 e f e 150 b 300 c 400 c 400 e 150 d 200 e 150 f 400 f 400 g 120 g 120 36 3-18 25.10.2012 Beispiele zur Relationenalgebra cont. RAT SAT R A A*100=D S R×T A B C D B D A R.B C S.B D A R.B C T.B D 1 a d 100 a 100 1 a d a 100 1 a d a 100 4 d f 200 d 200 4 d f c 400 1 a d d 200 5 d b 200 3 c c b 300 1 a d f 400 1 a d g 120 3 c c a 100 3 c c d 200 3 c c f 400 3 c c g 120 4 d f a 100 4 d f d 200 4 d f f 400 4 d f g 120 5 d b a 100 5 d b d 200 5 d b f 400 5 d b g 120 6 e f a 100 6 e f d 200 6 e f f 400 6 e f g 120 37 Äquivalenzumformungen Seien R, S und T drei jeweils geeignet definierte Relationen. Klassifikation algebraischer Umformungen • Kommutativität von unären Operationen (σ σ, π): U1 U2 R → U2 U1 R • Kommutativität von binären Operationen (∪, ∩ , ×, A): RBS→SBR • Assoziativität von binären Operationen (∪, ∩ , ×, A): R B (S B T) → (R B S) B T • Idempotenz (bzw. Zusammenfassung) von unären Operationen (σ σ, π): UR→UUR • Distributivität von unären Operationen in bezug auf binäre Operationen: U (R B S) → (U R) B (U S) Hinweis • • Es gilt: Relations-Typ R ≡ Relations-Typ S ⇔ wenn sch(R) = sch(S) Die Reihenfolge der Attribute ist hierbei ohne Bedeutung, d.h. es gilt: R(A,B,C) ≡ R(A,C,B) ≡ R(C,A,B) ≡ ... ≡ R(C,B,A). G. Specht: Datenbanksysteme 38 3-19 25.10.2012 Äquivalenzumformungen von Relationalen-Algebra-Ausdrücken 39 Äquivalenzumformungen von Relationalen-Algebra-Ausdrücken cont. 40 G. Specht: Datenbanksysteme 3-20 25.10.2012 Äquivalenzumformungen von Relationialen-Algebra-Ausdrücken cont. 41 Erläuterungen zu den Äquivalenzumformungen Gegeben seien die Relationen R(A,B,C), R1(A,B,C), R2(A,B,C), S(D,E) und T(F,G,H) wobei die Wertebereiche der Attribute A bis H jeweils Teilmengen der natürlichen Zahlen sein sollen. Zu 1: σA<10 ∧ C>8 (σ B>8 R) kann in σB>8(σA<10 ∧ C>8 R) transformiert werden und umgekehrt. Zu 2: σB<200 (π{A,B} R) kann in π{A,B} (σB<200 R) transformiert werden. - Geht man von der rechten Seite aus, d.h. von π{A,B} (σB<200 R), so kann die Transformation nur dann durchgeführt werden, wenn sich die Selektions-Bedingung lediglich auf Attribute bezieht, die auch in der Projektion spezifiert sind (siehe NB zu Regel 2). Im vorliegenden Fall entspricht Attr(F) der Attributmenge {B} und A entspricht der Attributmenge {A,B}. Die Nebenbedingung ist also erfüllt. D.h. die Transformation in die "←"-Richtung ist ebenfalls möglich. Zu 8: Gegeben sei (R A A=D S) A E=F T. Für die "→"-Transformation muss folgende Nebenbedingung erfüllt sein: {E,F} ⊆ ({D,E} ∪ {F,G,H}). Dies ist hier der Fall. Der Ausdruck kann somit in R A A=D (S A E=F T) transformiert werden. - Bei (R A A=D S) A A=F T ginge dies z.B. hingegen nicht. Zu 9: π {A} R kann in π {A} π {A,B} R transformiert werden und umgekehrt. Zu 10: σ A<100 ∧ B>30 R kann zerlegt werden in σ A<100 σ B>30 R. Umgekehrt kann man σ A<100 σ B>30 R durch Zusammenfassen der Selektionsbedingungen (UND-Verknüpfung) in σ A<100 ∧ B>30 R transformieren. 42 G. Specht: Datenbanksysteme 3-21 25.10.2012 Erläuterungen zu den Äquivalenzumformungen cont. Zu 11: σ B<300 (R1 ∪ R2) kann in (σB<300 R1) ∪ (σB<300 R2) transformiert werden und umgekehrt. Anmerkung: Hier ist keine Nebenbedingung erforderlich, da die Vereinigung nur zwischen Relationen gleichen Typs definiert ist. Zu 12: σB<300 (R1 − R2) kann in (σB<300 R1) − (σB<300 R2) transformiert werden und umgekehrt. (σ bei R2 kann auch entfallen!) Zu 13: Gegeben sei σ A<300 ∧ D>50 (R × S). Dieser Ausdruck kann in zwei Selektion überführt werden, indem man die Selektions-Bedingung geeignet „aufspaltet“. In diesem Fall wäre etwa (σ A<300 R) × (σ D>50 S) eine mögliche Aufspaltung. Zu 14: Da ein Verbund R A F S äquivalent zu σF (R × S) ist, gilt das im vorangegangenen Beispiel Gesagte – analog übertragen – auch hier. Zu 15: Ein Ausdruck der Art π {A,B} {R1 ∪ R2) kann stets „ausmultipliziert“ werden zu (π {A,B} R1) ∪ (π {A,B} R2). Zu 16: Die Nebenbedingung für die "→"-Richtung besagt, dass nach dem „Ausmultiplizieren“ die Projektions-Attribute so gewählt werden müssen, dass sie für die jeweilige Relation auch definiert sind. Im Falle des Ausdruckes π {A,R.B,D} (R × S) wäre z.B. (π {A,R.B} R) × (π {D} S) eine korrekte Transformation, (π {A} R) × (π {R.B, D} S) hingegen nicht. 43 Erläuterungen zu den Äquivalenzumformungen cont. Zu 17: Die Nebenbedingung für die "→"-Richtung kann wie folgt interpretiert werden: Sind die in der Verbund-Bedingung angegebenen Attribute eine Teilmenge der in der Projektion angegebenen Attribute (d.h. gilt Attr(F) ⊆ A), dann kann der Ausdruck „ausmultipliziert“ werden, wobei wieder zu beachten ist, dass die in der Projektion auf der linken Seite angegebenen Attribute wieder korrekt auf ihre Relationen „verteilt“ werden. Der Ausdruck π{A,B,E}(R A B<E S) kann z.B. transformiert werden in (π {A,B} R) B<E (π {E} S). π {A,B,D} (R A B<E S) hingegen wäre nicht transformierbar, da {B,E} ⊄ {A,B,D}. Die umgekehrte Richtung ("←") ist trivial. Hier sind lediglich die Projektions-Attribute zusammenzufassen. Wichtiger "Spezialfall": π A1 ∪ A2 R ≡ ? (π A1 R) A (π A2 R) "←"-Richtung gilt i.a. nicht !! Voraussetzung, damit es doch gilt: „lossless join“ → siehe Kapitel 4 Zu 23: R − σ B<200 R kann in σ B ≥ 200 R transformiert werden und umgekehrt. Zu 26: (σ A<10 R) − (σ B>100 R) kann in σ A<10 ∧ B≤100 R transformiert werden und umgekehrt. 44 G. Specht: Datenbanksysteme 3-22 25.10.2012 Abgeleitete Operatoren der Relationenalgebra R ∩ S Durchschnitt S wie üblich: R ∩ S ≡ R - (R - S) A A B a1 a1 b1 a2 a2 b1 a3 a3 b1 a4 b1 a1 b2 a3 b2 a2 b3 R÷S a3 b3 „Welchen Lieferanten liefern alle Teile?“ B a4 b3 „Welche Mitarbeiter arbeiten an allen Projekten mit?“ „Welche Kursleiter können alle Kurse halten?“ b1 a1 b4 b4 a2 b4 a3 b4 R ÷ S Division Sei D = R ÷ S, dann muss gelten: sch(S) ⊂ sch(R) sch(D) = sch(R) - sch(S) t ∈ D ⇔ ∀ s ∈ val(S): < t,s > ∈ val(R) Anwendungsbeispiele R Berechnung von D äquivalent zu (1) Temp1 ← π Attr(R -S) R (2) Temp2 ← π Attr(R -S) (( S × Temp1 ) - R) (3) D ← Temp1 - Temp2 45 Abgeleitete Operatoren der Relationenalgebra cont. RC F S Left Outer Join (Einseitiger) „äußerer-Verbund“. Alle Tupel der linken Relation (d.h. alle R-Tupel) sind im Ergebnis enthalten. Gibt es für ein Tupel ri ∈ R kein S-Tupel, das F erfüllt, so werden die S-Attribute im Ergebnistupel mit NULL aufgefüllt. R A a1 b1 B b1 c1 b2 b1 c2 a3 b4 b2 c3 a4 a5 b2 b3 R C a2 a4 Analog S B c6 b5 b1 C R.B=S.B S R.A R.B S.B S.C a1 b1 b1 c1 a1 b1 b1 c2 a2 b2 b2 c3 a3 b4 -- -- a4 b2 b2 c3 a4 b5 -- -- RC S Left Outer Join a5 b1 b1 c1 RD R Right Outer Join Full Outer Join a5 b1 b1 c2 S S ⇐ Nullwert! ⇐ Nullwert! Weitere Join-Varianten Semijoin R E S:= π (R A S) …alle Attribute von R Geeignet für Fragen: wie viele Joinpartner existieren zu S in R. G. Specht: Datenbanksysteme 46 3-23 25.10.2012 Bsp. für Query-Auswertung: Weinfreund • DB-Schema: – Weinfreund (P#, Name, Vorname) – Konsum (P#, W#, Datum, Menge) – Wein (W#, Weinberg, Jahrgang, Prozent, Rebsorte) • “Wieviel Prozent Alkohol haben die 78’er Weine des Weinbergs ‘Würzburger Stein’?” π{Prozent, w#} (σ(Jahrgang = 1978) ∧ (Weinberg = ’Würzburger Stein’)(Wein)) 47 Bsp. Weinfreund cont. • DB-Schema: – Weinfreund (P#, Name, Vorname) – Konsum (P#, W#, Datum, Menge) – Wein (W#, Weinberg, Jahrgang, Prozent, Rebsorte) • “Ermittle Name und Vorname von Weinfreunden von ‚Silvaner‘ und ‚Riesling‘” π{Name, Vorname} (Weinfreund A ( Konsum A (σ(Rebsorte = ‘Silvaner‘) ∨ (Rebsorte=‘Riesling‘)(Wein)))) 48 G. Specht: Datenbanksysteme 3-24 25.10.2012 Bsp. Weinfreund cont. • DB-Schema: – Weinfreund (P#, Name, Vorname) – Konsum (P#, W#, Datum, Menge) – Wein (W#, Weinberg, Jahrgang, Prozent, Rebsorte) • “Gesucht sind Name und Vorname von Weinfreunden, die an einem Tag mehr als 10 Gläser 86’er Obereisenheimer Höll getrunken haben, sowie der dazugehörige Alkoholgehalt.” π{Name, Vorname, Prozent} (σ(Menge > 10) ∧ (Weinberg=‘Obereisenheimer Höll‘) ∧ (Jahrgang=1986) (Weinfreund A Konsum A Wein) ) 49 Bsp. Weinfreund cont. • DB-Schema: – Weinfreund (P#, Name, Vorname) – Konsum (P#, W#, Datum, Menge) – Wein (W#, Weinberg, Jahrgang, Prozent, Rebsorte) • “W# aller Weine mit mehr Prozent Alkohol als ‘Riesling 1993‘” π{W2, W#} (σ(w1.Rebsorte=‘Riesling‘) ∧ (Jahrgang=1993)) (Wein W1 A Wein W2)) W1.Prozent < W2.Prozent 50 G. Specht: Datenbanksysteme 3-25 25.10.2012 Aggregation Mengenorientierte Operation, die • zuerst eine Partitionierung einer Relation in Teilmengen gemäß einer Gruppe von Attributwerten vornimmt (Gruppierung), • dann eine Aggregatsfunktion (z.B. sum, min, max, avg, etc.) auf jeder Teilmenge auswertet. • Das Ergebnis ist eine Relation, die für jede Gruppe ein Tupel mit dem Aggregationswert enthält. Sei R(x1, ..., xn, y, ...) eine Relation, mit Gruppierungsattributen X = {x1, ..., xn} und Aggregationsattribut y, und agg eine Aggregationsfunktion auf y: groupby (R, X, agg, y, duplicates) mit duplicates ∈ {distinct, all}. 51 Aggregation cont. Häufig verwendete Aggregations-Funktionen: – COUNT – SUM – MIN – MAX – AVG 52 G. Specht: Datenbanksysteme 3-26 25.10.2012 Aggregation cont. • „Wie hoch ist jeweils der durchschnittliche Alkoholgehalt der Jahrgänge 1985 und 1986?” σ(Jahrgang=1985) ∧ (Jahrgang=1986) (groupby(Wein, Jahrgang, AVG, Prozent, all)) 53 Aggregation cont. • Anmerkung: Aggregationen sollten im Allgemeinen auf Mengen mit Duplikaten (Multisets) angewendet werden, sonst entstehen falsche Ergebnisse. • Beispiel: Annahme, es gibt einen weiteren 85’er Wein mit 12.0%, dann ergäbe AVG({11, 10, 12, 12}) mittels “distinct” dasselbe (jetzt falsche) Resultat. 54 G. Specht: Datenbanksysteme 3-27 25.10.2012 Query Optimierung • Motivationsbeispiel: Sei die Kardinalität der Relationen R und S jeweils 10000 • Naiver Ansatz: Join wie in Definitionen als σ (R x S) berechnen 108 = 100 Mio. 108 Tupelzugriffe, je Zugriff nur 10-6 sec Antwortzeit: 100sec!!! Viel zu lange, praktisch untragbar 55 1. Nichtalgebraische Optimierungen D.h. einzelne Operationen günstiger implementieren. • Komplexitäten: – Selektion: • Relationen-Scan (sequentieller Durchlauf) O(n) • Index als B-Baum O(log n) • Index als Hash O(1) – hoffentlich – Projektion • naiv O(n2) • mit Index O(n log n) <= meist • Mit Hashindex O(n) <= wirklich gute Impl. + Kosten für Anlegen des Index 56 G. Specht: Datenbanksysteme 3-28 25.10.2012 Nichtalgebraische Optimierungen cont. Join O(n2) nested-loop-Join (naiv) for i:=1 to |R| do for j := 1 to |S| do if ri θ sj then Rel := Rel ∪ append(r, s); sort-merge-Join O(n log n) RAA S =B R sei sortiert nach A S sei sortiet nach B …, … …, … …, … …, … 3, … …, 2, 4, … …, 4, 4, … …, 4, 5, … …, 6, 57 Nichtalgebraische Optimierungen cont. Hash Join R A S O(n) (sei |R|=n) 1. |R| sei klein (z.B. Join- oder Selektionsausgabe) 2. auf S.B liege Hash •Fragen des Optimierers (Programm): – Können bestehende Indexe ausgenutzt werden? – Rentiert es sich, einen temporären Index anzulegen, so dass trotz Indexerzeugung die Query-Auswertung schneller wird (auch Indexe brauchen Platz!). 58 G. Specht: Datenbanksysteme 3-29 25.10.2012 2. Algebraische Optimierungen Ausnützen der Gesetze der relationalen Algebra als Rechenregeln, um möglichst kleine Zwischenrelationen zu erhalten! 1.R A (S A T) = (R A S) A T => optimale Joinreihenfolge 2.σF1(σF2(R)) = σF1 ∧ F2(R) 3.σF(R A S) = σF(R) A S falls F nur Attribute aus R betrifft 4.σF(R A S) = R A σF(S) falls F nur Attribute aus S betrifft 5.σF(πA(R)) = πA(σF(R)) falls Attribute(F) ⊆ A usw. Dazu wird eine komplette Query vom Optimierer in einen Operatorbaum transformiert und dieser dann transformiert. 59 Algebraische Optimierungen cont. • Beispiel: „Name, Vorname von Weinfreunden, die an einem Tag mehr als 10 Gläser 86‘er Obereisenheimer Höll getrunken haben, so wie der zugehörige Alkoholgehalt“ πName, Vorname, Prozent (σMenge > 10 ∧ Weinberg = “Obereisenheimer Höll” ∧ Jahrgang = 1986(Weinfreund A (Konsum A Wein))) Operatorbaum: 60 G. Specht: Datenbanksysteme 3-30 25.10.2012 Baumtransformationen zur Optimierung z.B. Selektionen und Projektionen zu den Blättern schieben, d.h. heuristisch “möglichst kleine Zwischenergebnisse produzieren”. Ergebnis: Jetzt viel kleinere Zwischenergebnisse => Joins (n log m) viel billiger Gute Optimierer bauen ist schwierig, da allein das Problem der richtigen Joinreihenfolge NP-vollständig ist. 61 Abschließende Bemerkungen zur Relationen-Algebra • In der Relationalen Algebra ist kein Komplementoperator definiert. Grund: im Allgemeinen ∞-große Relationen (außer bei endlichen Domänen) • Relationen-Algebra als Datenbanksprache nur bei den ersten relationalen DBMS-Prototypen als Anfragesprache verwendet • Jedoch bis heute wichtige formale Grundlage für DBMS-interne AnfrageVerarbeitung und Optimierung. • Darüberhinaus dient die Relationale Algebra als theoretisches Maß für die Ausdrucksmächtigkeit relationaler Datenbank-Sprachen → „relationale Vollständigkeit“ • Relationale Algebra ist nicht rein deskriptiv, wegen Reihenfolgen abhängigkeiten (funktionale Sprache). Jedoch: Äquivalenz-Umformungen erlauben Optimierung. 62 G. Specht: Datenbanksysteme 3-31 25.10.2012 Relationen-Kalkül 63 Relationen-Kalkül Relationen-Algebra • „Konstruktion“ der Ergebnisrelation durch sukzessive (geschachtelte) Anwendung von Algebra-Operatoren auf die Ausgangsrelationen (→ prozedurale Vorgehensweise) Relationen-Kalkül liegt andere Philosophie zugrunde: • Beschreibung, welche Bedingungen (Prädikate) die Tupel der Ergebnisrelation erfüllen müssen, vgl. Prädikatenkalkül (→ deklarative Vorgehensweise) 64 G. Specht: Datenbanksysteme 3-32 25.10.2012 Beispiel Gegeben seien die folgenden Relationen: Vorauss(VorNr, KursNr) Kurs(KursNr, Titel) Angebot(AngNr, KursNr, Datum, Ort) Zu beantworten sei folgende Anfrage: „Gib für alle Kurse, die zwischen dem 1.1.12 und 31.3.12 stattfanden und den Kurs G08 als Voraussetzung haben, die KursNr, den Titel, das Datum und den Ort aus.“ 65 Anfrageformulierung In Algebra (schrittweise Konstruktion der Ergebnismenge) π KursNr, Titel, Datum, Ort (( Kurs A σ 1.1.12 < Datum < 31.3.12 Angebot) A (σ VorNr = 'G08' Vorauss)) Tupel-Relationenkalkül (prädikative Beschreibung der Ergebnismenge) {t| ( ∃ a ( ∃ v ( ∃ k (Kurs(k) ∧ Angebot(a) ∧ Vorauss(v) ∧ k.KursNr = a.KursNr ∧ k.KursNr = v.KursNr ∧ a.Datum > 1.1.12 ∧ a.Datum < 31.3.12 ∧ v.VorNr = 'G08' ∧ t.KursNr = k.KursNr ∧ t.Titel = k.Titel ∧ t.Datum = a.Datum ∧ t.Ort = a.Ort )))) } 66 G. Specht: Datenbanksysteme 3-33 25.10.2012 Anfrageformulierung cont. Relationenkalkül • vgl. Prädikatenlogik 1. Stufe • Tupel-Relationenkalkül vs. Domain-Relationenkalkül : Variablen für ganze Tupel bzw. für einzelne Attributwerte 67 Tupel-Relationenkalkül (TRC) • „Atome“ 1. R(t) : R = Relationenname t = Tupelvariable Aussage: „Tupel t ist in R enthalten“ 2. X Θ Y: X, Y = Konstanten oder Tupelkomponenten t[i] (t = Tupelvariable, i = i-te Tupelkomponente) Θ = arithm. Vergleichsoperator (<, >, =, ...) Alle Tupel einer Relation haben eine konstante Stelligkeit. Falls hierauf explizit Bezug genommen wird, so schreiben wir t(s) . 68 G. Specht: Datenbanksysteme 3-34 25.10.2012 Tupel-Relationenkalkül (TRC) • „freie / gebundene Variablen“: Analogie: – gebundene Variablen ≈ lokale Variablendeklaration einer Prozedur, kann nicht von außen referenziert werden. – freie Variablen ≈ globale Variablen, außerhalb der betrachteten Prozedur deklariert. Sei eine freie Tupelvariable t „global“ bzgl. Formel F, dann entspricht (∃t) bzw. (∀t) in etwa der „Deklaration“ der Variablen t. 69 Tupel-Relationenkalkül (TRC) cont. Formeln, freie und gebundene Variablen im TRC: • Jedes Atom ist eine Formel. Alle in einem Atom auftretenden Tupelvariablen sind „frei“ • Falls F1 und F2 Formeln sind, dann sind auch ¬ F1, (F1), F1 ∧ F2 und F1 ∨ F2 Formeln. • Wenn F eine Formel ist, dann ist „(∃ t F)" auch eine Formel. Alle in F auftretenden freien Tupelvariablen t werden an ∃ t in der Formel " ∃ t F" gebunden. Der Status anderer Tupelvariablen in F ändert sich dadurch nicht • Wenn F eine Formel ist, dann ist „(∀ t F)" auch eine Formel. Alle in F auftretenden freien Tupelvariablen t werden an t in der Formel " (∀ t F)" gebunden. Der Status anderer Tupelvariablen in F ändert sich dadurch nicht • Nichts anderes ist eine Formel 70 G. Specht: Datenbanksysteme 3-35 25.10.2012 Tupel-Relationenkalkül (TRC) cont. Anfrage im TRC: { t | F(t) } mit t als einziger freien Tupelvariablen in Formel F Anmerkung: Eine Anfrage des TRC liefert nicht notwendig eine endliche Tupelmenge! 71 Beispiel Vereinigung von R1 und R2: { t | R1(t) ∨ R2(t) } Anmerkungen: – Jedes Tupel hat auch eine feste Stelligkeit. R1 und R2 müssen also entsprechend „kompatibel“ sein. – In dieser einfachen Form sind alle Komponenten (Attribute) auch „domainkompatibel“. „Gib alle Tupel t, die nicht in Relation R vorkommen, aus !“ (Negation): { t | ¬ R(t) } Anmerkungen: – Welche Ergebnistupel (Schema) ? Vereinfachende Annahme: Schema von R – Welche Ausprägungen ? Vereinfachend: Komplement von R bzgl. Produkt der Attributdomains – Resultat von Domains abhängig! evtl. nicht endlich! 72 G. Specht: Datenbanksysteme 3-36 25.10.2012 Beispiel cont. • Projektion auf Attribute (Komponenten) i1, i2, ..., ik von R { t (k) | ∃ u ( R(u) ∧ t[1] = u[i1] ∧ ... ∧ t[k] = u[ik] ) } • Selektion aller Tupel aus R, die Bedingung F erfüllen: { t | R(t) ∧ F (t) } – F(t) steht hier stellvertretende für die konkrete Bedingung an die Tupelkomponente(n) – z.B. (t[1] = 17) ∧ (t[3] = 24) • Differenz zweier Relationen R und S: { t | R(t) ∧ ¬ S(t) } • Kartesisches Produkt von R und S: { t(r+s) | (∃ u(r) (∃ v(s) ( R(u) ∧ S(v) ∧ t[1] = u[1] ∧ ... ∧ t[r] = u[r] ∧ t[r+1] = v[1] ∧ ... ∧ t[r+s] = v[s] ) } 73 Sicherer Tupel-Relationenkalkül Problem: Bei bisheriger TRC-Definition können unendlich Ergebnismengen auftreten { t | ¬ R(t) } : nur Einschränkung hinsichtlich Stelligkeit von t (≡ R), hinsichtlich des Domains aber nicht beschränkt Überlegung: 1. Wir fragen nach Werten aus der Datenbank, nicht von „sonst irgendwoher“ 2. Jede Relation in der konkreten Datenbank ist endlich, damit ist auch der betrachteten Datenbank-Zustand endlich 3. Einschränkung: Als Domain (für die Auswertung von Anfragen) werden nur in der DB vorkommende Werte oder in der Anfrage auftretende Konstanten zugelassen 74 G. Specht: Datenbanksysteme 3-37 25.10.2012 Definition „Safety“ Eine Formel F des TRC heißt sicher, wenn a) keine ∀ - Quantoren vorkommen b) bei F1 ∨ F2, F1 und F2 jeweils nur eine freie Variable haben, und zwar die gleiche c) bei (maximalen) konjunktiven Teilformeln F1 ∧ F2 ∧ ... ∧ Fn alle freien Tupelkomponenten in den Fi begrenzt sind: − Fi nicht negiert, kein arithm. Vergleich, freie Tupelvariable t → alle Komp. von t begrenzt − Fi ≡ t[a] = c oder Fi ≡ c = t[a], für c ... Konstante → t[a] begrenzt − Fi ≡ t[a] = t'[a'] oder Fi ≡ t'[a'] = t [a] und t' [a'] begrenzt → t[a] begrenzt d) Negation (¬) nur auf Termen innerhalb einer Konjunktion wie in c) erlaubt 75 Definition „Safety“ cont. Bemerkung zu a) • (∀ t) F(t) ⇔ ¬ (∃ t) (¬ F(t) ) ... d.h. keine Einschränkung • Alternativ: ∀ nur in der Form: ... und bei ∃: (∀ t) (¬ R(t) ∨ ...) (∃ t) ( R(t) ∨ ...) 76 G. Specht: Datenbanksysteme 3-38 25.10.2012 Relationale Vollständigkeit Satz: Relationenalgebra und sicherer Relationenkalkül (TRC) sind äquivalent Beweisidee: Finde zu jedem Ausdruck in Relationenalgebra einen sicheren TRC Ausdruck und umgekehrt (siehe Lehrbücher) „Relational Completeness“ Eine Anfragesprache für das Relationenmodell heißt relational vollständig, wenn sie (mindestens) so ausdruckskräftig wie die Relationenalgebra (oder der sichere TRC) ist [Codd 70] 77 G. Specht: Datenbanksysteme 3-39