DBS II: Relational Algebra and Calculus

Relational Algebra and Calculus

  • Wir haben einige tolle Operatoren
  • Herzlich willkommen im Shouty-Case-Land

SELECT

  • Wir wählen kram aus um kram zu machen
  • ist das Zeichen was wir dafür verwenden
  • Damit machen wir dann wie sachen aussortieren
  • Wir können damit boolean expressions modellieren, um halt weiter einzuordnen was wir auswählen wollen
  • Bester punkt ist sowas wie "SELECT * FROM WHERE "
  • Wenn wir was auswählen kriegen wir logischerweise nur das, was unseren "bedingungen" entspricht
  • Wir können die Selections dann auch stacken und weiter subsetten etc.
    • Wenn wir z.b. etwas aus einer riesigen tabelle grob selektieren, und auf dieser selektion dann weiter filtern
    • Je nachdem wie gut wir das dann filtern, kann man dann auch mit Joins etc. arbeiten

PROJECT

  • Mit der PROJECT operation können wir einige attribute auswählen die wir nöher betrachten wollen
  • (R)
  • Nach dieser Operation haben wir dann nur noch die ausgewählten attribute in unserer liste, in der reihenfolge die wir definiert haben
  • Diese operation entfernt zudem auch noch allemöglichen duplikate, damit der kram irgendwie einigermaßen stabil läuft
  • Alle Attribute die wir Projecten wollen müssen auch schon in der ausgehenden Query / Tabelle vorliegen, damit wir das machen können. Also, muss die angegebene Attributsliste ein Subset der ausgehenden sein

RENAME

  • Wir können damit relationen umbennen (was ein wunder)
  • Das macht sehr viel sin, wenn wir kram mergen, joinen oder projezieren oder so

Kurzer Exkurs zur Mengentheorie

  • Wir kennen aus Hömmi 1 und logik die vereinigung, den Schnitt, die Differenz und das Kreuzprodukt mit denen wir kram irgendwie zusammen verbinden können
  • Das geht auch in den tollen datenbanken, damit wir schön und toll und effizient suchen können
  • Zwei Relationen sind Kompatibel, wenn sie die gleiche anzahl an attributen haben
  • Die Domains müssen auch type-Kompatibel sein, dementsprechend müssen sie die beiden werte verwalten können

UNION

  • Wenn wir etwas vereinigen wollen können machen wir das einfach
  • Dann werden die einfach verbunden, und "aneinandergehängt"
  • Ebenso werden gedoppelte tupel eliminiert
  • Idealerweise wird das dann so gemanaged, dass die sachen vernünftig gejoined werden, wenn der kram aufeinander passt (sprich wenn die irgendwie verbunden sind mit keys, dass die keys dann auch gelinked werden)

INTERSECTION

  • Wenn wir einen Tupel haben, der in beiden ist wird dieser von dieser selektion mitgenommen
  • Das bedeutet, dass wir alles suchen, was in A UND in B ist, aber nicht nur in einem von beidem

SET DIFFERENCE

  • Die SET DIFFERENCE Operation, zeigt dir alle sachen die in Relation sind, also alles was in A aber nicht in B ist
  • Damit können wir kram noch weiter einschränken und damit noch besser suchen

CARTESIAN PRODUCT

  • Mit dem Kartesischen Produkt, oder auch X wird verwendet um zwei tupel miteinander zu kombinieren
  • Das machen wir dann mit einem Tupel, der die Relationen zwischen den beiden (oder mehreren) dingern repräsentiert.
  • Der wird dann erschaffen, damit wir die beziehungen klar definiert haben, und das dann einfach schön zusammen passt und der zusammenhang offensichtlich erkenntlich wird

JOIN

  • HAHAHAH YEAH DER JOIN IST DA
  • Naja, wir können mit dem join kram joinen
  • Der join kombiniert ein Kartesisches produkt und select
  • Wir können also Tabelle A mit Tabelle B joinen, wenn die irgendwelche überlappende elemente haben, anhand von denen wir zuordnen können.

DIVISION

  • Wir können die division wie ein "umgedrehtes" Kartesisches Produkt verwenden.
  • Das macht sehr viel sinn, wenn wir den kram einfach umdrehen
  • Wir nehmen also alles was nur in A ist, nur halt nicht in B
  • AUch bekannt als der "ohne" operator in der Logik

Aggregate Funcvtions and Grouping

  • Manche sachen können wir nicht vernünftig ausdrücken mit den sachen die wir vorliegen haben
  • Wenn wir das dann machen schauen wir uns mehrere sachen zusammen an
  • Generell "aggregieren" wir daten, um sie halt zusammenzufassen
  • Am ende bekommen wir praktisch ein großes (oder zusammengefasstes) Element was dann am ende kram macht
  • §%38%§

Queries

  • Mit queries können wir ja logischerweise kram definieren und dann auch suchen
  • Die queries repräsentieren die ausdrücke die wir auf unseren datensatz anwenden wollen, um eben das ziel zu erreichen

Relational Calculus

  • Das ist eine tolle deklarative Sprache
  • Wir können kram machen
  • Wir nutzen so die relationen in der datenbank um daten zu sortieren und daraus sachen zu lesen
  • §%48%§
  • §%49%§
  • §%50%§
  • §%51%§