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
Search WWH ::




Custom Search