pdf24_zusammengefugt
Einführung in grundlegende Konzepte
- Die Vorlesung gliedert sich wie folgt:
- Einführung in grundlegende Konzepte
- Konzeptioneller Entwurf: ER-Modell
- Logischer Entwurf: Relationenmodell
- Relationale Anfragesprachen: Relationenalgebra
- Structured Query Language (SQL)
- Relationale Entwurfstheorie
Motivation
- Daten werden überall produziert: in Unternehmen, Verwaltung, Wissenschaft, privat, etc.
- Datenbanksysteme sind eine wichtige Komponente von Softwaresystemen.
- Datenbankkenntnisse sind erforderlich für viele Informatik-Berufe, einschließlich Nutzung, Administration und Entwicklung.
- Aktuelle Herausforderungen umfassen:
- Verwaltung von Daten im TByte/PByte-Bereich mit vielen Nutzern.
- Weltweit verteilte Datenbestände.
- Multimedia-Inhalte.
- Hohe Verfügbarkeit und Sicherheit.
- Effizienz und Performanz.
- Anpassung an neue Hardware.
Probleme ohne Datenbanken
- Redundanz und Inkonsistenz:
- Informationen werden mehrfach gespeichert.
- Dies führt zu Verschwendung von Speicherplatz.
- Bei Änderungen besteht die Gefahr von inkonsistenten Daten.
- Zugriffsmöglichkeiten:
- Isolierte Daten mit unterschiedlicher Verwaltung und Formatierung.
- Es fehlt eine Verknüpfung von logisch zusammenhängenden Daten.
- Datenintegrität:
- Regeln und Vorgaben sind nicht gut prüfbar.
- Es besteht die Gefahr von unerlaubten Zuständen.
- Datensicherheit:
- Es ist unklar, wer Daten sehen oder ändern darf.
- Lese- und Schreibrechte sollten für bestimmte Personengruppen festgelegt werden.
- Mehrbenutzerbetrieb:
- Gleichzeitiger Zugriff von mehreren Nutzern.
- Es besteht die Gefahr von Anomalien durch Überschreiben von Daten.
- Unerwünschte Blockierung aller Daten durch eine Person.
- Datenverlust:
- Daten können verloren gehen. Ein Backup ist erforderlich.
- Wiederhergestellte Daten müssen weiterhin konsistent sein.
- Effizienz:
- Eine effiziente Verwaltung und Verarbeitung großer Datenmengen ist erforderlich.
- Entwicklungskosten:
- Die Entwicklung individueller Lösungen für jedes einzelne Anwendungsprogramm soll vermieden werden.
Datenbanksysteme
- Seit den 70er Jahren gibt es Datenbanksysteme für die redundanzfreie und konsistente Verwaltung von Daten.
- Ein Datenbanksystem (DBS) besteht aus einer Datenbank zusammen mit einem Datenbankmanagementsystem.
- Datenbank: Sammlung von Daten, die miteinander in Beziehung stehen.
- Datenbankmanagementsystem (DBMS): Software für die Erstellung, Verwaltung und Abfrage von Datenbanken.
Aufgaben des DBMS
- Persistente Speicherung von Daten.
- Verknüpfung und effiziente Verwaltung großer Datenmengen.
- Anfrageoptimierung.
- Sicherstellung von Konsistenz und Datenintegrität.
- Schutz vor Datenverlust.
- Datensicherheit und Zugriffsrechte.
- Effizienter Mehrbenutzerbetrieb.
3-Ebenen-Architektur
- Physische Ebene: physische Speicherstrukturen und Zugriffspfade.
- Logische Ebene: Strukturen und Beziehungen der Daten sowie Integritätsbedingungen. Die Beschreibung erfolgt üblicherweise in einem logischen Datenmodell.
- Externe Ebene: Sichten für Benutzer.
- Datenunabhängigkeit:
- Physische Datenunabhängigkeit: Änderungen der physischen Ebene sind möglich, ohne die logische Ebene zu ändern.
- Logische Datenunabhängigkeit: Änderungen der logischen Ebene sind möglich, ohne die externe Ebene zu ändern.
Datenbanksprachen
- Datendefinitionssprache (DDL) für die Definition von:
- Datenbankschema: Struktur der Datenobjekte und Beziehungen zueinander.
- Integritätsbedingungen: Einschränkungen für zulässige Daten.
- Datenmanipulationssprache (DML):
- Datenmanipulationen: Einfügen, Änderung und Löschen von Daten.
- Anfragen: Auslesen von Daten (teilweise als DQL bezeichnet).
Schema vs. Instanz
- Datenbankschema: Beschreibung der Datenbank.
- Datenbankstruktur, Datentypen und Integritätsbedingungen.
- Ändert sich selten. Mit DDL Erstellung/Veränderung des Schemas.
- Datenbankinstanz: Daten in der Datenbank zu einem bestimmten Zeitpunkt.
- Auch Datenbankzustand oder Datenbankausprägung genannt.
- Ändert sich häufig. Mit DML Veränderung der Instanz bzw. Abfragen basierend auf aktueller Instanz.
Historie von relationalen DBMS
- 1970: Relationenmodell von Ted Codd (IBM): Grundlage relationaler DBS.
- 1974: System R von IBM.
- Anfragesprache SEQUEL.
- Erster Prototyp eines rDBMS.
- 1975: Ingres von University of California at Berkeley (UCB).
- Anfragesprache QUEL.
- Vorgänger von Postgres, Sybase, etc.
- 1979: Oracle Version 2: erstes kommerziell verfügbares rDBMS.
Aktuelle DBS
- Relationale Datenbanken:
- Sprachen: verschiedene SQL Dialekte.
- Kommerzielle Produkte: Oracle, Microsoft SQL Server, Snowflake, IBM DB2, Microsoft Access, etc.
- Open Source Produkte: PostgreSQL, MySQL, MariaDB, etc.
- Alternative: noSQL (not only SQL) Datenbanken:
- Dokumentenorientierte Datenbanken:
- Redis, MongoDB, CouchDB, etc.
- Graphdatenbanken:
- Sprachen: SPARQL, Gremlin, Cypher.
- Aerospike, Neo4j, ArangoDB, etc.
- Weitere: Key-Value-Datenbanken, Multivalue-Datenbanken, etc.
- Dokumentenorientierte Datenbanken:
Phasen des Datenbankentwurfs
- Anforderungsanalyse
- Konzeptueller Entwurf
- Logischer Entwurf
- Datendefinition
- Physischer Entwurf
1. Anforderungsanalyse
- Befragung von Kunden/zukünftigen Nutzern.
- Analyse der Informationen zum Fachproblem.
- Trennung von Datenbankanforderungen und funktionalen Anforderungen.
2. Konzeptueller Entwurf
- Erste formale Beschreibung (High-Level).
- Verwendung von konzeptuellen Datenmodellen (z.B. ER-Modell, objektorientierte Modelle wie UML).
- Unabhängig von DBMS/Implementierung.
3. Logischer Entwurf
- Transformation in ein logisches Datenmodell (z.B. Relationenmodell, Netzwerkmodell, Hierarchisches Modell).
- Ggf. Verbesserung anhand von Gütekriterien (→ Normalisierung).
- Modell für die Implementierung, also abhängig vom DBMS.
4. Datendefinition
- Umsetzung des logischen Modells in ein konkretes Datenbankschema.
- Basiert auf gewähltem DBMS.
5. Physischer Entwurf
- Ergänzung der Definition um Zugriffsunterstützung.
- Verwendung von physischen Datenmodellen Speicher- und Zugriffsstrukturen.
Relationale Anfragesprachen
- Sprachen, mit denen man Informationen aus einer Datenbank im Relationenmodell extrahieren kann
- Einordnung in den Vorlesungsverlauf
- ER-Modell
- Relationenmodell
- relationale Anfragesprachen
- SQL
- Entwurfstheorie
Wiederholung Relationenmodell
- R ⊂ REL(X) ist Relation über einem Relationenschema X.
- Das Relationenschema X = {A1, . . . , An} ist Menge von Attributen mit bestimmten Wertebereichen (genauer X = {A1 : D1, . . . , An : Dn}
- Notation: R(A1, . . . , An)
- Für ein Attribut A in der Relation R ist R.A der qualifizierte Attributname.
Voraussetzungen
- Für die Relationen gelten folgende Bedingungen:
- keine null-Werte
- Eine Relation ist eine Menge von Tupel, bei der es keine Duplikate gibt.
- Im Relationenschema sind die Namen der Attribute relevant, nicht ihre Reihenfolge.
- Die Relation befindet sich in 1NF
- Eine Relation ist in erster Normalform (1NF), wenn die Wertebereiche aller Attribute atomar sind. Das bedeutet, dass keine zusammengesetzten, geschachtelten oder mengenwertigen Einträge erlaubt sind.
Anfragen
- Gegeben seien die Relationen:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Beispiele für Anfragen:
- Geben Sie alle Studis aus, die im ersten Semester sind
- Geben Sie den Titel alle Vorlesungen aus, die von Prof XY gehalten werden
- Geben Sie den Namen aller Profs aus, die ausschließlich Vorlesungen mit 5 CP halten.
- Geben Sie die Studis aus, die alle Vorlesungen von Prof XY gehört haben.
- Ziel: Solche Anfragen mit Hilfe von relationalen Anfragesprachen formulieren.
Relationale Anfragesprachen
- Anfrage: Folge von Operationen, die aus den Basisrelationen eine Ergebnisrelation berechnet
- interaktiv auf Bildschirm angezeigt oder per Programm weiterverarbeitet
- ggf. unter anderem Namen abgespeichert (Sichtrelation/Snapshot)
- 2 klassische Sprachen: Relationenalgebra und Relationenkalkül (Tupelkalkül, Domänenkalkül)
- Eigenschaften
- Vollständigkeit: Eine Sprache heißt relational vollständig, wenn sie mindestens so mächtig ist wie die Relationenalgebra bzw. das Relationenkalkül.
- Abgeschlossenheit: Das Ergebnis einer Anfrage ist wieder eine Relation.
Relationenalgebra
- Eine Algebra besteht aus einer Menge A mit einer Familie von Operationen (fi){i∈I}.
- Beispiel 1: Natürliche Zahlen mit Addition und Multiplikation
- Beispiel 2: Vektoren mit Addition, skalarer Multiplikation und Vektorkreuzprodukt
- Operationen erfüllen bestimmte Rechenregeln (z.B. Assoziativgesetz, Kommutativgesetz, …)
- Bei der Relationenalgebra: Relationen mit Operationen auf Relationen. Die minimale Relationenalgebra besteht aus der kleinsten Menge von Operatoren, sodass die Vollständigkeit erhalten bleibt.
- Die Operatoren Ω = {π, σ, ∪, −, ×, ρ} bilden eine minimale Relationenalgebra
Ausdrücke
Ein Ausdruck der Relationenalgebra besteht i.Allg. aus einer Hintereinander-Ausführung/Verkettung von Operationen auf Relationen.
Die Relationenalgebra ist eine prozeduale Sprache, also die Reihenfolge der Operationen ist relevant.
Für Veranschaulichung von komplexen Anfragen: Operatorbäume
Operatorbaum Beispiel: 2 ∗ (3 + 5) entspricht
\begin{tikzpicture} \node (root) at (0,0) {$*$}; \node (left) at (-1,-1) {$2$}; \node (right) at (1,-1) {$+$}; \node (right_left) at (0,-2) {$3$}; \node (right_right) at (2,-2) {$5$}; \draw (root) -- (left); \draw (root) -- (right); \draw (right) -- (right_left); \draw (right) -- (right_right); \end{tikzpicture}Operatorbaum Relationenalgebra πA(R ▷◁ S) entspricht
\begin{tikzpicture} \node (root) at (0,0) {$\pi_A$}; \node (child) at (0,-1) {$\Join$}; \node (left) at (-1,-2) {$R$}; \node (right) at (1,-2) {$S$}; \draw (root) -- (child); \draw (child) -- (left); \draw (child) -- (right); \end{tikzpicture}
Überblick
- Operatoren der minimalen Relationenalgebra
- Projektion π
- Selektion σ
- Vereinigung ∪
- Differenz −
- Kreuzprodukt ×
- Umbenennung ρ
- Weitere Operatoren
- Schnitt ∩
- Joins ▷◁
- Division ÷
- Erweiterungen der Relationenalgebra
Projektion
- Sei R ⊂ REL(X) eine Relation über dem Schema X. Sei Y eine Teilmenge von X. Die Projektion π_Y(R) gibt nur die Spalten der Relation R zurück, die in der Projektionsliste Y ⊆ X enthalten sind.
- Syntax: π_{
}( ) - Projektion formal: π_Y(R) = {t[Y] | t ∈ R}, wobei t[Y] die Einschränkung eines Tupels t auf die Attribute in Y ist.
- Duplikate werden entfernt!
Projektion: Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die Titel aller Vorlesungen aus.
- π_{Titel}(Vorlesung)
- Anfrage: Geben Sie die Matrikelnummern und die vollständigen Namen aller Studierenden aus.
- π_{MatrNr,Vorname,Nachname}(Studi)
Selektion
- Sei R eine Relation und F ein Selektionsprädikat. Die Selektion σ_F(R) gibt alle Tupel der Relation R zurück, welche die Bedingung der Formel F erfüllen.
- Syntax: σ_{
}( ) - Prädikat: logische Formel, die entweder true oder false ausgibt.
- Selektion formal: σ_F(R) = {t ∈ R | F(t) = true}.
- Bei einer Selektion σ_F(R) wird die Formel F Selektionsprädikat genannt und ist aufgebaut aus:
- Attributen der Relation R oder Konstanten als Operanden
- arithmetische Vergleichoperatoren: =,
- logische Operatoren: ∧ (und), ∨ (oder), ¬ (nicht).
- größer/kleiner-Vergleiche funktionieren für alle Datentypen mit einer Ordnung
- bei Strings wird lexikographische Ordnung verwendet
Selektion: Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie alle Studis aus, die mindestens im dritten Semester sind.
- σ_{Semester≥3}(Studi)
- Anfrage: Geben Sie alle Studis mit Nachnamen ab dem Anfangsbuchstaben K aus.
- σ_{Nachname≥’K’}(Studi)
- Anmerkungen
- Bei Strings an Anführungszeichen denken
- Strings haben lexikographische Ordnung
Rechenregeln - Selektion
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie alle BWL-Studis im ersten Semester aus.
- σ_{Fach=’BWL’∧Semester=1}(Studi)
- = σ{Fach=’BWL’}(σ{Semester=1}(Studi))
- = σ{Semester=1}(σ{Fach=’BWL’}(Studi))
- Rechenregeln
- σ{F1∧F2}(R) = σ{F1}(σ_{F2}(R))
- σ{F2}(σ{F1}(R)) = σ{F1}(σ{F2}(R))
Rechenregeln - Selektion/Projektion
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie den Titel alle Vorlesungen aus, die mindestens 5 CP bringen.
- π{Titel}(σ{CP≥5}(Vorlesung))
- Anfrage: Geben Sie den Titel und die CP-Anzahl von allen Vorlesungen aus, die mindestens 5 CP bringen.
- π{Titel,CP}(σ{CP≥5}(Vorlesung))
- = σ{CP≥5}(π{Titel,CP}(Vorlesung))
- Rechenregel
- Wenn F ausschließlich Attribute aus X enthält, dann gilt: πX(σF(R)) = σF(πX(R))
Mengenoperationen
- Für Mengenoperationen müssen die beiden Relationen das gleiche Schema haben!
- Die Namen der Attribute müssen gleich sein
- Wertebereich/Domäne der jeweiligen Attribute müssen gleich sein
- Die Reihenfolge spielt für uns keine Rolle.
- Ggf. sind Projektionen oder Umbenennungen (später im Kapitel → Slide 28) nötig, um das gleiche Schema zu erhalten.
- Keine Duplikate!
Vereinigung
- Seien R ⊂ REL(X) und S ⊂ REL(X) zwei Relationen über demselben Schema X. Die Vereinigung R ∪ S gibt die Tupel zurück, die in der Relation R oder in der Relation S enthalten sind.
- Syntax:
∪ - Vereinigung formal: R ∪ S = {t | t ∈ R ∨ t ∈ S}.
Vereinigung Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die Nachnamen aller Studis und aller Profs aus.
- π{Nachname}(Studi) ∪ π{Nachname}(Prof)
- Anfrage: Geben Sie alle Studis aus, die entweder Informatik oder Mathematik studieren.
- σ{Fach=’Informatik’}(Studi) ∪ σ{Fach=’Mathematik’}(Studi)
- = σ_{Fach=’Informatik’∨Fach=’Mathematik’}(Studi)
- Rechenregel
- σ{F1}(R) ∪ σ{F2}(R) = σ_{F1∨F2}(R)
Differenz
- Seien R ⊂ REL(X) und S ⊂ REL(X) zwei Relationen über demselben Schema X. Die Differenz R − S gibt die Tupel zurück, die in der Relation R, aber nicht in der Relation S enthalten sind.
- Syntax:
− - Differenz formal: R − S = {t ∈ R | t \notin S}.
- Einzige nicht-monotone Operation in der minimalen Relationenalgebra.
Differenz Anfrage
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die MatrNr aller Studis aus, die keine Vorlesung hören.
- π{MatrNr}(Studi) − π{MatrNr}(hört)
Kreuzprodukt
- Seien R ⊂ REL(X) und S ⊂ REL(Y) zwei Relationen. Das Kreuzprodukt R × S kombiniert alle Tupel von R mit den Tupeln von S.
- Syntax:
× - Kreuzprodukt formal: R × S = {r ◦ s | r ∈ R, s ∈ S}.
- Mit ◦ wird die Konkatenation von zwei Tupeln bezeichnet.
- Beispiel: (a1, a2) ◦ (b1, b2, b3) = (a1, a2, b1, b2, b3).
- R × S = REL(X ∪ Y).
- R hat n Attribute und S hat m Attribute ⇒ R × S hat n + m Attribute
- R hat k Tupel und S hat l Tupel ⇒ R × S hat k · l Tupel
- Was, wenn R und S Attribute mit demselben Namen haben?
- ggf. qualifizierte Attributnamen verwenden
- alternativ Umbenennung verwenden
- Umbenennung nötig, falls beide Relationen gleich heißen
Kreuzprodukt Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie alle Informationen zu Vorlesungen zusammen mit den Profs aus, die sie halten.
- σ{gehaltenvon=Prof.ID}(Prof × Vorlesung)
- Anfrage: Geben Sie für jede Vorlesung jeweils die Vorlesungs-ID sowie den Nachnamen des Profs aus, der sie hält.
- π{Vorlesung.ID,Nachname}(σ{gehalten_von=Prof.ID}(Prof × Vorlesung))
Umbenennung
- Mit der Umbenennung ρ_α(R) können entweder die Relation selbst oder Attribute in der Relation umbenannt werden.
- Keine Auswirkung auf die Tupel in der Relation
- Umbenennung nur innerhalb der Anfrage, keine Änderung der Basisrelationen
- wird in der Regel eingesetzt, um Namenskonflikte aufzulösen
- bei Mengenoperationen: unterschiedliche Attribute werden gleich benannt
- beim Kreuzprodukt: gleiche Attribute werden unterschiedlich benannt
- Umbenennung von Attributen
- Syntax: ρ_{
→ }( ) - Mit ρ_{A→B}(R) wird das Attribut A in R zu B umbenannt.
- Umbenennung mehrere Attribute ist gleichzeitig möglich: ρ_{A1→B1,A2→B2,…}(R)
- Syntax: ρ_{
- Umbenennung einer Relation
- Syntax: ρ_{
}(Relation) - Mit ρ_S(R) wird die Relation R zu S umbenannt.
- meist nötig, wenn eine Relation mehrfach in einer Anfrage verwendet wird.
- Syntax: ρ_{
Umbenennung Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die IDs aller Profs aus, die keine Vorlesung halten.
- π{ID}(Prof) − ρ{gehaltenvon→ID}(π{gehalten_von}(Vorlesung))
- Anfrage: Geben Sie die Nachnamen aller Studis aus, die mehrfach vorkommen.
- π{S1.Nachname}(σ{S1.Nachname=S2.Nachname∧S1.MatrNr̸=S2.MatrNr}(ρ{S1}(Studi) × ρ{S2}(Studi)))
Zusammenfassung
- Operatoren einer (minimalen) Relationenalgebra:
- Projektion π
- Selektion σ
- Vereinigung ∪
- Differenz −
- Kreuzprodukt ×
- Umbenennung ρ
- Die Operatoren Ω = {π, σ, ∪, −, ×, ρ} bilden eine minimale Relationenalgebra.
- Es gibt noch weitere Operatoren, die im weiteren Verlauf besprochen werden
- Auch andere Mengen von Operatoren können ebenfalls eine minimale Relationenalgebra bilden.
Komplexe Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie den Nachnamen und die Semesteranzahl aller Informatik-Studierenden aus, die mindestens im 3. Semester sind.
- π{Nachname,Semester}(σ{Semester≥3∧Fach=’Informatik’}(Studi))
- = σ{Semester≥3}(π{Name,Semester}(σ_{Fach=’Informatik’}(Studi)))
- Anfrage: Geben Sie die MatrNr aller Studis aus, die eine Vorlesung mit dem Titel Datenbanken hören.
- π{MatrNr}(σ{Titel=’Datenbanken’∧ID=VID}(Vorlesung × hört))
- = π{MatrNr}(σ{ID=VID}(hört × σ_{Titel=’Datenbanken’}(Vorlesung)))
- Anfrage: Geben Sie die IDs aller Profs aus, die ausschließlich Vorlesungen halten, die 5 CPs bringen.
- ^= Geben Sie die IDs aller Profs aus, die Vorlesungen halten, aber keine Vorlesung halten, die nicht 5 CP bringt.
- π{gehaltenvon}(Vorlesung) − π{gehaltenvon}(σ_{CP̸=5}(Vorlesung))
- Anmerkung: Eine Bedingung, ausschließlich gelten soll, wird i.d.R. mit Differenz und negierter Bedingung umgesetzt.
Überblick
- Operatoren der minimalen Relationenalgebra
- Projektion π
- Selektion σ
- Vereinigung ∪
- Differenz −
- Kreuzprodukt ×
- Umbenennung ρ
- Weitere Operatoren
- Schnitt ∩
- Joins ▷◁
- Division ÷
- Erweiterungen der Relationenalgebra
Schnitt
- Seien R ⊂ REL(X) und S ⊂ REL(X) zwei Relationen über demselben Schema X. Der Schnitt R ∩ S gibt die Tupel zurück, die sowohl in der Relation R, als auch der Relation S enthalten sind.
- Syntax:
∩ - Schnitt formal: R ∩ S = {t | t ∈ R ∧ t ∈ S} = R − (R − S)
Schnitt Anfrage
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die Nachnamen aller Studis aus, bei denen ein Prof mit demselben Nachnamen existiert.
- π{Nachname}(Studi) ∩ π{Nachname}(Prof)
Theta-Join
- Der Theta-Join R ▷◁_θ S enthält die Kombination von allen Tupeln von R mit Tupeln von S, die zusammen die Bedingung θ erfüllen.
- Syntax:
▷◁_{ } - Theta-Join formal: R ▷◁θ S = σθ(R × S).
- θ ein Prädikat über die Attribut von R und S.
- Mehrere Vergleiche können mit ∧ (und) verknüpft werden.
- Beim Equi-Join enthält die Bedingung θ nur „=“-Vergleiche zwischen Attributen der beiden Relationen.
Theta-Join/Equi-Join Anfragen
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie alle Informationen zu Vorlesung zusammen mit den Profs aus, die sie halten.
- σ{gehaltenvon=Prof.ID}(Prof × Vorlesung)
- = Prof ▷◁{gehaltenvon=Prof.ID} Vorlesung
- Anfrage: Geben Sie die Fächer der Studis aus, die die Vorlesung mit der ID 123 hören.
- π{Fach}(σ{VID=123}(hört) ▷◁_{hört.MatrNr=Studi.MatrNr} Studi)
Natural Join
- Seien R ⊂ REL(X) und S ⊂ REL(Y) zwei Relationen. Der natural Join R ▷◁ S kombiniert zwei Relationen über gleiche Werte in gleichnamigen Attributen.
- Syntax:
▷◁ - Das Resultat von R ▷◁ S ist eine Relation mit einem Schema, das alle Attribute von R enthält und alle Attribute von S, die nicht in R vorkommen.
- Wenn X ∩ Y = ∅, dann gilt R ▷◁ S = R × S.
Natural Join Anfrage
- Gegeben:
Studi(MatrNr, Vorname, Nachname, Fach, Semester)hört(MatrNr, VID)Vorlesung(ID, Titel, CP, gehalten_von)Prof(ID, Vorname, Nachname, Lehrstuhl)
- Anfrage: Geben Sie die Fächer der Studis aus, die die Vorlesung mit der ID 123 hören.
- π{Fach}(σ{VID=123}(hört) ▷◁_{hört.MatrNr=Studi.MatrNr} Studi)
- = π{Fach}(σ{VID=123}(hört) ▷◁ Studi)
- Benutzt alle gleichnamigen Attribute
- Alternative 1: Join-Attribute mit Equi-Join festlegen
- π{Fach}(σ{VID=123}(hört) ▷◁_{Studi.MatrNr=hört.MatrNr} Studi)
- Alternative 2: Attribut vor Natural Join umbenennen
- $$π{Fach}(σ{VID=123}(