1 / 7

Bäume

Bäume. • Kernidee : Speicherung von Daten in einer Baumstruktur • Grundtechnik in nahezu allen DB-Systemen • Elemente = Wurzel , Knoten, Blätter , Kanten • Balancierte (ausgeglichene) Bäume = – alle Pfade von Wurzel zu Blättern gleich lang

armani
Download Presentation

Bäume

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Bäume • Kernidee: Speicherung von Daten in einer Baumstruktur • Grundtechnik in nahezu allen DB-Systemen • Elemente = Wurzel, Knoten, Blätter, Kanten • Balancierte (ausgeglichene) Bäume = – alle Pfade von Wurzel zu Blättern gleich lang – Jeder Knoten weist gleich viele Indexeinträge auf

  2. B-Baum B steht nicht für Binär-Baum!!!!! Sondern für Balanciert ! • Jede Seite außer der Wurzel enthält zwischen m und 2m Daten.

  3. B-Baum - Eigenschaften und Merkmale ❍ Knoten = Speicherblöcke (Seiten) fester Länge ❍ jede Seite kann bis zu 2*nDatensätze (Einträge) aufnehmen ❍ n heißt Ordnung des B-Baumes ❍ jede Seite (außer der Wurzel) enthält stets mDatensätze fester Länge, wobei gilt: n ≤ m ≤ 2*n ❍ jeder Eintrag hat einen Schlüsselteil und einen Datenteil (Datenteil enthält oft nur Zeiger auf den „echten“ Datensatz) ❍ die Datensätze innerhalb einer Seite sind aufsteigend nach Primärschlüssel geordnet ❍ eine Seite ist entweder Blattseite oder sie hat m+1 Nachfolger ❍ alle Blattseiten befinden sich auf derselben Höhe

  4. Suchen nach Schlüssel S: • Lese Wurzelseite • 2. Suche S in Seite: • ❍ gefunden: {gib Datensatz aus; fertig!} • ❍ nicht gefunden: • 􀁑 Seite ist Blatt: {Schlüssel nicht in Baum; fertig!} • 􀁑 Seite ist kein Blatt: • ● bestimme kleinstes Ki mit S < Ki: • 􀂯 {setze Suche in Block pi fort} • ● solches Ki nicht vorhanden: • 􀂯 {setze Suche in Block pm+1 fort}

  5. Einfügen von Schlüssel S: • Suche S in Baum: • ❍ gefunden: {Fehlermeldung; fertig!} • ❍ nicht gefunden: {b = Block (Blattseite), in der die Suche nach S • abgebrochen wurde} • 2. Füge S in b ein: • ❍ b hat noch Platz: {Einfügen; fertig!} • ❍ b läuft über: (*) • 1. Füge S temporär in b ein. • 2. „Mittlerer“ Schlüssel in b ist nun Kn+1. • 3. Splitte b in blinks (K1 ... Kn) und brechts (Kn+2 ... K2*n). • 4. Setze S zu Kn+1. • 5. Füge S in Vater von b ein; setze Pointer in Vater von b auf • blinks und brechts. • Falls Vaterknoten überläuft, setze b := Vaterknoten, dann • weiter bei (*). Ggf. wird hierbei ein neuer Wurzelknoten erzeugt • (d.h. der B-Baum wächst um eine Stufe).

  6. Löschen von Schlüssel S: • Suche S in Baum: • ❍ nicht gefunden: {Fehlermeldung; fertig!} • ❍ gefunden: {b ist der Block, in dem S gefunden wurde} • 2. Lösche S in b: • ❍ b ist Blatt: • 􀁑 b hat nach Löschung noch mind. n Einträge: {fertig!} • 􀁑 b hat weniger als n Einträge: • {⇒ Unterlaufbehandlung; fertig!} • ❍ b ist kein Blatt: • 1. Ersetze S in b durch größtes (kleinstes) Blattelement • (⇒ Blatt b') im linken (rechten) Teilbaum von S; • 2. Führe ggf. Unterlaufbehandlung für b' durch; fertig!}

  7. ❒ Unterlaufbehandlung: {b ist der Unterlauf-Knoten} ❍ b hat einen linken (rechten) Bruder mit genau n Einträgen: {⇒ Zusammenfassen; ggf. Unterlaufbehandlung für Vaterknoten; fertig!} [Anmerkung: Gilt sowohl für Blatt als auch Nicht-Blatt] ❍ sonst: 􀁑 b ist Blatt: {führe „kleine“ Rotationüber Vaterknoten nach rechts (links) aus; fertig!} 􀁑 b ist kein Blatt: {führe „große“ Rotationüber Vaterknoten mit linkem (rechtem) Bruder-Teilbaum von b aus; fertig!} [Anmerkung: Ausgleich durch Umhängen eines ganzen Teilbaumes]

More Related