relationale algebra - babeș-bolyai universitydianat/bd/curs/v6.pdf · relationale algebra •fünf...
TRANSCRIPT
![Page 1: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/1.jpg)
Relationale Algebra
![Page 2: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/2.jpg)
Relationale Abfragesprachen/Relational Query Languages (QL)• Abfragesprachen: Daten aus einer Datenbank zu manipulieren und
abzufragen (retrieve information)
• Das relationalle Modell hat einfache und leistungsfähige Abfragesprachen (man kann viel optimieren)
• Abfragesprache ≠ Programmiersprache
• Abfragesprachen:• Nicht für komplexe Operationen
• Erlaubt einfacher und effizienter Zugriff zu großen Datensätze
![Page 3: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/3.jpg)
Formale Relationale Abfragesprachen (Query Languages)• Zwei mathematische Abfragesprachen stellen die theoretische
Grundlage der „reelen“ Abfragesprachen (wie z.B. SQL) in relationalen Datenbanken:• Relationale Algebra:
• kann Ausführungspläne beschreiben (operational)
• Relationale Kalküle:• Der Benutzer kann beschreiben was er haben will und nicht wie es berechnet werden
soll (non-operational, deklarativ)
• Domänenkalkül, Tupelkalkül
![Page 4: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/4.jpg)
Relationale Algebra
• Fünf Basisoperationen:• Projektion ( π ) : wählt bestimmte Spalten aus der Relation und gibt diese als neue
Relation aus („löscht“ die anderen Spalten)• Selektion ( 𝜎 ) : wählt bestimme Zeilen aus der Relation und gibt diese als neue
Relation aus („löscht“ die anderen Zeilen)• Kartesisches Produkt ( × ) : erlaubt die Verknüpfung zweier Relationen• Differenz ( - ) : gibt die Tupeln aus der ersten Relation, die sich nicht in der zweiten
Reltion befinden, aus• Vereinigung ( ∪ ) : gibt die Tupeln aus der ersten und zweiten Relation aus
• Zusätzliche Opratoren: Umbenennen, Durchschnitt, Division, Verbund
• Die Operationen können zusammengesetzt sein (jede Operation hat eine Relation als Ergebnis)
![Page 5: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/5.jpg)
Projektion
• Definition. Sei L = (A1, …, An) eine Teilmenge von Attributen(Spalten) aus der Relation R. Die Projektion der Attribute L einer Relation R istdefiniert als die Relation R’(A1, …, An) mit:
R’ = πL(R) = { t’ | t ∈ R ˄ t’.A1 = t.A1 ˄ … ˄ t’.An = t.An}
• Oder, anders gesagt: • die Projektion aus einem Tupel t ∈ R ist definiert als das Tupel
πL(t) = (t(A1), …, t(An))
• Die Projektion der Relation R ist definiert als die Relation
πL(R) = {πL(t) | t ∈ R }
![Page 6: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/6.jpg)
Projektion - Beispiel
![Page 7: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/7.jpg)
Projektion in SQL
• Ist πName,Ort(Studenten) äquivalent mit
SELECT Name, Ort FROM Studenten ?
• NEIN! • Relationale Algebra funktioniert mit Mengen ⇒ keine Duplikate(identische
Tupeln)
• Das ist in SQL nicht standardmäßig so!
• Äquivalent:SELECT DISTINCT Name, Ort FROM Studenten
![Page 8: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/8.jpg)
Selektion / Restriktion
• Definition. Die Selektion einer Relation R ist definiert als die Menge aller Tupel aus R, die der Selektionsbedingung P genügen:
𝜎P(R) = { t | t ∈ R ˄ P(t) }
• Die Bedingung P setzt sich zusammen aus:• Operanden: Konstanten oder Name eines Attributs
• Vergleichsoperatoren: =, ≠, <, ≤, >, ≥
• Boolsche Operatoren: ˅, ˄, ¬
![Page 9: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/9.jpg)
Selektion - Beispiel
![Page 10: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/10.jpg)
Selektion in SQL
𝜎Name = `Schmidt`(Studenten)
SELECT DISTINCT * FROM Studenten
WHERE Name = `Schmidt`
![Page 11: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/11.jpg)
Aufpassen
• Nicht verwechseln:
SELECT DISTINCT Attr1, Attr2
FROM Relation
WHERE c
Projektion - πAttr1, Attr2(Relation)
Selektion - σc(Relation)
![Page 12: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/12.jpg)
Zusammensetzung von Projektion und SelektionπName, Vorname, Ort(σName = `Schmidt`(Studenten))
SELECT DISTINCT Name, Vorname, Ort
FROM Studenten
WHERE Name = `Schmidt`
σName = `Schmidt`(πName, Vorname, Ort(Studenten))
• Welches ist das äquivalente SQL Query?• Kann man immer die Reihenfolge der Projektion und Selektion
wechseln?• Nein → die Selektion kann nach der Projektion ausgeführt werden, nur
dann wenn die Selektionsbedingung nur Attribute aus der Projektion enthält
![Page 13: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/13.jpg)
Vereinigung, Durchschnitt, Differenz
• Vereinigung: R1 ∪ R2 = { t | t ∈ R1 ˅ t ∈ R2 }
• Durchschnitt: R1 ∩ R2 = { t | t ∈ R1 ˄ t ∈ R2 }
• Differenz: R1 − R2 = { t | t ∈ R1 ˄ t ∉ R2 }
• R1 und R2 müssen für alle diese Operationen gleiches Relationenschema besitzen
• Wertebereiche müssen kompatibel oder vereinigungsverträglich sein
• Bem. Es gilt R1 ∩ R2 = R1 − (R1 − R2)
![Page 14: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/14.jpg)
Vereinigung, Durchschnitt, Differenz in SQL
R1 ∪ R2
SELECT DISTINCT *
FROM R1
UNION
SELECT DISTINCT *
FROM R2
R1 ∩ R2
SELECT DISTINCT *
FROM R1
INTERSECT
SELECT DISTINCT *
FROM R2
R1 − R2
SELECT DISTINCT *
FROM R1
EXCEPT
SELECT DISTINCT *
FROM R2
![Page 15: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/15.jpg)
Kartesisches Produkt
• Das kartesische Produkt zweier Relationen R1(A1, …, An) und
R2(B1, …, Bm) ist definiert als Relation:
R1 × R2 = { t | t1∈ R1 ᴧ t2 ∈ R2
ᴧ t.A1 = t1.A1 ᴧ … ᴧ t.An = t1.An
ᴧ t.B1 = t2.B1 ᴧ … ᴧ t.Bm = t2.Bm}
SQL:
SELECT DISTINCT *
FROM R1, R2
![Page 16: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/16.jpg)
Kartesisches Produkt - Beispiel
![Page 17: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/17.jpg)
θ-Join (Theta-Verbund)
• Auswahl bestimmter Tupel aus dem kartesischen Produkt R1 × R2
• Basis der Verknüpfung der Relationen: eine Bedingung cR1 ⋈c R2 = σc (R1 × R2)
Bsp. Studenten ⋈Studenten.MatrikelNr = Enrolled.MatrikelNr Enrolled
SQL:
SELECT DISTINCT *
FROM Studenten, Enrolled
WHERE Studenten.MatrikelNr
= Enrolled.MatrikelNr
SELECT DISTINCT *
FROM Studenten
INNER JOIN Enrolled ON
Studenten.MatrikelNr =
Enrolled.MatrikelNr
oder
![Page 18: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/18.jpg)
Equi-Join
• Einen θ-Join der Form R1 ⋈R1.Ai = R2.BjR2 nennt man Equi-Join
• Notation für Equi-Join um zu unterscheiden: R1 ⋈E(R1.Ai = R2.Bj)R2
• Die Bedingung muss der Form einer Gleichwertigkeit zwischen Attribute der ersten und der zweiten Relation sein
• Das Ergebnis enthält nur einen der Attribute, da es redundant ist beide zu behalten (die Attribute sind gleich)
![Page 19: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/19.jpg)
Equi-Join Beispiel
KursId Titel
Alg1 Algorithmen1
DB1 Datenbanken1
DB2 Datenbanken2
MatrNr KursId Note
1234 Alg1 7
1235 Alg1 8
1234 DB1 9
1234 DB2 7
1236 DB1 10
KursId Titel MatrNr Note
Alg1 Algorithmen1 1234 7
Alg1 Algorithmen1 1235 8
DB1 Datenbanken1 1234 9
DB2 Datenbanken2 1234 7
DB1 Datenbanken1 1236 10
Kurse Enrolled Kurse ⋈E(Kurse.KursId=Enrolled.KursId) Enrolled
![Page 20: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/20.jpg)
Natürlicher Verbund• Verknüpft zwei Relationen indem alle gleichbenannten Attribute der beiden
Relationen betrachtet werden und nur einen der gleichen Attribute kommt in das Ergebnis vor (ohne Redundanzen)
• Qualifizierende Tupel müssen für diese gleichbenannten Attribute gleiche Werte aufweisen, um in das Ergebnis einzugehen
• Gibt es kein gemeinsames Attribut so ist das Ergebnis das kartesische Produkt
KursId Titel
Alg1 Algorithmen1
DB1 Datenbanken1
DB2 Datenbanken2
MatrNr KursId Note
1234 Alg1 7
1235 Alg1 8
1234 DB1 9
1234 DB2 7
1236 DB1 10
KursId Titel MatrNr Note
Alg1 Algorithmen1 1234 7
Alg1 Algorithmen1 1235 8
DB1 Datenbanken1 1234 9
DB2 Datenbanken2 1234 7
DB1 Datenbanken1 1236 10
Kurse Enrolled Kurse ⋈ Enrolled
![Page 21: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/21.jpg)
Division
• Die Relation R1 enthält Attribute X und Y und R2 enthält den Attribut Y.
R1÷ R2 = { <X> | ∀ <Y> ∈ R2 : ∃ <X,Y> ∈ R1 }
• R1÷ R2 (oder R1/ R2) enthält alle X Tupeln so dass für jedes Y Tupel in R2, ein XY Tupel in R1 existiert
• X und Y können auch Mengen von Attributen sein
![Page 22: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/22.jpg)
Division
• Nicht als primitiver Operator, aber nützlich
• Die Division wird dann eingesetzt, wenn die Frage „für alle“ enthält
• Beispielfragestellungen für eine Division:• Welche Personen haben eine Kundenkarte von allen Filialen?
• Welche Mitarbeiter arbeiten an allen Projekten?
• Welche Studenten hören alle Vorlesungen von Prof. X?
![Page 23: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/23.jpg)
Division
• Darstellung des Quotienten durch die Basisoperatoren:• Idee: Berechne alle X Werte, die von irgendeinem Y Wert aus R2 disqualifiziert
wird
• X wird disqualifiziert wenn für einen Y der Tupel XY nicht in R1 enthalten ist:
πX( ( πX(R1) × R2) – R1 )
• Der Quotient R1÷ R2 enthält dann alle X Werte aus R1, die nicht disqualifiziertsind:
R1÷ R2 = πX(R1) – πX( ( πX(R1) × R2) – R1 )
![Page 24: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/24.jpg)
Division - Beispiel
A B
4 3
4 1
4 7
8 3
8 1
8 7
A
4
8
B
3
1
7
R1 R2 R1 ÷ R2
![Page 25: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/25.jpg)
Umbenennen von Relationen und Attributen
• Umbenennung unterscheidet sich von den anderen Operatorendadurch, dass keine Berechnung vorgenommen wird
• Operator ist aber notwendig, wenn eine Relation mehrfach in einerAnfrage vorkommt (z.B. Join)
• ρS(R) : Relation R wird in Relation S umbenannt
• ρB ← A (R) : Attribut A der Relation R wird umbenannt in B
• Das Relationenschema wird nicht geändert (nur eventuell Namen von Attributen)
![Page 26: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/26.jpg)
Zuweisungsoperation
• Die Zuweisungsoperation ← ist eine Methode komplexe Abfragen zurepresentieren
• Eine Abfrage kann in einer temporären Variable gespeichert werden
Temp ← πX(R1×R2)
• Dann kann man diese Variable in weiteren Abfragen benutzen
Erg ← Temp − R3
![Page 27: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/27.jpg)
Komplexe Abfragen
R1 ∪ (R2 ∩ πb (R3 × ρ𝑅5(ρ b←a(R4))))
∪
R1 ∩
R2 πb
×
R3 ρ𝑅5
ρ b←a(R4)Ausführungsplan
![Page 28: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/28.jpg)
KursId Titel ECTS
Alg1 Algorithmen1 6
DB1 Datenbanken1 6
DB2 Datenbanken2 5
MatrNr KursId Note
1234 Alg1 7
1235 Alg1 8
1234 DB1 9
1234 DB2 7
1236 DB1 10
Kurse Enrolled
MatrNr Name Vorname
1234 Schmidt Hans
1235 Meisel Amelie
1236 Krause Julia
1237 Rasch Lara
1238 Schmidt Christian
Studenten
![Page 29: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/29.jpg)
Geben Sie die Namen der Studenten aus, die für den Kurs `BD1` angemeldet sind• Lsg1.
πName((σ KursId=`BD1`(Enrolled)) ⋈ Studenten)
• Lsg2.
ρTemp1(σKursId=`BD1`(Enrolled))
ρTemp2(Temp1 ⋈ Studenten)
πName(Temp2)
• Lsg3.
πName(σKursId=`BD1`(Enrolled ⋈ Studenten))
![Page 30: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/30.jpg)
Geben Sie die Namen der Studenten aus, die für einen Kurs mit 5 ECTS angemeldet sind• Lsg1.
πName((σ ECTS=5(Kurse)) ⋈ Enrolled ⋈ Studenten)
• Lsg2.
πName(πMatrNr(πKursId(σ ECTS=5(Kurse)) ⋈ Enrolled) ⋈ Studenten)
• Lsg2 ist effizienter. Ein Abfrageoptimierer würde, gegeben die ersteAbfrage, die zweite Abfrage finden.
![Page 31: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/31.jpg)
Geben Sie die Namen der Studenten aus, die für einen Kurs mit 5 oder 6 ECTS angemeldet sind
• Wir können erstmal die Kurse mit 5 oder 6 ECTS ausgeben und dann die Studenten die in einem dieser Kurse angemeldet sind
ρTempKurse(σ ECTS=5 ˅ ECTS=6(Kurse))
πName(TempKurse ⋈ Enrolled ⋈ Studenten)
• Was passiert wenn wir „oder“ mit „und“ ersetzen
![Page 32: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/32.jpg)
Geben Sie die Namen der Studenten aus, die für einen Kurs mit 5 ECTS und einen Kurs mit 6 ECTS angemeldet sind• Die vorige Idee funktionniert nicht mehr.
• Wir müssen die Studenten finden, die in einem 5 ECTS Kurs angemeldet sind und die die in einem 6 ECTS Kurs angemeldet sind und den Durchschnitt berechnen
ρTemp5(πMatrNr(σ ECTS=5 (Kurse) ⋈ Enrolled))
ρTemp6(πMatrNr(σ ECTS=6 (Kurse) ⋈ Enrolled))
πName((Temp5 ∩ Temp6) ⋈ Studenten)
![Page 33: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/33.jpg)
Geben Sie die Namen der Studenten aus, die für alle Kurse angemeldet sind• „Für alle“ → wir benutzen Division
ρTempMatrNr(πMatrNr,KursId(Enrolled) / πKursId(Kurse))
πName( TempMatrNr ⋈ Studenten)
![Page 34: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/34.jpg)
Erweiterte Relationale Algebra Operatoren
• Erweiterte Projektion
• Aggregat Funktionen
• Outer Join
• Datenbank Änderungen
![Page 35: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/35.jpg)
Erweiterte Projektion
• Erweitert die Projektion, indem arithmetische Funktionen als Projektionbedingung benutzt werden können
πF1,…,Fn(R)
• F1, … , Fn sind arithmetische Funktionen, die Konstante oderAttribute der Relation R enthalten
![Page 36: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/36.jpg)
Aggregat Funktionen
• Haben mehrere Werte als Input und ein Wert als Output:• avg: Mittelwert
• min: Minimum der Werte
• max: Maximum der Werte
• sum: Summe der Werte
• count: Anzahl der Werte
![Page 37: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/37.jpg)
Aggregat Funktionen in Relationale Algebra
G1,G2,…,Gn
ϑF1(A1), F2(A2),…, Fn(An)
(R)
• G1,G2,…,Gn – eine Liste von Attributen worauf wir gruppieren wollen
• Fi – Aggregatfunktion
• Ai – Name eines Attributes
![Page 38: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/38.jpg)
Aggregat Funktionen - Beispiel
Relation R:
ϑsum(C)(R) ⇒ 12
A B C
a 2 5
b 3 3
a 4 4
![Page 39: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/39.jpg)
Outer Join• Erweiterung von Join-Operationen:
• Left Outer Join ⟕ - alle Tupel aus der linken Relation, die keinen Join-Partner in der rechten Relation haben, werden trotzdem ausgegeben
• Right Outer Join ⟖ - alle Tupel aus der rechten Relation, die keinen Join-Partner in der linken Relation haben, werden trotzdem ausgegeben
• Full Outer Join ⟗ - alle Tupel sowohl der linken als auch der rechten Reltion, die keinen Join-Partner haben, werden trotzdem ausgegeben
• Null-Werte werden benutzt:• Tupeln aus der Relation R, die keinen Join-Partner in der Relation S hatten
enthalten Null-Werte für die entsprechenden Spalten der Relation S
• Ein Null-Wert heißt unbekannt oder inexistent
• Alle Vergleiche mit einem Null-Wert werden in der Regel als FALSE bewertet
![Page 40: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/40.jpg)
Outer Join - SQL
![Page 41: Relationale Algebra - Babeș-Bolyai Universitydianat/BD/curs/V6.pdf · Relationale Algebra •Fünf Basisoperationen: •Projektion ( π) : wählt bestimmte Spalten aus der Relation](https://reader033.vdocuments.site/reader033/viewer/2022053010/5f0dbfa07e708231d43be448/html5/thumbnails/41.jpg)
Datenbank Änderungen
• Der Inhalt der Datenbank kann durch folgenden Operationengeändert werden:• Löschen: R ← R − E
• Einfügen: R ← R ∪ E
• Aktualisierung/Updating: R ← πF1, …, Fn(R)