Skip to content

Instantly share code, notes, and snippets.

@Superlokkus
Last active August 29, 2015 13:59
Show Gist options
  • Save Superlokkus/10718334 to your computer and use it in GitHub Desktop.
Save Superlokkus/10718334 to your computer and use it in GitHub Desktop.
Datenbanken 1 Vorlesung Notizen --Sporadisch--

##3.2. Definition und Manipulation im Relationenmodell ###3.2.1 Datendefinition ###3.2.2. Datenmanipulation /Relationenalgebra Operation auf Relationen -> Ergebnis: Relation Mengenweise Verarbeitung, NICHT satzweise

a) Mengenoperationen $$\cup \cap \backslash$$

  • Vereinigung: $$R_1 \cup R_2$$
  • Durchschnitt: $$R_1 \cap R_2$$
  • Differenz: $$R_1 \backslash R_2$$

Vereinigungsverträglichkeit: $$\cup \cap \backslash$$

  • Anzahl Attribute in den beteiligten Relation ist gleich
  • Domain-Verträglichkeit zugeordneter Attribute in den beteiligten Relationen

####Kartesisches Produkt: $$R_1 \times R_2$$

  • Ergebnismenge:
    • Alle Attribute von $$$R_1$$$ und $$$R_2$$$
    • Alle Kombinationen von Tupeln aus $$$R_1$$$ und $$$R_2$$$
  • unterschiedliche Struktur von $$$R_1$$$ und $$$R_2$$$ zulässig

b) Relationale Operationen

-- | Projektion | -- | -- | -- ------------ | ------------- | ------------ -- | Projektion | -- | -- | -- -- | Projektion | -- | -- | -- Selektion | Projektion | Selektion | Selektion | Selektion -- | Projektion | -- | -- | -- -- | Projektion | -- | -- | --

####JOIN Verbindung von Relationen über eine (oder mehrere) Verbindungsspalten

  1. Schritt: Kartesisches Produkt bilden
  2. Schritt: Selektion laut Vergleich der Verbindungsspalten

Anmerkungen:

  • Attribute, über die der Join ausgeführt wird, müssen gleiche Domain besitzen, müssen aber keine Schlüsselattribute sein und müssen nicht den gleichen Namen besitzen
  • Jede Relation mit jeder Relation via join auswertbar (auch mit sich selbst)

####Equi-Join Verbindungsspalte 2x in Ergebnismenge ####Natural-Join Verbindungsspalte 1x in Ergebnismenge

3.3 Normalformenlehre

##4.1 Arten der Verbindung Datenbanksprache- Datenbank

  • eigenständig: direkte Interkation mit DB-Server via Client-Software
  • eingebettet in Programmiersprache:
    • nicht erweitert: via Unterprogramme, CLI (Call Level Interface)
    • erweitert: um SQL-Befehle via Präcompiler (ESQL/Hardcoded-SQL)

6 Korrelierte und unkorrelierte Abfragen (Unterabfragen)

  • Unkorreliert/einfach: UA nur 1x ausgeführt und Ergebnis in HA (Hauptabfrage) eingesetzt
  • Korreliert/abhängig:
    • UA wird für jede Zeile der HA ausgeführt
    • UA bezieht sich auf Tabellen die in der FROM-Klausel der HA, aber nicht in der FROM-Klausel der UA enthalten sind

7 Abfrage über mehrere Relationen

Beispiel: SELECT Kunde.Kunr,Name,Artikel.Artnr,Bezeichnung,Menge FROM Kunde,Kauf,Artikel

WHERE Kunde.Kunr = Kauf.Kunr }impl...

AND Kauf.Artnr = Artikel.Artnr }implizite Bedingungen (sonst die Join Bedingungen)

AND Artikel.Bezeichnung = 'Statistica' } explizite Bedingung (mit Zusammenhang zum Sachverhalt)

###Join (hier mit opt. Alias) SELECT a.Kunr, Name, c.Artnr, Bezeichnung, Menge

FROM Kunde a JOIN Kauf b ON a.Kunr = b.Kunr JOIN Artikel c ON b.Artnr = c.Artnr

WHERE Bezeichnung = 'Statistica'

8 Komplexe Abfragen

8.1 Equi-Join -> Inner-Join

SELECT a.,b. FROM Kunde a, Kauf b WHERE a.Kunr = b.Kunr

oder

SELECT a.,b. FROM Kunde a JOIN Kauf b ON a.Kunr = b.Kunr

8.2 Natürlicher Join -> Natural Join

SELECT a.*,b.Artnr.b.Menge,b.Preis FROM Kunde a, Kauf b WHERE a.Kunr = b.Kunr

8.3 Kartesisches Produkt

SELECT * FROM Kunde,Kauf

8.4 Theta Join

$$\theta$$- Beliebiger Vergleichsoperatior

Beispiel: SELECT * FROM Kunde,Kauf WHERE Kunde.Kunr <> Kauf.Kunr "semantischer Unsinn"

8.5 Outer Join

Auffüllen nicht vorhandener Tupel

  • linke -> LEFT
  • rechte -> RIGHT

Relation mit NULL-Werte

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment