Databases Reference
In-Depth Information
zweimal vertreten. Bei Datenbanken kann es aus folgenden Gründen Namens-
konflikte bei Tabellen geben:
Es gibt mehr als einen Datenbankadministrator, möglicherweise in verschie-
denen Firmenbereichen. Namenskonventionen oder Absprachen bei jedem
create table erschweren die Arbeit.
SQL-Skripte von Fremdfirmen werden als Teil einer Datenbanklösung einge-
spielt. Weil die zugehörige Anwendungs-Software die Tabellen unter ihrem
Namen anspricht, können Namenskonflikte nicht durch einfache Umbenen-
nung gelöst werden.
In Java werden Namenskonflikte durch Pakete bereinigt, in SQL mit so genann-
ten Schemata . Zu jeder Tabelle gibt es ein Schema. Wir haben bereits explizit mit
Schemata gearbeitet, als wir in Abschnitt 2.7 den Systemkatalog abgefragt haben:
select *
from information_schema.tables
Hier ist information_schema der Schemaname und tables der Tabellenna-
me. Für jeden Anwender gibt es ein Standardschema. Werden Tabellen aus die-
sem Schema verwendet, muss der Name des Schemas nicht explizit angegeben
werden. Viele Systeme legen für jeden Anwender ein Schema mit dem Namen
des Benutzers als Standardschema an, H2 verwendet für alle Anwender das Stan-
dardschema public . Die Anweisung
select * from personen
ist äquivalent zu
select * from public.personen
Immer, wenn wir eine Tabelle mit create table ohne Angabe des Schemas er-
zeugen, wird sie dem Standardschema zugeordnet. Wir können selbstverständlich
ein anderes Schema explizit angeben:
create table information_schema.personen(
id int primary key,
name varchar(20) not null
)
Wenn wir viele Anweisungen für Tabellen schreiben, die nicht zum Standardsche-
ma gehören, können wir das Standardschema in H2 auch - maximal bis zum Ende
der Verbindung mit dem RDBMS - ändern:
set schema information_schema;
 
Search WWH ::




Custom Search