Rückblick: Relationales Modell Relationales Modell als vorherrschendes Datenmodell Relationen (Tabellen) besitzen Attribute (Spalten) mit Wertebereichen und beinhalten Tupel (Zeilen) Umsetzung eines konzeptuellen Modells in Relationen Entitytypen werden zu eigenen Relationen Beziehungstypen werden zu eigenen Relationen 33
3.3 Relationale Algebra Relationales Modell bietet Formalismus zur Beschreibung zu speichernder Daten und deren Struktur Wie können wir Daten extrahieren, d.h. Anfragen auf den gespeicherten Daten formulieren? Beispiele: Welche Vorlesungen hört der Student Marty McFly? Welche Professoren halten Vorlesungen, die nur von Studenten im ersten Semester besucht werden? 34
Relationale Algebra Relationale Algebra (auch: Relationenalgebra) bietet eine Anfragesprache auf Relationen Operatoren bilden Ausdrücke der Relationenalgebra Ausdrücke beinhalten implizit einen Auswertungsplan spielt wichtige Rolle bei Implementierung von RDBMSs (zur internen Darstellung und Optimierung von Anfragen) 35
Selektion Selektion σ (sigma) wählt Tupel (Zeilen) aus einer Relation R anhand einer Selektionsbedingung P aus [P](R) Selektionsbedingung kann folgende Bestandteile haben Attributnamen der Relation R oder Konstanten Arithmetische Vergleichsoperatoren =, <,,, Logische Operatoren,, Ergebnis der Selektion ist wiederum eine Relation bestehend aus allen Tupeln aus R, die P erfüllen 36
Selektion Beispiel: Erstsemester aus Relation Studenten Studenten MatrNr Vorname Name Semester 13765 Moritz Müller 1 18877 Peter Parker 7 18898 Gordon Shumway 1 18978 Marty McFly 3 18979 Benjamin Berger 1 [Semester=1](Studenten) [Semester=1](Studenten) MatrNr Vorname Name Semester 13765 Moritz Müller 1 18898 Gordon Shumway 1 18979 Benjamin Berger 1 37
Projektion Projektion π (pi) wählt Attribute (Spalten) einer Relation R anhand einer gegebenen Attributmenge A aus fi [A](R) Attributmenge A als Liste von Attributnamen angegeben Ergebnis der Projektion ist eine Relation, die Tupel mit den in A angegebenen Attributen enthält und frei von Duplikaten ist (Relationen sind Mengen) 38
Projektion Beispiel: Vorname und Fach von Professoren Professoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik fi [ Vorname, Fach ] ( Professoren ) fi [ Vorname, Fach ] ( Professoren ) Vorname Fach Donald Informatik Albert Physik Alfred Chemie Carl Mathematik Duplikate eliminiert 39
Kartesisches Produkt (Kreuzprodukt) Das Kreuzprodukt zweier Relationen R und S enthält alle R * S möglichen Paare von Tupeln aus R und S R S Ergebnis des Kreuzprodukts ist eine Relation mit Schema sch(r S) = sch(r) fi sch(s) 40
Kartesisches Produkt (Kreuzprodukt) Beispiel: Kombinationen von Professoren und Vorlesungen Professoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik Vorlesungen VorlNr Titel SWS 101 Informatikgrundlagen 4 110 Datenbanken 4 Professoren Vorlesungen PersNr Vorname Name Fach VorlNr Titel SWS 101101 Donald Knuth Informatik 101 Informatikgrundlagen 4 101101 Donald Knuth Informatik 110 Datenbanken 4 231011 Albert Einstein Physik 101 Informatikgrundlagen 4 231011 Albert Einstein Physik 110 Datenbanken 4....... 41
Qualifizierte Attributnamen Verbundene Relationen R und S können identisch benannte Attribute besitzen (z.b. Vorname und Name in Professoren und Studenten) Qualifizierte Attributnamen stellen dem Attributnamen den Namen der Ursprungsrelation voran und erlauben so eine Unterscheidung von identisch benannten Attributen Beispiel: Professoren Studenten... Professoren.Vorname... Studenten.Vorname........ 42
Anfrageübung Versandhandel Bestellungen : Ó Ô [ BestellNr : integer, Bestelldatum : string,..., KundenNr : integer, ] Kunden : Ó Ô [ KundenNr : integer, Vorname : string, Name : string,...] Artikel : Ó Ô [ ArtikelNr : integer, Beschreibung : string,...,me : string ] Mengeneinheiten : Ó Ô [ME:string, Beschreibung : string,...] Bestellpositionen : Ó Ô [ BestellNr : integer, ArtikelNr : integer, Anzahl : integer ] Welche Kunden heißen Müller oder Meier? Welche Vornamen haben Kunden aus Mannheim? Welche Artikel (ArtikelNr) werden im 5er-Pack verkauft? 43
Anfrageübung Versandhandel Welche Kunden heißen Müller oder Meier? [ Name = Meier Name = Müller ] ( Kunden ) Welche Vornamen haben Kunden aus Mannheim? fi [ Vorname ] ( [ Wohnort = Mannheim ] ( Kunden ) ) Welche Artikel (ArtikelNr) werden im 5er-Pack verkauft? fi[ Artikel.ArtikelNr ]( [ Artikel.ME = Mengeneinheiten.ME ]( Artikel [ Beschreibung = 5er-Pack ](Mengeneinheiten))) 44
Umbenennung von Relationen und Attributen Qualifizierte Attributnamen reichen zur Unterscheidung nicht aus, wenn eine Ursprungsrelation mehrfach auftaucht Beispiel: Paare von Artikeln mit gleichen Mengeneinheiten [??? ] ( Artikel Artikel ) Umbennungsoperator ρ (rho) erlaubt Umbenennung von Relationen (z.b. Artikel in ArtikelLinks) fl[ Artikel ](ArtikelLinks) Attributen (z.b. Fach in Fachgebiet von Professoren) fl[ Fachgebiet Ω Fach ](Professoren) 45
Mengenoperationen auf Relationen Zur Erinnerung: Relationen sind Mengen von Tupeln Für zwei Relationen R und S mit identischem Schema sch(r) = sch(s) sind die bekannten Mengenoperationen (Vereinigung, Schnitt und Differenz) wie bekannt definiert 46
Vereinigung Beispiel: Namen von Studenten oder Professoren fi [ Name ] ( Studenten ) fi fi [ Name ] ( Professoren ) fi [ Name ] ( Studenten ) fi [ Name ] ( Professoren ) Name Name Müller Meier McFly fi Name Knuth Meier Einstein = Name Müller Meier McFly Knuth Einstein 47
Schnitt Beispiel: Namen von Studenten und Professoren fi [ Name ] ( Studenten ) fl fi [ Name ] ( Professoren ) fi [ Name ] ( Studenten ) fi [ Name ] ( Professoren ) Name Name Müller Meier McFly fl Name Knuth Meier Einstein = Name Meier 48
Differenz Beispiel: Namen von Studenten nicht aber Professoren fi [ Name ] ( Studenten ) fi [ Name ] ( Professoren ) fi [ Name ] ( Studenten ) fi [ Name ] ( Professoren ) Name Name Müller Meier McFly Name Knuth Meier Einstein = Name Müller McFly 49
Natürlicher Join Natürlicher Join (Verbund) verbindet zwei Relationen R und S anhand ihrer gemeinsamen Attribute R ÛÙ S Ergebnis des natürlichen Joins ist Relation mit Schema sch(r) fi sch(s) Hierbei werden Tupel aus R und S verbunden, deren Werte für alle gemeinsamen Attribut übereinstimmen Attribute gleichen Namens werden zusammengefasst 50
Natürlicher Join Beispiel: Studenten mit ihren gehörten Vorlesungen (Studenten ÛÙ hören) ÛÙ Vorlesungen Studenten hören Vorlesungen MatrNr Vorname Name Semester 13765 Moritz Müller 1 18877 Peter Parker 7 18898 Gordon Shumway 1 18978 Marty McFly 3 18979 Benjamin Berger 1 ÛÙ MatrNr 13765 101 18979 101 18979 110 VorlNr ÛÙ VorlNr Titel SWS 101 Informatikgrundlagen 4 110 Datenbanken 4 (Studenten ÛÙ hören) ÛÙ Vorlesungen MatrNr Vorname Name Semester VorlNr Titel SWS 13765 Moritz Müller 1 101 Informatikgrundlagen 4 18979 Benjamin Berger 1 101 Informatikgrundlagen 4 18979 Benjamin Berger 1 110 Datenbanken 4 51
Allgemeiner Join Allgemeiner Join verbindet zwei Relationen R und S anhand eines beliebigen Joinprädikates θ (theta) R ÛÙ [ ]S Ergebnis des allgemeinen Joins ist Relation mit Schema { fl [R.A Ω A](R) A œ sch(r) } fi { fl [S.A Ω A](S) A œ sch(s) } Attribute gleichen Namens werden umbenannt, d.h. mit dem Namen der Ursprungsrelation qualifiziert 52
Allgemeiner Join Beispiel: Professoren und Studenten mit gleichem Namen Professoren ÛÙ [ Professoren.Name = Studenten.Name ] Studenten (P)rofessoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik ÛÙ [P.Name = S.Name ] (S)tudenten MatrNr Vorname Name Semester 18979 Gundula Gauss 1 19880 Petra Parker 1 19882 Nora Nobel 3 20020 Emma Ernst 3 P ÛÙ [P.Name = S.Name ] S P.PersNr P.Vorname P.Name P.Fach S.MatrNr S.Vorname S.Name S.Semester 300128 Alfred Nobel Chemie 19882 Nora Nobel 3 600321 Carl Gauss Mathematik 18979 Gundula Gauss 1 53
Allgemeiner Join Allgemeiner Join ist letztlich eine Kurzschreibweise für R ÛÙ [ ]S = [ ](R S) Verwendet das Joinprädikat θ nur Vergleiche mittels = spricht man auch von einem Equi-Join 54
Äußere Joins Natürlicher und allgemeiner Join erhalten nur solche Tupel aus R und S, die einen Joinpartner finden Äußere Joins erhalten auch solche Tupeln aus einer oder beiden Relationen, die keinen Joinpartner finden linker äußerer Join (left outer join) erhält alle Tupel aus R R ÛÙ [ ] S rechter äußerer Join (right outer join) erhält alle Tupel aus S R ÛÙ [ ] S äußerer Join (full outer join) erhält alle Tupel aus R und S R ÛÙ [ ] S 55
Linker äußerer Join Beispiel: Professoren und Studenten mit gleichem Namen (P)rofessoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik (S)tudenten MatrNr Vorname Name Semester 18979 Gundula Gauss 1 19880 Petra Parker 1 19882 Nora Nobel 3 20020 Emma Ernst 3 linker äußerer Join P ÛÙ [P.Name = S.Name ] S P.PersNr P.Vorname P.Name P.Fach S.MatrNr S.Vorname S.Name S.Semeste 101101 Donald Knuth Informatik 231011 Albert Einstein Informatik 300128 Alfred Nobel Chemie 19882 Nora Nobel 3 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik 18979 Gundula Gauss 1 56
Rechter äußerer Join Beispiel: Professoren und Studenten mit gleichem Namen (P)rofessoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik (S)tudenten MatrNr Vorname Name Semester 18979 Gundula Gauss 1 19880 Petra Parker 1 19882 Nora Nobel 3 20020 Emma Ernst 3 rechter äußerer Join P ÛÙ [P.Name = S.Name ] S P.PersNr P.Vorname P.Name P.Fach S.MatrNr S.Vorname S.Name S.Semester 600321 Carl Gauss Mathematik 18979 Gundula Gauss 1 19880 Petra Parker 1 300128 Alfred Nobel Chemie 19882 Nora Nobel 3 20020 Emma Ernst 3 57
Äußerer Join Beispiel: Professoren und Studenten mit gleichem Namen (P)rofessoren PersNr Vorname Name Fach 101101 Donald Knuth Informatik 231011 Albert Einstein Physik 300128 Alfred Nobel Chemie 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik (S)tudenten MatrNr Vorname Name Semester 18979 Gundula Gauss 1 19880 Petra Parker 1 19882 Nora Nobel 3 20020 Emma Ernst 3 äußerer Join P ÛÙ [P.Name = S.Name ] S P.PersNr P.Vorname P.Name P.Fach S.MatrNr S.Vorname S.Name S.Semeste 19880 Petra Parker 1 101101 Donald Knuth Informatik 231011 Albert Einstein Informatik 300128 Alfred Nobel Chemie 19882 Nora Nobel 3 478122 Donald Kossmann Informatik 600321 Carl Gauss Mathematik 18979 Gundula Gauss 1 20020 Emma Ernst 3 58
Anfrageübung Versandhandel Bestellungen : Ó Ô [ BestellNr : integer, Bestelldatum : string,..., KundenNr : integer, ] Kunden : Ó Ô [ KundenNr : integer, Vorname : string, Name : string,...] Artikel : Ó Ô [ ArtikelNr : integer, Beschreibung : string,...,me : string ] Mengeneinheiten : Ó Ô [ME:string, Beschreibung : string,...] Bestellpositionen : Ó Ô [ BestellNr : integer, ArtikelNr : integer, Anzahl : integer ] Welche Artikel (ArtikelNr) werden im 5er-Pack verkauft? Welche Artikel (ArtikelNr) wurden am gleichen Tag von Kunden aus Worms und Kunden aus Trier bestellt? 59
Anfrageübung Versandhandel Welche Artikel (ArtikelNr) werden im 5er-Pack verkauft? fi [ Artikel.ArtikelNr ] ( Artikel ÛÙ [ Beschreibung = 5er-Pack ] ( ME ) ) Welche Artikel (ArtikelNr) wurden am gleichen Tag von Kunden aus Worms und Kunden aus Trier bestellt? fi[w.artikelnr]( fl [W]( [ Wohnort = Worms ] ( (Kunden ÛÙ Bestellungen) ÛÙ Bestellpositionen ) ) ÛÙ [W.ArtikelNr = T.ArtikelNr W.Bestelldatum = T.Bestelldatum ] fl [T]( [ Wohnort = Trier ] ( (Kunden ÛÙ Bestellungen) ÛÙ Bestellpositionen ) ) ) 60
Operatorbaumdarstellung Ausdrücke der relationalen Algebra lassen sich alternativ auch als sogenannte Operatorbäume darstellen Beispiel: fi [S.Vorname, S.Name, V.Titel ] ( ( [Semester> 3](S) ÛÙ h) ÛÙ V) fi[s.vorname, S.Name, V.Titel] ÛÙ ÛÙ V [Semester> 3] h S 61
Grenzen der relationalen Algebra Können wir mit den Operatoren der relationalen Algebra alle interessanten Anfragen formulieren? Beispiel: Anzahl von Studenten pro Vorlesung (Studenten ÛÙ hören) ÛÙ Vorlesungen MatrNr Vorname Name Semester VorlNr Titel SWS 13765 Moritz Müller 1 101 Informatikgrundlagen 4 18979 Benjamin Berger 1 101 Informatikgrundlagen 4 18979 Benjamin Berger 1 110 Datenbanken 4 Gruppierung nach Vorlesung und Zählen notwendig! Erweiterungen zum Gruppieren & Aggregieren existieren (vgl. z.b. Kapitel 9 in Saake et al. [3]) 62
Zusammenfassung Relationale Algebra als Anfragesprache auf Relationen Ausdrücke zusammengesetzt aus Operatoren, z.b. Selektion (σ) zur Auswahl von Tupeln Projektion (π) zur Auswahl von Attributen Kreuzprodukt ( ) zur Verknüpfung von Relationen Umbenennung (ganzer Relationen oder einzelner Attribute) Mengenoperationen (Vereinigung, Schnitt, Differenz) Joins (natürlicher, allgemeiner, äußere 63
Literatur [1] A. Kemper und A. Eickler: Datenbanksysteme Eine Einführung, De Gruyter Oldenbourg, 2015 (Kapitel 3) [2] E. F. Codd: A Relational Model of Data for Large Shared Data Banks, CACM 13(6), 1970 [3] G. Saake, K.-U. Sattler und A. Heuer: Datenbanken - Konzepte und Sprachen, mitp Professional, 2013 (Kapitel 4 & 9) 64