Grundlagen des relationalen Modells Seien D 1, D,, D n Domänen (Wertebereiche, Mengen) Eine Relation ist eine Teilmenge R D 1 x x D n Bsp.: Telefonbuch string x string x integer Ein Tupel ist jedes Element t R von R Bsp.: t = ( Mickey Mouse, Main Street, 4711) Schema: legt die Struktur der gespeicherten Daten fest Bsp.: Telefonbuch: {[Name: string, Adresse: string, Telefon#:integer]}
Name Mickey Mouse Mini Mouse Donald Duck Telefonbuch Straße Main Street Broadway Broadway Telefon# 4711 9475 9567 Ausprägung: der aktuelle Zustand der Datenbasis Schlüssel: minimale Menge von Attributen, deren Werte ein Tupel eindeutig identifizieren Primärschlüssel: wird unterstrichen Einer der Schlüsselkandidaten wird als Primärschlüssel ausgewählt Hat eine besondere Bedeutung bei der Referenzierung von Tupeln
Name Mickey Mouse Mini Mouse Donald Duck Telefonbuch Straße Main Street Broadway Broadway Telefon# 4711 9475 9567 Die Festlegung eines (Primär-)Schlüssels ist eine Designentscheidung. Bei einer gegebenen Datenbank wird dann bei einer Konsistenzprüfung überprüft, ob sie dieser Einschränkung gehorcht.
Uni-Schema MatrNr Name Semester Studenten N N voraussetzen Nachfolger Vorgänger N M hören Vorlesungen M M N VorlNr SWS Titel Note prüfen lesen PersNr 1 1 Rang Name Assistenten N arbeitenfür 1 Professoren Raum Fachgebiet PersNr Name
Relationale Darstellung von Entitytypen Studenten: {[MatrNr:integer, Name: string, Semester: integer]} Vorlesungen: {[VorlNr:integer, Titel: string, SWS: integer]} Professoren: {[PersNr:integer, Name: string, Rang: string, Raum: integer]} Assistenten: {[PersNr:integer, Name: string, Fachgebiet: string]}
Relationale Darstellung von Beziehungen A 11 E 1 A 1 E E n R A 1k1 A R 1 R A k R A k A n1 A nk n R R A11,., A1 k, A1,, A,, 1,,, 1,, 1 k A n Ank A A n kr 1443 1443 1443 1443 R:{[ ]} Schlüsselvon E 1 Schlüsselvon E Schlüsselvon E n Attributevon R
Ausprägung der Beziehung hören 5001 9555 50 5403 50 9555 5049 910 5041 910 5001 910 559 8106 516 8106 505 8106 5041 8106 VorlNr MatrNr 5001 610 405 7550 5001 7550 hören VorlNr 5001 405 Vorlesungen MatrNr 610 7550 Studenten Studenten hören Vorlesungen M N MatrNr VorlNr
Beziehungen unseres Beispiel- Schemas hören : {[MatrNr: integer, VorlNr: integer]} lesen : {[PersNr: integer, VorlNr: integer]} arbeitenfür : {[AssistentenPersNr: integer, ProfPersNr: integer]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Schlüssel der Relationen hören : {[MatrNr: integer, VorlNr: integer]} lesen : {[PersNr: integer, VorlNr: integer]} arbeitenfür : {[AssistentenPersNr: integer, ProfPersNr: integer]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Verfeinerung des relationalen Schemas Professoren 1 lesen N Vorlesungen 1:N-Beziehung Initial-Entwurf Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} 1
Verfeinerung des relationalen Schemas 1:N-Beziehung Initial-Entwurf Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Verfeinerung durch Zusammenfassung Vorlesungen : {[VorlNr, Titel, SWS, gelesenvon]} Professoren : {[PersNr, Name, Rang, Raum]} Regel Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen!
Ausprägung von Professoren und Vorlesung PersNr 15 16 17 133 134 136 137 Professoren Name Sokrates Russel Kopernikus Popper Augustinus Curie Kant Rang Raum C4 C4 C3 C3 C3 C4 C4 6 3 310 5 309 36 7 VorlNr 5001 5041 5043 5049 405 505 516 559 50 4630 Vorlesungen Titel Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken SWS 4 4 3 4 3 4 Gelesen Von 137 15 16 15 15 16 16 133 134 137 Professoren 1 lesen N Vorlesungen
Vorsicht: So geht es NICHT Professoren PersNr Name Rang Raum 15 Sokrates C4 6 15 Sokrates C4 6 15 Sokrates C4 6 134 Augustinus C3 309 136 Curie C4 36 Vorlesungen VorlNr Titel 5001 Grundzüge liest 5041 Ethik 5041 5043 Erkenntnistheorie 5049 5049 Mäeutik 405 405 Logik 505 Wissenschaftstheorie 50 516 Bioethik?? 559 Der Wiener Kreis 50 Glaube und Wissen 4630 Die 3 Kritiken SWS 4 4 3 4 3 4 Professoren 1 lesen N Vorlesungen
Vorsicht: So geht es NICHT: Folgen Anomalien PersNr 15 15 15 134 136 Professoren Name Sokrates Sokrates Sokrates Augustinus Curie Rang Raum C4 C4 C4 C3 C4 6 6 6 309 36 liest 5041 5049 405 50?? Vorlesungen VorlNr Titel 5001 Grundzüge 5041 Ethik 5043 Erkenntnistheorie 5049 Mäeutik 405 Logik 505 Wissenschaftstheorie 516 Bioethik 559 50 4630 Der Wiener Kreis Glaube und Wissen Die 3 Kritiken Update-Anomalie: Was passiert wenn Sokrates umzieht? Lösch-Anomalie: Was passiert wenn Glaube und Wissen wegfällt? Einfügeanomalie: Curie ist neu und liest noch keine Vorlesungen? ( Funktionale Abhängigkeiten) SWS 4 4 3 4 3 4
Relationale Modellierung der Generalisierung Fachgebiet Assistenten is_a Angestellte Professoren PersNr Name Raum Rang Angestellte: {[PersNr, Name]} Professoren: {[PersNr, Rang, Raum]} Assistenten: {[PersNr, Fachgebiet]}
Relationale Modellierung schwacher Entitytypen Studenten 1 ablegen N Prüfungen Note PrüfTeil MatrNr umfassen N N abhalten VorlNr M M PersNr Vorlesungen Professoren Prüfungen: {[MatrNr: integer, PrüfTeil: string, Note: integer]} umfassen: {[MatrNr: integer, PrüfTeil: string, VorlNr: integer]} abhalten: {[MatrNr: integer, PrüfTeil: string, PersNr: integer]}
Man beachte, dass in diesem Fall der (global eindeutige) Schlüssel der Relation Prüfung nämlich MatrNr und PrüfTeil als Fremdschlüssel in die Relationen umfassen und abhalten übernommen werden muss.
Die relationale Uni-DB Raum Rang Name PersNr 6 C4 Sokrates 15 7 C4 Kant 137 36 C4 Curie 136 309 C3 Augustinus 134 5 C3 Popper 133 310 C3 Kopernikus 17 3 C4 Russel 16 Professoren Semester Name MatrNr 18 Xenokrates 400 Feuerbach 9555 Theophrastos 910 3 Carnap 8106 6 Schopenhauer 7550 8 Aristoxenos 6830 10 Fichte 610 1 Jonas 5403 Studenten 137 4 Die 3 Kritiken 4630 134 Glaube und Wissen 50 133 Der Wiener Kreis 559 gelesen von SWS Titel VorlNr 137 4 Grundzüge 5001 16 Bioethik 516 16 3 Wissenschaftstheorie 505 15 4 Logik 405 15 Mäeutik 5049 16 3 Erkenntnistheorie 5043 15 4 Ethik 5041 Vorlesungen Nachfolger Vorgänger 5041 5001 559 505 505 5041 505 5043 516 5041 5049 5001 5043 5001 voraussetzen 516 8106 50 5403 50 9555 5049 910 5041 910 VorlNr MatrNr 5001 610 5001 910 559 8106 505 8106 5041 8106 405 7550 5001 7550 hören Boss Fachgebiet Name PerslNr 15 Ideenlehre Platon 300 16 Gott und Natur Spinoza 3007 17 Keplersche Gesetze Newton 3006 17 Planetenbewegung Rhetikus 3005 16 Sprachtheorie Wittgenstein 3004 15 Syllogistik Aristoteles 3003 Assistenten Note PersNr VorlNr MatrNr 1 16 5001 8106 137 4630 7550 15 5041 5403 prüfen
Rang Raum Name ersnr 6 C4 Sokrates 15 7 C4 Kant 137 36 C4 Curie 136 309 C3 Augustinus 134 5 C3 Popper 133 310 C3 Kopernikus 17 3 C4 Russel 16 Professoren Mat Semester Name rnr 18 Xenokrates 400 Feuerbach 9555 Theophrastos 910 3 Carnap 8106 6 Schopenhauer 7550 8 Aristoxenos 6830 10 Fichte 610 1 Jonas 5403 Studenten 137 4 Die 3 Kritiken 4630 134 Glaube und Wissen 50 133 Der Wiener Kreis 559 gelesen Von SWS Titel VorlNr 137 4 Grundzüge 5001 16 Bioethik 516 16 3 Wissenschaftstheorie 505 15 4 Logik 405 15 Mäeutik 5049 16 3 Erkenntnistheorie 5043 15 4 Ethik 5041 Vorlesungen Nachfolger Vorgänger 5041 5001 559 505 505 5041 505 5043 516 5041 5049 5001 5043 5001 voraussetzen 516 8106 50 5403 50 9555 5049 910 5041 910 VorlNr MatrNr 5001 610 5001 910 559 8106 505 8106 5041 8106 405 7550 5001 7550 hören Boss Fachgebiet Name PerslNr 15 Ideenlehre Platon 300 16 Gott und Natur Spinoza 3007 17 Keplersche Gesetze Newton 3006 17 Planetenbewegung Rhetikus 3005 16 Sprachtheorie Wittgenstein 3004 15 Syllogistik Aristoteles 3003 Assistenten Note PersNr VorlNr MatrNr 1 16 5001 8106 137 4630 7550 15 5041 5403 prüfen
Die relationale Algebra σ Selektion π Pojektion x Kreuzprodukt A Join (Verbund) ρ Umbenennung Mengendifferenz Division Vereinigung Mengendurchschnitt F Semi-Join (linker) E Semi-Join (rechter) C linker äußerer Join D rechter äußerer Join
Die relationalen Algebra- Operatoren Selektion σ Semester > 10 (Studenten) σ Semester > 10 (Studenten) MatrNr Name Semester 400 Xenokrates 18 5403 Jonas 1 In der Selektion σ F (R) ist das Selektionsprädikat F eine Formel, die aufgebaut ist aus Attributnamen von R und Konstanten =, <, >,,, den logischen Operatoren,, Das Ergebnis von σ F (R) besteht aus allen Tupeln t R, die F erfüllen, wenn jedes Auftreten eines Attributes A durch den Wert t.a ersetzt wird.
Die relationalen Algebra- Operatoren Projektion Π Rang (Professoren) Π Rang (Professoren) Rang C4 C3 Die Projektion wählt (eine oder mehrere) Spalten der Relation aus. Duplikate im Ergebnis werden nur einmal gelistet (aufgrund der Mengensemantik des Relationenkalküls)
Die relationalen Algebra- Operatoren MatrNr Studenten Name Semester Vereinigung 400 5403 610 Xenokrates Jonas Fichte Studenten 18 1 10 = MatrNr 400 5403 610 6830 Studenten Name Xenokrates Jonas Fichte Aristoxenos Semester 18 1 10 8 MatrNr Name Semester 7550 Schopenhauer 6 6830 Aristoxenos 8 8106 Carnap 3 7550 Schopenhauer 6 910 Theophrastos 8106 910 Carnap Theophrastos 3 9555 Feuerbach 9555 Feuerbach Relationen mit gleichem Schema können vereinigt werden.
MatrNr 400 5403 610 6830 7550 8106 910 9555 MatrNr 6830 7550 8106 910 9555 1345 Die relationalen Algebra- Studenten Name Semester Xenokrates 18 Jonas 1 Fichte 10 Aristoxenos 8 Schopenhauer 6 Carnap 3 Theophrastos Feuerbach - Studenten Name Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach Waalkes Operatoren Differenz = Studenten MatrNr Name Semester 400 Xenokrates 18 5403 Jonas 1 610 Fichte 10 Semester 8 6 3 Von Relationen mit gleichem Schema kann die Mengendifferenz gebildet werden.
Die relationalen Algebra- Operatoren Kartesisches Produkt Professoren x hören PersNr 15 15 137 Professoren hören Name Rang Raum MatrNr VorlNr Sokrates C4 6 610 5001 Sokrates C4 6 9555 5001 Kant C4 7 9555 5001 Das Schema enthält alle Attribute beider Relationen. Die Relation enthält alle n m möglichen Kombinationen der jeweiligen Tupel der beiden Relationen.
Die relationalen Algebra- Operatoren Kartesisches Produkt Professoren x hören PersNr 15 15 137 Professoren hören Name Rang Raum MatrNr VorlNr Sokrates C4 6 610 5001 Sokrates C4 6 9555 5001 Kant C4 7 9555 5001 Problem: riesige Zwischenergebnisse Beispiel: (Professoren x hören) "bessere" Operation: Join (siehe unten)
Umbenennung Die relationalen Algebra- Operatoren Umbenennung von Relationen Beispiel: Ermittlung indirekter Vorgänger. Stufe der Vorlesung 516 Π V1. Vorgänger( σ V. Nachfolger=516 V1.Nachfolger = V.Vorgänger ( ρ V1 (voraussetzen) x ρ V (voraussetzen))) Umbenennung von Attributen ρ Voraussetzung Vorgänger (voraussetzen)
Formale Definition der Algebra Basisausdrücke Relation der Datenbank oder konstante Relationen Operationen Selektion: σ p (E 1 ) Projektion: Π S (E 1 ) Kartesisches Produkt: E 1 x E Umbenennung: ρ V (E 1 ), ρ A B (E 1 ) Vereinigung: E 1 E Differenz: E 1 -E Weitere Operationen können aus diesen zusammengesetzt werden
Der natürliche Verbund (Join) Gegeben seien: R(A 1,, A m, B 1,, B k ) S(B 1,, B k, C 1,, C n ) R A S = Π A1,, Am, R.B1,, R.Bk, C1,, Cn (σ R.B1=S. B1 R.Bk = S.Bk (RxS)) A 1 R S A A m B 1 R A S R S B B k C 1 S R C C n
Drei-Wege-Join (Studenten A hören) A Vorlesungen (Studenten A hören) A Vorlesungen MatrNr Name Semester VorlNr Titel SWS gelesenvon 610 Fichte 10 5001 Grundzüge 4 137 7550 Jonas 1 50 Glaube und Wissen 134 8106 Carnap 3 405 Wissenschftstheorie 3 16
Allgemeiner Join (Theta-Join) Gegeben seien folgende Relationen(-Schemata) R(A1,, An) und S(B1,, Bm) R A θ S = σ θ (R x S) R A θ S A 1 R A A n R A θ S B 1 S B B m
natürlicher Join Andere Join-Arten L A B C a 1 b 1 b a c 1 c A R C D E c 1 d 1 d c 3 e 1 e = A a 1 Resultat B C D b 1 c 1 d 1 E e 1 linker äußerer Join L A B C a 1 b 1 b a c 1 c R C C D E c 1 d 1 e 1 = c 3 d e Resultat A B C D E a 1 b 1 c 1 d 1 e 1 a b c - -
rechter äußerer Join L A B C a 1 b 1 b a c 1 c R D C D E c 1 d 1 e 1 = c 3 d e A a 1 - Resultat B C D b 1 c 1 d 1 - c 3 d E e 1 e
Andere Join-Arten äußerer Join L R A B C C D E a 1 b 1 c B 1 c 1 d 1 e 1 = a c 3 b c d e Resultat A B C D E a 1 b 1 c 1 d 1 e 1 a b c - - - - c 3 d e Semi-Join von L mit R L A B C a 1 b 1 b a c 1 c R E C D E c 1 e 1 = c 3 d 1 d e Resultat A B C a 1 b 1 c 1
Andere Join-Arten (Forts.) Semi-Join von R mit L L A B C a 1 b 1 b a c 1 c F R C D E c 1 d 1 d c 3 e 1 e = Resultat C D E c 1 d 1 e 1
Die relationale Division Bsp.: Finde MatrNr der Studenten, die alle vierstündigen Vorlesungen hören L := Π VorlNr (σ SWS=4 (Vorlesungen)) L hören Π VorlNr (σ SWS=4 (Vorlesungen))
Definition der Division t R S, falls für jedes ts S ein tr R existiert, so dass gilt: tr.s = ts.s tr.(r-s) = t M m 1 m 1 R V v 1 v m 1 v 3 m v m v 3 S V = v 1 v R S Die Division R S kann auch durch Differenz, Kreuzprodukt und Projektion ausgedrückt werden. R S = Π (R S) (R) Π (R S) ((Π (R S) (R) x S) R) M m 1
Mengendurchschnitt Als Beispielanwendung für den Mengendurchschnitt (Operatorsymbol ) betrachten wir folgende Anfrage: Finde die PersNr aller C4-Professoren, die mindestens eine Vorlesung halten. Π PersNr (ρ PersNr gelesenvon (Vorlesungen)) Π PersNr (σ Rang=C4 (Professoren)) Mengendurchschnitt nur auf zwei Argumentrelationen mit gleichem Schema anwendbar Deshalb ist die Umbenennung des Attribute gelesenvon in PersNr in der Relation Vorlesungen notwendig Der Mengendurchschnitt zweier Relationen R S kann durch die Mengendifferenz wie folgt ausgedrückt weden: R S = R (R S)
Der relationale Tupel-kalkül Eine Anfrage im relationalen Tupel-Kalkül hat die Form {t P(t)} mit P(t) Formel. Beispiele: C4-Professoren {p p Professoren p.rang = 'C4'} Studenten mit mindestens einer Vorlesung von Curie {s s Studenten h hören(s.matrnr=h.matrnr v Vorlesungen(h.VorlNr=v.VorlNr p Professoren(p. PersNr=v.gelesenVon p.name = 'Curie')))}
Wer hat alle vierstündigen Vorlesungen gehört {s s Studenten v Vorlesungen (v.sws=4 h hören(h.vorlnr=v.vorlnr h.matrnr= s.matrnr))}
Definition des Tupelkalküls Atome s R, mit s Tupelvariable und R Relationenname s.a φt.b, mit s und t Tupelvariablen, A und B Attributnamen und φ Vergleichsperator (=,,, ) s. A φ c mit c Konstante Formeln Alle Atome sind Formeln Ist P Formel, so auch P und (P) Sind P 1 und P Formeln, so auch P 1 P, P 1 P und P 1 P Ist P(t) Formel mit freier Variable t, so auch t R(P(t)) und t R(P(t))
Sicherheit Einschränkung auf Anfragen mit endlichem Ergebnis. Die folgende Beispielanfrage {n (n Professoren)} ist nicht sicher, denn das Ergebnis ist unendlich. Lösung durch Zusatzbedingung: Das Ergebnis des Ausdrucks muss Teilmenge der Domäne der Formel sein. Die Domäne einer Formel enthält - alle in der Formel vorkommenden Konstanten - alle Attributwerte von Relationen, die in der Formel referenziert werden
Der relationale Domänenkalkül Ein Ausdruck des Domänenkalküls hat die Form {[v 1, v,, v n ] P (v 1,, v n )} mit v 1,, v n Domänenvariablen und P Formel. Beispiel: MatrNr und Namen der Prüflinge von Curie {[m, n] s ([m, n, s] Studenten v, p, g ([m, v, p,g] prüfen a,r, b([p, a, r, b] Professoren a = 'Curie')))}
Sicherheit des Domänenkalküls Sicherheit ist analog zum Tupelkakkül zum Beispiel ist {[p,n,r,o] ([p,n,r,o] Professoren) } nicht sicher. Ein Ausdruck {[x 1, x,, x n ] P(x 1, x,, x n )} ist sicher, falls folgende drei Bedingungen gelten:
1. Falls Tupel [c 1, c,, c n ] mit Konstante c i im Ergebnis enthalten ist, so muss jedes c i (1 i n) in der Domäne von P enthalten sein.. Für jede existenz-quantifizierte Teilformel x(p 1 (x)) muss gelten, dass P 1 nur für Elemente aus der Domäne von P 1 erfüllbar sein kann - oder evtl. für gar keine. Mit anderen Worten, wenn für eine Konstante c das Prädikat P 1 (c) erfüllt ist, so muss c in der Domäne von P 1 enthalten sein. 3. Für jede universal-quantifizierte Teilformel x(p 1 (x)) muss gelten, dass sie dann und nur dann erfüllt ist, wenn P 1 (x) für alle Werte der Domäne von P 1 erfüllt ist- Mit anderen Worten, P 1 (d) muss für alle d, die nicht in der Domäne von P 1 enthalten sind, auf jeden Fall erfüllt sein.
Ausdruckskraft Die drei Sprachen 1. relationale Algebra,. relationaler Tupelkalkül, eingeschränkt auf sichere Ausdrücke und 3. relationaler Domänenkalkül, eingeschränkt auf sichere Ausdrücke sind gleich mächtig.