Advanced MySQL - Zwischenspeicherung - Views
1. Definition
Ein View, auch Sicht genannt, ist eine logische Beziehung zwischen Datensätzen, auf die direkt zugegriffen werden, ohne die innere Struktur des Views zu kennen. Dieses Konstrukt wird auch als virtuelle Tabelle bezeichnet. Alles kapiert? Nö? Macht nichts, erkläre ich euch.
2. Datenbankstrukturen und Relationen
... können schon mal ein wenig kompliziert werden. Besonders wenn Leute damit arbeiten müssen, die sich da nicht so toll auskennen. Also wir haben folgende Datenbankstruktur.
Tabelle adresse
+--+-------+------+--------+-----+----+
|id|vorname|name |strasse |plz |ort |
+--+-------+------+--------+-----+----+
| 1|Peter |Kropff|Im Dau 8|50678|Köln|
+--+-------+------+--------+-----+----+
Tabelle konto
+--+------+--------+------+
|id|adr_id|blz |ktonr |
+--+------+--------+------+
| 1| 1|12345678|654321|
+--+------+--------+------+
Tabelle saldo
+------+--------+-------+
|kto_id|guthaben|dispo |
+------+--------+-------+
| 1| 3500.00|3500.00|
+------+--------+-------+
Die Relation
In der Tabelle konto ist adr_id der Fremdschlüssel, der in der Tabelle adresse auf
id verweist. Und in saldo ist es kto_id, das sich auf id in konto
bezieht.
3. Die Abfrage
... sieht dann zum Beispiel so aus.
SELECT
a.id,
a.vorname,
a.name,
a.strasse,
a.plz,
a.ort,
k.blz,
k.ktonr,
s.guthaben,
s.dispo,
s.guthaben + s.dispo as verfuegbar
FROM
adresse a
INNER JOIN
konto k on (k.adr_id = a.id)
INNER JOIN
saldo s on (s.kto_id = k.id)
WHERE a.id = 1;
Wie man unschwer erkennen kann, ist das ein ziemlicher Rattenschwanz. Und wenn man den beim Programmieren zig Mal abtippern muss, so nervt das auf Dauer. Oder stellt euch mal Joins über zehn oder mehr Tabellen vor, wo außerdem noch komplexe Berechnungen durchgeführt werden. Und für solche Fälle sind Views gedacht.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt