1 / 44

Das Relationale Modell

Das Relationale Modell. Wertebereiche (Domänen): D 1 , D 2 , , ... , D n Relation: R  D 1  D 2  ...  D n Wertebereich von Attribut A: dom ( A ) Relation R  dom ( A 1 )  dom ( A 2 )  ...  dom ( A n ) Element von R: Tupel

Télécharger la présentation

Das Relationale Modell

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Das Relationale Modell Wertebereiche (Domänen): D1, D2 ,, ... , Dn Relation: R  D1  D2  ...  Dn Wertebereich von Attribut A: dom(A) Relation R  dom(A1)  dom(A2) ...  dom(An) Element von R: Tupel Schema der Relation: sch(R) = A1, A2 ,, ... , An aktuelle Ausprägung: R bei Datenbanksystemen zusätzlich zum Wertebereich noch Bezeichner: Telefonbuch : { [Name : string, Adresse: string, TelefonNr : integer] } Telefonbuch : { [Name, Adresse, TelefonNr ] }

  2. Konzeptuelles Schema der Universität

  3. Initial-Entwurf für Entity-Typen • Pro Entity-Typ eine Relation (Schlüssel unterstrichen): • 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] }

  4. Initial-Entwurf für Relationship-Typen • Pro Relationship-Typ eine Relation: • hören : {[ MatrNr : integer, VorlNr : integer] } • lesen : {[ PersNr : integer, VorlNr : integer] } • arbeitenFür : {[ AssiPersNr : integer, ProfPersNr : integer] } • voraussetzen : {[ Vorgänger : integer, Nachfolger : integer] } • prüfen : {[ MatrNr : integer, VorlNr : integer, PersNr : integer, Note : decimal] } • Fremdschlüssel := Schlüsselattribut für referierte Entity-Typen • 1:N-Beziehung entspricht einer Abbildung: • lesen : Vorlesungen Professoren • prüfen : Studenten Vorlesungen Professoren

  5. Elimination bei gleichen Schlüsseln • Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer] }Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] } lesen : {[ PersNr : integer, VorlNr : integer] } • Relationen mit gleichem Schlüssel können zusammengefaßt werden(ggf. Umbenennung erforderlich): • Vorlesungen : {[ VorlNr : integer,Titel : string, SWS : integer, gelesenVon : integer] }Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }

  6. PersNr liestVorl Name Rang Raum 2125 5041 Sokrates C4 2262125 5049 Sokrates C4 2262125 4052 Sokrates C4 226 Elimination bei ungleichen Schlüsseln • Relationen mit ungleichem Schlüssel sollten nicht zusammengefaßt werden: • Professoren' : {[ PersNr, liestVorl, Name, Rang, Raum ] } Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer] } Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }

  7. 1 1 Dienst- Räume Professoren zimmer ... ... PersNr RaumNr ... Elimination bei 1:1-Beziehung • Professoren : {[ PersNr, Name, Rang ] } • Räume : {[ RaumNr, Größe, Lage ] } • Dienstzimmer : {[ PersNr, RaumNr ] } • Professoren : {[ PersNr, Name, Rang, Raum] } • Räume : {[ RaumNr, Größe, Lage ] } • Professoren : {[ PersNr, Name, Rang] } • Räume : {[ RaumNr, Größe, Lage, ProfPersNr ] } Obacht: Nullwerte !

  8. Generalisierung • Professoren : {[ PersNr, Name, Rang, Raum] } • Assistenten : {[ PersNr, Name, Fachgebiet] } • Obertyp mit Gemeinsamkeiten: • Angestellte : {[ PersNr, Name] } • Aber: Die Information zu • [2125, Sokrates, C4, 226] • ist jetzt verteilt auf • [2125, Sokrates] [2125, C4, 226]

  9. GebNr RaumNr Größe Höhe N 1 Räume liegt_in Gebäude Schwacher Entity-Typ • Die Beziehung liegt_in wird verlagert in den Entity-Typ Räume: • Räume : {[ GebNr, RaumNr, Größe] } • Die Beziehung • bewohnt : Professoren  Räume • erfordert drei Attribute • bewohnt : {[ PersNr, GebNr, RaumNr] } • Alternative (bei geringer Rauminformation): • Professoren: {[PersNr, Name, Rang, Raum]}

  10. Relationenschema • Studenten : {[ MatrNr : integer, Name : string, Semester : integer] } • Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer, gelesenVon : integer] } • Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] } • Assistenten : {[ PersNr : integer, Name : string, Fachgebiet : string, Boss : integer] } • hören : {[ MatNr : integer, VorlNr : integer] } • voraussetzen : {[ Vorgänger : integer, Nachfolger : integer] } • prüfen : {[ MatrNr : integer, VorlNr : integer, PersNr : integer, Note :decimal] }

  11. PersNr Name Rang Raum Professoren 2125 Sokrates C4 2262126 Russel C4 2322127 Kopernikus C3 3102133 Popper C3 522134 Augustinus C3 309 2136 Curie C4 362137 Kant C4 7 PersNr Name Fachgebiet Boss Assistenten 3002 Platon Ideenlehre 21253003 Aristoteles Syllogistik 21253004 Wittgenstein Sprachtheorie 2126 3005 Rhetikus Planetenbewegung 21273006 Newton Keplersche Gesetze 2127 3007 Spinoza Gott und Natur 2134 Ausprägung

  12. VorlNr Titel SWS gelesenVon 5001 Grundzüge 4 21375041 Ethik 4 2125 5043 Erkenntnistheorie 3 21265049 Mäeutik 2 21254052 Logik 4 21255052 Wissenschaftstheorie 3 21265216 Bioethik 2 21265259 Der Wiener Kreis 2 21335022 Glaube und Wissen 2 21344630 Die 3 Kritiken 4 2137 Vorlesungen Studenten MatrNr Name Semester 24002 Xenokrates 1825403 Jonas 1226120 Fichte 1026830 Aristoxenos 827550 Schopenhauer 628106 Carnap 329120 Theophrastos 229555 Feuerbach 2 Ausprägung

  13. voraussetzen MatrNr VorlNr Vorgänger Nachfolger hören 26120 500127550 500127550 405228106 504128106 505228106 521628106 525929120 500129120 504129120 504929555 502225403 502229555 5001 5001 50415001 50435001 50495041 52165043 50525041 50525052 5259 MatrNr VorlNr PersNr Note prüfen 28106 5001 2126 1.025403 5041 2125 2.027550 4630 2137 2.0 Ausprägung

  14. Abfragesprachen • Relationenalgebra (prozedural): • konstruktive Verknüpfung durch Operatoren wie , , ... . • Relationenkalkül (deklarativ): • Beschreibung des gewünschten Ergebnisses mit Formel der Prädikatenlogik 1. Stufe unter Verwendung von , , , ,  • SQL (kommerziell): • umgangssprachliche Mischung aus Relationenalgebra und Relationenkalkül • Query by Example (für Analphabeten): • Ausfüllen eines Gerüstes mit Beispiel-Einträgen

  15. Relationenalgebra • Operanden = Relationen • Operatoren: • Selektion • Projektion • Vereinigung • Mengendifferenz • Kartesisisches Produkt • Umbenennung • abgeleitete Operatoren: • Verbund • Durchschnitt • Division

  16. MatNr Name Semester 24002 Xenokrates 18 25403 Jonas 12 Selektion • Semester >10(Studenten) • Selektionsprädikat durch Formel mit • Attributnamen oder Konstanten als Operanden • arithmetische Vergleichsoperatoren       • logische Operatoren: 

  17. Rang C4C3 Projektion • Rang (Professoren) per definitionem keine Duplikate !

  18. PersNr Name 2125 Sokrates3002 Platon . . . Vereinigung • PersNr, Name(Assistenten) PersNr, Name(Professoren)

  19. MatrNr 240022612026830 . . . Mengendifferenz • MatrNr (Studenten) – MatrNr (prüfen)

  20. PersNr Name Rang Raum MatNr VorlNr 2125 Sokrates C4 226 26120 5001··· ··· ··· ··· ··· ···2125 Sokrates C4 226 29555 5001··· ··· ··· ··· ··· ···2137 Kant C4 7 29555 5001 Kartesisches Produkt • Professoren hören sch(RS) := sch(R) sch(S). Ggf. durch Voranstellung des Relationennamens identifizieren: R.A

  21. V1 V2 Vorgänger Nachfolger Vorgänger Nachfolger 5001 5041 5001 5041··· ··· ··· ··· 5001 5041 5041 5216··· ··· ··· ···5052 5259 5052 5259 Umbenennung von Relationen und Attributen • Dozenten(Professoren) • Zimmer Raum(Professoren) • finde Vorgänger vom Vorgänger von Vorlesung 5216: • V1.Vorgänger(V1.Nachfolger = V2.Vorgänger  V2.Nachfolger=5216 (V1(voraussetzen)  V2(voraussetzen)))

  22. MatrNr Name Semester VorlNr Titel SWS gelesenVon • 26120 Fichte 10 5001 Grundzüge 4 213725403 Jonas 12 5022 Glaube und Wissen 2 213728106 Carnap 3 4052 Wissenschaftstheorie 3 212628106 Carnap 3 5041 Ethik 4 2125 • ... ... ... ... ... ... ... Natürlicher Verbund (Join) • R habe m+k AttributeA1, A2 ,, ... , Am , B1, B2 ,, ... , Bk • S habe n+k Attribute B1, B2 ,, ... , Bk , C1, C2 ,, ... , Cn • RS := A1,..., Am, R.B1,..., R.Bk, C1,...,Cn(R.B1=S.B1 ... R.Bk=S.Bk(RS)) • (Studentenhören) Vorlesungen • Studenten (hörenVorlesungen) • StudentenhörenVorlesungen

  23. Name Titel • Sokrates Logik • Sokrates Ethik • Sokrates Mäeutik Kant Die 3 Kritiken • Kant Grundzüge... ... Natürlicher Verbund mit Umbenennung • Vorlesungen der C4-Professoren: • Name der C4-Professoren mit ihren Vorlesungstiteln: •  Name, Titel (Professoren  PersNr gelesenVon(Vorlesungen))

  24. Theta-Join • Statt Gleichheit bei Attributen jetzt Prädikat : • RA1 < B1 A2=B2A3 < B5S • gleichwertig zu • R S := (RS) • Erweitere Professoren und Assistenten um ein Attribut Gehalt. • Verbinde Professoren mit höherverdienenden Assistenten: • ProfessorenProfessoren.Gehalt < Assistenten.GehaltBoss =Professoren.PersNrAssistenten

  25. Outer Join • Bisher: Inner Join (Tupel ohne Partner gehen verloren) • Jetzt: Outer Join (rette partnerlose Tupel): • left outer join: Tupel der linken Argumentrelation bleiben erhalten • right outer join: Tupel der rechten Argumentrelation bleiben erhalten • full outer join: Tupel beider Argumentrelationen bleiben erhalten

  26. L R inner Join C D E A B C ABCDE c1d1e1 c3d2e2 a1b1c1 a2b2c2 a1b1c1d1e1 left outer Join right outer Join outer Join A B C D E A B C D E A B C D E a1b1c1d1e1 a2b2 c2 - - a1b1c1d1e1 - - c3d2e2 a1b1c1d1e1 a2b2c2 - - - - c3d2e2 Outer Joins

  27. R S Mengendurchschnitt • Personalnummer der C4-Professoren, die mindestens eine Vorlesung halten: • PersNr (PersNrgelesenVon(Vorlesungen)) PersNr (Rang=C4(Professoren)) • Äquivalenz: • RS = R\ (R\S)

  28. R S RS V M V M v1 v2 m1v1 m1v2 m1v3 m2v2 m2v3 m1 Division • R sei r-stellig, S sei s-stellig, sch(S) sch(R) • RS := { t = t1, t2, ..., tr-suS : tu R} • Anfangsstücke von R, zu denen sämtliche Verlängerungen mit Tupeln aus S in R liegen  = Namen der Studenten, die alle 4-stündigen Vorlesungen hören: Name (Studenten  ( Hören VorlNr (SWS=4(Vorlesungen))))

  29. Ableitung der Division (Projektion über Index statt Namen) T := 1, ..., r-s (R) alle Anfangsstücke TS kombiniert mit allen Verlängerungen aus S (TS) \ R davon nur solche, die nicht in R sind V := 1, ..., r - s ((TS) \ R) davon die Anfangsstücke T \V davon das Komplement

  30. Name   VorlNr SWS=4 Operatorbaum-Darstellung Studenten Hören Vorlesungen

  31. Relationenkalkül • Bisher: Relationenalgebra (konstruktiv) • Jetzt: Relationenkalkül (deklarativ) • Der relationale Tupelkalkül (binde freie Variable an Tupel) • Der relationale Domänenkalkül (binde freie Variable an Domäne)

  32. Der relationale Tupelkalkül • Sei t eine Tupelvariable (repräsentiert ein Tupel einer Relation) • sei P ein Prädikat unter Verwendung von       • Ein Ausdruck im relationalen Tupelkalkül hat die Form • { tP(t) } • t ist eine freie Variable, die unter Berücksichtigung des Prädikats sukzessive an die Tupel einer Relation gebunden wird

  33. Der relationale Tupelkalkül • Alle C4-Professoren: • { ppProfessorenp.Rang = 'C4' } • Alle Professoren mit den Personalnummern íhrer Assistenten: • { [ p.Name, a.PersNr ] pProfessorenaAssistentenp.PersNr = a.Boss } • Alle Studenten, die sämtliche 4-stündigen Vorlesungen hören: • { s  s StudentenvVorlesungen ( v.SWS=4 hhören (h.VorlNr = v.VorlNrh.MatrNr = s. MatrNr)) }

  34. Tupelkalkül versus Relationenalgebra • Sicherer Ausdruck: Ergebnis ist wieder Teilmenge der Domäne. • Z.B. nicht sicher: { n (nProfessoren) } • Bei Beschränkung auf sichere Ausdrücke sind Tupelkalkül und Relationenalgebra gleichmächtig.

  35. Der relationale Domänenkalkül • Seien v1, v2, ..., vn Domänenvariable (repräsentieren Attributwerte) • Sei P ein Prädikat unter Verwendung von       • Ein Ausdruck im relationalen Domänenkalkül hat die Form • { [v1, v2, ..., vn] P (v1, v2, ..., vn ) } • v1, v2, ..., vn sind freie Domänenvariable, die sukzessive unter Berücksichtigung des Prädikats an Wertebereiche der Attribute gebunden werden.

  36. Der relationale Domänenkalkül • Alle Professorennamen mit den Personalnummern ihrer Assistenten: • { [n,a] p, r, t ( [p, n, r, t ] Professoren v, w ( [a, v, w, p ] Assistenten )) } • Bei Beschränkung auf sichere Ausdrücke sind die Relationenalgebra und der relationale Domänenkalkül gleichmächtig.

  37. VorlesungenVorlNr Titel SWS gelesenVon Grundzüge Ethik Logik Die 3 Kritiken QBE Fordere Tabellenskelett an und fülle es exemplarisch: Vorlesungen p._t >3 Im Domänenkalkül: { [t] | v, s, r ( [v, t, s, r]  Vorlesungen  s > 3) }

  38. VorlesungenVorlNr Titel SWS gelesenVon ProfessorenPersNr Name Rang Raum Sokrates QBE Join Liste alle Professoren, die Logik lesen: _otto Logik p._n _otto

  39. Studenten MatrNr Name Semester conditions QBE Condition Box Liste alle Studenten, die in einem höheren Semester sind als Feuerbach: _a _b p._s Feuerbach _a > _b

  40. Professoren PersNr Name Rang Raum 2137 Kant C42133 Popper C3 QBE Gruppierung 2125 Sokrates C4 2262126 Russel C4 2322127 Kopernikus C3 3102133 Popper C3 522134 Augustinus C3 3092136 Curie C4 362137 Kant C4 7 Gruppierung: g. Aggregatfunktionen: sum. avg. min. max. all. Liste für jede Gehaltsgruppe den Namen des Professors mit der größten Personalnummer: p._x p.min.x p.g.

  41. Vorlesungen VorlNr Titel SWS gelesenVon 10 21258 21262 21332 21348 2137 QBE Gruppierung Liste für jeden Professor die Summe seiner Vorlesungsstunden: p.sum.all._x p.g.

  42. Studenten MatrNr Name Semester QBE Einfügen Füge neuen Studenten ein: i.4711 Wacker 5

  43. Studenten MatrNr Name Semester QBE Ändern Setze Semesterzahl von Feuerbach auf 3: u.3 Feuerbach

  44. Professoren PersNr Name Rang Raum _x Vorlesungen VorlNr Titel SWS gelesenVon _x _y hören VorlNr MatrNr _y QBE Löschen Entferne Sokrates und seine Vorlesungen: Sokrates d. d. d.

More Related