Guest User

Untitled

a guest
Nov 12th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.73 KB | None | 0 0
  1. # Relationale Algebra
  2.  
  3. # Operationen
  4.  
  5. ## Selektion
  6.  
  7. σ $$A_1=2, A_2 > 3$$ (R)
  8.  
  9. Wählt nur Tupel aus R, die den Bedingungen im Prädikat entsprechen.
  10.  
  11. ## Projektion
  12.  
  13. $$π A_1, A_2, ... ,A_n$$ (R)
  14.  
  15. Wählt nur die Attribute von R, die im Prädikat vorkommen.
  16.  
  17. ## Vereinigung
  18.  
  19. ```
  20. A ∪ B
  21. ```
  22.  
  23. Ergebnis beinhaltet alle Tupel aus beiden Relationen (Duplikate eiliminiert). *ACHTUNG: Schemagleichheit vorausgesetzt!*
  24.  
  25. ## Differenz
  26.  
  27. ```
  28. A ∩ B
  29. ```
  30.  
  31. Ergebnis beinhaltet nur Tupel, die in beiden Relationen vorkommen.
  32.  
  33. *ACHTUNG: Schemagleichheit vorausgesetzt!*
  34.  
  35. ## Umbenennung
  36.  
  37. ### Von Relationen
  38.  
  39. ```
  40. ρ Guys Studenten
  41. ```
  42.  
  43. Bennent die Realtion Studenten um in Guys.
  44.  
  45. ### Von Attributen
  46.  
  47. ```
  48. ρ Identifier<-MatrNr Studenten
  49. ```
  50.  
  51. Benennt das Attribut "MatrNr" in der Relation Studenten um in "Identifier".
  52.  
  53. ## Gruppierung/Aggregation
  54.  
  55. ```
  56. γ count(*) -> numberOfStudents Studenten -- Anzahl Studenten
  57. γ max(Semester) -> maxSemesterCount Studenten -- Höchste Semesteranzahl
  58.  
  59. -- Studenten per Vorlesung
  60. γ VorlNr; count(*) -> StudentenPerVO hoeren
  61.  
  62. -- Minimal Semesteranzahl von Students die Vorlesung hören
  63. γ hoeren.VorlNr; min(Studenten.Semester) -> MinSemesterOfStudentenPerVO (Studenten ⨝ hoeren)
  64.  
  65. -- Beste Note pro Vorlesung
  66. γ VorlNr; min(Note) -> bestResult pruefen
  67.  
  68. ```
  69.  
  70. 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.
  71.  
  72. # Joins (Verbunde)
  73.  
  74. ## Inner Joins
  75.  
  76. Inner Joins beinhalten im Ergebnis nur Tupel, die Join-Partner gefunden haben.
  77.  
  78. ### Natural Join
  79.  
  80. ```
  81. A ⨝ B
  82. ```
  83.  
  84. 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.
  85.  
  86. ### Equi-Join
  87.  
  88. ```
  89. A ⨝ A.attr = B.attr B
  90. ```
  91.  
  92. 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.
  93.  
  94.  
  95.  
  96. ## Outer Joins
  97.  
  98. Outer Joins sind Equipment-Joins, die im Ergebnis auch Tupel aus A oder B beinhalten, die keine Join-Partner gefunden haben.
  99.  
  100. ### Left Outer Join
  101.  
  102. ```
  103. A ⟕ A.attr = B.attr B
  104. ```
  105.  
  106. 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.
  107.  
  108. ### Right Outer Join
  109.  
  110. ```
  111. A ⟖ A.attr = B.attr B
  112. ```
  113.  
  114. 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.
  115.  
  116. ### Full Outer Join
  117.  
  118. 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.
  119.  
  120. Ein Full Outer Join beinhaltet also immer mindestens alle Tupel aus A und alle Tupel aus B.
  121.  
  122.  
  123.  
  124. ## Semi Joins
  125.  
  126. Semi Joins beinhalten im Ergebnis nur Tupel aus A die einen Join-Partner gefunden haben. *ACHTUNG: Richtung beim Symbol in die "verkehrte" Richtung*
  127.  
  128. ### Left Semi Join
  129.  
  130. ```
  131. A ⋉ A.attr = B.attr B
  132. ```
  133.  
  134. Ergebnis beinhaltet nur **Tupel aus A, die einen Join-Partner in B gefunden haben**.
  135.  
  136. ### Right Semi Join
  137.  
  138. ```
  139. A ⋊ A.attr = B.attr B
  140. ```
  141.  
  142. Ergebnis beinhaltet nur **Tupel aus B, die einen Join-Partner in A gefunden haben**.
  143.  
  144.  
  145.  
  146. ## Anti Join
  147.  
  148. Sozusagen ein umgekehrter Semi-Join
  149.  
  150. ```
  151. A ▷ B
  152. ```
  153.  
  154. Ergebnis beinhaltet nur **Tupel aus A, die keinen Join-Partner in B gefunden haben.**
Add Comment
Please, Sign In to add comment