Deutsch -> Relationale Algebra

Betrachte das folgende relationale Schema einer Bibliothek mit Zweigniederlassungen:

  • Kunde(KartenID, Name, Adresse, Telefon)
  • Buch (BuchID, Titel)
  • Autor(Name, BuchID) mit BuchID → Buch.BuchID
  • Zweigbibliothek (ZweigID, ZweigName, Adresse)
  • BuchBestand(BuchID, ZweigID, AnzahlKopien) mit BuchID → Buch.BuchID ZweigID → Zweigbibliothek.ZweigID
  • Ausleihe(BuchID, ZweigID, KartenID, Ausleihdatum, Faelligkeitsdatum) mit BuchID → Buch.BuchID ZweigID → Zweigbibliothek.ZweigID KartenID → Kunde.KartenID

Formuliere die folgenden Anfragen als Anfragen der relationalen Algebra.

  1. Suche für jede Zweigbibliothek den Namen und die Gesamtzahl der bisher getätigten Ausleihen. (2P)

  2. Suche die Namen, Adressen und Anzahl der entliehenen Bücher aller Personen, die mehr als fünf Bücher ausgeliehen haben. (2P)

  3. Suche für jedes Buch des Autors Jeffrey Ullman den Titel und die Anzahl von Exemplaren, die der Zweigbibliothek namens Griebnitzsee gehören. (3P)

Solution
    1. ´pi_("ZweigName", "Anzahl")(´ ´gamma_("ZweigName", "COUNT"("ZweigName") -> "Anzahl")("Zweigbibliothek" ⋈ "Ausleihe"))´

      Anmerkung: Das Gruppieren via nicht zwingend eindeutiger Attribute ist nicht ganz korrekt

    2. ´pi_("Name", "Adresse", "Anzahl")(´ ´sigma_("Anzahl">5)(gamma_("KartenID", "COUNT"("KartenID") -> "Anzahl")("Kunde" ⋈ "Ausleihe"))´

      Anmerkung: Nach der Gruppierung sind die anderen Attribute nicht mehr vorhanden. => Späteres Ausführen des Joins.

    3. ´pi_("Titel", "Anzahl")(´ ´gamma_("Titel", "COUNT"("Titel") -> "Anzahl")(´ ´sigma_("Name"="Jeffrey Ullmann" ^^ "ZweigName"="Griebnitzsee")(´ ´(("Buch" ⋈ "Autor") ⋈ "BuchBestand") ⋈ "Zweigbibliothek")))´

      Anmerkung: Eine semantisch einwandfreie Variante sollte benutzt werden (Gruppierungsattribut nicht counten). Da jedoch zumeist die Duplikateneliminierung erst nach Ausführung des Gruppierungsoperators erfolgt (könnte bei alternativer Implementierung/Speicherung abweichen) liefert dieser Count das gleiche Ergebnis.

  • URL:
  • Language: Deutsch
  • Subjects: Databases Math
  • Type: Name
  • Duration: 25min
  • Credits: 7
  • Difficulty: 0.6
  • Tags: relational schema query relational algebra
  • Note:
    HPI, 2015-06-01, Datenbanksysteme 1, Aufgabe 2.4
  • Created By: adius
  • Created At:
    2015-07-26 22:14:01 UTC
  • Last Modified:
    2015-07-26 22:14:01 UTC