Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Relationale Algebra
- # Operationen
- ## Selektion
- σ $$A_1=2, A_2 > 3$$ (R)
- Wählt nur Tupel aus R, die den Bedingungen im Prädikat entsprechen.
- ## Projektion
- $$π A_1, A_2, ... ,A_n$$ (R)
- Wählt nur die Attribute von R, die im Prädikat vorkommen.
- ## Vereinigung
- ```
- A ∪ B
- ```
- Ergebnis beinhaltet alle Tupel aus beiden Relationen (Duplikate eiliminiert). *ACHTUNG: Schemagleichheit vorausgesetzt!*
- ## Differenz
- ```
- A ∩ B
- ```
- Ergebnis beinhaltet nur Tupel, die in beiden Relationen vorkommen.
- *ACHTUNG: Schemagleichheit vorausgesetzt!*
- ## Umbenennung
- ### Von Relationen
- ```
- ρ Guys Studenten
- ```
- Bennent die Realtion Studenten um in Guys.
- ### Von Attributen
- ```
- ρ Identifier<-MatrNr Studenten
- ```
- Benennt das Attribut "MatrNr" in der Relation Studenten um in "Identifier".
- ## Gruppierung/Aggregation
- ```
- γ count(*) -> numberOfStudents Studenten -- Anzahl Studenten
- γ max(Semester) -> maxSemesterCount Studenten -- Höchste Semesteranzahl
- -- Studenten per Vorlesung
- γ VorlNr; count(*) -> StudentenPerVO hoeren
- -- Minimal Semesteranzahl von Students die Vorlesung hören
- γ hoeren.VorlNr; min(Studenten.Semester) -> MinSemesterOfStudentenPerVO (Studenten ⨝ hoeren)
- -- Beste Note pro Vorlesung
- γ VorlNr; min(Note) -> bestResult pruefen
- ```
- Aggregiert gewisse Attribute und speichert sie als neues Attribut. Optional ist auch eine Gruppierung nach Attributen möglich, Auf welche dann die spezifizierten Aggregationen dann einzeln angewendet werden.
- # Joins (Verbunde)
- ## Inner Joins
- Inner Joins beinhalten im Ergebnis nur Tupel, die Join-Partner gefunden haben.
- ### Natural Join
- ```
- A ⨝ B
- ```
- Joint Tupel aus A mit Tupel aus B, mit allen Attributen die den selben Namen haben. Das Ergebnis enthält alle Tupel, die einen Join-Partner gefunden haben.
- ### Equi-Join
- ```
- A ⨝ A.attr = B.attr B
- ```
- Joint Tupel aus A mit Tupel aus B, über die im Prädikat definierten Join-Bedingungen. Das Ergebnis enthält alle Tupel, die einen Join-Partner gefunden haben. Es können auch mehrere Join-Bedingungen im Prädikt mit ∧ (UND) bzw. ∨ (ODER) verknüpft werden.
- ## Outer Joins
- Outer Joins sind Equipment-Joins, die im Ergebnis auch Tupel aus A oder B beinhalten, die keine Join-Partner gefunden haben.
- ### Left Outer Join
- ```
- A ⟕ A.attr = B.attr B
- ```
- Führt zuerst einen Equi-Join aus und **fügt dann alle Tupel aus A hinzu, die keinen Join-Partner in B gefunden haben**. Die Spalten aus B für Tupel aus A, die keinen Join-Partner gefunden haben, werden mit NULL befüllt.
- ### Right Outer Join
- ```
- A ⟖ A.attr = B.attr B
- ```
- Führt zuerst einen Equi-Join aus und **fügt dann alle Tupel aus B hinzu, die keinen Join-Partner in A gefunden haben**. Die Spalten aus A für Tupel aus B, die keinen Join-Partner gefunden haben, werden mit **NULL** befüllt.
- ### Full Outer Join
- Führt zuerst einen Equi-Join aus und **fügt dann alle Tupel aus A bzw. B hinzu, die keinen Join-Partner in A bzw. gefunden haben**. Die Spalten aus A für Tupel aus B bzw. die Spalten aus B für Tupel aus A, die keinen Join-Partner gefunden haben, werden mit **NULL** befüllt.
- Ein Full Outer Join beinhaltet also immer mindestens alle Tupel aus A und alle Tupel aus B.
- ## Semi Joins
- Semi Joins beinhalten im Ergebnis nur Tupel aus A die einen Join-Partner gefunden haben. *ACHTUNG: Richtung beim Symbol in die "verkehrte" Richtung*
- ### Left Semi Join
- ```
- A ⋉ A.attr = B.attr B
- ```
- Ergebnis beinhaltet nur **Tupel aus A, die einen Join-Partner in B gefunden haben**.
- ### Right Semi Join
- ```
- A ⋊ A.attr = B.attr B
- ```
- Ergebnis beinhaltet nur **Tupel aus B, die einen Join-Partner in A gefunden haben**.
- ## Anti Join
- Sozusagen ein umgekehrter Semi-Join
- ```
- A ▷ B
- ```
- Ergebnis beinhaltet nur **Tupel aus A, die keinen Join-Partner in B gefunden haben.**
Add Comment
Please, Sign In to add comment