Grundlagen des relationalen Modells Das relationale Modell Verfeinerung des relationalen Schemas Relationale Algebra Relationenkalkül voraus setzen Nachfolger Vorgänger Uni-Schema MatrNr Telefon# 4711 94725 95672 ... Name Studenten Semester •Ausprägung: der aktuelle Zustand der Datenbasis N N hör en N M M Vorlesunge n Note A11 SWS R A2k •Einer der Schlüsselkandidaten wird als Primärschlüssel ausgewählt Kapitel 3 1 •Hat eine besondere Bedeutung bei der Referenzierung von Tupeln Grundlagen des relationalen Modells Name Mickey Mouse Mini Mouse Donald Duck ... Seien D1, D2, ..., Dn Domänen (Wertebereiche, Mengen) Eine Relation ist eine Teilmenge R D1 x ... x Dn Bsp.: Telefonbuch string x string x integer Ein Tupel ist jedes Element t R von R Telefonbuch Straße Main Street Broadway Broadway ... Name Schema: legt die Struktur der gespeicherten Daten fest N 1 1 Name 5 Vorlesungen: {[VorlNr:integer, Titel: string, SWS: integer]} MatrNr 4 Ausprägung von Professoren und VorlNr hören : {[MatrNr: integer, VorlNr: integer]} Professoren 1 lesen N PersNr 2125 2126 2127 2133 2134 2136 2137 Vorlesungen arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr: integer]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} 1:N-Beziehung Initial-Entwurf prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Professoren Name Rang Raum Sokrates C4 226 Russel C4 232 Kopernikus C3 310 Popper C3 52 Augustinus C3 309 Curie C4 36 Kant C4 7 Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Note: decimal]} Professoren 9 lesen : {[PersNr: integer, VorlNr: integer]} arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr: integer]} PersNr 2125 2125 2125 ... 2134 2136 Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]} Professoren Name Rang Raum Sokrates C4 226 Sokrates C4 226 Sokrates C4 226 ... ... ... Augustinus C3 309 Curie C4 36 liest 5041 5049 4052 ... 5022 ?? prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Regel Note: decimal]} 7 Vorlesungen ... 5001 ... 4052 ... ... ... VorlNr VorlNr M Vorlesungen hören 8 Gelesen Von 2137 2125 2126 2125 2125 2126 2126 2133 2134 2137 Vorlesungen Vorlesungen VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 4 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 4 5052 Wissenschaftstheorie 3 5216 Bioethik 2 5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2 4630 Die 3 Kritiken 4 PersNr 2125 2125 2125 ... 2134 2136 Professoren Name Rang Raum Sokrates C4 226 Sokrates C4 226 Sokrates C4 226 ... ... ... Augustinus C3 309 Curie C4 36 liest 5041 5049 4052 ... 5022 ?? VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 4 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 4 5052 Wissenschaftstheorie 3 5216 Bioethik 2 5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2 4630 Die 3 Kritiken 4 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)15 Relationale Modellierung der Generalisierung Fachge biet Assistenten is_a Professoren Raum Angestellte PersNr Name Rang Angestellte: {[PersNr, Name]} Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen! 10 N 4 4 3 2 4 3 2 2 2 4 Vorsicht: So geht es NICHT Verfeinerung durch Zusammenfassung Vorlesungen : {[VorlNr, Titel, SWS, gelesenVon]} Professoren : {[PersNr, Name, Rang, Raum]} voraussetzen : {[Vorgänger: integer, Nachfolger: integer]} 5001 Grundzüge 5041 Ethik 5043 Erkenntnistheorie 5049 Mäeutik 4052 Logik 5052 Wissenschaftstheorie 5216 Bioethik 5259 Der Wiener Kreis 5022 Glaube und Wissen 4630 Die 3 Kritiken lesen R Attribute von R Vorsicht: So geht es NICHT: FolgenÎAnomalien Vorlesungen 13 1:N-Beziehung Initial-Entwurf hören : {[MatrNr: integer, VorlNr: integer]} 1 Vorlesungen Titel SWS 11 Verfeinerung des relationalen Schemas Schlüssel der Relationen N 6 Vorlesung n R 1 n Schlüssel von En hören MatrNr VorlNr 26120 5001 27550 5001 27550 4052 28106 5041 28106 5052 28106 5216 28106 5259 29120 5001 29120 5041 29120 5049 29555 5022 25403 5022 29555 5001 Assistenten: {[PersNr:integer, Name: string, Fachgebiet: string]} Studenten lesen : {[PersNr: integer, VorlNr: integer]} Schlüssel von E2 Studenten MatrNr ... 26120 ... 27550 ... ... ... Studenten: {[MatrNr:integer, Name: string, Semester: integer]} Verfeinerung des relationalen Schemas Ank Ausprägung der Beziehung hören Telefonbuch: {[Name: string, Adresse: string, Telefon#:integer]} Beziehungen unseres BeispielSchemas An1 ... 2 1 Schlüssel von E1 Professoren: {[PersNr:integer, Name: string, Rang: string, Raum: integer]} 2 ... ... 2 En R:{[A11 ,...., A1k , A21 ,..., A2k ,..., An1 ,...,Ank , A ,...,ARk]} Raum Relationale Darstellung von Entitytypen Telefon# 4711 94725 95672 ... R E2 Rang Professoren PersNr 3 • Bei einer gegebenen Datenbank wird dann bei einer Konsistenzprüfung überprüft, ob sie dieser Einschränkung gehorcht. Bsp.: Assistenten arbeit enFür Fachgebiet • Die Festlegung eines (Primär-)Schlüssels ist eine Designentscheidung. Bsp.: t = („Mickey Mouse“, „Main Street“, 4711) 1 AkR A21 lesen prüfen PersNr AR1 Titel •Schlüssel: minimale Menge von Attributen, deren Werte ein Tupel eindeutig identifizieren •Primärschlüssel: wird unterstrichen A1k 1 E1 ... N M Relationale Darstellung von Beziehungen VorlNr ... Telefonbuch Name Straße Mickey Mouse Main Street Mini Mouse Broadway Donald Duck Broadway ... ... Professoren 12 1 lesen N Professoren: {[PersNr, Rang, Raum]} Vorlesungen 14 Assistenten: {[PersNr, Fachgebiet]} 16 Relationale Modellierung schwacher Entitytypen Studenten N ableg en 1 N abhalt en M VorlNr Rang Raum Name Semester C4 226 24002 Xenokrates 18 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137 C3 310 26120 Fichte 10 5041 Ethik 4 2125 2133 Popper C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 2126 2134 Augustinus C3 309 27550 Schopenhauer 6 5049 Mäeutik 2 2125 Carnap 3 4052 Logik 4 2125 Curie C4 36 28106 Kant C4 7 29120 Theophrastos 2 5052 Wissenschaftstheorie 29555 Feuerbach 2 5216 Vorgänger Nachfolger 5001 5041 5001 5043 5001 5049 5041 5216 5043 5052 5041 5052 5052 5259 Prüfungen: {[MatrNr: integer, PrüfTeil: string, Note: integer]} hören Xenokrates 18 25403 Jonas 12 26120 Fichte 10 26830 Aristoxenos 8 27550 Schopenhauer 6 28106 Carnap 3 29120 Theophrastos 2 29555 Feuerbach 2 Name Semester 26830 Aristoxenos 8 27550 Schopenhauer 5001 27550 4052 28106 5041 Name Fachgebiet Boss 28106 5052 3002 Platon Ideenlehre 2125 28106 5216 3003 Aristoteles Syllogistik 2125 28106 4630 Assistenten PerslNr 3004 Wittgenstein 5001 3005 Rhetikus Planetenbewegung 2127 5041 3006 Newton Keplersche Gesetze 2127 28106 5001 2126 1 29120 5049 3007 Spinoza Gott und Natur 2126 25403 5041 2125 2 29555 5022 27550 4630 2137 2 25403 5022 Name 2126 Vorlesungen Semester VorlNr Name 2125 Sokrates C4 226 24002 Xenokrates 18 2126 Russel C4 232 25403 Jonas 12 5001 Grundzüge 4 2137 Ethik 4 2125 Titel SWS gelesen Von 2127 Kopernikus C3 310 26120 Fichte 10 5041 2133 C3 52 26830 Aristoxenos 8 5043 Erkenntnistheorie 3 Mäeutik 2 2125 Logik 4 2125 Popper C3 309 27550 Schopenhauer 6 2136 Curie C4 36 28106 3 4052 2137 Kant C4 7 29120 Theophrastos 2 5052 Wissenschaftstheorie 3 2126 29555 2 5216 Bioethik 2 2126 5259 Der Wiener Kreis 2 2133 5022 Glaube und Wissen 2 2134 Feuerbach hören 5041 MatrNr VorlNr 5001 5043 26120 5001 5001 5049 27550 5001 5041 5216 27550 4052 5043 5052 28106 5041 5041 5052 28106 5052 PerslNr Name Fachgebiet Boss 5259 28106 5216 3002 Platon Ideenlehre 2125 4630 Die 3 Kritiken 4 MatrNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 26120 Fichte 10 28106 5259 3003 Aristoteles Syllogistik 2125 prüfen 29120 5001 3004 Wittgenstein Sprachtheorie 2126 MatrNr VorlNr PersNr Note 29120 5041 3005 Rhetikus Planetenbewegung 2127 28106 5001 2126 1 29120 5049 3006 Newton Keplersche Gesetze 2127 25403 5041 2125 2 29555 5022 3007 Spinoza Gott und Natur 27550 4630 2137 2 25403 5022 2126 20 Carnap 3 Theophrastos 2 29555 Feuerbach 2 12345 Waalkes 22 • Die Projektion wählt (eine oder mehrere) Spalten der Relation aus. • Duplikate im Ergebnis werden nur einmal gelistet (aufgrund der Mengensemantik des Relationenkalküls) Professoren x hören Professoren Name Rang Sokrates C4 ... ... Sokrates C4 ... ... Kant C4 Raum 226 ... 226 ... 7 21 23 Die relationalen AlgebraOperatoren VSemester > 10 (Studenten) Selektion Studenten VSemester > 10 (Studenten) MatrNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 MatrNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 26120 Fichte 10 Vereinigung Studenten = Studenten In der Selektion VF(R) ist das Selektionsprädikat F eine Formel, die aufgebaut ist aus • Attributnamen von R und Konstanten • =, <, >, d, t, z • den logischen Operatoren , , Das Ergebnis von VF(R) besteht aus allen Tupeln t R, die F erfüllen, wenn jedes Auftreten eines Attributes A durch den Wert t.A ersetzt wird. MatrNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 26120 Fichte 10 26830 Aristoxenos 8 27550 Schopenhauer 6 8 28106 Carnap 3 27550 Schopenhauer 6 29120 Theophrastos 2 28106 Carnap 3 29555 Feuerbach 2 29120 Theophrastos 2 29555 Feuerbach 2 MatrNr Name Semester 26830 Aristoxenos • Relationen mit gleichem Schema können vereinigt werden. 22 24 Drei-Wege-Join Basisausdrücke Relation der Datenbank oder hören MatrNr VorlNr 26120 5001 ... ... 29555 5001 ... ... 29555 5001 (Studenten A hören) A Vorlesungen konstante Relationen Operationen (Studenten A hören) A Vorlesungen Selektion: Vp (E1) MatrNr Name Semester VorlNr Titel Kartesisches Produkt: E1 x E2 26120 Fichte 10 5001 Grundzüge SWS gelesenVon 4 2137 Umbenennung: UV (E1), UA m B (E1) 27550 Jonas 12 5022 Glaube und Wissen 2 2134 28106 Carnap 3 4052 Wissenschftstheorie 3 2126 ... ... ... ... ... ... ... Projektion: 3S (E1) Vereinigung: E1 E2 Differenz: E1- E2 • Problem: riesige Zwischenergebnisse • Beispiel: (Professoren x hören) 25 Die relationalen AlgebraOperatoren Kartesisches Produkt Raum 226 ... 226 ... 7 27 Die relationalen AlgebraOperatoren hören MatrNr VorlNr 26120 5001 ... ... 29555 5001 ... ... 29555 5001 29 Der natürliche Verbund (Join) Gegeben seien folgende Relationen(-Schemata) R(A1, ..., An) und S(B1, ..., Bm) •R(A1,..., Am, B1,..., Bk) Umbenennung von Relationen Beispiel: Ermittlung indirekter Vorgänger 2. Stufe der Vorlesung 5216 •S(B1,..., Bk, C1,..., Cn) R A S = 3A1,..., Am, R.B1,..., R.Bk, C1,..., Cn(VR.B1=S. B1 3V1. Vorgänger(VV2. Nachfolger=5216 V1.Nachfolger = V2.Vorgänger (UV1 (voraussetzen) x UV2 (voraussetzen))) Umbenennung von Attributen UVoraussetzung m Vorgänger (voraussetzen) • Das Schema enthält alle Attribute beider Relationen. A1 RS A2 ... Am 31 Allgemeiner Join (Theta-Join) Gegeben seien: Umbenennung Professoren x hören Professoren Name Rang Sokrates C4 ... ... Sokrates C4 ... ... Kant C4 Weitere Operationen können aus diesen zusammengesetzt werden Æ • "bessere" Operation: Join (siehe unten) • Von Relationen mit gleichem Schema kann die Mengendifferenz gebildet werden. PersNr 2125 ... 2125 ... 2137 Rang C4 C3 Formale Definition der Algebra 6 28106 29120 3Rang(Professoren) Die relationalen AlgebraOperatoren 2137 Assistenten 3Rang(Professoren) Projektion 2126 2134 Augustinus 5049 Carnap V Selektion S Pojektion x Kreuzprodukt A Join (Verbund) U Umbenennung Mengendifferenz y Division Vereinigung Mengendurchschnitt F Semi-Join (linker) E Semi-Join (rechter) C linker äußerer Join D rechter äußerer Join 19 Studenten Rang Raum MatrNr Sprachtheorie PersNr PersNr 2125 ... 2125 ... 2137 Studenten Studenten MatrNr 2137 5001 27550 5259 Kartesisches Produkt Differenz = 4 26120 Die relationalen AlgebraOperatoren Studenten 24002 Die 3 Kritiken VorlNr 29120 5052 Semester 2134 MatrNr 29120 5001 Name 2133 2 Note Vorgänger Nachfolger MatrNr 2126 2 Glaube und Wissen PersNr voraussetzen Die relationalen AlgebraOperatoren 2126 2 Der Wiener Kreis 5022 VorlNr Professoren 18 3 Bioethik 5259 MatrNr prüfen 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. gelesen von Sokrates voraussetzen abhalten: {[MatrNr: integer, PrüfTeil: string, PersNr: integer]}17 SWS Kopernikus 2137 umfassen: {[MatrNr: integer, PrüfTeil: string, VorlNr: integer]} Titel 2127 2136 PersNr VorlNr Die relationalen AlgebraOperatoren Die relationale Algebra Vorlesungen MatrNr 2126 Professoren Vorlesungen Name 2125 Note PrüfTeil umfas sen M Studenten Professoren PersNr Prüfungen N MatrNr Die relationale Uni-DB B1 RAS RS B2 ... R A T S = VT (R x S) ... R.Bk = S.Bk(RxS)) R AT S R AT S R Bk C1 SR C2 ... Cn A1 A2 S ... An B1 B2 ... Bm • Die Relation enthält alle num möglichen Kombinationen der jeweiligen Tupel der beiden Relationen. 26 28 30 32 Andere Join-Arten Andere Join-Arten • natürlicher Join A a1 a2 L B b1 b2 C c1 c2 A • äußerer Join C c1 c3 R D d1 d2 E e1 e2 = A a1 Resultat B C D b1 c1 d1 L B b1 b2 C c1 c2 C C c1 c3 L B b1 b2 A a1 a2 E e1 C c1 c2 R D d1 d2 C c1 c3 B E e1 e2 A a1 a2 = - Resultat B C D b1 c1 d1 b2 c2 c3 d2 R D d1 d2 E e1 e2 = A a1 a2 Resultat B C D b1 c1 d1 b2 c2 E e1 A a1 a2 - L B b1 b2 C c1 c2 E C c1 c3 Mengendurchschnitt Als Beispielanwendung für den Mengendurchschnitt (Operatorsymbol ) betrachten wir folgende Anfrage: Finde die PersNr aller C4-Professoren, die mindestens eine Vorlesung halten. Bsp.: Finde MatrNr der Studenten, die alle vierstündigen Vorlesungen hören E e1 - 3PersNr(UPersNrmgelesenVon(Vorlesungen)) 3PersNr(VRang=C4(Professoren)) L := 3VorlNr(VSWS=4(Vorlesungen)) e2 L • Semi-Join von L mit R • linker äußerer Join A a1 a2 Die relationale Division R D d1 d2 E e1 e2 Resultat A B C a1 b1 c1 = 33 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) hören y 3VorlNr(VSWS=4(Vorlesungen)) 35 37 Definition der Division Der relationale Tupel-kalkül Andere Join-Arten (Forts.) • rechter äußerer Join A a1 a2 L B b1 b2 C c1 c2 D C c1 c3 R D d1 d2 E e1 e2 = A a1 - Resultat B C D b1 c1 d1 c3 d2 A a1 a2 E e1 e2 L B b1 b2 C c1 c2 F C c1 c3 R D d1 d2 E e1 e2 = Resultat C D E c1 d1 e1 34 R M m1 m1 m1 m2 m2 36 Sicherheit Wer hat alle vierstündigen Vorlesungen gehört 41 Atome s ~ R, mit s Tupelvariable und R Relationenname s.AIt.B, mit s und t Tupelvariablen, A und B Attributnamen und I Vergleichsperator ( , z, d, ...) s. A I c mit c Konstante Formeln Alle Atome sind Formeln Ist P Formel, so auch P und (P) Sind P1 und P2 Formeln, so auch P1 P2 , P1 P2 und P1 P2 Ist P(t) Formel mit freier Variable t, so auch t R(P(t)) und t R(P(t)) 42 y S V v1 v2 = Beispiele: C4-Professoren {p ~ p Professoren p.Rang = 'C4'} RyS M m1 Studenten mit mindestens einer Vorlesung von Curie Die Division R y S kann auch durch Differenz, Kreuzprodukt und Projektion ausgedrückt werden. R y S = 3(R S)(R) 3 (R S)((3 (R S)(R) x S) R) 38 {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')))} Sicherheit des Domänenkalküls Ausdruckskraft 43 Der relationale Domänenkalkül Definition des Tupelkalküls V v1 v2 v3 v2 v3 Sicherheit ist analog zum Tupelkakkül zum Beispiel ist {[p,n,r,o] ~ ([p,n,r,o] Professoren) } nicht sicher. Ein Ausdruck {[x1, x2, ..., xn] ~ P(x1, x2, ..., xn)} ist sicher, falls folgende drei Bedingungen gelten: 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 {s ~ s Studenten v Vorlesungen (v.SWS=4 h hören(h.VorlNr=v.VorlNr h.MatrNr= s.MatrNr))} Eine Anfrage im relationalen Tupel-Kalkül hat die Form {t ~ P(t)} mit P(t) Formel. t R y S, falls für jedes ts S ein tr R existiert, so dass gilt: tr.S = ts.S tr.(R-S) = t • Semi-Join von R mit L 45 2. Für jede existenz-quantifizierte Teilformel x(P1(x)) muss gelten, dass P1 nur für Elemente aus der Domäne von P1 erfüllbar sein kann - oder evtl. für gar keine. Mit anderen Worten, wenn für eine Konstante c das Prädikat P1(c) erfüllt ist, so muss c in der Domäne von P1 enthalten sein. 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')))} 44 40 Die drei Sprachen 1. relationale Algebra, 2. 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. 1. Falls Tupel [c1, c2, ..., cn ] mit Konstante ci im Ergebnis enthalten ist, so muss jedes ci (1 d i d n) in der Domäne von P enthalten sein. Ein Ausdruck des Domänenkalküls hat die Form {[v1, v2 , ..., vn]~P (v1 ,..., vn)} mit v1 ,..., vn Domänenvariablen und P Formel. 39 3. Für jede universal-quantifizierte Teilformel x(P1(x)) muss gelten, dass sie dann und nur dann erfüllt ist, wenn P1(x) für alle Werte der Domäne von P1 erfüllt ist- Mit anderen Worten, P1(d) muss für alle d, die nicht in der Domäne von P1 enthalten sind, auf jeden Fall erfüllt sein. 46 47