## B*-Bäume für Tabellen mit Indizes

### Verwendung

Für jeden Index, der für eine Basistabelle definiert ist, legt das Datenbanksystem einen B*-Baum an.

Der Index einer Basistabelle wird explizit mit einer SQL-Anweisung definiert und hat nichts mit der B*-Baum-Indexebene zu tun.

Das Datenbanksystem legt die Invertierungslisten des Index folgendermaßen ab:

● 1:1-Beziehung zwischen Sekundärschlüssel (Indexeintrag) und Primärschlüssel:

Das Datenbanksystem legt die Invertierungsliste direkt in der entsprechenden Blattseite des B*-Baums des Index ab.

● 1:n-Beziehung zwischen Sekundärschlüssel und Primärschlüsseln:

Das Datenbanksystem legt die Invertierungsliste ebenfalls in der entsprechenden Blattseite des B*-Baums des Index ab (flache Liste).

Wenn die Invertierungsliste zu groß für die Blattseite wird, dann legt das Datenbanksystem einen zusätzlichen B*-Baum für diese Invertierungsliste an. In der Blattseite des B*-Baums des Index steht dann nur noch der Verweis auf den B*-Baum der Invertierungsliste.

### Beispiel

Die Tabelle CUSTOMER enthält die Namen aller Kunden eines Hotels.

● Primärschlüssel: Kundennummer cno

● Index: Nachname name

Tabelle CUSTOMER

cno | name | firstname
2003 | Miller | Frank
2011 | Griffith | Mary
2078 | Miller | Jane
2104 | Miller | Susan
2295 | Miller | Sally

Der Index enthält die folgenden Invertierungslisten.

Invertierungslisten

Bezeichnung | Sekundärschlüssel | Primärschlüssel
Invertierungsliste 1 | Griffith | 2011
Invertierungsliste 2 | Miller | 2003, 2078, 2104, 2295

Das Datenbanksystem legt die Invertierungsliste 1 direkt in der Blattseite des B*-Baums des Index ab.

Für die Invertierungsliste 2 legt das Datenbanksystem einen zusätzlichen B*-Baum an, weil auf der Blattseite des B*-Baums des Index nicht genügend Platz vorhanden ist.

Siehe auch:

Logische Zugriffsstrukturen