Übungsblatt 2 Erläuterungen Wintersemester 16/17 DBIS
Aufgabe 1 B-Bäume Wintersemester 16/17 DBIS
Definition eines B-Baums mit Ordnung n: Jeder Weg von der Wurzel zum Blatt hat die gleiche Länge h. Jeder Knoten (außer Wurzel und Blätter) hat mindestens n+1 Söhne. Die Wurzel hat mindestens 2 Söhne. Jedes Blatt besitzt mindestens n Einträge. Jeder Knoten hat höchstens 2n+1 Söhne. Während der Entstehungsphase des Baumes kann es zu Verletzungen dieser Bedingungen kommen (Initialfüllphase). Rückschluss aus „Regeln“ für Höchstanzahl der Söhne: 1-elementige Knoten haben maximal 2 Kinder (links, rechts) 2-elementige Knoten haben maximal 3 Kinder (da sie sich ein Kind teilen) 3-elementige Knoten haben maximal 4 Kinder
Auf jeden Knoten passen maximal 6 Elemente. Gegeben: n = 3 Jeder Weg von der Wurzel zum Blatt hat die gleiche Länge h. Jeder Knoten (außer Wurzel und Blätter) hat mindestens 4 Söhne. Die Wurzel hat mindestens 2 Söhne. Jedes Blatt besitzt mindestens 3 Einträge. Jeder Knoten hat höchstens 7 Söhne. Auf jeden Knoten passen maximal 6 Elemente.
Beginn der Füllung mit den Werten 5,7 und 21 Hinzufügen der Werte 2, 10, 76 2 5 7 21 2 5 7 10 21 2 5 7 10 21 76 Hinzufügen des Wertes 77 2 5 7 10 21 76 77 Zu voll, umsortieren Mittleres Element
10 2 5 7 21 76 77 Hinzufügen der Werte 3, 4, 9, 78 10 2 3 5 7 21 76 77 10 2 3 4 5 7 21 76 77 10 2 3 4 5 7 9 21 76 77
Hinzufügen des Wertes 1 Zu voll, umsortieren Mittleres Element 10 2 3 4 5 7 9 21 76 77 78 Hinzufügen des Wertes 1 10 1 2 3 4 5 7 9 21 76 77 78 Zu voll, umsortieren Mittleres Element Neuer Vater landet in übergeordneter Ebene 4 1 2 3 5 7 9
Löschen des Wertes 76 Löschen des Wertes 77 Zu leer, umsortieren 4 10 2 3 5 7 9 21 76 77 78 Löschen des Wertes 76 4 10 1 2 3 5 7 9 21 77 78 Löschen des Wertes 77 4 10 1 2 3 5 7 9 21 78 Zu leer, umsortieren
Nachbar bietet ausreichend Platz verschmelzen 4 10 1 2 3 5 7 9 21 78 Nachbar bietet ausreichend Platz verschmelzen 4 1 2 3 5 7 9 10 21 78
Beispiel Kleine Rotation
Beispiel große Rotation
Aufgabe 2 Extendible Hashing Wintersemester 16/17 DBIS
Schritt 1 – Berechnung der Hashwerte h(x) = x DIV 10 Werte: 42, 165, 211, 233, 255 und 82 42 DIV 10 = 4 R 2 4 165 DIV 10 = 16 R 5 16 211 DIV 10 = 21 R 1 21 233 DIV 10 = 23 R 3 23 255 DIV 10 = 25 R 5 25 82 DIV 10 = 8 R 2 8
x h(x)10 h(x)2 42 4 165 16 211 21 233 23 255 25 82 8 Schritt 2 – Berechnung der Binärwerte zu den Hashwerten Werte h(x): 4, 16, 21, 23, 25 und 8 Zahlen in Binär: 4 ≙ 0 0 1 0 0 24 23 22 21 20 0 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 0 * 1 Umrechnung z.B. über Divisionsrestverfahren: 4 MOD 2 = 2 R 0 2 MOD 2 = 1 R 0 1 MOD 2 = 0 R 1 100 vorn Nullen anstellen bis zur gegeben Länge: 00100 Leserichtung
Schritt 3 – Schrittweises Einfügen der Werte in den Bucket x h(x)10 h(x)2 42 4 165 16 211 21 233 23 255 25 82 8 4 = 00100 16 = 10000 21 = 10101 23 = 10111 25 = 11001 8 = 01000 Schritt 3 – Schrittweises Einfügen der Werte in den Bucket Gegeben: Bucket-Kapazität b=3 Startsituation: leerer Bucket, lokale Tiefe 0 B1
x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Einfügen der Werte 42, 165, 211 B1 42 4 (00100) B1 42 4 (00100) 165 16 (10000) B1 42 4 (00100) 165 16 (10000) 211 21 (10101)
Voll! Neuer Bucket, neue Tiefe(n) x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Einfügen des Wertes 233 B1 42 4 (00100) 165 16 (10000) 211 21 (10101) Voll! Neuer Bucket, neue Tiefe(n) 1 B1 1 1 1 B2
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2. 1 B1 1 0… 1 1… B2
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2. 1 B1 42 4 (00100) 1 0… 1 1… B2
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2. 1 B1 42 4 (00100) 1 0… 1 1… B2 165 16 (10000)
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2. 1 B1 42 4 (00100) 1 0… 1 1… B2 165 16 (10000) 211 21 (10101)
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 1 beginnen, kommen in Bucket 2. 1 B1 42 4 (00100) 1 0… 1 1… B2 165 16 (10000) 211 21 (10101) 233 23 (10111)
Voll! Neuer Bucket, neue Tiefe(n) x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Einfügen des Wertes 255 1 B1 42 4 (00100) 1 0… 1 1… B2 165 16 (10000) 211 21 (10101) 233 23 (10111) Voll! Neuer Bucket, neue Tiefe(n)
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2. Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3. 1 B1 42 4 (00100) 2 2 00.. B2 01.. Magic! Unterschiedliche lokale Tiefen. 10.. 11.. 2 B3
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2. Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3. 1 B1 42 4 (00100) 2 2 00.. B2 165 16 (10000) 01.. 10.. 11.. 2 B3
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2. Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3. 1 B1 42 4 (00100) 2 2 00.. B2 165 16 (10000) 01.. 211 21 (10101) 10.. 11.. 2 B3
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2. Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3. 1 B1 42 4 (00100) 2 2 00.. B2 165 16 (10000) 01.. 211 21 (10101) 10.. 233 23 (10111) 11.. 2 B3
Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Hashwerte, die binär mit 0 beginnen, kommen in Bucket 1. Hashwerte, die binär mit 10 beginnen, kommen in Bucket 2. Hashwerte, die binär mit 11 beginnen, kommen in Bucket 3. 1 B1 42 4 (00100) 2 2 00.. B2 165 16 (10000) 01.. 211 21 (10101) 10.. 233 23 (10111) 11.. 2 B3 255 25 (11001)
x h(x)10 h(x)2 42 4 00100 165 16 10000 211 21 10101 233 23 10111 255 25 11001 82 8 01000 Einfügen des Wertes 82 1 B1 42 4 (00100) 82 8 (01000) 2 2 00.. B2 165 16 (10000) 01.. 211 21 (10101) 10.. 233 23 (10111) 11.. 2 B3 255 25 (11001)
Aufgabe 3 Größenordnungen im B+-Baum Wintersemester 16/17 DBIS
Wie viele Datensätze kann ein komplett gefüllter B+-Baum aufnehmen Wie viele Datensätze kann ein komplett gefüllter B+-Baum aufnehmen? Beginnen Sie mit der Berechnung der maximalen Werte für n und n*. B+-Baum = Daten liegen nur in den Blättern, Wurzel und innere Knoten enthalten keine Daten
Wie viele Elemente passen in innere Knoten? Gegeben: Seitengröße exklusive Overhead = 4000 Byte Pointer = 12 Byte Schlüsselwert = 8 Byte Seite mit einem Element: 2 Pointer + 1 Schlüsselwert = 24 Byte + 8 Byte = 32 Byte Jedes weitere Element: 1 Pointer + 1 Schlüsselwert = 12 Byte + 8 Byte = 20 Byte 2 Elemente: 52 Byte 3 Elemente: 72 Byte … 199 Elemente: 32 Byte + (198*20 Byte) = 32 Byte + 3960 Byte = 3992 Byte n = 199 / 2 = 99,5
Wie viele Elemente passen in äußere Knoten? Gegeben: Seitengröße exklusive Overhead = 4000 Byte Pointer = 12 Byte Schlüsselwert = 8 Byte Datenteil = 80 Byte Seite mit einem Element: 2 Pointer + 1 Schlüsselwert + 1 Datenteil = 24 Byte + 8 Byte + 80 Byte = 112 Byte Jedes weitere Element: 1 Schlüsselwert + 1 Datenteil = 8 Byte + 80 Byte = 88 Byte 2 Elemente: 200 Byte 3 Elemente: 288 Byte … 45 Elemente: 112 Byte + (44*88 Byte) = 112 Byte + 3872 Byte = 3984 Byte n* =45 / 2 = 22,5
Wie viele Datensätze kann ein komplett gefüllter B+-Baum aufnehmen? Gegeben: Höhe = 3 Wurzel h = 1 Jeweils 199 Elemente pro Seite h = 2 h = 3 Jeweils 45 Elemente pro Seite Ebene 0 (Wurzel): 199 Elemente 200 ausgehenden Kanten Ebene 1: 200 * 199 = 39.800 Elemente 200 * 200 = 40.000 ausgehende Kanten Ebene 2: 40.000 * 199 = 7.960.000 Elemente 40.000 * 200 = 8.000.000 ausgehende Kanten Ebene 3: Blätter haben Datenteile, daher nur 45 Elemente pro Blatt! 8.000.000 * 45 = 360.000.000 Daten liegen nur in den Blättern 360 Mio. Datenelemente im Baum
Wie viele Datensätze kann ein komplett gefüllter B-Baum mit den selben Vorgaben aufnehmen? B-Baum: Daten in allen Knoten
Wie viele Elemente passen in einen Knoten? Gegeben: Seitengröße exklusive Overhead = 4000 Byte Pointer = 12 Byte Schlüsselwert = 8 Byte Datenteil = 80 Byte Seite mit einem Element: 2 Pointer + 1 Schlüsselwert + 1 Datenteil = 24 Byte + 8 Byte + 80 Byte = 112 Byte Jedes weitere Element: 1 Pointer + 1 Schlüsselwert + 1 Datenteil = 12 Byte + 8 Byte + 80 Byte = 100 Byte 2 Elemente: 212 Byte 3 Elemente: 312 Byte … 39 Elemente: 112 Byte + (38*100 Byte) = 112 Byte + 3800 Byte = 3912 Byte n =39 / 2 = 19,5
Wie viele Datensätze kann ein komplett gefüllter B-Baum aufnehmen? Ebene 0 (Wurzel): 39 Elemente 40 ausgehenden Kanten Ebene 1: 40 * 39 = 1.560 Elemente 40 * 40 = 1.600 ausgehende Kanten Ebene 2: 1.600 * 39 = 62.400 Elemente 1.600 * 40 = 64.000 ausgehende Kanten Ebene 3: 64.000 * 39 = 2.496.000 Elemente Daten liegen in allen Seiten: 2.496.000 + 62.400 + 1.560 + 39 = 2.559.999 ~ 2,6 Mio. Datenelemente im Baum
Aufgabe 4 Begriffe des Entity-Relationship-Modells
Ordnen Sie den folgenden Beschreibungen den passenden Begriff zu. Begriffe: Entity, Entitytyp, Entitymenge, Attribut, Attributwert, Beziehung, Beziehungstyp und Beziehungsmenge HiWi Martin Welsch Prof. Dr.-Ing. habil. Ernst Günter Schukat-Talamazzini Professor Menge aller möglichen Professoren {F. Haney, A. Wickenhäuser} kennen = Student x Professor Jessika Peter kennt Prof. Dr.-Ing. habil. Clemens Beckstein Vorname Ernst Günter {Jessika Peter schätzt Prof. Dr. Beckstein, Jessika Peter schätzt Prof. Dr. Küspert} 1955 Entitytyp Entity Entitymenge Beziehungstyp Beziehung Attribut Attributwert Beziehungsmenge
Aufgabe 5 Schlüssel zum Glück
Stellt dies eine geeignete Modellierung dar? Herr X hat trotz schwieriger gesamtwirtschaftlicher Lage am 12.11.2015 eine Firma Y AG & Co. KG in Z gegründet, welche sich in mehrere Abteilungen untergliedert. Keine zwei Mitarbeiter dieser jungen, aufstrebenden Firma besitzen den gleichen Namen (obwohl die Firma bereits zwei Mitarbeiter hat!). Als Primärschlüssel des Entitytyps Mitarbeiter soll das Attribut „Name“ dienen. Als Primärschlüssel des Entitytyps Abteilung wurde das Attribut „AbtNr“ ausgewählt. Name bleibt nicht zwingend eindeutig. (Firma soll noch wachsen.) ungeeignete Modellierung Abteilungsnummer kann beliebig erhöht werden neue Abteilungen können Problemlos eingerichtet werden geeignete Modellierung