Databases Reference
In-Depth Information
select band, titel, jahr, preis
from alben
where reihe='Asterix' and jahr<1970
Dazu wird die Definition der Views im Systemkatalog vorgehalten. In
H2 finden wir sie in der Tabelle
information_schema.views
; dabei ist
information_schema
der Name des Schemas (siehe Abschnitt 5.13) und
views
der Name der Systemtabelle. Insbesondere werden keine Daten aus der Tabelle
alben
redundant gehalten. Weil die Daten nur einmal - und zwar in der Tabelle
alben
- existieren, werden Views oft auch als virtuelle Tabellen bezeichnet. Wenn
wir jetzt also einen neuen Asterixband in die Tabelle
alben
einfügen, ist er auch
bei Zugriffen auf die View
asterix
sichtbar.
15.2
Wozu Views?
Views wie
asterix
sind nur ein sehr einfaches Beispiel. Generell können wir
Views als Schnittstelle für Anwender und Entwickler nutzen: Auch wenn sich die
Implementierung - also die Definition - der Tabellen ändert, können wir die View
nach dem Austausch ihrer definierenden
select
-Anweisung wie gewohnt nut-
zen.
In Kapitel 13 haben wir die Tabelle
alben
so zerlegt, dass wir den Namen der
Albenreihe in eine eigenen Tabelle
reihen
ausgelagert haben, deren künstlicher
Primärschlüssel dann von der Tabelle
alben
referenziert wird:
create table reihen(
id int generated always as identity primary key,
name varchar(30) not null unique
);
create table alben(
reihe int references reihen,
titel varchar(30),
band int check(band>=0),
preis decimal(4,2) check(preis>=0),
jahr int,
primary key(reihe, band)
)
Wir passen unsere View
asterix
den neuen Gegebenheiten an:
Listing 15.4:
Definition einer View mit einem Join
drop view asterix;
create view asterix as
select band, titel, jahr, preis