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.

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)
  • 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.

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}(