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

  • RREL(X)R ⊂ REL(X) ist Relation über einem Relationenschema X.
  • Das Relationenschema X=A<em>1,...,A</em>nX = {A<em>1, . . . , A</em>n} ist Menge von Attributen mit bestimmten Wertebereichen (genauer X=A<em>1:D</em>1,...,A<em>n:D</em>nX = {A<em>1 : D</em>1, . . . , A<em>n : D</em>n}
  • Notation: R(A<em>1,...,A</em>n)R(A<em>1, . . . , A</em>n)
  • 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 (f<em>i)</em>iI(f<em>i)</em>{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)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 RREL(X)R ⊂ REL(X) eine Relation über dem Schema X. Sei Y eine Teilmenge von X. Die Projektion πY(R)π_Y(R) gibt nur die Spalten der Relation R zurück, die in der Projektionsliste YXY ⊆ X enthalten sind.
  • Syntax: π<Attributmenge>(<Relation>)π_{<Attributmenge>}(<Relation>)
  • Projektion formal: πY(R)=t[Y]tRπ_Y(R) = {t[Y] | t ∈ R}, wobei t[Y]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)π_{Titel}(Vorlesung)
  • Anfrage: Geben Sie die Matrikelnummern und die vollständigen Namen aller Studierenden aus.
    • πMatrNr,Vorname,Nachname(Studi)π_{MatrNr,Vorname,Nachname}(Studi)

Selektion

  • Sei R eine Relation und F ein Selektionsprädikat. Die Selektion σF(R)σ_F(R) gibt alle Tupel der Relation R zurück, welche die Bedingung der Formel F erfüllen.
  • Syntax: σ<Bedingung>(<Relation>)σ_{<Bedingung>}(<Relation>)
  • Prädikat: logische Formel, die entweder true oder false ausgibt.
  • Selektion formal: σF(R)=tRF(t)=trueσ_F(R) = {t ∈ R | F(t) = true}.
  • Bei einer Selektion σF(R)σ_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.
    • σSemester3(Studi)σ_{Semester≥3}(Studi)
  • Anfrage: Geben Sie alle Studis mit Nachnamen ab dem Anfangsbuchstaben K aus.
    • σNachnameK(Studi)σ_{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=BWLSemester=1(Studi)σ_{Fach=’BWL’∧Semester=1}(Studi)
    • =σ<em>Fach=BWL(σ</em>Semester=1(Studi))= σ<em>{Fach=’BWL’}(σ</em>{Semester=1}(Studi))
    • =σ<em>Semester=1(σ</em>Fach=BWL(Studi))= σ<em>{Semester=1}(σ</em>{Fach=’BWL’}(Studi))
  • Rechenregeln
    • σ<em>F1F2(R)=σ</em>F1(σF2(R))σ<em>{F1∧F2}(R) = σ</em>{F1}(σ_{F2}(R))
    • σ<em>F2(σ</em>F1(R))=σ<em>F1(σ</em>F2(R))σ<em>{F2}(σ</em>{F1}(R)) = σ<em>{F1}(σ</em>{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.
    • π<em>Titel(σ</em>CP5(Vorlesung))π<em>{Titel}(σ</em>{CP≥5}(Vorlesung))
  • Anfrage: Geben Sie den Titel und die CP-Anzahl von allen Vorlesungen aus, die mindestens 5 CP bringen.
    • π<em>Titel,CP(σ</em>CP5(Vorlesung))π<em>{Titel,CP}(σ</em>{CP≥5}(Vorlesung))
    • =σ<em>CP5(π</em>Titel,CP(Vorlesung))= σ<em>{CP≥5}(π</em>{Titel,CP}(Vorlesung))
  • Rechenregel
    • Wenn F ausschließlich Attribute aus X enthält, dann gilt: π<em>X(σ</em>F(R))=σ<em>F(π</em>X(R))π<em>X(σ</em>F(R)) = σ<em>F(π</em>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 RREL(X)R ⊂ REL(X) und SREL(X)S ⊂ REL(X) zwei Relationen über demselben Schema X. Die Vereinigung RSR ∪ S gibt die Tupel zurück, die in der Relation R oder in der Relation S enthalten sind.
  • Syntax: <Relation1><Relation2><Relation1> ∪ <Relation2>
  • Vereinigung formal: RS=ttRtSR ∪ 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.
    • π<em>Nachname(Studi)π</em>Nachname(Prof)π<em>{Nachname}(Studi) ∪ π</em>{Nachname}(Prof)
  • Anfrage: Geben Sie alle Studis aus, die entweder Informatik oder Mathematik studieren.
    • σ<em>Fach=Informatik(Studi)σ</em>Fach=Mathematik(Studi)σ<em>{Fach=’Informatik’}(Studi) ∪ σ</em>{Fach=’Mathematik’}(Studi)
    • =σFach=InformatikFach=Mathematik(Studi)= σ_{Fach=’Informatik’∨Fach=’Mathematik’}(Studi)
  • Rechenregel
    • σ<em>F1(R)σ</em>F2(R)=σF1F2(R)σ<em>{F1}(R) ∪ σ</em>{F2}(R) = σ_{F1∨F2}(R)

Differenz

  • Seien RREL(X)R ⊂ REL(X) und SREL(X)S ⊂ REL(X) zwei Relationen über demselben Schema X. Die Differenz RSR − S gibt die Tupel zurück, die in der Relation R, aber nicht in der Relation S enthalten sind.
  • Syntax: <Relation1><Relation2><Relation1> − <Relation2>
  • Differenz formal: RS=tRtSR − 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.
    • π<em>MatrNr(Studi)π</em>MatrNr(ho¨rt)π<em>{MatrNr}(Studi) − π</em>{MatrNr}(hört)

Kreuzprodukt

  • Seien RREL(X)R ⊂ REL(X) und SREL(Y)S ⊂ REL(Y) zwei Relationen. Das Kreuzprodukt R×SR × S kombiniert alle Tupel von R mit den Tupeln von S.
  • Syntax: <Relation1>×<Relation2><Relation1> × <Relation2>
  • Kreuzprodukt formal: R×S=rsrR,sSR × S = {r ◦ s | r ∈ R, s ∈ S}.
  • Mit ◦ wird die Konkatenation von zwei Tupeln bezeichnet.
  • Beispiel: (a<em>1,a</em>2)(b<em>1,b</em>2,b<em>3)=(a</em>1,a<em>2,b</em>1,b<em>2,b</em>3)(a<em>1, a</em>2) ◦ (b<em>1, b</em>2, b<em>3) = (a</em>1, a<em>2, b</em>1, b<em>2, b</em>3).
  • R×S=REL(XY)R × S = REL(X ∪ Y).
  • R hat n Attribute und S hat m Attribute ⇒ R×SR × S hat n+mn + m Attribute
  • R hat k Tupel und S hat l Tupel ⇒ R×SR × S hat klk · 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.
    • σ<em>gehalten</em>von=Prof.ID(Prof×Vorlesung)σ<em>{gehalten</em>von=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.
    • π<em>Vorlesung.ID,Nachname(σ</em>gehaltenvon=Prof.ID(Prof×Vorlesung))π<em>{Vorlesung.ID,Nachname}(σ</em>{gehalten_von=Prof.ID}(Prof × Vorlesung))

Umbenennung

  • Mit der Umbenennung ρα(R)ρ_α(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: ρ<alterName><neuerName>(<Relation>)ρ_{<alterName>→<neuerName>}(<Relation>)
    • Mit ρAB(R)ρ_{A→B}(R) wird das Attribut A in R zu B umbenannt.
    • Umbenennung mehrere Attribute ist gleichzeitig möglich: ρA1B1,A2B2,(R)ρ_{A1→B1,A2→B2,…}(R)
  • Umbenennung einer Relation
    • Syntax: ρ<neuerName>(Relation)ρ_{<neuerName>}(Relation)
    • Mit ρS(R)ρ_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.
    • π<em>ID(Prof)ρ</em>gehalten<em>vonID(π</em>gehaltenvon(Vorlesung))π<em>{ID}(Prof) − ρ</em>{gehalten<em>von→ID}(π</em>{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.
    • π<em>Nachname,Semester(σ</em>Semester3Fach=Informatik(Studi))π<em>{Nachname,Semester}(σ</em>{Semester≥3∧Fach=’Informatik’}(Studi))
    • =σ<em>Semester3(π</em>Name,Semester(σFach=Informatik(Studi)))= σ<em>{Semester≥3}(π</em>{Name,Semester}(σ_{Fach=’Informatik’}(Studi)))
  • Anfrage: Geben Sie die MatrNr aller Studis aus, die eine Vorlesung mit dem Titel Datenbanken hören.
    • π<em>MatrNr(σ</em>Titel=DatenbankenID=VID(Vorlesung×ho¨rt))π<em>{MatrNr}(σ</em>{Titel=’Datenbanken’∧ID=VID}(Vorlesung × hört))
    • =π<em>MatrNr(σ</em>ID=VID(ho¨rt×σTitel=Datenbanken(Vorlesung)))= π<em>{MatrNr}(σ</em>{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 RREL(X)R ⊂ REL(X) und SREL(X)S ⊂ REL(X) zwei Relationen über demselben Schema X. Der Schnitt RSR ∩ S gibt die Tupel zurück, die sowohl in der Relation R, als auch der Relation S enthalten sind.
  • Syntax: <Relation1><Relation2><Relation1> ∩ <Relation2>
  • Schnitt formal: RS=ttRtS=R(RS)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.
    • π<em>Nachname(Studi)π</em>Nachname(Prof)π<em>{Nachname}(Studi) ∩ π</em>{Nachname}(Prof)

Theta-Join

  • Der Theta-Join RθSR ▷◁_θ S enthält die Kombination von allen Tupeln von R mit Tupeln von S, die zusammen die Bedingung θ erfüllen.
  • Syntax: <Relation1><Bedingung><Relation2><Relation1> ▷◁_{<Bedingung>} <Relation2>
  • Theta-Join formal: R▷◁<em>θS=σ</em>θ(R×S)R ▷◁<em>θ S = σ</em>θ(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.
    • σ<em>gehalten</em>von=Prof.ID(Prof×Vorlesung)σ<em>{gehalten</em>von=Prof.ID}(Prof × Vorlesung)
    • =Prof▷◁<em>gehalten</em>von=Prof.IDVorlesung= Prof ▷◁<em>{gehalten</em>von=Prof.ID} Vorlesung
  • Anfrage: Geben Sie die Fächer der Studis aus, die die Vorlesung mit der ID 123 hören.
    • π<em>Fach(σ</em>VID=123(ho¨rt)ho¨rt.MatrNr=Studi.MatrNrStudi)π<em>{Fach}(σ</em>{VID=123}(hört) ▷◁_{hört.MatrNr=Studi.MatrNr} Studi)

Natural Join

  • Seien RREL(X)R ⊂ REL(X) und SREL(Y)S ⊂ REL(Y) zwei Relationen. Der natural Join R▷◁SR ▷◁ S kombiniert zwei Relationen über gleiche Werte in gleichnamigen Attributen.
  • Syntax: <Relation1>▷◁<Relation2><Relation1> ▷◁ <Relation2>
  • Das Resultat von R▷◁SR ▷◁ 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 XY=X ∩ Y = ∅, dann gilt R▷◁S=R×SR ▷◁ 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.
    • π<em>Fach(σ</em>VID=123(ho¨rt)ho¨rt.MatrNr=Studi.MatrNrStudi)π<em>{Fach}(σ</em>{VID=123}(hört) ▷◁_{hört.MatrNr=Studi.MatrNr} Studi)
    • =π<em>Fach(σ</em>VID=123(ho¨rt)▷◁Studi)= π<em>{Fach}(σ</em>{VID=123}(hört) ▷◁ Studi)
  • Benutzt alle gleichnamigen Attribute
  • Alternative 1: Join-Attribute mit Equi-Join festlegen
    • π<em>Fach(σ</em>VID=123(ho¨rt)Studi.MatrNr=ho¨rt.MatrNrStudi)π<em>{Fach}(σ</em>{VID=123}(hört) ▷◁_{Studi.MatrNr=hört.MatrNr} Studi)
  • Alternative 2: Attribut vor Natural Join umbenennen
    • $$π{Fach}(σ{VID=123}(