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.
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: