Inhaltsverzeichnisse

Inhaltsverzeichnisse erlauben es der Datenbank schneller auf die Daten zuzugreifen. Die Datenbank erzeugt diese internen Strukturen, um z.B. Datensätze schneller auszuwählen mit Spalten als Kriterium. Dadurch braucht die Datenbank nicht alle Datensätze durchzuforsten, sondern schaut in einem Inhaltsverzeichnis nach wo sich ein bestimmter Datensatz befindet. Um so ein Inhaltsverzeichnis z.B. über die BESITZERID anzulegen:


\begin{code}
CREATE INDEX OID\_IDX ON ANTIQUITÄTENBESITZER (BESITZERID);
\end{code}

Und jetzt für die Namen:


\begin{code}
CREATE INDEX NAME\_IDX ON ANTIQUITÄTENBESITZER (BESITZERNAME, BESITZERVORNAME);
\end{code}

entsprechend um ein Inhaltsverzeichnis loszuwerden:


\begin{code}
DROP INDEX OID\_IDX;
\end{code}

Sei bemerkt, dass Tabellen auf die gleiche Art entfernt werden können, aber aufgepaßt, damit sind auch alle Datensätze in der Tabelle verloren! Weiterhin wurde im zweiten Fall der index über zwei Spalten erstreckt, also aufgepaßt und sicherheitshalber in der Datenbank beschreibung nachlesen was passieren könnte.

anche Datenbanken zwingen nicht die Erzeugung eines primär-Schlüssels. D.h. daß die einzigartigkeit einer Spalte nicht automatisch getestet wird. Das würde es z.B. erlauben in die Tabelle ANTIQUITÄTENBESITZER einen weiteren Datensatz mit BESITZERID 02 einzufügen, selbst wenn es nicht so vorgesehen war. Um dem zu entgehen sollte zumindest ein Inhaltsverzeichnis erzeugt werden in dem BESITZERID ein primär-Schlüssel darstellt, und damit doppelte Einträge verhindert:


\begin{code}
CREATE UNIQUE INDEX OID\_IDX ON ANTIQUITÄTENBESITZER (BESITZERID);
\end{code}