Hauptmenü

Untermenü

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  |
+------+--------+-------+
|     13500.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