##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
- Vereinigung:
$$R_1 \cup R_2$$ - Durchschnitt:
$$R_1 \cap R_2$$ - Differenz:
$$R_1 \backslash R_2$$
Vereinigungsverträglichkeit:
- Anzahl Attribute in den beteiligten Relation ist gleich
- Domain-Verträglichkeit zugeordneter Attribute in den beteiligten Relationen
####Kartesisches Produkt:
- 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
- Schritt: Kartesisches Produkt bilden
- 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
##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)
- 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
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'
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
SELECT a.*,b.Artnr.b.Menge,b.Preis FROM Kunde a, Kauf b WHERE a.Kunr = b.Kunr
SELECT * FROM Kunde,Kauf
Beispiel: SELECT * FROM Kunde,Kauf WHERE Kunde.Kunr <> Kauf.Kunr "semantischer Unsinn"
Auffüllen nicht vorhandener Tupel
- linke -> LEFT
- rechte -> RIGHT
Relation mit NULL-Werte