fbi h_da Datenbanken I - Belegnummer 30.4304 - WS 2008 (Bachelor) - Materialien zur Vorlesung - Prof. Dr. Inge Schestag Hochschule Darmstadt Fachbereich Informatik Schestag Datenbanken I (Bachelor) 1 fbi h_da Inhalt Datenbanken I 1 Grundlegende Begriffe und ein Überblick über Datenbankmanagement 1.1 Einsatzgebiete von Datenbanken 1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien 1.3 Datenbanksysteme 1.4 Übersicht über verschiedene Datenbankmodelle 2 Interne Datenorganisation 2.1 Aufbau eines Speichermediums - Pages 2.2 Datenorganisation 2.3 Indexe und Bäume 2.4 Hash-Verfahren 3 Architekturmodelle für Datenbanksysteme 3.1 Die drei Ebenen des ANSI/SPARC-Modells 3.2 Aufgaben des DBMS im Zusammenhang mit dem 3-Ebenen-Modell Schestag Datenbanken I (Bachelor) 2 Inhalt Datenbanken I (Fortsetzung) fbi h_da 4 Datenmodellierung - allgemein 4.1 Die Rolle der Datenmodellierung im Lifecycle von Informationssystemen 4.2 Elemente von Datenmodellen – unterschiedliche Nomenklaturen für E/RDiagramme 4.3 Schlüssel / Keys 5 Besonderheiten der relationalen Datenmodellierung 5.1 Die Codd‘schen Normalformen 5.2 Die Supertype-/Subtype-Hierarchie (Inheritance) im logischen Modell 6 SQL - Structured Query Language 6.1 Datendefinition - DDL 6.2 Die Relationenalgebra und Datenmanipulation - DML 6.3 Der Systemkatalog Zur Vorlesung Datenbanken I werden integrierte Hörsaalübungen durchgeführt. Schestag Datenbanken I (Bachelor) 3 Inhalt Datenbanken II – Vorlesung (Vorschau auf das SoSe 2008) fbi h_da 7 Datenbank-Anwendungsprogrammierung 7.1 Query Language / weiterführende Konzepte 7.1.1 Vergabe von Zugriffsrechten: grant, revoke, roles 7.1.2 embedded SQL / PL/SQL / SQLJ 7.2 Stored procedures und Trigger 7.2.1 Stored procedures 7.2.2 Trigger 7.3 Architekturkonzepte: objektorientierte Sprache / relationales DBMS 7.3.1 ODBC & Data Access Objects (DAO) 7.3.2 JDBC & Data Access Beans (DAB) 8 Weitere Datenbankmodelle 8.1 Objekt-relationale Datenbanken 8.2 Datenbanken und XML Schestag Datenbanken I (Bachelor) 4 Inhalt Datenbanken II – Vorlesung (Vorschau) fbi h_da 9 Transaktionskonzept 9.1 Das Transaktionskonzept 9.2 Concurrency & Locking 9.3 Recovery Zur Vorlesung Datenbanken II findet ein begleitendes Praktikum statt. Schestag Datenbanken I (Bachelor) 5 fbi h_da Literaturverzeichnis • Heuer, Andreas, Saake, Gunter. Datenbanken: Konzepte und Sprachen. MITP-Verlag, Bonn, 2. Auflage 2000. • Date, C.J. An Introduction to Database Systems. International Edition. AddisonWesley Systems. 8th ed. 2003. • Erbs, Karczewski, Schestag. Datenbanken. Datenmodelle, Objekte, WWW, XML. VDE Verlag 2003. • Zehnder, Carl August. Informationssysteme und Datenbanken. VdF Hochschulverlag, 8. Auflage 2005. • G. Vossen, Datenbankmodelle, Datenbanksprachen und DatenbankmanagementSysteme, 3. Auflage 1999, Oldenbourg . • Saake, Gunter, Sattler, Kai-Uwe. Datenbanken & Java. JDBC, SQLJ, ODMG und JDO. dpunkt.verlag, 2. Auflage 2003. • Alfons Kemper, Andre Eickler: Datenbanksysteme. Eine Einführung, Oldenbourg, 6. Auflage März 2006 Schestag Datenbanken I (Bachelor) 6 fbi h_da 1 Grundlegende Begriffe und ein Überblick über Datenbankmanagement 1.1 Einsatzgebiete von Datenbanken 1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien 1.3 Datenbanksysteme 1.4 Übersicht über verschiedene Datenbankmodelle Schestag Datenbanken I (Bachelor) Kapitel 1 - 1 fbi h_da 1.1 Einsatzgebiete von Datenbanken (1) • Banken und Versicherungen • • Kontoverwaltung, Finanzprodukte, Handel, Controlling, ... ERP-Systeme (Enterprise Resource Planning) z. B. SAP R/3, Navision für KMU (Kleine und mittelständische Unternehmen), etc. • Personal (HR), Buchhaltung, Bestellwesen, Lagerverwaltung, Logistik, ... • zentrale Abrechnungssysteme • • • Auskunftssysteme / Kundendaten • • Telefonauskunft, ... Buchungssysteme • • Telekommunikationsbranche Gastronomiebetriebe deutscher Autobahn-Raststätten Reisebüros, Flugunternehmen, Hotels etc. eBusiness • Schestag online-Shops, online Auktionen (eBay), ... Datenbanken I (Bachelor) Kapitel 1 - 2 1.1 Einsatzgebiete von Datenbanken (2) • Bibliotheken • • topologische Daten, Satellitenbilder, ... Produkt-Datenbanken • • hier auch Volltextsuche geographische Datenbanken • • fbi h_da strukturierte Daten, Konstruktionsdaten (CAD), ... ... Wir unterscheiden grundsätzlich OLTP- Online Transaction Processing (auch häufig Operativsysteme genannt) DSS - Decision Support Systems • lesende und schreibende Zugriffe • transaktionsorientiert • online • viele gleichzeitige Benutzer • kurze Antwortzeiten erforderlich • ausschließlich lesende Zugriffe • kein Transaktionsmanagement notwendig • Antwortzeiten unkritisch(er) • z. B. Reports, OLAP (Online Analytical Processing) auf Basis eines Data Warehousese, Data Mining (z.B. im CRM – Customer Relationship Management etc.) Schestag Datenbanken I (Bachelor) Kapitel 1 - 3 1.2 Nachteile selbst verwalteter Daten mit Hilfe (binärer) Dateien • fbi h_da In diesem Kapitel wird anhand grundlegender Begriffe eine strategische Einführung darüber gegeben, warum die Verwaltung von Daten durch ein Datenbanksystem der „Selbst-Verwaltung“ von Daten mit Hilfe von Dateien (Files) vorzuziehen ist. Ein erstes Beispiel: Produktdaten einer Keramischen Werkstatt Bezeichnung: Teekanne Glasur: graublau Dekor: Wichtel Preis: 59,00 ... • • Die Datenstruktur der Produktdaten kann in einem geeigneten Datentyp definiert werden, z.B. als structure in C, als class in Java etc. Einzelne Datensätze bzw. Objekte können dann in binären Dateien verwaltet werden. Schestag Datenbanken I (Bachelor) Kapitel 1 - 4 fbi h_da 1.2.1 ein erstes Beispiel: Dateiverwaltung in C // Datenstruktur definieren typedef struct { char[20] bezeichnung; char[20] glasur; char[10] dekor; double preis; } produkt_record; // Variable zur Verwaltung eines Datensatzes deklarieren produkt_record buffer[1]; // File-Pointer definieren FILE *prod_file; Die Datenstruktur produkt_record wird deklariert ... Die Datei produkt.dat ist im Dateisystem vorhanden. // Datei öffnen prod_file=fopen("produkt.dat","rb"); // In einer while-Schleife alle Datensätze sequentiell bis zum Dateiende // lesen; für jeden Datensatz prüfen, ob das Produkt das Dekor „Wichtel“ hat. while(!feof) { fread(buffer,sizezeof(produkt_record),1,prod_file); if (buffer[0].dekor == "Wichtel") { // weiterverarbeiten ... und als Maß für die Anzahl } der einzulesenden Bytes pro } Datensatz angegeben. Schestag Datenbanken I (Bachelor) Kapitel 1 - 5 fbi h_da 1.2.1 ein erstes Beispiel: Objekt-(De-)Serialisierung, Java import java.io.*; public class MyProductsIn { public static void main(String[] args) { Die Datei produkt.dat ist im Dateisystem vorhanden. try { // Stream-Objekt zur Verwaltung der serialisierten Objekte deklarieren FileInputStream fis = new FileInputStream("produkt.dat"); ObjectInputStream ois = new ObjectInputStream(fis); import java.io.*; public class Produkt implements Serializable String String String double bezeichnung; glasur; dekor; preis; // Produkt-Objekte deserialisieren und weiterverarbeiten Produkt prod = (Produkt)ois.readObject(); if (prod.dekor.equals("Wichtel") // weiterverarbeiten public Produkt(String b){ ois.close(); this.bezeichnung=b; } } catch (ClassNotFoundException e) { // ... System.err.println(e.toString()); } } catch (IOException e) { Auf der Basis der Klassendeklaration System.err.println(e.toString()); Produkt sind in der Datei mehrere } } } Produkt-Objekte serialisiert gespeichert. Schestag Datenbanken I (Bachelor) Kapitel 1 - 6 1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (1) • fbi h_da Datenabhängigkeit Datenabhängigkeit für den Anwendungsentwickler / End-Anwender bedeutet, dass die Anwendungen sich um Details der Speicherstrukturen und Zugriffstechniken kümmern müssen, also stets von Änderungen in diesen Bereichen betroffen sind. ) Datenunabhängigkeit erreicht man also dadurch, dass man eine Zugriffsebene für den Anwender bereit stellt, die standardisiert ist und keine spezifischen Kenntnisse der – Speicherstrukturen, – Zugriffstechniken und – Lokalisierung der Daten erfordert. Schestag Datenbanken I (Bachelor) Kapitel 1 - 7 fbi h_da 1.2.2 SQL - ein erstes Beispiel für Datenunabhängigkeit – 1 Tabelle Produkt einer Beispiel-Datenbank ProdNr Bezeichnung Glasur Dekor 101112 Teetasse graublau Rose 9,50 102112 Untertasse graublau Rose 6,00 103112 Dessertteller graublau Rose 11,50 ... ... 102222 Untertasse türkis Wichtel 6,00 104222 Milchkanne türkis Wichtel 12,00 105222 Zuckerdose türkis Wichtel 16,00 ... ... 111332 Henkeltasse steingrau Fisch 11,00 112332 Müslischüssel steingrau Fisch 13,00 201332 Schale steingrau Fisch 50,00 ... ... ... ... ... ... ... ... Schestag Datenbanken I (Bachelor) Preis ... ... ... Kapitel 1 - 8 fbi h_da 1.2.2 SQL - ein erstes Beispiel für Datenunabhängigkeit – 2 Zugriffsbeispiele auf PRODUKT-Tabelle: Finden Einfügen Ändern Löschen Retrieval / Select Insert Update Delete Retrieval: SELECT PRODNR, GLASUR, DEKOR FROM PRODUKT WHERE BEZEICHNUNG = ’Untertasse’; 102112 102222 graublau türkis Rose Wichtel Einfügen neuer Daten: INSERT INTO PRODUKT ( PRODNR, BEZEICHNUNG, GLASUR, DEKOR, PREIS ) VALUES ( 106222, ’Teekanne’, ’türkis’, ’Wichtels’, 59,00 ) ; Ändern exisierender Daten: UPDATE PRODUKT SET Preis = 14,00 WHERE PRODNR = 103112 ; Löschen existierender Daten: DELETE FROM Produkt WHERE PRODNR = 105222 ; Schestag Datenbanken I (Bachelor) Kapitel 1 - 9 1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (2) fbi h_da • Redundanzen Redundanzen sind Mehrfachspeicherungen identischer Informationen, die insbesondere dann auftreten, wenn man auf der Basis selbst verwalteter Dateien die gleichen Daten, z.B. auf verschiedenen Rechnern, mehreren Anwendern für unterschiedliche Applikationen zur Verfügung stellt. Durch zusätzliche Speicherkapazitäten und Verwaltungsaufwand ergeben sich insbesondere erhöhte Kosten. • Inkonsistenz Bei redundanter Datenhaltung und -verwaltung ergeben sich durch asynchrone, dezentrale Datenpflege häufig Inkonsistenzen. Inkonsistenzen sind widersprüchliche Informationen zum selben Objekt. Diese können durch zentrale Datenhaltung und -verwaltung vermieden werden. Man spricht dann auch von Integrität, bzw. davon, dass die Daten in einem integren Zustand sind. Schestag Datenbanken I (Bachelor) Kapitel 1 - 10 1.2.2 Nachteile selbst verwalteter Daten mit Hilfe von (binären) Dateien (3) fbi h_da • Einschränkungen der Zugriffsrechte Einschränkungen der Zugriffsrechte können bei der Datenverwaltung in Dateiform höchstens auf der Basis der read-, write- und execute-Rechte des Dateisystems berücksichtigt werden, aber nicht bis auf Feldebene einzelner Datenstrukturen bzw. auf einzelne Datensätze. • Verteilung der Daten Eine Verteilung der Daten ist nicht möglich, ohne dass der Anwender über hardwaretechnische Details dieser Verteilung informiert sein muss (s. auch Datenabhängigkeit). Schestag Datenbanken I (Bachelor) Kapitel 1 - 11 fbi h_da 1.3 Datenbanksysteme – eine Begriffsklärung (1) • Datenbanksystem Ein Datenbanksystem ist im weitesten Sinne ein System zur rechnerunterstützten Verwaltung von Daten und umfasst die Gesamtheit aller unten beschriebenen Komponenten (vgl. auch die Grafik auf Folie 14 - in Anlehnung an [Date 95]). • Daten Die Daten stellen in ihrer physischen Speicherform die eigentliche Datenbank dar und bilden den Kern eines jeden Datenbanksystems. • Datenbank-Managementsystem (DBMS) Die proprietäre Software eines Datenbanksystems ist das Datenbank-Managementsystem (DBMS). Das DBMS besteht aus einer Vielzahl komplexer Dienste, die zur Verwaltung der Daten zur Verfügung stehen und die Konsistenz der Daten zu jedem Zeitpunkt gewährleisten. Man spricht deshalb auch von einem Datenbankserver. Insbesondere gewährleistet das DBMS die oben erwähnte Datenunabhängigkeit. Es stellt die Schnittstelle zwischen einer Datenbank und den Anwendern des Datenbanksystems dar. Schestag Datenbanken I (Bachelor) Kapitel 1 - 12 1.3 Datenbanksysteme – eine Begriffsklärung (2) fbi h_da • Datenbanksprache In der Regel stellt ein Datenbank-Managementsystem eine spezifische Datenbanksprache (Data-Sublanguage -DSL) zur Verfügung, die einen Zugriff auf die Daten ermöglicht, ohne dass der Anwender selbst Kenntnisse von der internen, physischen Datenorganisation hat (vgl. Beispiel Folien 8 und 9 dieses Kapitels). Mit Hilfe der DSL eines Datenbanksystems kann man – Informationen / Daten verwalten (Insert, Update und Delete), und – Informationen / Daten auf Anfrage (Query) verfügbar machen (Retrieval). • Hardware In Bezug auf die Hardware unterscheidet man den Plattenspeicher (mit dazugehöriger Ein-/ Ausgabeperipherie) und den Hauptspeicher sowie die Prozessoren zur Ausführung der Datenbank-Systemsoftware. Schestag Datenbanken I (Bachelor) Kapitel 1 - 13 fbi h_da 1.3 Datenbanksysteme Datenbanksystem DatenbankManagementsystem Datenbank EndAnwender Anwendungsprogramme Schestag Datenbanken I (Bachelor) Kapitel 1 - 14 fbi h_da 1.3 Datenbanksysteme – die verschiedenen Rollen • Das Management hat die zentrale, strategische Verantwortung für die Daten und entscheidet, welche Daten wie und für wen gespeichert werden. Hierbei müssen u. U. Datenschutzbeauftragte und Betriebsrat mit einbezogen werden. • Der Datenbankadministrator (DBA) hat die technische Verantwortung zur Unterstützung der strategischen Entscheidung des Managements. • Der Anwendungsentwickler entwickelt DB-Applikationen unter Verwendung höherer Programmiersprachen (Host-Sprachen) und der DSL. Der Anwendungsentwickler arbeitet insbesondere in der Design- und der Implementierungsphase eng zusammen mit dem DBA. • Der Datenanalyst (Business Analyst) bereitet Datenbeständen aus unterschiedlichen Datenquellen auf und unterstützt das Management durch den Einsatz von Analysewerkzeugen → Decision Support (Data Warehouse / OLAP, Data Mining) • Der Endanwender hat Zugriff auf die Daten über GUIs, interaktive Abfragesprachen auf Kommandoebene etc. Der Anwendungsentwickler plant und analysiert die zu erstellende DB-Software in enger Zusammenarbeit mit dem Endanwender. Schestag Datenbanken I (Bachelor) Kapitel 1 - 15 1.3 Datenbanksysteme – Zusammenfassung (1) • • • fbi h_da Ein Datenbank-Managementsystem (DBMS) ist ein System zur softwaretechnischen Unterstützung der Verwaltung von Daten, das zur Vermeidung aller unter 1.2 genannten Nachteile dient: - Reduktion von Redundanzen, - Integritätssicherung (Vermeidung von Inkonsistenzen), - Möglichkeit der Datenverteilung, - Einschränkung der Zugriffsrechte bis auf Feld- und Record-/ObjektEbene, - Datenunabhängigkeit. In der Regel steht für ein DBMS eine spezifische Datenbanksprache (DataSublanguage - DSL) zur Verfügung, die einen Zugriff auf die Daten ermöglicht, ohne dass der Anwender selbst Kenntnisse von der internen, physischen Datenorganisation hat. Diese DSL leistet insbesondere die oben erwähnte Datenunabhängigkeit. Ein solches System kennt und berücksichtigt nicht nur die Speicherstrukturen der Daten (vgl. Kapitel 2) sondern auch die Beziehungen der Daten untereinander (vgl. Kapitel 4). Schestag Datenbanken I (Bachelor) Kapitel 1 - 16 1.3 Datenbanksysteme – Zusammenfassung (2) • fbi h_da Wir unterscheiden grundsätzlich zwei Arten von Daten: – persistente Daten, die „permanent“, also fortdauernd auf einem Speichermedium gespeichert sind, – transiente Daten, „flüchtige“ Daten, die nur aktuell im Hauptspeicher vorhanden sind, aber aus persistenten Daten abgeleitet sind oder zu persistenten Daten werden können. ) Eine Datenbank ist also eine Ansammlung persistenter Daten, die unter Verfügbarkeit der o. g. Vorteile von verschiedensten Anwendungssystemen gleichzeitig verwendet werden können. Schestag Datenbanken I (Bachelor) Kapitel 1 - 17 fbi h_da 1.4 Übersicht über verschieden Datenbankmodelle (1) • hierarchische Datenbanken Die Daten lassen sich über hierarchische Strukturen (Baumstrukturen) in Beziehung zueinander setzen. Einsatzbereiche heute: Großrechnerbereich (Mainframes) von Banken, Versicherungen etc., z.B. IMS-DB (Information Management System). • Netzwerk-Datenbanken Die zugrunde liegende Struktur stellt einen Graphen mit beliebigen Navigationsmöglichkeiten über Cursortabellen dar. Heute nicht mehr häufig im Einsatz. Beispiel für eine Netzwerk-DB: CODASYL. • relationale Datenbanken Die mathematische Basis dieses Datenbank-Modells ist die Relationenalgebra. Datensätze werden als „Relationen“ (Tupel gleicher Länge) angesehen ⇒ Als Speicher- und Darstellungsform bieten sich Tabellen an. Schestag Datenbanken I (Bachelor) Kapitel 1 - 18 fbi h_da 1.4 Übersicht über verschieden Datenbankmodelle (2) Die standardisierte Abfragesprache für relationale Datenbanken ist SQL (Structured Query Language). Im Bereich relationaler Datenbanken unterscheidet man - Datenbanken aus dem „personal“ Bereich, wie MS-ACCESS und FoxPro, und - Datenbankserver wie z.B. DB2 (IBM), Oracle, Sybase, Informix (IBM), Ingres, MS SQL-Server, MySQL, PostgreSQL, Adabas etc. • objektorientierte Datenbanken Diese Datenbanken haben sich aus objektorientierten Sprachen entwickelt. Gespeichert werden Objekte auf der Basis objektorientierter Klassenstrukturen mit Attributen und Methoden, die i.d.R. komplexere Datentypen als die relationalen Datenbanken zulassen. Navigation ist möglich über direkte Referenz der Objekte durch Object Ids (OID = physische Adresse, pointer). Beispiele objekt-orientierter Datenbanken: ObjectStore, Versant, FastObjects (Poet), Jasmine, etc. Schestag Datenbanken I (Bachelor) Kapitel 1 - 19 fbi h_da 1.4 Übersicht über verschiedene Datenbankmodelle (3) • objekt-relationale Datenbanken Dies sind relationale Datenbanken mit objektorientierten Erweiterungen. Sie werden mittlerweile von allen Herstellern großer relationaler Systeme angeboten. Ziel der objekt-relationalen Datenbanken ist das „Mapping“ objektorientierter Datenstrukturen aus dem Applikationsbereich auf relationale Datenstrukturen in der Persistenzschicht. • weitere Nicht-Standard Datenbanken Neben den objektorientierten und objekt-relationalen Datenbanken zählen zu den Nicht-Standard Datenbanken u.a. die – XML-Datenbanken (wie z.B. Tamino von der Software AG) – geographische Datenbanken – deduktive Datenbanken Die parallele Verwaltung von relationalen Schemata und XML-Schemata ermöglicht die neueste Version DB2 Viper (IBM). Schestag Datenbanken I (Bachelor) Kapitel 1 - 20 fbi h_da 2 Interne Datenorganisation 2.1 Aufbau eines Speichermediums - Pages 2.2 Datenorganisation 2.3 Indexe und Bäume 2.4 Hash-Verfahren Schestag Datenbanken I (Bachelor) Kapitel 2 - 1 fbi h_da 2 Interne Datenorganisation • Die interne Datenorganisation sollte so eingerichtet sein, dass die Anzahl der Plattenzugriffe bei der Recherche oder der Manipulation von Daten minimal ist. • Hierfür wird die Anordnung der gespeicherten Daten auf der Platte so optimiert, dass der gewünschte Datensatz durch möglichst wenige I/Os gefunden wird. Eine solche Anordnung nennen wir Speicherstruktur. • Verschiedene Speicherstrukturen haben verschiedene Performance-Charakteristika, die für jeweils unterschiedliche Applikationen / Datenbankbereiche von Vorteil sein können. • Eine optimale Datenorganisation kann nur erzielt werden, wenn die Datenstrukturen, statistische Informationen zum Datenvolumen sowie Ausprägungen innerhalb der Wertebereiche bekannt sind und berücksichtigt werden (⇒ Optimizer, Systemkatalog, Kapitel 3). Esgibt gibtkeine keineSpeicherstruktur, Speicherstruktur, Es dieoptimal optimalfür füralle alleApplikationen Applikationenist! ist! die Schestag Datenbanken I (Bachelor) Kapitel 2 - 2 fbi h_da 2.1 Aufbau eines Speichermediums – Pages (1) Magnetplattengerät mehrere Platten (Oberflächenspeicherung, beidseitige Speicherung) Spuren, die konzentrische Kreise um die Drehachse bilden Lese- / Schreibkopf a b Sektoren *) (kleinste Einheiten, die das DBMS adressieren und auf die es zugreifen kann) Zylinder (unmittelbar übereinander liegende Spuren) • • Pages (Datenseiten, Datenblöcke) nennt man die Zusammenfassung von mehreren benachbarten Sektoren zu einer Verarbeitungseinheit (Größe einer Page: zwischen 512 Bytes und 8k Bytes). In einer Page können ein oder mehrere vollständige Datensätze, Teile von Datensätzen oder Indexeinträge gespeichert werden (vgl. 2.3). *) Sektorenadresse: Angaben zu Zylinder, Plattenoberfläche und Nr. des Sektors auf der Spur Schestag Datenbanken I (Bachelor) Kapitel 2 - 3 fbi h_da 2.1 Aufbau eines Speichermediums – Pages (2) • Zum Lesen der Daten muss das DBMS eine Page komplett in den Hauptspeicher laden. Eine Page ist die kleinste physische Einheit, die vom DBMS in den Hauptspeicher geladen werden kann (und ist deshalb immer ≥ der kleinsten physischen Einheit, die das Betriebssystem mit einem Zugriff in den Hauptspeicher laden kann). ⇒ Pages sind grundlegende Einheiten für das Lesen und Transferieren von Daten. • Adressierung von Datenblöcken (Pointer) Die Adressierung einer Page erfolgt über physische Adressen (relevant für das Betriebssystem) und logische Adressen (relevant für das DBMS). Ein Pointer kann sich nicht nur auf eine Page beziehen, sondern auch auf einen bestimmten Datensatz innerhalb einer Page. Man nennt einen solchen Pointer dann auch Record-ID (RID): RID = Adresse der Page + Aufsetzpunkt für den Datensatz innerhalb der Page Schestag Datenbanken I (Bachelor) Kapitel 2 - 4 fbi h_da 2.2 Datenorganisation • Beim Zugriff auf die Daten einer Datenbank spielt neben dem Mindest-Füllgrad der Pages auch die Organisationsform der zugrunde liegenden Daten eine Rolle. • Unter der Organisationsform von Daten versteht man die Form des Abspeicherns und die Möglichkeiten des Zugriffs. • Im folgenden werden die Formen der - sequentiellen Organisation mit linearer Suche, - sequentiellen Organisation mit binärer Suche, - der index-sequentielle Organisation (ISAM) bis hin zum Begriff des Index in einem Datenbanksystem untersucht und mit ihren Vor- und Nachteilen dargestellt. Schestag Datenbanken I (Bachelor) Kapitel 2 - 5 fbi h_da 2.2.1 Die sequentielle Organisation – lineare Suche • Liegt eine Datei in unsortierter Form vor, so erfordert die Suche von Daten das sequentielle Lesen der Datei - die am wenigsten performante Form des Zugriffs: ProdNr 102112 104222 201332 111332 106222 ... • • ProduktBez Untertasse Milchkanne Schale Henkeltasse Teekanne ... Glasur graublau türkis steingrau steingrau türkis ... Sequentielle Organisation einer Datei Dekor Preis € Record ID Rose 6,00 Record 1 Wichtel 12,00 Record 2 Fisch 50,00 Record 3 Fisch 11,00 Record 4 Wichtel 59,00 Record 5 ... ... ... Die Daten werden fortlaufend (sequentiell) in der Reihenfolge ihrer Eingabe gespeichert und können nur in dieser Reihenfolge wieder gelesen und verarbeitet werden. Der Aufwand für (Lineare) Suche in einem unsortierten Dateien mit n Datensätzen beträgt O(n), d.h. im „worst case“ müssen alle Datensätze durchlaufen werden, bis der gesuchte Satz gefunden ist. Schestag Datenbanken I (Bachelor) Kapitel 2 - 6 fbi h_da 2.2.1 Die sequentielle Organisation – binäre Suche (1) • Verbesserungsansatz gegenüber linearer Suche: Die Datei wird nach einem Schlüssel sortiert abgespeichert, mehrere Records werden in einer Page untergebracht und die Adresse der Pages in einem Pointer verfügbar gemacht. eindeutiger Schlüssel ProdNr 101112 102112 103112 ... 103222 104222 105222 ... 111332 112332 201332 ... Schestag ProduktBez Teetasse Untertasse Dessertteller ... Desserteller Milchkanne Zuckerdose ... Henkeltasse Müslischüssel Schale ... Glasur graublau graublau graublau ... türkis türkis türkis ... steingrau steingrau steingrau ... Dekor Preis € Page ID Rose 9,50 Page 1 Rose 6,00 Rose 11,50 ... ... Page 2 Wichtel 6,00 Page 3 Wichtel 12,00 Wichtel 16,00 ... ... Page 4 Fisch 11,00 Page 5 Fisch 13,00 Fisch 50,00 ... ... Page 6 Datenbanken I (Bachelor) Kapitel 2 - 7 fbi h_da 2.2.1 Die sequentielle Organisation – binäre Suche (2) ) Vorteil: Binäre Suche ist möglich, in der jeweiligen Page müssen die Daten jedoch immer noch sequentiell gelesen werden. Der Aufwand für Binäre Suche in einer sortierten Datei mit n Records beträgt O(log2(n)) - s. auch Anhang A ABER: Das Update in einer Datei, die nach einem Schlüssel sortiert ist, ist mit erheblichen Aufwänden verbunden, insbesondere wenn beim Einfügen / Löschen von Datensätzen Pagegrenzen überschritten werden! → Verbesserungsansatz: Zu Attributen, die in einer Datei besonders oft als Selektionskriterien verwendet werden, wird eine zweite, sortierte Datei angelegt, die zu jeder Ausprägung des Attributes den Pointer auf die entsprechende Page bzw. den zugehörigen Record enthält. Diese Datei nennt man Index. Als Plural im Kontext mit Datenbanken spricht man häufig von Indexen. Schestag Datenbanken I (Bachelor) Kapitel 2 - 8 fbi h_da 2.2.2 Die index-sequentielle Organisation (1) EinIndex Indexist istimmer immersortiert sortiertnach nachdem demihm ihmzugeordneten zugeordnetenAttribut Attributund und Ein deshalbgeeignet, geeignet,binäre binäreSuche Suchezu zuunterstützen. unterstützen. deshalb Index für die eindeutigen Werte des Attributes ProdNr Page ID ProdNr 101112 ... 103222 ... 111332 ... Schestag 1 2 3 4 5 6 Index für die nicht notwendig eindeutigen Werte des Attributes Dekor Record ID Dekor Fisch Fisch ... Rose ... Wichtel Wichtel ... Datenbanken I (Bachelor) 3 4 ... 1 ... 2 5 ... Kapitel 2 - 9 2.2.2 Die index-sequentielle Organisation (2) fbi h_da EinIndex Indexerhöht erhöhtdie dieGeschwindigkeit Geschwindigkeitbeim beimSuchen, Suchen, Ein aberer erreduziert reduziertdie dieGeschwindigkeit Geschwindigkeitbei beiUpdates. Updates. aber • Bei jedem Hinzufügen eines neuen Records oder beim Ändern der entsprechenden Attribute wird auch der Index modifiziert. Diese Updates erfolgen analog den entsprechenden Vorgängen in sortierten Dateien. • Zu einer Datei kann es beliebig viele Indexe geben. Ein Index kann auch aus mehreren Attributen eines Records zusammengesetzt sein (vgl. Beispiele auf Folie 11 dieses Kapitels). Schestag Datenbanken I (Bachelor) Kapitel 2 - 10 2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (1) • fbi h_da Beispiel für einen Index auf dem Attribut Glasur für die Produkt-Datei Glasur (Index) Schestag Produkt-Datei (Daten) graublau 3011 Suppenteller türkis graublau 1012 Teetasse graublau Rose graublau 3012 Essteller türkis türkis 1013 Untertasse graublau Rose ... türkis 1011 Teekanne graublau Rose ... Datenbanken I (Bachelor) Fisch ... ... Fisch ... Kapitel 2 - 11 fbi h_da 2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (2) • Beispiel für je einen Index auf dem Attribut Glasur und auf dem Attribut Dekor für die Produkt-Datei Glasur (Index) Schestag Produkt-Datei (Daten) Dekor (Index) graublau 3011 Suppenteller türkis graublau 1012 Teetasse graublau Rose graublau 3012 Essteller türkis türkis 1013 Untertasse graublau Rose ... Rose türkis 1011 Teekanne graublau Rose ... Rose Datenbanken I (Bachelor) Fisch ... Fisch ... Fisch Fisch ... Rose Kapitel 2 - 12 2.2.2 Die index-sequentielle Organisation – Beispiele von Indexen (3) • fbi h_da Beispiel für einen Index über die zwei Attribute Glasur und Dekor für die ProduktDatei Glasur/Dekor (Index) Schestag Produkt-Datei (Daten) graublau/Rose 3011 Suppenteller türkis graublau/Rose 1012 Teetasse graublau Rose graublau/Rose 3012 Essteller türkis türkis/Fisch 1013 Untertasse graublau Rose ... türkis/Fisch 1011 Teekanne graublau Rose ... Datenbanken I (Bachelor) Fisch ... ... Fisch ... Kapitel 2 - 13 fbi h_da 2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (1) • Man unterscheidet zwei Arten von Indexen, je nach dem, ob es sich bei dem zugrunde liegenden Schlüssel um einen eindeutigen Schlüssel handelt (dünner Index) oder um einen Schlüssel, dessen Werte in der Datei mehrmals vorkommen können (dichter Index). Beispiel auf Folie 8: eindeutiger Schlüssel ProdNr, Schlüssel mit Mehrfachausprägungen Dekor. • dünner Index (non dense) Die Index-Datei enthält nicht für jeden gespeicherten Record einen Eintrag, sondern nur für jede Page (Datenblock). ⇒ Die Index-Datei hat weniger Datensätze als die eigentliche Datei (sie ist also „dünner“)! Um den gesuchten Record in einer Page zu finden, muss die Page im Hauptspeicher noch sequentiell durchsucht werden. Der Index enthält jeweils den ersten (oder letzten) Schlüssel, der in einer Page vorkommt, und dessen Adresse (Pagepointer). Dünne Indexe werden im allgemeinen für die Primärschlüssel der Records einer Datei erstellt (Primärindex). Schestag Datenbanken I (Bachelor) Kapitel 2 - 14 2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (2) • fbi h_da Beispiel für einen dünnen Index auf dem Primärschlüsselfeld ProdNr der ProduktDatei. Der Index enthält jeweils den ersten Schlüssel, der in einer Page vorkommt. ProdNr (Index) Produkt-Datei (Daten) 1010 PID 1 RID 1 3011 Suppenteller türkis 2010 PID 2 RID 2 1012 Teetasse graublau ... 3010 PID 3 RID 3 3012 Essteller türkis RID 4 1013 Untertasse graublau ... RID 5 1011 Teekanne graublau .. PID 1 1010, ...; 1011, 5; 1012, 2;1013, 4; ... Schestag ... ... PID 3 PID 2 2010, ...; ... Datenbanken I (Bachelor) 3010, ...; 3011, 1; 3012, 3; ... Kapitel 2 - 15 fbi h_da 2.2.2 Die index-sequentielle Organisation – dünne und dichte Indexe (3) • dichter Index (dense) Die Index-Datei enthält für alle Records einen eigenen Index-Eintrag. ⇒ Die Index-Datei hat genau so viele Datensätze, wie die eigentliche Datei (sie ist also genau so „dicht“ wie die eigentliche Datei)! Die Suche im dichten Index erfolgt analog einer Suche in sortierten Dateien. Der Index enthält jeweils den Schlüsselwert und die Adresse des zugehörigen Records (Record-pointer, RID). Dichte Indexe werden im allgemeinen für die Sekundärschlüssel der Records einer Datei erstellt (Sekundärindex). Schestag Datenbanken I (Bachelor) Kapitel 2 - 16 fbi h_da 2.2.2 Die index-sequentielle Organisation – Zusammenfassung • Eigenschaften der index-sequentiellen Organisation Indexed-sequentiell Access Method - ISAM – – – Ein Index einer Datei wird immer nach den Schlüsselwerten sortiert gespeichert. Pro Indexeintrag bzw. Schlüsselwert sind die Adressen der Pages und Records auf dem Speichermedium angegeben. Bei dünnen, pageorientierten Indexen muss die Page sequentiell durchsucht werden, um einen bestimmten Record zu lokalisieren. • Nachteil: Mit zunehmender Datei-Größe nimmt die Performance von Anfrage- und Update-Operationen ab, insbesondere bei dichten Indexen. • Lösungsansatz: Wird die Index-Datei selbst zu groß, so kann man für den Index wieder einen Index anlegen. Man erhält so einen mehrstufiger Index. Dies ist natürlich nur bei dünnenIndexen ein Gewinn! ) Eine solche Indizierung kann beliebig oft weiter geführt werden. Man erhält dann eine Baumstruktur, die in der Praxis i.d.R. als B-Baum (balancierter Baum, Bayer-Baum) realisiert wird, um eine Homogenität der Zugriffspfade zu erreichen. Schestag Datenbanken I (Bachelor) Kapitel 2 - 17 fbi h_da 2.3 Indexe und Bäume • Ein mehrstufiger Index als Baumstruktur besitzt die folgenden Komponenten: – Die unterste Ebene eines mehrstufigen Index (Indexbaum) nennt man Blätter des Baumes (sie entsprechen den Records der Datei). Die Adressverweise auf bestimmte Pages des Speichers nennt man Knoten. Der oberste Knoten in der Hierarchie, der keinen Vorgänger mehr hat, heißt Wurzel. Für einen Knoten x nennen wir einen darunter liegenden Knoten Sohn, einen darüber liegenden Knoten Vater (bzw. child und parent). – – – 65 32 97 Schestag Datenbanken I (Bachelor) 109 117 130 119 125 132 102 112 93 80 103 108 47 51 58 74 99 43 68 122 106 95 53 81 89 45 87 71 78 39 40 36 38 35 33 16 20 27 24 14 13 11 10 5 8 1 3 48 37 66 70 72 17 7 114 76 115 41 75 12 Kapitel 2 - 18 fbi h_da 2.3 Indexe und Bäume – B-Bäume (1) • Ein B-Baum (Bayer-Baum (1972), balancierter Baum) ist ein mehrstufiger Index, bei dem alle Pfade von der Wurzel zu den Blättern gleich lang sind, ein B-Baum ist also immer höhenbalanciert. • Ein B-Baum der Ordnung m hat die folgenden Eigenschaften: – Alle Knoten sind gleich groß (aber sie müssen nicht alle immer gleich viele Einträge haben!). – Jeder Knoten enthält höchstens 2m Records. – Jeder Knoten - mit Ausnahme der Wurzel - enthält mindestens m Records. – Die Wurzel enthält maximal 2m Records und mindestens einen Record. – Jeder Record besteht aus einem Schlüssel- und einem nicht-Schlüssel-Anteil. – Ein Knoten - mit Ausnahme von Wurzel und Blättern - hat n+1 Nachfolgeknoten, wenn er n Schlüssel enthält (m ≤ n ≤ 2m). a <a Schestag Datenbanken I (Bachelor) ≥a, <b b c ≥b, <c n=3 ≥c Kapitel 2 - 19 fbi h_da 2.3 Indexe und Bäume – B-Bäume (2) • Um in einem B-Baum mit n Knoten der Ordnung m einen Wert zu suchen, muss man höchstens logm+1(n)-mal auf die Platte zugreifen. • In einem B-Baum werden neben dem Suchen alle Arten von Update-Operationen ausgeführt (insert, update, delete). Bei Update-Operationen muss jeweils für die Balanciertheit des Baumes gesorgt werden. ⇒ vgl. Hörsaalübung • ⇒ Algorithmen zum Suchen, Einfügen und Löschen in B-Bäumen: vgl. Anhang B. • Nachteil der Datenverwaltung über B-Bäume: In der Regel sind beim Durchlaufen der Pfade mehrere I/Os auf externen Speicher notwendig. Eine alternative Methode zur Datenverwaltung mit Hilfe von Indexen sind die HashVerfahren: Schestag Datenbanken I (Bachelor) Kapitel 2 - 20 fbi h_da 2.4 Hash-Verfahren (1) • Die Record-Adressen werden über einen geeigneten Algorithmus (Hash-Funktion) aufgrund des Schlüsselwertes unmittelbar berechnet. • Eine Hash-Funktion sollte – „einfach“ zu berechnen sein, und – die Menge der Schlüsselwerte möglichst gleichmäßig und zufällig auf die Menge der verfügbaren Adressen abbilden. Menge der Speicherplätze (Adressen) Schlüsselmenge (Keys k) logisch {1011, 1012, 1013, ... 1021, 1022, 1023, ... 3011, 3012, ...} Schestag physisch Hash-Funktion h(k) Datenbanken I (Bachelor) Kapitel 2 - 21 fbi h_da 2.4 Hash-Verfahren (2) • Voraussetzung hierfür sind jedoch Datenbestände, die relativ „statisch“ sind, und bei denen insbesondere selten Löschoperationen auftreten. Hash-Verfahren eignen sich also nicht für sehr „dynamische“ Datenbestände. • Die „bekannteste“ Hash-Funktion ist die Modulo-Funktion (Divisions-RestVerfahren): h(k) = k mod p k=Schlüsselwert, p=Anzahl der vorhandenen Adressen • Die Modulo-Funktion lässt sich nur auf ganzzahlige numerische Schlüssel anwenden. Alphanumerische oder dezimale Schlüssel müssen so umgewandelt werden, dass sie ebenfalls in ganzzahliger, numerischer Form vorliegen. Beispiel: p=1000, k={27, 489, 1.020, 2.027, ...} Schestag ⇒ h(27) = 27 h(489) = 489 h(1.020) = 20 h(3027) = 27 ... Datenbanken I (Bachelor) Kapitel 2 - 22 fbi h_da 2.4 Hash-Verfahren (3) Kollisionsbehandlung (1) Für jede Adresse wird ein Überlaufbereich vorgesehen, und gleiche HashFunktionswerte werden durch Pointer linear verkettet. ⇒ Suche nach einem Record entspricht der Berechnung des Hash-Funktionswertes und anschließender sequentieller Suche nach dem Schlüssel. Nachteil: Dieses Verfahren benötigt u.U. viel Speicherplatz und ist häufig ineffizient in der Suche. (2) Offene Hash-Verfahren Im Fall einer Kollision wird für den betroffenen Record durch Anwenden einer zweiten Hash-Funktion eine Ersatzadresse ermittelt. Dieses Verfahren kann - falls nötig beliebig oft fortgeführt werden, und Adressen aus kollidierenden Bereichen können durch lineare Listen verkettet werden (Kollisionsketten). Die Berechnung des ersten Hash-Funktionswertes bezeichnet man als Streuen, die Berechnung der Ersatzwerte als Sondieren. Beispiel: Schestag hi(k)=(h(k)+c·i) mod m, c=const., hi(k)=(h(k)+i2) mod m, lineares Sondieren quadratisches Sondieren Datenbanken I (Bachelor) Kapitel 2 - 23 fbi h_da Anhang A: Binäre Suche in Arrays – Algorithmus ... Der Algorithmus a[n] sei ein geordnetes Array mit n Elementen, d.h. anfangs 0 = min (Index-Minimum), n-1 = max (Index-Maximum). x sei der gesuchte Wert. x wird gesucht im Bereich a[min] ... a[max]. Wähle einen Index pos zwischen min und max, idealerweise [(min+max)/2], wobei [ ] die Gauss-Klammer darstellt. Folgende Schritte werden wiederholt durchgeführt: • a[pos] > x ⇒ suche weiter im Bereich a[min] ... a[pos-1] • a[pos] < x ⇒ suche weiter im Bereich a[pos+1] ... a[max] • a[pos] = x ⇒ Der Wert x befindet sich im Array bei Index pos. Der Wert x ist nicht im Array enthalten, wenn min > max erreicht wird. Schestag Datenbanken I (Bachelor) Kapitel 2 - 24 fbi h_da Anhang A: Binäre Suche in Arrays – ... und Struktogramm Das Struktogramm gefunden=FALSE min=0 max=n-1 solange ( min <= max ) && ( ! gefunden ) pos = [( min + max ) / 2] a[pos] > x ? nein ja a [pos] < x ? max=pos-1 ja min=pos+1 Schestag Datenbanken I (Bachelor) nein a[pos] = x gefunden=TRUE Kapitel 2 - 25 Anhang A: Binäre Suche in Arrays – Abschätzung des Rechenaufwandes 1 fbi h_da • Wählt man für den Start-Index pos zwischen min und max den Wert „in der Mitte“, so halbiert sich der Aufwand für die Lösung des Problems bei jedem Schritt. ⇒ eine Verdoppelung der Arraygröße bewirkt beim linearen Suchen eine Verdoppelung des Aufwandes, beim binären Suchen eine Erhöhung des Aufwandes um einen Schritt! • Einen Bereich von n Elementen kann man höchstens log2(n) mal halbieren.*) • Zu jeder natürlichen Zahl n gibt es eine natürliche Zahl m, sodass n zwischen den Zahlen 2m und 2m+1 liegt, d.h. 2m ≤ n ≤ 2m+1 . *) Zur Erinnerung: log2(n) = y :⇔ n = 2y, z.B. log2(32) = 5, denn 25 = 32. Schestag Datenbanken I (Bachelor) Kapitel 2 - 26 Anhang A: Binäre Suche in Arrays – Abschätzung des Rechenaufwandes 2 • fbi h_da Beispiel Es sei n=19 ⇒ m =4, denn 24 = 16 < 19 < 32 = 24+1 = 25. ) Um in einem Array mit 19 Elementen einen vorgegebenen Wert zu finden, benötigen wir maximal 4 Schritte: n=19 n=9 n=4 n=2 n=1 Schestag Datenbanken I (Bachelor) Kapitel 2 - 27 fbi h_da Anhang A: Binäre Suche in Arrays – Komplexität von Algorithmen • Die Komplexität f(n) eines Algorithmus ist i.d.R. funktional abhängig von einer „Leitgröße“ n. – Beim linearen Suchen können wir lineare Abhängigkeit beobachten, – beim binären Suchen dagegen logarithmische Abhängigkeit: best case lineare Suche 1 binäre Suche 1 average case n/2 log2(n)-1 worst case n log2(n) • Es ist schwierig, den genauen Aufwand zu bestimmen. Man schätzt deshalb für große n den Aufwand durch eine Funktion g(n) ab, sodass gilt: f(n) ≤ c ·g(n), mit einer Konstanten c. Man sagt, „f(n) ist höchstens von der Ordnung g(n)“ und schreibt f(n) = O(g(n)) („O-Notation“). Es gilt also: n/2 entspricht O(n), n entspricht O(n), log2(n)-1 entspricht O(log(n)) und log2(n) entspricht O(log(n)). • Häufige Komplexitäten von Algorithmen sind: konstant, linear, polynomial (alle Komplexitäten der Form n2-quadratisch, n3-kubisch, n4,...), logarithmisch, log-linear und exponentiell. Schestag Datenbanken I (Bachelor) Kapitel 2 - 28 Anhang B: Algorithmus zum Suchen in B-Bäumen fbi h_da Suchen eines Schlüssels s im B-Baum 1. Prüfe, beginnend bei der Wurzel, ob s im gerade betrachteten Knoten x enthalten ist. Falls ja ⇒ fertig. Falls nein ⇒ 2. 2. Prüfe, ob x ein Blatt (= Knoten ohne “Söhne”) ist. Falls ja ⇒ erfolgloses Ende der Suche. Falls nein ⇒ 3. 3. Stelle fest, zwischen welchen Schlüsseln si-1 und si des Knotens x der Schlüssel s liegt (bzw. ob s < s1 oder s > sk ist) und setze die Suche danach mit 1. beim Knoten x.sohn[i] fort. Schestag Datenbanken I (Bachelor) Kapitel 2 - 29 Anhang B: Algorithmus zum Einfügen in B-Bäumen fbi h_da Einfügen eines Schlüssels s in einen B-Baum Das Einfügen eines Schlüssels geschieht grundsätzlich in den Blättern. 1. Durchlaufe den B-Baum mit dem neu einzutragenden Schlüssel wie beim Suchen, bis das Blatt gefunden wird, wo der Schlüssel einzutragen ist. Die Zahl der Schlüssel je Knoten (mit Ausnahme der Wurzel) muss zwischen m und 2m liegen. 2.a Anzahl der Schlüssel im Knoten < 2m ⇒ Einfügen erfolgreich beendet. 2.b Anzahl der Schlüssel im Knoten = 2m ⇒ es entsteht ein Überlauf, da das Blatt nach Einfügen 2m + 1 Schlüssel enthalten würde. ⇒ Teile den Knoten in zwei Knoten zu je m Schlüsseln. Der mittlere Schlüssel des Knoten wird vom „Vater“ aufgenommen; die beiden Zeiger rechts und links dieses Schlüssels im „Vater“ zeigen dann auf das alte und das neue darunterliegende Blatt. Läuft auch der Vaterknoten über, so muß dieser ebenfalls in zwei Knoten aufgeteilt werden etc. 3. Läuft die Wurzel über, dann wird sie aufgespalten und eine neue Wurzel angelegt. ⇒ Der B-Baum ist dann um eine Stufe gewachsen. B-Bäume wachsen von den Blättern zur Wurzel hin! Schestag Datenbanken I (Bachelor) Kapitel 2 - 30 Anhang B: Algorithmus zum Löschen in B-Bäumen fbi h_da Löschen eines Schlüssels s in einem B-Baum 1. Suche den Knoten x, in dem s enthalten ist. 2. x ist ein Blatt ⇒ lösche s (ggf. muß ein Unterlauf bereinigt werden, s.u.), andernfalls 3. 3. Ermittle den nächstgrößeren Schlüssel s’ zu s in einem Blatt des Baumes. 4. Ersetze s durch s’ und lösche s’ im Blatt x’. Enthält das Blatt x’ weiterhin ≥ m Schlüssel, so ist das Löschen beendet; andernfalls 5. 5. In x’ stehen nur noch (m-1) Schlüssel, man spricht von einem Unterlauf. Fasse x’ und einen benachbarten Knoten x’’, der den selben Vater wie x’ hat, zu einem neuen Knoten zusammen und übernehme dabei denjenigen Schlüssel aus dem Vaterknoten, dessen beide Zeiger auf die benachbarten Knoten gezeigt haben. 6.a Ist der neue Knoten zu groß, muß er entsprechend dem Überlaufverfahren (s. Einfügen) wieder in zwei gleichgroße Knoten aufgeteilt werden, wobei der mittlere Schlüssel vom „Vater“ aufgenommen wird. 6.b Ist der „Vater“ beim Zusammenfassen von x’ und x’’ zu klein geworden, so muß auch er mit einem benachbarten Knoten zusammengefaßt werden etc. Dieser Prozeß kann sich bis zur Wurzel fortsetzen. Enthält die Wurzel vor dem Zusammenfassen nur einen Schlüssel, so verringert sich die Höhe des Baumes um 1. Die Höhe eines B-Baumes kann sich beim Löschen verringern! Schestag Datenbanken I (Bachelor) Kapitel 2 - 31