Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Ähnliche Dokumente
1 Mathematische Grundlagen

Einführung in die Algebra

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

7 Rechnen mit Polynomen

Einleitung Projektion Selektion Join Mengenop. Vollst.keit. Einleitung Projektion. Selektion Join. Vollst.keit. Einleitung Projektion Selektion Join

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Grundlagen der Theoretischen Informatik, SoSe 2008

Lineare Gleichungssysteme

Terme stehen für Namen von Objekten des Diskursbereichs (Subjekte, Objekte des natürlichsprachlichen Satzes)

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

3. Das Relationale Datenmodell

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

2.5.2 Primärschlüssel

Diana Lange. Generative Gestaltung Operatoren

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Mathematischer Vorbereitungskurs für Ökonomen

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Zusammenfassung. Satz. 1 Seien F, G Boolesche Ausdrücke (in den Variablen x 1,..., x n ) 2 Seien f : B n B, g : B n B ihre Booleschen Funktionen

Zeichen bei Zahlen entschlüsseln

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Einführung in. Logische Schaltungen

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

Woche 1: Was ist NLP? Die Geschichte des NLP.

Logik. A.3 Logik und Mengenlehre A.32 A.32. Logik und Mengenlehre. Logik Prof. Dr. Rainer Manthey Informatik I 21

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Erfüllbarkeit und Allgemeingültigkeit

Relationale Kalküle. Grundlagen der Datenbanken. Dr. Jérôme Kunegis Wintersemester 2013/14

Primzahlen und RSA-Verschlüsselung

Wir machen neue Politik für Baden-Württemberg

Erwin Grüner

Mathematik für Studierende der Biologie und des Lehramtes Chemie Wintersemester 2013/14. Auswahl vorausgesetzter Vorkenntnisse

Erstellen von x-y-diagrammen in OpenOffice.calc

Satz. Für jede Herbrand-Struktur A für F und alle t D(F ) gilt offensichtlich

Das Briefträgerproblem

Übung Theoretische Grundlagen

Frohe Weihnachten und ein gutes neues Jahr!

Alle Schlüssel-Karten (blaue Rückseite) werden den Schlüssel-Farben nach sortiert und in vier getrennte Stapel mit der Bildseite nach oben gelegt.

Access [basics] Rechnen in Berichten. Beispieldatenbank. Datensatzweise berechnen. Berechnung im Textfeld. Reporting in Berichten Rechnen in Berichten

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Lineare Gleichungssysteme I (Matrixgleichungen)

Das SQL-Schlüsselwort ALL entspricht dem Allquantor der Prädikatenlogik

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

8. Quadratische Reste. Reziprozitätsgesetz

Internationales Altkatholisches Laienforum

Stift-Karussell in M-Plot einrichten

Was meinen die Leute eigentlich mit: Grexit?

Produktionsplanung und steuerung (SS 2011)

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Der Zwei-Quadrate-Satz von Fermat

Also kann nur A ist roter Südler und B ist grüner Nordler gelten.

Bestimmung einer ersten

Bedienungsanleitung: Onlineverifizierung von qualifiziert signierten PDF-Dateien

Repetitionsaufgaben Wurzelgleichungen

1 topologisches Sortieren

ecaros2 - Accountmanager

A Lösungen zu Einführungsaufgaben zu QueueTraffic

Access [basics] Gruppierungen in Abfragen. Beispieldatenbank. Abfragen gruppieren. Artikel pro Kategorie zählen

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Musterlösungen zur Linearen Algebra II Blatt 5

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

Berechnung der Erhöhung der Durchschnittsprämien

Rundung und Casting von Zahlen

WS 2008/09. Diskrete Strukturen

Informatik 12 Datenbanken SQL-Einführung

Lösungsmethoden gewöhnlicher Differentialgleichungen (Dgl.)

SQL - Übungen Bearbeitung der Datenbank Personal (1)

4. Versicherungsangebot

Massenversand Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

Abfrage-Befehle in MySQL -diverse Funktionen -

1. Einführung. 2. Alternativen zu eigenen Auswertungen. 3. Erstellen eigener Tabellen-Auswertungen

Informationsblatt Induktionsbeweis

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

5.1 Drei wichtige Beweistechniken Erklärungen zu den Beweistechniken... 56

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Unsere Webapplikation erweitern

Kapitel 8: Physischer Datenbankentwurf

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

LU-Zerlegung. Zusätze zum Gelben Rechenbuch. Peter Furlan. Verlag Martina Furlan. Inhaltsverzeichnis. 1 Definitionen.

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

4. BEZIEHUNGEN ZWISCHEN TABELLEN

Anleitung über den Umgang mit Schildern

Abwesenheitsnotiz im Exchange Server 2010

Korrelation (II) Korrelation und Kausalität

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Anwendertreffen 20./21. Juni

Lineare Gleichungssysteme

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

FRAGE 39. Gründe, aus denen die Rechte von Patentinhabern beschränkt werden können

Datenbanksysteme I Übung: Relationale Algebra. Jana Bauckmann

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

ERGÄNZUNGEN ZUR ANALYSIS II MITTELWERTSATZ UND ANWENDUNGEN

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Transkript:

Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Datenbanken Relationale Algebra Thomas Studer Institut für Informatik und angewandte Mathematik Universität Bern

Input Relationen Sei S ein Schema des gegebenen DB-Schemas und sei R eine Instanz von S. Dann ist R eine Basisrelation der relationalen Algebra.

Konstante Relationen Sei A ein Attribut mit Domäne D, welches im gegebenen DB-Schema vorkommt. Weiter sei a eine Element von D. Dann ist die konstante 1-stellige Relation {(a)} eine Basisrelation der relationalen Algebra. Offensichtlich ist die Relation {(a)} eine Instanz des Schemas (A). Bemerkung Wir erinnern uns, dass der Wert Null zu jeder Domäne gehört. Somit gilt für jedes Attribut A, dass die konstante Relation {(Null)} eine Instanz von (A) ist.

Projektion Wir gehen aus von Attributen A 1,..., A n, dem Relationenschema S = (A 1,..., A n ) sowie einer Teilmenge {A i1,..., A im } von {A 1,..., A n }. Ist R eine Instanz von S, so setzen wir π Ai1,...,A im (R) := { (b 1,..., b m ) es gibt ein a R mit b 1 = π i1 (a) und und b m = π im (a) }. Das Resultat dieser Projektion ist also eine Instanz des Schemas (A i1,..., A im ). Da die erhaltene Relation wieder eine Menge ist, werden etwa auftretende Duplikate selbstverständlich entfernt.

Beispiel Betrachten wir die Relation besucht MatNr Vorlesung 1 Datenbanken 1 Programmieren 2 Programmieren Für die Projektion π Vorlesung (besucht) erhalten wir folgende Tabelle: π Vorlesung (besucht) Vorlesung Datenbanken Programmieren

Beispiel Betrachten wir die Relation Studierende MatNr Name 1 Ann 2 Tom Es gilt dann: π Name,MatNr,MatNr (Studierende) Name MatNr MatNr Ann 1 1 Tom 2 2

Kartesisches Produkt Wir gehen aus von Attributen A 1,..., A m und B 1,..., B n, den Relationenschemata R = (A 1,..., A m ) und S = (B 1,..., B n ), sowie einer Instanz R von R und einer Instanz S von S. Wir setzen R S := {(x 1,..., x m+n ) (x 1,..., x m ) R und (x m+1,..., x m+n ) S}. Das Relationenschema für das kartesische Produkt R S hat die Form (R.A 1,..., R.A m, S.B 1,..., S.B n ). Für diejenigen Attribute C die nur in einem der beiden Schemata R und S vorkommen können wir schreiben. C anstelle von R.C, beziehungsweise S.C,

Beispiel Studierende MatNr Name 1 Ann 2 Tom besucht MatNr Vorlesung 1 Datenbanken 1 Programmieren 2 Programmieren Studierende besucht Studierende.MatNr Name besucht.matnr Vorlesung 1 Ann 1 Datenbanken 1 Ann 1 Programmieren 1 Ann 2 Programmieren 2 Tom 1 Datenbanken 2 Tom 1 Programmieren 2 Tom 2 Programmieren

n-stellige konstante Relationen Mit Hilfe des kartesischen Produktes können wir nun konstante n-stellige Relationen für beliebige n definieren. Insbesondere ist das kartesische Produkt {(Null)} {(Null)} = {(Null,..., Null)} eine Relation über (A 1,..., A n ) für beliebige Attribute A i.

Prädikat Ein Prädikat über Attributen A 1,..., A n ist folgendermassen aufgebaut: Argumente sind konstante Werte und die Attributnamen A 1,..., A n ; als Vergleichsoperatoren verwenden wir <,, >,, =, ; komplexe Prädikate werden aufgebaut durch die Junktoren (nicht), (oder), (und).

Wahrheitswert Bei der Auswertung von Prädikaten ist zu beachten, dass wir nicht nur die Wahrheitswerte true und false zur Verfügung haben, sondern noch einen dritten Wahrheitswert unknown. Dieser wird für das Resultat von Vergleichen verwendet, bei denen der Wert Null involviert ist. Beispielsweise liefert der Vergleich 7 < Null das Ergebnis unknown und auch Null = Null resultiert in unknown.

Negation (nicht) true false unknown false true unknown

Disjunktion (oder) true false unknown true true true true false true false unknown unknown true unknown unknown

Konjunktion (und) true false unknown true true false unknown false false false false unknown unknown false unknown

Null Werte Die Definition der logischen Negation ist verträglich mit der Semantik des Null-Wertes. Insbesondere gilt für alle a: In der Tat, wir haben (a = Null) ist gleich a Null. (a = Null) ist (unknown) ist unknown und a Null ist unknown.

Selektion Gegeben seien Attribute A 1,..., A n, ein Prädikat Θ über A 1,..., A n sowie das Relationenschema S = (A 1,..., A n ). Ist R eine Instanz von S, so ist die Selektion σ Θ (R) die Menge aller Tupel aus R, deren Werte dem Prädikat Θ den Wahrheitswert true geben. Formal setzen wir σ Θ (R) := {t t R und Θ(t)}. Damit ist σ Θ (R) ebenfalls eine Instanz des Schemas S.

Beispiel Autos Marke Farbe Baujahr FahrerId Opel silber 2010 1 Opel schwarz 2010 2 VW rot 2014 2 Audi schwarz 2014 3 VW blau 2015 - Sei Θ : Marke = Opel FahrerId = 2 dann σ Θ (Autos) Marke Farbe Baujahr FahrerId Opel silber 2010 1 Opel schwarz 2010 2 VW rot 2014 2

Selektionsprädikat Oft geben wir das Prädikat explizit in der Selektionsoperation an. Das heisst, wir schreiben direkt σ Marke= Opel FahrerId=2 (Autos) und führen keinen eigenen Namen für das Selektionsprädikat ein.

Null Werte Wir betrachten nochmals die Tabelle Autos. Für das Selektionsprädikat gilt In der Tat erfüllt das Tupel Θ := FahrerId = 1 FahrerId 1 Autos σ Θ (Autos). (VW, blau, 2015, Null) das Prädikat Θ nicht, da sowohl Null = 1 als auch Null 1 zu unknown ausgewertet werden und damit auch Θ zu unknown ausgewertet wird. Dies ist korrekt, wenn wir beachten, dass Null für keinen Wert stehen kann.

Umbenennung Ist E eine Ausdruck der relationalen Algebra und ist x ein Name, so liefert ρ x (E) das Ergebnis des Ausdrucks E unter dem Namen x. Ist E ein Ausdruck der relationalen Algebra, der für eine n-stellige Relation steht, so liefert der Ausdruck ρ x(a1,...,a n)(e) das Ergebnis von E unter dem Namen x, wobei die Attribute zugleich in A 1,..., A n umbenannt worden sind.

Beispiel Autos Marke Farbe Baujahr FahrerId Opel silber 2010 1 Opel schwarz 2010 2 VW rot 2014 2 Audi schwarz 2014 3 VW blau 2015 - Sei Θ : Marke = Opel FahrerId = 2 Der Ausdruck ρ MB(Automarke,Jahrgang) (π Marke,Baujahr (σ Θ (Autos))) liefert: MB Automarke Jahrgang Opel 2010 VW 2014

Vereinigung und Mengendifferenz Wir gehen aus von den Attributen A 1,..., A n und dem Relationenschema S := (A 1,..., A n ), sowie Instanzen R und S von S. Die Vereinigung (R S) und die Mengendifferenz (R \ S) von R und S definieren wir dann durch und (R S) := {t t R oder t S} (R \ S) := {t t R und t / S}. Offensichtlich sind (R S) und (R \ S) ebenfalls Instanzen des Relationenschemas S.

Bemerkungen Wir beachten, dass Tupel, die sowohl in R als auch in S vorkommen in (R S) nicht mehrfach gezählt werden. In der relationalen Algebra können nur relative Komplemente von Relationen S bezüglich von Relationen R eingeführt werden (mit Hilfe der Mengendifferenz R \ S). Dagegen ist es nicht möglich, das absolute Komplement einer Relation S, d.h. die Menge aller Tupel {t t / S}, zu definieren.

Relationale Ausdrücke: Zusammenfassung Basisrelationen 1 Inputrelationen 2 konstante Relationen Grundoperationen 1 Projektion 2 kartesisches Produkt 3 Selektion 4 Umbenennung 5 Vereinigung 6 Differenz

Beispiel Studierende MatNr Name 1 Ann 2 Tom besucht MatNr Vorlesung 1 Datenbanken 1 Programmieren 2 Programmieren Studierende besucht Studierende.MatNr Name besucht.matnr Vorlesung 1 Ann 1 Datenbanken 1 Ann 1 Programmieren 1 Ann 2 Programmieren 2 Tom 1 Datenbanken 2 Tom 1 Programmieren 2 Tom 2 Programmieren

Beispiel 2 Studierende besucht Studierende.MatNr Name besucht.matnr Vorlesung 1 Ann 1 Datenbanken 1 Ann 1 Programmieren 1 Ann 2 Programmieren 2 Tom 1 Datenbanken 2 Tom 1 Programmieren 2 Tom 2 Programmieren σ Studierende.MatNr=besucht.MatNr (Studierende besucht) Studierende.MatNr Name besucht.matnr Vorlesung 1 Ann 1 Datenbanken 1 Ann 1 Programmieren 2 Tom 2 Programmieren

Beispiel 3 σ Studierende.MatNr=besucht.MatNr (Studierende besucht) Studierende.MatNr Name besucht.matnr Vorlesung 1 Ann 1 Datenbanken 1 Ann 1 Programmieren 2 Tom 2 Programmieren π Studierende.MatNr,Name,Vorlesung ( σstudierende.matnr=besucht.matnr (Studierende besucht) ) Studierende.MatNr Name Vorlesung 1 Ann Datenbanken 1 Ann Programmieren 2 Tom Programmieren

Beispiel 4 Studierende.MatNr Name Vorlesung 1 Ann Datenbanken 1 Ann Programmieren 2 Tom Programmieren ρ SV(MatNr,Name,Vorlesung) (π Studierende.MatNr,Name,Vorlesung (σ Studierende.MatNr=besucht.MatNr (Studierende besucht))) SV MatNr Name Vorlesung 1 Ann Datenbanken 1 Ann Programmieren 2 Tom Programmieren

Definierte Operationen: Durchschnitt Gegeben seien Attribute A 1,..., A n, das Relationenschema S := (A 1,..., A n ), sowie Instanzen R und S des Schemas S. Der Durchschnitt (R S) von R und S ist dann gegeben durch (R S) := (R \ (R \ S)).

Natürlicher Verbund Gegeben S := (A 1,..., A m ) und T := (B 1,..., B n ) sowie eine Instanz S von S und eine Instanz T von T. Ausserdem gelte {A 1,..., A m } {B 1,..., B n } = {A i1,..., A ip } mit i l < i h für l < h {A 1,..., A m } \ {A i1,..., A ip } = {A j1,..., A jq } mit j l < j h für l < h {B 1,..., B n } \ {A i1,..., A ip } = {B k1,..., B kr } mit k l < k h für l < h. Der natürliche Verbund (S T ) ist nun definiert als (S T ) := ρ S T (Ai1,...,A ip,a j1,...,a jq,b k1,...,b kr )( π L.Ai1,...,L.A ip,l.a j1,...,l.a jq,r.b k1,...,r.b kr ( σ L.Ai1 =R.A i1 L.A ip =R.A ip (ρ L (S) ρ R (T )))).

Natürlicher Verbund Der natürliche Verbund ist also eine zweistellige Operation, die 1 die beiden Argumentrelationen in L und R umbenennt, 2 ein kartesisches Produkt bildet, 3 eine Selektion durchführt, welche Gleichheit auf den Attributen verlangt, die beiden Schemata gemeinsam sind, 4 mit einer Projektion die Duplikate dieser gemeinsamen Attribute entfernt und die gemeinsamen Attribute an den Anfang stellt, 5 mit einer Umbenennung den Attributen wieder ihre ursprünglichen Namen gibt.

Beispiel Autos Marke Jahrgang PersId Opel 2010 1 VW 1990 1 Audi 2014 - Skoda 2014 2 Personen PersId Name 1 Studer 2 Meier Autos Personen PersId Marke Jahrgang Name 1 Opel 2010 Studer 1 VW 1990 Studer 2 Skoda 2014 Meier

Beispiel: unerwünschtes Ergebnis Autos Marke Jahrgang PersId Opel 2010 1 VW 1990 1 Audi 2014 - Skoda 2014 2 Personen PersId Name Jahrgang 1 Studer 1990 2 Meier 1994 Autos Personen Jahrgang PersId Marke Name 1990 1 VW Studer

Θ-Verbund Der Θ-Verbund R Θ S von zwei Relationen R und S ist definiert durch R Θ S := σ Θ (R S).

Beispiel Autos Marke Jahrgang PersId Opel 2010 1 VW 1990 1 Audi 2014 - Skoda 2014 2 Personen PersId Name Jahrgang 1 Studer 1990 2 Meier 1994 Wir erhalten für Autos Autos.PersId=Personen.PersId Personen folgende Tabelle, wobei A für Autos und P für Personen steht: A.Marke A.Jahrgang A.PersId P.PersId P.Name P.Jahrgang Opel 2010 1 1 Studer 1990 VW 1990 1 1 Studer 1990 Skoda 2014 2 2 Meier 1994

Beliebige Attribute Ein Θ-Join bei dem im Prädikat Θ nur auf Gleichheit getestet wird heisst Equi-Join. In einem allgemeinen Θ-Join können aber beliebige Prädikate verwendet werden. Beispielsweise liefert der Θ-Join Autos Autos.PersId=Personen.PersId Personen.Jahrgang 1990 Personen die Fahrer, welche 1990 oder früher geboren wurden, zusammen mit ihren Autos. Das heisst, wir erhalten folgende Tabelle für die Relationen Autos und Personen aus dem vorherigen Beispiel: A.Marke A.Jahrgang A.PersId P.PersId P.Name P.Jahrgang Opel 2010 1 1 Studer 1990 VW 1990 1 1 Studer 1990

Linker äusserer Verbund Autos Marke Jahrgang PersId Opel 2010 1 VW 1990 1 Audi 2014 - Skoda 2014 2 Personen PersId Name 1 Studer 2 Meier Der natürlichen Verbund Autos Personen enthält den Audi nicht. Der linke äussere Verbund Autos Personen ist definiert durch: ( (R R S := (R S) π T \ πr (R S) ) ) {(Null,..., Null)}

Linker äusserer Verbund Autos Marke Jahrgang PersId Opel 2010 1 VW 1990 1 Audi 2014 - Skoda 2014 2 Personen PersId Name 1 Studer 2 Meier Autos Personen PersId Marke Jahrgang Name 1 Opel 2010 Studer 1 VW 1990 Studer 2 Skoda 2014 Meier - Audi 2014 -

Division Beispiel Mechaniker Name Marke Studer Opel Meier Opel Meier VW Meier Audi Garage Marke Opel Audi Gesucht: die Namen derjenigen Mechaniker, welche alle Automarken, die in der Garage vorkommen, reparieren können. Mechaniker Garage Name Meier

Division: *-Operation Gegeben seien die Schemata S = (A 1,..., A m ) und T = (A m+1,..., A m+n ) (mit paarweise verschiedenen Attributen). Weiter sei R = (A i1,..., A im+n ) mit i j und i k paarweise verschieden ein Schema mit den Attributen A 1,..., A m+n. Ist S eine Instanz von S und T eine Instanz von T, ist s ein m-tupel aus S und ist t ein n-tupel aus T, so schreiben wir (s t) für das (m+n)-tupel, das wir durch geeignete Konkatenation von s und t erhalten, so dass gilt: π j (s t) s[a ij ] π j (s t) t[a ij ] falls i j m falls i j > m

Division: *-Operation, Beispiel Gegeben seien Attribute A, B, C und D, die Schemata S = (A, B) T = (C, D) R = (C, B, D, A) sowie eine Instanz S von S und eine Instanz T von T. Es seien nun s = (1, 2) S und t = (3, 4) T. Damit gilt s t = (3, 2, 4, 1).

Division Sei {B 1,..., B n } eine echte Teilmenge der Attributmenge {A 1,..., A m }. Ausserdem sei {A i1,..., A im n } := {A 1,..., A m } \ {B 1,..., B n } mit i l < i k für l < k. Schliesslich betrachten wir noch die Schemata R := (A 1,..., A m ), S := (B 1,..., B n ), T := (A i1,..., A im n ). Sind R eine Instanz von R und S eine Instanz von S, so ist die Division (R S) von R durch S eine Relation die zum Schema T gehört. Ein (m n)-tupel t aus π Ai1,...,A im n (R) soll genau dann Element der Relation (R S) sein, falls für alle Tupel s aus S das Tupel (t s) zu R gehört, d.h. (R S) := {t π Ai1,...,A im n (R) ( s S)((t s) R)}.

Division als Ausdruck der relationalen Algebra Es gilt (R S) = π Ai1,...,A im n (R) \ π Ai1,...,A im n ((π Ai1,...,A im n (R) S) \ R). Für unser Beispiel würde dieser relationale Ausdruck etwa folgendes bedeuten: Finde alle Mechaniker, für die es keine Automarke in der Garage gibt, die sie nicht reparieren können. (1)

Division mit mehreren Attributen R A1 A2 B1 B2 1 2 3 4 1 2 5 6 2 3 5 6 5 4 3 4 5 4 5 6 1 2 4 5 1 2 7 8 S B1 B2 3 4 5 6 7 8 R S A1 A2 1 2

Division als Inverses des kartesischen Produkts Lemma Seien R = (A 1,..., A m ) und S = (B 1,..., B n ) zwei Relationenschemata, R eine Instanz von R und S eine Instanz von S. Wir nehmen an, dass R und S keine gemeinsamen Attributnamen enthalten. Somit können wir das kartesische Produkt R S als Relation über dem Schema (A 1,..., A m, B 1..., B n ) auffassen. Dann gilt, falls S nicht-leer ist, (R S) S = R. Die Einschränkung auf nicht-leere Relationen S ist keine Überraschung. Über den rationalen Zahlen gilt (a b)/b = a auch nur für b 0.

Division mit Rest Die Division der relationalen Algebra verhält sich wie eine Division mit Rest (d.h. wie eine Ganzzahl-Division). Damit meinen wir, dass zwar (R S) S R gilt, aber (R S) S = R nicht gelten muss. Genau so gilt für die Ganzzahl-Division nur (7/3) 3 7 aber nicht (7/3) 3 = 7.

Queries 1 Wir betrachten eine Film-Datenbank. Dazu verwenden wir die Attribute PId (Personen-Id), Fn (Familienname), Vn (Vorname), FId (Film-Id), Dt (Datum), Reg (Regisseur), Titel und Jahr und betrachten die Relationenschemata P = (PId, Fn, Vn), PF = (PId, FId, Dt), F = (FId, Reg, Titel, Jahr). Ferner sei die Relation Personen eine Instanz von P, die Relation Schaut eine Instanz von PF und Filme eine Instanz von F.

Queries 2 Query 1 Wie lauten die Titel der Filme aus dem Jahr 2002 bei denen Spielberg Regie geführt hat? π Titel (σ Jahr=2002 Reg= Spielberg (Filme)) Query 2 Ermittle Familien- und Vorname derjenigen Personen, die Filme geschaut haben mit Spielberg oder Coppola als Regisseur. π Fn,Vn (Personen (Schaut (σ Reg= Spielberg Reg= Coppola (Filme)))) Query 3 Nenne Titel und Jahr der Filme, welche Eva Meier vor dem 30. November 2009 geschaut hat. π Titel,Jahr (σ Fn= Meier Vn= Eva (Personen) (σ Dt<20091130 (Schaut) Filme))

Queries 3 Query 4 Wie lauten die Personennummern der Personen, die alle Filme von Spielberg geschaut haben? π PId,FId (Schaut) π FId (σ Reg= Spielberg (Filme)) In diesem Ausdruck ist es wichtig, dass in der Division die Projektion π PId,FId (Schaut) verwendet wird und nicht die ursprüngliche Relation Schaut. Die Abfrage π PId (Schaut π FId (σ Reg= Spielberg (Filme))) liefert nämlich die Personennummer der Personen, die an einem einzigen Tag alle Filme von Spielberg geschaut haben.

Aggregatsfunktionen count (Zählen), sum (Summieren), min, max (Minimum bzw. Maximum), avg (Durchschnitt).

Group By Gegeben seien eine Teilmenge {B 1,..., B n } eine Teilmenge der Attributmenge {A 1,..., A m }, ein Element C von {A 1,..., A m } \ {B 1,..., B n } und das Relationenschema S = (A 1,..., A m ). Ist agg eine Aggregatsfunktion und R eine Instanz von S, so definieren wir die GroupBy Operation γ durch: γ(r, (B 1,..., B n ), agg, C) := {(b 1,..., b n, a) (b 1,..., b n ) π B1,...,B n (R) und Als Schema dieser Relation verwenden wir: a = agg({x (b 1,..., b n, x) π B1,...,B n,c(r)})}. (B 1,..., B n, agg(c)).

Queries 4 Query 5 Welcher Regisseur hat in welchem Jahr wie viele Filme gedreht? γ(filme, (Reg, Jahr), count, FId) Query 6 In welchem Jahr hat Spielberg das letzte Mal Regie geführt? σ Reg= Spielberg (γ(filme, (Reg), max, Jahr))

Aggregatsfunktion über Menge Filme FId Jahr Dauer 1 2010 120 2 2012 90 3 2012 120 4 2010 100 5 2012 120 Query 7 Welches ist die durchschnittliche Dauer der Filme pro Jahr? γ(filme, (Jahr), avg, Dauer) ergibt: Jahr avg(dauer) 2010 110 2012 105

Im Detail Für das Jahr 2010 wird die durchschnittliche Dauer berechnet durch avg({100, 120}), was das korrekte Resultat liefert. Für das Jahr 2012 wird die durchschnittliche Dauer jedoch berechnet durch avg({90, 120, 120}), was das (unerwünschte) Resultat 105 liefert.

Multimengen Eine Multimenge ist eine Kollektion von Objekten, bei der mehrfache Vorkommnisse von Elementen registriert werden, aber ihre Reihenfolge unwichtig ist. Wir können Multimengen also als Mengen auffassen, bei denen Elemente mehrfach vorkommen können, oder als Listen, bei denen die Reihenfolge nicht beachtet wird.

Multimengen Group By Wir definieren die Multimengen-GroupBy Operation Γ(R, (B 1,..., B n ), agg, C) analog zu γ(r, {B 1,..., B n }, agg, C) mit dem Unterschied, dass wir den Input der Aggregatsfunktion agg als Multimenge behandeln.

Aggregatsfunktion über Multi-Menge Filme FId Jahr Dauer 1 2010 120 2 2012 90 3 2012 120 4 2010 100 5 2012 120 Query 7 Welches ist die durchschnittliche Dauer der Filme pro Jahr? Γ(Filme, (Jahr), avg, Dauer) ergibt: Jahr avg(dauer) 2010 110 2012 110