Jürgen Spielberger Dipl. Informatik-Ing. ETH lic. oec. inform. HSG Datenmodellierung und relationale Datenbanktechnik für Entwickler und Anwender © Jürgen Spielberger Version 1.0-60, 1. September 2001 2 Inhaltsverzeichnis Aufbauschema des Buches: Inhaltsverzeichnis (ab Seite 3) Inhaltsverzeichnis (ab Seite 3) Teil 1: Einführung (ab Seite 9) Einführung in die Thematik der Datenmodellierung und Datenbanktechnik Teil 2: Konzeptionelle Datenmodellierung (ab Seite 25) Theorie und Übungen zum Erstellen konzeptioneller Datenmodelle Teil 3: Internes Datenmodell (ab Seite 87) Theorie und Übungen zu Datenbanktechnik und zum Erstellung des internen/physischen Datenmodells Teil 4: Fallbeispiel (ab Seite 135) Umfassende Übung zu den behandelten Themen Anhang (ab Seite 145) Musterlösungen zu sämtlichen Aufgaben, Checkliste, Erläuterung der Fragetypen, Literaturverzeichnis, Index Auf 213 Seiten Theorie und Übungen 950 Minuten Übungen in 14 Bearbeitungsaufgaben 116 Checkfragen (Multiple Choice) 81 Figuren und Zeichnungen 65 Tabellen und Relationenmodelle Inhaltsverzeichnis 3 Inhaltsverzeichnis Teil 1: Einführung 1. Zielsetzung, Zielgruppe, Voraussetzungen und Aufbau 9 11 1.1. Zielsetzung ..................................................................................................................................................................... 11 1.2. Zielgruppe, Voraussetzungen ..................................................................................................................................... 11 1.3. Aufbau des Dokuments .............................................................................................................................................. 11 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 12 2.1. Dateiverwaltungssysteme ........................................................................................................................................... 12 2.1.1. Separate Dateiverwaltung ............................................................................................................................... 12 2.1.2. Gemeinsame Dateiverwaltung........................................................................................................................ 12 2.2. Datenbanksysteme...................................................................................................................................................... 13 2.2.1. Hierarchische Datenbanksysteme ................................................................................................................... 13 2.2.2. Netzwerkartige Datenbanksysteme ................................................................................................................ 13 2.2.3. Relationale Datenbanksysteme ....................................................................................................................... 14 2.2.4. Begriff Datenbank .............................................................................................................................................. 15 2.2.5. Eigenschaften von Datenbanken ................................................................................................................... 16 2.3. Checkfragen................................................................................................................................................................. 17 2.3.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 17 2.3.2. Fragetyp E, kausale Verknüpfung.................................................................................................................... 18 2.3.3. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 18 3. Einführung in die Datenmodellierung 19 3.1. Begriff Datenmodell ..................................................................................................................................................... 19 3.2. Gliederung des Datenmodells gemäss ANSI-SPARC.............................................................................................. 19 3.3. Begriff und Zielsetzung der Datenmodellierung ...................................................................................................... 22 3.4. Datenmodellierung als Teil des Informatikprojektes ............................................................................................... 22 3.5. Checkfragen................................................................................................................................................................. 23 3.5.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 23 3.5.2. Fragetyp E, kausale Verknüpfung.................................................................................................................... 23 3.5.3. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 23 Teil 2: Konzeptionelle Datenmodellierung 25 4. Elementarinstrumente des konzeptionellen Datenmodells 27 4.1. Entität, Entitätsmenge ................................................................................................................................................. 27 4.2. Beziehung, Beziehungsmenge ................................................................................................................................... 28 4.2.1. Die Beziehung im Entity-Relationship-Modell ................................................................................................. 28 4.2.2. Erweitertes Relationenmodell, Beziehungs-Variante des Entity-Relationship-Modells............................. 30 4.2.3. Vor- und Nachteile beider Ansätze ................................................................................................................. 30 4.2.4. Assoziationstypen, Beziehungstypen ............................................................................................................... 31 4.2.5. Verhalten bei Datenbank-Transaktionen ....................................................................................................... 33 4.3. Wertebereich ................................................................................................................................................................ 34 4.3.1. Elementarer Wertebereich ............................................................................................................................... 34 4.3.2. Strukturierter Wertebereich ......................................................................................................................... 35 4.3.3. NULL-Werte .......................................................................................................................................................... 35 4.3.4. Typenbindung ............................................................................................................................................... 36 4.4. Attribut ........................................................................................................................................................................... 36 4.4.1. Entitätsschlüssel, Schlüsselkandidat ................................................................................................................. 38 4.4.2. Fremdschlüssel .................................................................................................................................................... 38 4.5. Checkfragen................................................................................................................................................................. 41 4.5.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 41 4.5.2. Fragetyp B, Zuordnung ...................................................................................................................................... 42 4.5.3. Fragetyp E, kausale Verknüpfung.................................................................................................................... 43 4.5.4. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 43 4.6. Bearbeitungsaufgaben ............................................................................................................................................... 45 4.6.1. KontoSys, Kontoverwaltungs-System ............................................................................................................... 45 4.6.2. RezeptSys, Rezeptverwaltungs-System ........................................................................................................... 45 4 Inhaltsverzeichnis 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 46 5.1. 1. Normalform ............................................................................................................................................................... 47 5.2. 2. Normalform ............................................................................................................................................................... 48 5.3. 3. Normalform ............................................................................................................................................................... 50 5.4. Checkfragen ................................................................................................................................................................. 53 5.4.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 53 5.4.2. Fragetyp B, Zuordnung ...................................................................................................................................... 53 5.4.3. Fragetyp E, kausale Verknüpfung .................................................................................................................... 54 5.4.4. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 54 5.5. Bearbeitungsaufgaben ............................................................................................................................................... 56 5.5.1. Normalisierung Projektverwaltung ................................................................................................................... 56 5.5.2. Normalisierung Buchhandelssystem ................................................................................................................ 56 5.5.3. Normalisierung Wagenvermietung .................................................................................................................. 57 6. Verbundinstrumente des konzeptionellen Modells 58 6.1. Hierarchie....................................................................................................................................................................... 58 6.2. Beziehungsstruktur ........................................................................................................................................................ 58 6.3. Rekursion ........................................................................................................................................................................ 61 6.4. Aggregation .................................................................................................................................................................. 63 6.5. Spezialisierung/Generalisierung ................................................................................................................................. 64 6.6. Wertetabelle ................................................................................................................................................................. 67 6.7. Variante Referenzierung ....................................................................................................................................... 69 6.8. Checkfragen ................................................................................................................................................................. 71 6.8.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 71 6.8.2. Fragetyp E, kausale Verknüpfung .................................................................................................................... 71 6.8.3. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 71 6.9. Bearbeitungsaufgaben ............................................................................................................................................... 73 6.9.1. Liversys, Liegenschafts-Verwaltungs-System ................................................................................................... 73 6.9.2. Transpo, Transport-Verwaltungs-System .......................................................................................................... 73 7. Spezielle Problemstellungen des konzeptionellen Modells 77 7.1. Mengenprobleme im Verbundinstrument Beziehungsstruktur .............................................................................. 77 7.2. Historisierung von Daten .............................................................................................................................................. 78 7.2.1. Periodenstempel ................................................................................................................................................. 79 7.2.2. Gültig-Ab- und Lösch-Zeitstempel .................................................................................................................... 79 7.2.3. Auslagerung historischer Daten........................................................................................................................ 80 7.2.4. Auslagerung der Änderungen.......................................................................................................................... 80 7.3. Migration von Informationen ...................................................................................................................................... 80 7.4. Verdichtung von Informationen................................................................................................................................. 82 8. Integrität im konzeptionellen Modell 83 8.1. Datenkonsistenz im konzeptionellen Modell ............................................................................................................ 83 8.2. Datenschutz im konzeptionellen Modell................................................................................................................... 84 8.3. Checkfragen ................................................................................................................................................................. 86 8.3.1. Fragetyp A, Einfachauswahl ............................................................................................................................. 86 8.3.2. Fragetyp K, mehrfache Entscheidung ............................................................................................................ 86 Teil 3: Internes Datenmodell 87 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 89 9.1. Externspeicherverwaltung........................................................................................................................................... 90 9.2. Systempufferverwaltung.............................................................................................................................................. 91 9.3. Record- und Zugriffspfadverwaltung ........................................................................................................................ 91 9.3.1. Recordverwaltung .............................................................................................................................................. 91 9.3.2. Zugriffspfadverwaltung ...................................................................................................................................... 92 9.3.2.1. Zugriffsverfahren mit invertierten Listen .................................................................................................. 92 9.3.2.2. Baumstrukturierte Zugriffsverfahren, B- und B*-Baum .......................................................................... 93 9.3.2.3. Zugriffsverfahren mit Schlüsseltransformation ....................................................................................... 97 9.4. Entitätenverwaltung..................................................................................................................................................... 97 9.4.1. Metadatenbank ................................................................................................................................................. 98 9.4.2. Transaktionsverwaltung.................................................................................................................................... 100 9.4.2.1. Optimistisches Verfahren ....................................................................................................................... 102 9.4.2.2. Pessimistisches Verfahren ....................................................................................................................... 102 9.4.2.3. Zeitstempel-Verfahren ............................................................................................................................ 106 9.4.2.4. Transaktionslogik in verteilten Datenbanksystemen .......................................................................... 107 9.4.3. Integritätssicherung im Datenbanksystem (interne Ebene) ....................................................................... 107 Inhaltsverzeichnis 5 9.4.3.1. Datenkonsistenz ...................................................................................................................................... 107 9.4.3.2. Datensicherheit, Recovery .................................................................................................................... 108 9.4.3.3. Datenschutz, Kryptographie ................................................................................................................. 110 9.4.4. Cursor-Verwalter ......................................................................................................................................... 110 9.5. Entitätsmengenverwaltung ...................................................................................................................................... 110 9.5.1. Zugriffspfadoptimierer, Optimizer................................................................................................................... 111 9.5.2. Datenbanksprachen ....................................................................................................................................... 111 9.6. Checkfragen............................................................................................................................................................... 114 9.6.1. Fragetyp A, Einfachauswahl ........................................................................................................................... 114 9.6.2. Fragetyp B, Zuordnung .................................................................................................................................... 115 9.6.3. Fragetyp E, kausale Verknüpfung.................................................................................................................. 116 9.6.4. Fragetyp K, mehrfache Entscheidung .......................................................................................................... 117 9.7. Bearbeitungsaufgaben ............................................................................................................................................. 118 9.7.1. Zugriffspfade ..................................................................................................................................................... 118 9.7.1.1. 1. Aufgabe: Invertierte Liste .................................................................................................................. 118 9.7.1.2. 2. Aufgabe: HASH ................................................................................................................................... 119 9.7.1.3. 3. Aufgabe: B-Baum ............................................................................................................................... 119 9.7.2. Metadatenbank ............................................................................................................................................... 120 9.7.3. Deadlock im pessimistischen Verfahren ....................................................................................................... 121 9.7.4. Locking im pessimistischen Verfahren ........................................................................................................... 122 9.7.5. Ablaufplan ......................................................................................................................................................... 124 9.7.6. Transaktionslogik und Programme ................................................................................................................. 125 10. Internes Datenmodell 126 10.1. Herleitung des internen Datenmodells für ein vorgegebenes Datenbanksystem ........................................ 126 10.2. Bestimmen der Zugriffspfade ................................................................................................................................. 127 10.2.1. Mögliche Zugriffspfade bestimmen ............................................................................................................ 127 10.2.2. Zugriffspfad-Effizienz bestimmen .................................................................................................................. 128 10.3. Physische Organisation ........................................................................................................................................... 129 10.4. Denormalisierung zur Performance-Verbesserung ............................................................................................. 130 10.5. Checkfragen ............................................................................................................................................................ 131 10.5.1. Fragetyp K, mehrfache Entscheidung ........................................................................................................ 131 11. Verteilung von Daten 132 11.1. Vorteile und Nachteile verteilter Datenbanksysteme ........................................................................................ 132 11.2. Eigenschaften verteilter Datenbanksysteme ...................................................................................................... 132 11.3. Checkfragen ............................................................................................................................................................ 134 11.3.1. Fragetyp K, mehrfache Entscheidung ........................................................................................................ 134 Teil 4: Fallbeispiel 12. Fallbeispiel TTW 135 137 12.1. Ist-Analyse: Datenmodell zur Anwendung TravelSys ermitteln (Bottom-Up) .................................................. 137 12.1.1. Ermittlung des Datenmodells zur Anwendung TravelSys (55 Minuten) .................................................. 138 12.1.2. Normalisierung des Datenmodells (25 Minuten) ....................................................................................... 139 12.2. Soll-Konzept: Datenmodell mit neuen Anforderungen ergänzen (Top-Down) ............................................. 140 12.2.1. Strukturierung der Reisen, Aggregation (Part-Of-Struktur / Stückliste) (25 Minuten) ............................ 140 12.2.2. Zeitabhängige Daten und Varianten von Daten in Datenmodellen (40 Minuten)............................. 141 12.2.3. Mitarbeiterstamm, Spezialisierung/Generalisierung (Is-A-Struktur) (20 Minuten) .................................. 142 12.3. Vorgehensentscheid Dateiverwaltung oder DBMS (20 Minuten) .................................................................... 143 12.4. Ableiten des internen Schemas, Bestimmen der physischen Speicherorganisation .................................... 143 12.4.1. Internes Schema (15 Minuten) ..................................................................................................................... 143 12.4.2. Physische Speicherorganisation (5 Minuten) ............................................................................................. 143 12.5. Meta-Entitätstypen, Data-Dictionary (20 Minuten) ............................................................................................ 143 Anhang 13. Tabellen, Verzeichnisse 145 147 13.1. Farben, Sonderzeichen und deren Bedeutung .................................................................................................. 147 13.2. Synonyme unterschiedlicher Systeme und Modelle .......................................................................................... 148 13.3. Kürzel der Datenmodellierung und Datenbanktechnik .................................................................................... 149 13.4. Kontrollfragen zum konzeptionellen Datenmodell ............................................................................................. 150 6 Inhaltsverzeichnis 14. Fragetypen der Checkfragen 151 15. Lösungen zu den Aufgaben 152 15.1. Checkfragen: 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank ...................... 152 15.1.1. Fragetyp E, kausale Verknüpfung ............................................................................................................... 153 15.1.2. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 153 15.2. Checkfragen: 3. Einführung in die Datenmodellierung ..................................................................................... 154 15.2.1. Fragetyp A, Einfachauswahl ........................................................................................................................ 154 15.2.2. Fragetyp E, kausale Verknüpfung ............................................................................................................... 154 15.2.3. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 154 15.3. Checkfragen: 4. Elementarinstrumente des konzeptionellen Datenmodells ................................................. 155 15.3.1. Fragetyp A, Einfachauswahl ........................................................................................................................ 155 15.3.2. Fragetyp B, Zuordnung ................................................................................................................................. 156 15.3.3. Fragetyp E, kausale Verknüpfung ............................................................................................................... 157 15.3.4. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 157 15.4. Bearbeitungsaufgaben: 4. Elementarinstrumente des konzeptionellen Datenmodells ............................... 158 15.4.1. KontoSys, Kontoverwaltungs-System ........................................................................................................... 158 15.4.2. RezeptSys, Rezeptverwaltungssystem ......................................................................................................... 159 15.5. Checkfragen: 5. Normalisierung von Entitätsmengen im konzeptionellen Modell ........................................ 161 15.5.1. Fragetyp A, Einfachauswahl ........................................................................................................................ 161 15.5.2. Fragetyp B, Zuordnung ................................................................................................................................. 161 15.5.3. Fragetyp E, kausale Verknüpfung ............................................................................................................... 162 15.5.4. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 162 15.6. Bearbeitungsaufgaben: 5. Normalisierung von Entitätsmengen im konzeptionellen Modell ...................... 164 15.6.1. Projektverwaltung ........................................................................................................................................... 164 15.6.2. Buchhandelssystem ........................................................................................................................................ 165 15.6.3. Wagenvermietung ......................................................................................................................................... 166 15.7. Checkfragen: 6. Verbundinstrumente des konzeptionellen Modells ............................................................... 169 15.7.1. Fragetyp A, Einfachauswahl ........................................................................................................................ 169 15.7.2. Fragetyp E, kausale Verknüpfung ............................................................................................................... 169 15.7.3. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 169 15.8. Bearbeitungsaufgaben: 6. Verbundinstrumente des konzeptionellen Modells ............................................. 171 15.8.1. Liversys .............................................................................................................................................................. 171 15.8.2. Transpo ............................................................................................................................................................. 175 15.9. Checkfragen: 8. Integrität im konzeptionellen Modell ....................................................................................... 180 15.9.1. Fragetyp A, Einfachauswahl ........................................................................................................................ 180 15.9.2. Fragetyp K, mehrfache Entscheidung ....................................................................................................... 180 15.10. Checkfragen: 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems........................... 181 15.10.1. Fragetyp A, Einfachauswahl ...................................................................................................................... 181 15.10.2. Fragetyp B, Zuordnung ............................................................................................................................... 182 15.10.3. Fragetyp E, kausale Verknüpfung ............................................................................................................. 183 15.10.4. Fragetyp K, mehrfache Entscheidung ..................................................................................................... 184 15.11. Bearbeitungsaufgaben: 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems ......... 185 15.11.1. Zugriffspfade .................................................................................................................................................. 185 15.11.2. Metadatenbank ........................................................................................................................................... 186 15.11.3. Deadlock im pessimistischen Verfahren ................................................................................................... 189 15.11.4. Locking im pessimistischen Verfahren ....................................................................................................... 190 15.11.5. Ablaufplan ..................................................................................................................................................... 192 15.11.6. Transaktionslogik und Programme ............................................................................................................. 193 15.12. Checkfragen: 10. Internes Datenmodell ............................................................................................................ 194 15.12.1. Fragetyp K, mehrfache Entscheidung ..................................................................................................... 194 15.13. Checkfragen: 11. Verteilung von Daten ............................................................................................................ 195 15.13.1. Fragetyp K, mehrfache Entscheidung ..................................................................................................... 195 15.14. 12. Fallbeispiel TTW ................................................................................................................................................. 196 15.14.1. Ist-Analyse: Datenmodell zur Anwendung TravelSys ermitteln (Bottom-Up) ....................................... 196 15.14.1.1. Ermittlung des Datenmodells zur Anwendung TravelSys .............................................................. 196 15.14.1.2. Normalisierung des Datenmodells ................................................................................................... 198 15.14.2. Soll-Konzept: Datenmodell mit neuen Anforderungen ergänzen (Top-Down) .................................. 201 15.14.2.1. Strukturierung der Reisen, Aggregation (Part-Of-Struktur / Stückliste) ........................................ 201 15.14.2.2. Zeitabhängige Daten und Varianten von Daten in Datenmodellen ......................................... 204 15.14.2.3. Mitarbeiter-Stamm, Spezialisierung/Generalisierung .................................................................... 206 15.14.3. Vorgehensentscheid Dateiverwaltung oder DBMS ................................................................................ 207 15.14.4. Ableiten des internen Schemas, Bestimmen der physischen Speicherorganisation ......................... 208 15.14.4.1. Internes Schema ................................................................................................................................. 208 15.14.4.2. Physische Speicherorganisation ....................................................................................................... 208 15.14.5. Meta-Entitätstypen, Data-Dictionary......................................................................................................... 209 Inhaltsverzeichnis 7 16. Literatur 211 17. Index 212 9 Teil 1: Einführung 10 Teil 1: Einführung 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 11 1. Zielsetzung, Zielgruppe, Voraussetzungen und Aufbau 1.1. Zielsetzung Dieses Dokument ermöglicht dem Leser folgende zwei Ziele zu erreichen: 1. Das Dokument vermittelt die Grundlagen der Datenmodellierung, so dass der Leser in der Lage ist, selbständig ein Datenmodell zu entwickeln und/oder dieses auf dessen Zweckmässigkeit und Qualität hin zu überprüfen. In den weiterführenden Kapiteln werden Spezialfälle und deren möglichen Lösungen gezeigt, so dass der Leser auch für komplexere Probleme der Modellierung gerüstet ist. 2. Des Weiteren soll dem Leser gezeigt werden, mittels welcher Methoden relationale Datenbanksysteme ihre Aufgaben lösen. Diese Kenntnisse dienen als Basis um zu zeigen, welche technischen Faktoren beim Einsatz eines Datenbanksystems zu berücksichtigen sind. Danach ist der Leser in der Lage, ein Datenmodell physisch auf einem Datenbanksystem zu realisieren und das Datenbanksystem in Programmen und Abfragen optimal zu nutzen (Effizienz, Performanz) bzw. dessen Leistung gezielt zu beeinflussen. Um diese Ziele zu erreichen, sind nach jedem Kapitel entsprechende Übungen und/oder Check-Fragen eingebettet. Diese Übungen ermöglichen es, den Inhalt der Kapitel selbständig zu erarbeiten und an konkreten, praxisorientierten Fällen zu vertiefen. Eine Erläuterung zu den Check-Fragen finden Sie im Kapitel '14. Fragetypen der Checkfragen' auf Seite 151. 1.2. Zielgruppe, Voraussetzungen Diese Dokumentation richtet sich an Entwickler (Informatik, Organisation, ...) und Anwender mit folgenden Aufgaben: 1. Datenmodellierung: Entwickler und Anwender, welche in ihrer Arbeit Datenmodelle lesen, erstellen oder verwalten müssen. 2. Programmierung: Entwickler, welche Programme und Abfragen für Datenbanksysteme entwickeln und warten. 3. Tuning: Entwickler, welche das Leistungsverhalten von Datenbanksystemen gezielt beeinflussen müssen. Zur Bearbeitung dieses Dokumentes sind folgende Kenntnisse empfohlen: 1. EDV-Grundkenntnisse. 2. Einfache Kenntnisse von Datenbanksystemen oder Dateiverwaltungssystemen (aber keine Kenntnisse der Datenmodellierung) Um einen Überblick über die wichtigsten verwendeten Begriffe zu erhalten, empfiehlt sich an dieser Stelle ein kurzes Studium des Kapitels '13.2. Synonyme unterschiedlicher Systeme und Modelle' auf Seite 148. 1.3. Aufbau des Dokuments Das Dokument ist derart aufgebaut, dass alle Kapitel gelesen und verstanden werden können, ohne über Kenntnisse der nachfolgenden Kapitel verfügen zu müssen. Damit kann das Dokument vom Start bis zum Ende linear durchgearbeitet werden. Dies bedingt allerdings, dass stellenweise die Erläuterung gewisser Grundkenntnisse der detaillierten Behandlung des Themas vorgezogen wird. Weiter sind Kapitel und Abschnitte, welche für den Anfänger ungeeignet sind, das heisst, welche bereits Erfahrungen in der Datenmodellierung benötigen oder welche detaillierte AusfühTeil 1: Einführung 12 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank rungen zu einem bestimmten Thema enthalten, mit dem Zeichen gekennzeichnet. Dadurch kann der Anfänger zunächst die Grundkenntnisse erarbeiten und später die Detailkenntnisse gezielt nacherarbeiten. 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank In diesem Kapitel wird die technologische Entwicklung von Datenbanksystemen gezeigt. Es eignet sich daher speziell für Leser, welche keine oder wenig Erfahrung mit Datenbanksystemen haben, um sich einen ersten Überblick zu verschaffen und den Einstieg zu erleichtern. Die Gliederung der Systeme, wie sie in den folgenden Unterkapiteln vorgenommen wird, kann in der Praxis nicht derart streng erfolgen. In der Realität sind die Grenzen verschwommen und können sich die gezeigten Eigenschaften vermischen. Die Beispiele müssen daher als Extreme einer kontinuierlichen technischen Entwicklung angesehen werden. Um den Vergleich und den Einstieg in die unterschiedlichen Systeme zu erleichtern, sei an dieser Stelle auf die Tabelle auf Seite 148 im Kapitel '13.2. Synonyme unterschiedlicher Systeme und Modelle' hingewiesen, in welcher die Begriffe der verschiedenen Systeme und Modelle einander gegenübergestellt werden. 2.1. Dateiverwaltungssysteme 2.1.1. Separate Dateiverwaltung Dateiverwaltungssysteme sind in unserem Sinne keine Datenbanksysteme. Bei primitiven Dateiverwaltungssystemen werden Dateien durch Programme verarbeitet, welche wieder Dateien als Ausgabe erzeugen. Die Dateien fliessen dabei förmlich durch die Programme. Der Datenfluss kann dabei mittels sogenannter Datenflussdiagramme grafisch dargestellt werden. Dieser Datenfluss beschreibt den logischen Ablauf (Reihenfolge) der Programme. Die innere Struktur der Datei wird hierbei im Programm selbst definiert (z.B. als 'File Of Record'). Müssen Änderungen in der Datenstruktur vorgenommen werden, so müssen sämtliche Programme, welche eine Datei dieser Struktur verarbeiten, angepasst werden. Zusätzlich treten bei dieser Verarbeitung viele Redundanzen (Mehrfachspeicherung der selben Information) auf. Dateiverwaltungssysteme mit dieser Arbeitsweise werden separate Dateiverwaltungssysteme genannt, weil der Zugriff auf die Daten durch jedes Programm selbständig erfolgt. Diese Art der Programmierung war zu Beginn in der Informatik der Normalfall und entsprach den technischen Gegebenheiten jener Zeit. 2.1.2. Gemeinsame Dateiverwaltung Um die schwerwiegendsten Mängel dieser primitiven Dateiverwaltungssysteme zu korrigieren, wurden in der Folge zentrale Programmmodule erstellt, welche den Zugriff auf die Daten handhabten. Diese Systeme werden daher gemeinsame Dateiverwaltungssysteme genannt. Zentrale Komponente dieser Systeme ist eine Sammlung von Programmmodulen (Bibliothek), welche den Zugriff auf die Daten steuern. Die Programme greifen dabei nicht mehr selbst und direkt auf die Daten zu, sondern nur noch mittels der Programmmodule (z.B. ' Les e_Name[ I N: Kunden_Nr , OUT: Kunden_Name] '). Je nach Reife des Dateiverwaltungssystems werden damit bereits beträchtliche Vorteile errungen. Prinzipiell könnten damit alle unerwünschten Redundanzen verhindert werden. Die eigentlichen Programme müssten keinerlei Strukturinformationen (Rekordstruktur) beinhalten. Systeme mit gemeinsamer Dateiverwaltung sind in der Regel auf bestimmte Aufgabenbereiche zugeschnitten (z.B. Verwaltung von grafischen Objekten) und dabei durchaus leistungsfähig. Allerdings weisen diese Systeme weitere gravierende Mängel auf, welche deren Einsatz im Allgemeinen verunmöglichen (z.B. kein Mehrbenutzerbetrieb, keine Transaktionslogik, etc.). Teil 1: Einführung 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 13 2.2. Datenbanksysteme 2.2.1. Hierarchische Datenbanksysteme In einem nächsten Schritt wurden Datenbanksysteme (auch Datenbankmanagementsystem) (Englisch: Database Management System, Kurzform: DBMS) entwickelt, welche grundsätzlich unabhängig von vorgegebenen Aufgabenbereichen eingesetzt werden können. Diese Systeme betrachten die einzelnen Dateien dabei nicht nur als isolierte Einzelstücke, sondern berücksichtigen auch die Beziehungen zwischen den Dateien (z.B. zwischen dem Kunden und dessen Aufträgen). Hierarchische Datenbanksysteme sind die ältesten Systeme. Sie erlauben nur Beziehungen mit hierarchischem Charakter darzustellen, dabei kann die entstehende Datenstruktur als Baum dargestellt werden (siehe Figur: 'Datenmodell eines hierarchischen Datenbanksystem'). Bei hierarchischen Beziehungen kann ein übergeordneter Knoten mehrere untergeordnete Knoten haben, ein untergeordneter Knoten hat aber höchstens einen übergeordneten Knoten. Dadurch können Kunden Aufträge und Rechnungen haben, die Aufträge können aber nur den Kunden untergeordnet werden. Die Beziehungen zwischen den Daten werden hierfür in der Regel mittels physischer Adresszeiger (Pointer) erstellt. Darin widerspiegelt sich auch die Nähe dieser Systeme zur technischen Lösung. Die Verarbeitung der Daten erfolgt, indem in den Programmen diesen Adresszeigern gefolgt wird. Diese Verarbeitungsart in den Programmen wird Navigation genannt. Kunden Aufträge Rechnungen Auftragspositionen Figur 1: Datenmodell eines hierarchischen Datenbanksystems Mittels hierarchischer Systeme können komplexe Datenstrukturen aber nicht ohne gravierende Redundanzen abgebildet werden. Rein hierarchische Systeme waren daher auf Dauer den Anforderungen der Praxis nicht gewachsen. Hierarchische Datenbanksysteme in Reinkultur existieren daher nicht mehr. Ursprünglich hierarchische Datenbanksysteme wie IMS (Information Management System) bieten heute Erweiterungen, welche diesen schwerwiegenden Mangel beseitigen. 2.2.2. Netzwerkartige Datenbanksysteme Netzwerkartige Systeme eliminieren den entscheidenden Mangel, welcher den hierarchischen Systemen eigen war. Sie erlauben nicht nur hierarchische Datenstrukturen, sondern beliebige netzwerkartige Datenstrukturen (auch Plexstruktur genannt). Dadurch konnten in Datenbanksystemen erstmals Datenstrukturen ohne Redundanzen abgebildet werden. Überdies sind die netzwerkartigen Datenbanksysteme technologisch noch eng mit den hierarchischen Systemen verwandt. So wird in den Programmen zur Verarbeitung der Daten noch immer navigiert. Wichtigster Standard für Netzwerkdatenbanken ist das CODASYL-DBTG-Modell. Das CODASYLDBTG-Modell enthält eine Datenbeschreibungskomponente und eine Datenmanipulationssprache. Teil 1: Einführung 14 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank Kunden Artikel Aufträge Rechnungen Auftragspositionen Figur 2: Datenmodell eines netzwerkartigen Datenbanksystems Netzwerkartige Datenbanksysteme sind zwar effizient und ausgereift, doch hat eine Reihe von Mängeln dem relationalen Ansatz zum Durchbruch verholfen. So erfordert der Gebrauch der Datenbanksprache netzwerkartiger Systeme hohe Kenntnisse des realisierten Datenmodells und kann durch den Benutzer nicht angewendet werden. Auch sind Strukturänderungen der Daten mit grossem Aufwand verbunden, da die Daten mittels physischer Adresszeiger verknüpft werden. 2.2.3. Relationale Datenbanksysteme Während sich das hierarchische und das netzwerkartige Datenbanksystem an der technischen Lösung orientieren, löst sich das relationale Datenbanksystem vom technischen Ansatz. Ausgangsidee ist, dass alle (wirklich alle) Daten in Relationen (auch Tabellen genannt), ähnlich wie in einer Tabellenkalkulation, festgehalten werden (einfache Lösungen sind gute Lösungen). Die Darstellung der Daten mittels Relationen ist für Benutzer und Entwickler einfach und klar verständlich. Selbst die Verknüpfung der Daten erfolgt nicht mehr mittels physischer Adresszeiger, sondern mittels identischer Feldeinträge. So wird zum Beispiel in einem Auftrag (Datensatz, bzw. Tupel) mittels dem Attribut (Feld, bzw. Spalte) Kunden# auf den Kunden verwiesen, zu welchem der Auftrag gehört. Das Attribut Kunden# wird in der Relation Auftrag durch seine spezifische Aufgabe als Fremdschlüssel bezeichnet. Dieser Lösungsansatz wurde von Edgar F. Codd ausgearbeitet und mit einer fundierten Theorie ausgestattet: Kunden Kunden# 1 2 Name Maier Müller PLZ 8001 8001 Ort Zürich Zürich Rechnungen Rechnungs# Kunden# 32 1 33 2 Datum 4. März 4. März Betrag 2'778,00 211,50 Aufträge Auftrags# 254301 254302 244692 Kunden# 1 1 2 Teil 1: Einführung Auftragsdatum 4. März 4. März 4. März 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 15 Artikel Artikel# Bezeichnung 2531 7121 2644 4623 Monitor XP 34-3 Monitor XP 34-4 Diskette XDS Tastatur HG/3 Preis 1'090,00 1'490,00 4,50 99,00 Lagerbestand 6,00 5,00 5'465,00 12,00 Auftragspositionen Auftrags# 254301 254301 254302 244692 244692 Artikel# 2531 7121 4623 2644 4623 Bestellmenge Rechnungsbetr. 1,00 1'090,00 1,00 1'490,00 2,00 198,00 25,00 112,50 1,00 99,00 Tabellen 1: Datendarstellung in relationalen Datenbanksystemen Ein Datenbanksystem ist, gemäss Codd [Codd 70], minimal relational, wenn dessen Funktionalität mindestens folgende drei Konzepte enthält: 1. Die gesamten Informationen sind einheitlich in Relationen (Tabellen) abgelegt. 2. Der Benutzer sieht keine Verweisstrukturen (keine physischen Adresszeiger) zwischen den Relationen. 3. Es sind Operationen zur Auswahl von Zeilen (Selektion) und Auswahl von Spalten (Projektion), sowie zur Verbindung (Join) von Relationeneinträgen definiert. Datenbanksysteme sind nur dann voll relational, wenn sie über die genannten Konzepte hinaus bestimmte Integritätsbedingungen selbständig überprüfen und wenn zusätzliche, ergänzende Datenbankoperationen zur Verfügung stehen. Die Struktur der Daten selbst kann natürlich auf die selbe grafische Art und Weise wie im Beispiel der netzwerkartigen Datenbank dargestellt werden. An dieser Stelle werden noch nicht alle Details relationaler Datenbanksysteme gezeigt. Diese werden später noch ausführlich besprochen. 2.2.4. Begriff Datenbank In der Praxis werden die Begriffe Datenbasis, Datenbanksystem (auch Datenbankverwaltungssystem) und Datenbank leider mehr oder weniger willkürlich verwendet, dabei sind die Begriffe klar definiert. Datenbank: Das Datenbanksystem (DBMS) bildet zusammen mit dem Datenbestand (Datenbasis) die Datenbank. Datenbanksysteme können in drei wesentliche Komponenten gegliedert werden. Diese Dreigliederung wird im Folgenden immer wieder verwendet werden: 1. Manipulationskomponente: Die Manipulationskomponente erlaubt die Verarbeitung der Benutzerdaten. Die Verarbeitung kann hierbei mengenorientiert (d.h. mehrere Datensätze pro Befehl) erfolgen (beispielsweise in SQL). Die Sprache zu dieser Komponente wird Datenmanipulations-Sprache, bzw. DML (Englisch: Data Manipulation Language) genannt. 2. Strukturierungskomponente: Mittels dieser Komponente wird die Struktur der Benutzerdaten verwaltet. Diese Strukturinformationen werden in der relationalen Datenbank ebenfalls in Relationen abgelegt. Die Sprache, mittels welcher die Struktur Teil 1: Einführung 16 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank definiert wird, wird Datendefinitions-Sprache oder Datenbeschreibungs-Sprache, bzw. DDL (Englisch: Data Definition Language oder Data Description Language) genannt. 3. Integritätskomponente: Diese Komponente stellt die Integrität (Widerspruchsfreiheit) der Daten sicher. So werden z.B. die Verknüpfung der Daten und benutzerdefinierte Integritätsregeln durch das Datenbanksystem kontrolliert. Die Sprache, mittels welcher die Integritätsregeln definiert werden, wird Datenkontroll-Sprache, bzw. DCL (Englisch: Data Control Language) genannt. Im Idealfall existiert eine einzige, einheitliche Sprache, welche alle drei Komponenten umfasst (z.B. SQL). 2.2.5. Eigenschaften von Datenbanken In Datenbanken sind eine Reihe von wichtigen Eigenschaften integriert worden. Diese wichtigen Eigenschaften haben Datenbanksystemen zu ihrer weiten Verbreitung verholfen: Redundanzarme, strukturierte Datenbasis: Im Gegensatz zu Dateiverwaltungssystemen werden die Daten mit möglichst wenig Redundanzen (diese werden allenfalls zur Steigerung der Performance eingeführt) und in strukturierter Form abgelegt. Mehrbenutzerbetrieb: Datenbanksysteme koordinieren den gleichzeitigen, gemeinsamen Zugriff mehrerer Benutzer auf den selben Datenbestand und vermitteln dem Benutzer den Eindruck, die Daten als einziger zu verwenden. Integritätssicherung: Das Datenbanksystem kontrolliert die Daten auf Widerspruchsfreiheit (Datenkonsistenz), bewahrt vor physischer Verfälschung, bzw. Verlust (Datensicherheit) und schützt die Daten vor unerlaubten Zugriffen (Datenschutz). Verteilte Datenbanken: Daten können auf verschiedene Systeme (physisch und logisch) verteilt und dennoch durch alle Benutzer gemeinsam genutzt werden. Logische und physische Datenunabhängigkeit (Englisch: Data Independence): Strukturänderungen der Benutzerdaten (logische Datenunabhängigkeit, z.B. Änderungen an Feldformaten) und Änderungen der physischen Organisation der Daten (physische Datenunabhängigkeit, z.B. Speicherbereiche, Speichersatztypen, Indizes) haben, soweit möglich, keinen Einfluss auf bestehende Programme. Das 3-Schema-Modell von ANSI/SPARC (siehe '3.2. Gliederung des Datenmodells gemäss ANSI-SPARC' auf Seite 19) bezweckt im Kern die Realisierung der Datenunabhängigkeit. Teil 1: Einführung 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 17 2.3. Checkfragen Die im folgenden verwendeten Fragetypen sind im Kapitel '14. Fragetypen der Checkfragen' auf Seite 151 erklärt. Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 152. 2.3.1. Fragetyp A, Einfachauswahl 1. Für hierarchische und netzwerkartige Datenbanksysteme gilt: 2. hierarchisches DBMS netzwerkartiges DBMS relationales DBMS integrative DBMS verteilte Datenbanken A) B) C) D) E) hierarchisches DBMS netzwerkartiges DBMS relationales DBMS in keinem werden Beziehungen durch Adresszeiger dargestellt bei allen A) B) C) D) E) ein beliebiges Datenbankverwaltungssystem. ein relationales Datenbankverwaltungssystem. ein beliebiges Datenbankverwaltungssystem und dessen Datenbasis. ein relationales Datenbankverwaltungssystem und dessen Datenbasis. ein beliebiges Datenbankverwaltungssystem und die verwendete Hardware. Eine DML ist... 7. A) B) C) D) E) Eine Datenbank ist... 6. Die DML wird zur Definition der Datenstruktur relationaler Datenbanksysteme verwendet Im relationalen Datenbanksystem werden alle Daten in Relationen festgehalten Die Daten werden baumstrukturiert abgelegt Der Fremdschlüssel identifiziert die Zeilen (Tupel) der Tabellen eindeutig Relationale Datenbanken können die physische Datenunabhängigkeit nicht gewährleisten In welchem Datenbanksystem werden Beziehungen auf der logischen Ebene nicht durch Adresszeiger (Pointer) dargestellt? 5. A) B) C) D) E) Bei welchem DBMS wird in den Programmen nicht navigiert? 4. Daten lassen sich immer redundanzfrei ablegen Sämtliche in der Realität auftretenden Datenstrukturen lassen sich darin 1:1 abbilden Die Daten werden immer baumstrukturiert abgelegt Strukturänderungen der Daten können nur mit grossem Aufwand vollzogen werden Benutzer können Daten einfach abfragen Für das relationale DBMS gilt: 3. A) B) C) D) E) A) B) C) D) E) eine 3. Generationssprache. eine Menge von Tupeln. eine Sprache zur Manipulation von Datenbeständen. eine Datei zum Protokollieren von Zugriffen. eine Konsistenzbedingung. Welche Eigenschaft weist eine Datenbank nicht auf? A) B) C) D) E) Trennung der Daten von den Anwendungen physische Datenabhängigkeit der Anwendungsprogramme dauerhafte Nutzung der Daten spezifische Datensichten für verschiedene Benutzer Strukturierung der Daten (kontrollierte Redundanz) Teil 1: Einführung 18 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 2.3.2. Fragetyp E, kausale Verknüpfung 1. In der heutigen Zeit empfiehlt sich in jedem Fall der Einsatz eines Datenbankmanagementsystems, weil die Integrität der Daten durch ein Datenbankmanagementsystem von Anfang an sichergestellt ist. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 2.3.3. Fragetyp K, mehrfache Entscheidung 1. Welche Aussagen sind für die Dateiverwaltung im Vergleich zum DBMS korrekt? + Die Dateiverwaltung hat einen kleineren Aufwand (Rechenzeit) während des Betriebs. Die Dateiverwaltung hat einen kleineren Aufwand (Arbeitszeit Entwickler) während der Entwicklung und Wartung von Anwendungen. Die Dateiverwaltung erlaubt ein einfacheres, besseres Sicherstellen der Integritätsanforderungen. Die mit Dateiverwaltungssystemen entwickelten Anwendungen sind flexibler gegenüber zukünftigen Entwicklungen. Teil 1: Einführung 3. Einführung in die Datenmodellierung 19 3. Einführung in die Datenmodellierung 3.1. Begriff Datenmodell Der Begriff Datenmodell ist in der Praxis mit zwei voneinander abweichenden Bedeutungen belegt: 1. Datenmodellierungsmethode: Mittels dieser können Struktur, Inhalt und ergänzende semantische Aspekte des Datenbestandes entwickelt und festgehalten werden. Hierfür wurden in der Praxis unterschiedliche Methoden entwickelt. Eine der bekanntesten und verbreitesten Methoden ist das Entity-Relationship-Modell (mit vielen Varianten). 2. Datenstruktur: Die Datenstruktur zeigt den Aufbau der Daten eines Datenbestandes. Die Daten selbst werden in der Datenstruktur nicht festgehalten, lediglich deren Aufbau. In der Regel werden in der Datenstruktur auch logische Datenbanktransaktionen und Integritätsregeln definiert. Diese Doppelbelegung des Begriffs Datenmodell bereitet in der Praxis selten Schwierigkeiten. Die Bedeutung ergibt sich aus dem Kontext. 3.2. Gliederung des Datenmodells gemäss ANSI-SPARC Aufgrund der Komplexität sowie der unterschiedlichen Sichtweisen der im Modellierungsprozess betroffenen Personen (Anwender, Entwickler, DBA, ...), drängt sich eine den Sichtweisen der Personen angepasste Darstellung und Gliederung des Modells (Datenstruktur) auf. Hierbei hat sich ein Modell (Datenmodellierungsmethode), das 3-Schema-Modell oder auch 3-SchemaKonzept des ANSI-SPARC-Komitees durchgesetzt (1977). Diese Datenmodellierungsmethode unterscheidet, wie der Name schon sagt, 3 Ebenen. Hierbei wird für jede Ebene eine der Sichtweise angepasste Datenstruktur bzw. Datenstrukturen erstellt. Hier erfolgt eine kurze Erklärung dieser Ebenen, später werden diese Ebenen anhand von Beispielen ausführlich behandelt. 1. Konzeptionelle Ebene: Diese stellt die gesamte Datenstruktur der Unternehmung dar (unternehmensweites Datenmodell). Dabei wird dieses Modell unabhängig vom zu verwendenden Datenbanksystem und Hardware erstellt. Damit ist das konzeptionelle Modell frei von technischen Details und kann auch erstellt werden, wenn das Zielsystem noch nicht bekannt ist. In dieser Ebene wird daher noch keine Rücksicht auf Performance oder Datenmengen genommen, diese Aspekte werden nur in der internen, physischen Ebene berücksichtigt (siehe unten). In der konzeptionellen Ebene wird versucht, ein möglichst realitätsnahes Datenmodell zu erstellen, welches keine Redundanzen aufweist. Auf dieser Ebene werden die Fachbegriffe der Anwendung eindeutig definiert. Dadurch bildet die konzeptionelle Ebene eine einheitliche, gemeinsame sprachliche Basis für alle am Projekt beteiligten Personen. Diese Ebene bildet in der Regel die Ausgangsbasis, um die Datenmodelle der beiden anderen Ebenen zu bilden. Innerhalb eines Projektvorgehens steht daher die Erstellung des konzeptionellen Datenmodells in aller Regel vor der Erstellung der Modelle der beiden anderen Ebenen. 2. Externe, logische Ebene: Auf der externen Ebene wird dargestellt, wie die Daten dem Benutzer präsentiert werden. Der Benutzer kann hierbei eine ganz andere Sichtweise auf die Daten einnehmen, als diese im konzeptionellen Modell abgelegt sind. Auch wird er in der Regel mehrere Sichten auf das selbe Modell einnehmen, je nach Problemstellung. Auf der externen Ebene werden daher für das konzeptionelle Modell viele, problemspezifische Teilsichten gebildet. In der Praxis wird für diese externen Sichten häufig der Fachbegriff View verwendet. Der Begriff logische Ebene sollte vermieden werden, da dieser nicht einheitlich verwendet wird. Teil 1: Einführung 20 3. Einführung in die Datenmodellierung 3. Interne, physische Ebene: Diese Ebene stellt dar, wie die Daten mit Hilfe des Datenbanksystems physisch organisiert werden sollen. Das interne Modell wird in der Regel vom konzeptionellen Modell abgeleitet. Wurden technische Aspekte beim Erstellen des konzeptionellen Modells vernachlässigt, so stehen diese jetzt im Zentrum der Überlegungen. Durch eine genaue Kenntnis des Datenbanksystems (z.B. ein relationales Datenbanksystem), der Datenmengen, der Zugriffshäufigkeiten und vieler Details mehr, wird versucht, ein 'optimales' internes Modell zu bilden. Die Performance der späteren Datenbankoperationen ist vom abgeleiteten internen (nicht aber vom konzeptionellen) Modell abhängig. Auch hier muss ein Kompromiss vieler widersprüchlicher Ziele gefunden werden. Eine wichtige Anforderung an Datenbanksysteme und Entwicklungsumgebungen ist es, diesen Optimierungsprozess auch noch während des normalen Betriebes zu ermöglichen und zu unterstützen. 1. externe Datensicht 2. externe Datensicht konzeptionelles Datenm odell interne Datenstruktur (z.B. relational) weitere externe Datensichten externe Ebene konzeptionelle Ebene physische, interne Ebene Figur 3: 3-Schema-Modell nach ANSI-SPARC Diese Gliederung des Datenmodells ist in den folgenden Kapiteln entscheidend. Vorerst wird einzig von der konzeptionellen Ebene Gebrauch gemacht, in welcher das konzeptionelle Datenmodell erstellt wird. Erst anschliessend wird, nach der Erklärung der Arbeitsweise von Datenbanksystemen, gezeigt, wie dieses konzeptionelle Modell in ein internes Modell abgebildet wird. Die Dreiteilung des Datenmodells wurde auch in viele Modellierungsmethoden als fester Bestandteil integriert. Im folgenden Bild werden die unterschiedlichen Datenmodelle der verschiedenen Ebenen an einem einfachen Beispiel gezeigt: Teil 1: Einführung 3. Einführung in die Datenmodellierung 21 externe Datensichten: Kunden Artikel Aufträge Aufträge Auftragspositionen konzeptionelles Datenm odell: Kunden Artikel Aufträge Rechnungen Auftragspositionen physisches, internes Datenm odell: Kunden Artikel Aufträge Rechnungen Auftragspositionen Figur 4: 3-Schema-Modell mit Beispielmodellen Die externen Sichten erlauben dabei eine völlig individuelle Sicht auf die Daten. So könnte z.B. die zweite externe Sicht in Tabellenform dem Benutzer oder Entwickler wie folgt präsentiert werden: Aufträge Auftrags# 254301 254301 254302 244692 244692 Kunden# 1 1 1 2 2 Artikel# 2531 7121 4623 2644 4623 Bestellmenge Bezeichnung 1,00 1,00 2,00 25,00 1,00 Monitor XP 34-3 Monitor XP 34-4 Tastatur HG/3 Diskette XDS Tastatur HG/3 Tabellen 2: Externe Sicht in Tabellendarstellung Stellenweise wird gefordert, dass die interne Ebene eine weitere Gliederung erhalten soll, da in dieser Ebene Aspekte des Datenbanksystems auf der einen Seite und Aspekte des Betriebssystems und der Hardware auf der anderen Seite vermischt werden. Diese weitere VerTeil 1: Einführung 22 3. Einführung in die Datenmodellierung feinerung wird in den späteren Kapiteln nicht weiter berücksichtigt, da im folgenden nur allgemein Bezug auf Betriebssysteme und Hardware genommen werden kann. Auch spielt die Verteilung der Daten auf mehrere Datenbanksysteme eine zunehmend wichtige Rolle, so dass auch dieser Teilaspekt bei der Herleitung des internen Schemas berücksichtigt werden muss. 3.3. Begriff und Zielsetzung der Datenmodellierung In der Datenmodellierung wird festgelegt, wie die Daten einer Anwendung konzeptionell strukturiert werden, wie diese Datenstruktur mittels eines Datenbanksystems physisch organisiert wird und wie diese Daten dem Benutzer präsentiert werden. In diesem Vorgang müssen verschiedene, zum Teil in sich widersprüchliche Zielsetzungen und Bedürfnisse befriedigt werden, z.B.: Das Datenmodell muss die notwendigen Informationen der Anwendung vollständig darstellen können; dabei ist die Bestimmung der Systemgrenzen wichtig. Mit den gespeicherten Informationen im Datenmodell müssen sämtliche Funktionen (logische Datenbanktransaktionen, Geschäftsprozesse) der Anwendung ausführbar sein. Eine Modellierung ohne jegliche Kenntnis der grundsätzlich gewünschten Funktionalität der Anwendung kann daher kein zweckmässiges Datenmodell liefern. Das Datenmodell soll derart gebildet werden, dass auch zukünftige Bedürfnisse befriedigt werden können. Antwortzeiten und Datenmengen des Systems sind von Fall zu Fall ebenfalls zu berücksichtigen. Das Erstellen eines Datenmodells kann daher kein fest vorgegebener, streng mathematischer Ablauf sein. Es ist viel mehr ein kreativer Prozess, in welchem die Abstraktion eine wichtige Rolle spielt und in welchem immer und immer wieder die Vor- und Nachteile unterschiedlicher Lösungsansätze verglichen werden. Der Datenmodellierer muss daher über Kreativität, Abstraktionsvermögen, Ausdauer und Erfahrungen über Vor- und Nachteile unterschiedlicher Lösungsvarianten verfügen. Aus den vorhergehenden Erläuterungen geht auch hervor, dass es kein Standarddatenmodell geben kann, welches die Bedürfnisse einer bestimmten Branche unternehmensspezifisch abdeckt. Bei der Verwendung von Standarddatenmodellen stellen sich die selben Probleme, wie beim Einsatz von Standardsoftware. Das Standarddatenmodell sollte den entsprechenden Bedürfnissen des Unternehmens angepasst werden. 3.4. Datenmodellierung als Teil des Informatikprojektes Die Datenmodellierung ist meist Teil eines Informatikprojektes. Die Bildung des Datenmodells müsste daher korrekterweise im Umfeld eines Informatikprojektes dargestellt werden. Darauf wird in den folgenden Kapiteln aber verzichtet. Die Beschreibung der Datenmodellierung kann dadurch wesentlich kompakter und zielstrebiger erfolgen. Als Nachteil ergibt sich, dass die Berücksichtigung der durch das Datenmodell zu realisierenden logischen Funktionen (logische Datenbanktransaktion, Geschäftsprozesse) vernachlässigt wird und dadurch der Eindruck entstehen könnte, Datenmodellierung müsse die zu realisierenden Funktionen nicht kennen. In Tat und Wahrheit werden beim Modellieren im Hinterkopf aber immer auch diese Funktionen berücksichtigt. Ausserdem werden in den gezeigten Beispielen immer Freiräume offen bleiben, da nicht die gesamten notwendigen Informationen vorhanden sind und bei Problemen kein Anwender die offenen Fragen beantworten kann. Teil 1: Einführung 3. Einführung in die Datenmodellierung 23 3.5. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 154. 3.5.1. Fragetyp A, Einfachauswahl 1. Die Ebene des 3-Schema-Konzepts des ANSI-SPARC-Komitees, in welcher die Leistung des DBMS bzw. der Anwendung wesentlich beeinflusst wird, ist... A) B) C) D) E) die externe Ebene. die konzeptionelle Ebene. die interne Ebene. keine der Ebenen. alle Ebenen. 3.5.2. Fragetyp E, kausale Verknüpfung 1. Für das konzeptionelle Datenmodell sind leistungsbestimmende Überlegungen nicht erwünscht bzw. notwendig, weil der Benutzer bei der Entwicklung des konzeptionellen Modells einbezogen wird. A) 2. C) +/- D) -/+ E) -/- +weil+ B) +/+ C) +/- D) -/+ E) -/- +weil+ B) +/+ C) +/- D) -/+ E) -/- Die externe Ebene wird auch Benutzersicht (View) genannt, weil der Benutzer die Daten sieht, wie sie physisch gespeichert sind. A) 5. B) +/+ Das konzeptionelle Datenmodell soll frei von technischen Details sein, weil das interne Datenmodell sich nicht aus dem konzeptionellen Datenmodell ableiten lässt. A) 4. Im konzeptionellen Datenmodell wird nicht auf die Datenmengen geachtet, weil erst im physischen Design (internes Datenmodell) die Datenstruktur mit Hilfsorganisationen zur Ablaufbeschleunigung ergänzt wird. A) 3. +weil+ +weil+ B) +/+ C) +/- D) -/+ E) -/- Das konzeptionelle Datenmodell ist Grundlage für die Ableitung der physischen und externen Datenstrukturen, weil das konzeptionelle Datenmodell neutral gegenüber Einzelanwendungen und deren lokaler Sicht ist. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 3.5.3. Fragetyp K, mehrfache Entscheidung 1. Zählen Sie die Merkmale des konzeptionellen Datenmodells auf: + Berücksichtigt Hardwareüberlegungen Nach Ablauf dieser Phase steht das endgültige Datenbankdesign fest Dient als Grundlage für Entwurf und Betreuung der übrigen Schemata Realisiert eine erste Stufe der Zugriffsbefugnisse Teil 1: Einführung 25 Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 27 4. Elementarinstrumente des konzeptionellen Datenmodells Beim Erstellen des konzeptionellen Datenmodells werden in sämtlichen Modellierungsmethoden wenige, einfache Elementarinstrumente verwendet. Einzelne Methoden bilden daraus dann weitere Grundstrukturen in ihrer Methodik. In diesem Abschnitt sollen vier Elementarinstrumente sowie deren Bedeutung eingeführt werden. Die Elementarinstrumente sind die Elemente zur Bildung der Datenstruktur (gleich Datenmodell). Die Begriffe Elementarinstrument und Verbundinstrument, wie sie später eingeführt werden, sind keine in der Datenmodellierung üblicherweise verwendeten Begriffe. Sie eignen sich aber dazu, den Sachverhalt besser zu gliedern, um damit die dahinterliegenden Konzepte besser zu verstehen. Die im folgenden Kapitel eingeführten vier Elementarinstrumente finden sich auch im EntityRelationship-Modell (zu Deutsch etwa: Entitäten-Beziehungs Modell). Diese Begriffe werden im Folgenden immer dann verwendet, wenn sich die Ausführungen auf die konzeptionelle Ebene (siehe '3.2. Gliederung des Datenmodells gemäss ANSI-SPARC' auf Seite 19) beziehen. Die Tabelle '13.2. Synonyme unterschiedlicher Systeme und Modelle' auf Seite 148 erleichtert Ihnen den Einstieg, falls Sie diese Begriffe noch nicht kennen, aber mit einer anderen Systematik vertraut sind. Die Elementarinstrumente Wertebereich und Attribut werden in Unterkapiteln zusätzlich nach bestimmten Eigenschaften charakterisiert. Bei dieser Charakterisierung werden Eigenschaften, welche Teil des relationalen Modells sind, verwendet. Diese Typen erlauben ein grundlegenderes Verständnis des konzeptionellen Modells, sind in der Praxis verbreitet, sind Grundlage für die nachfolgende Normalisierung und erleichtern anschliessend die Herleitung des internen Modells. Dies ist Grund genug, diese bereits an dieser Stelle einzuführen. 4.1. Entität, Entitätsmenge Eine Entität (Englisch: Entity) ist ein einzelnes, in sich geschlossenes Objekt (Synonyme: Record, Tupel, Datensatz). Eine einfache, einleuchtende Definition ist schwierig, da eine klare Abgrenzung zu den anderen Instrumenten zum Teil schwer fällt und erst im konkreten Fall entschieden werden kann, was Entität ist und was nicht (dies wird im Weiteren noch besser verständlich). Häufig ist jedoch sofort klar, was in einem konkreten Projekt Entitäten sind. Mittels Beispielen von möglichen Entitäten soll der Begriff näher erläutert werden: Person: Der Kunde mit Kundennummer K-003432, namens Müller Rolf Reales Objekt: Die Aktie der Firma ISAG mit Nummer 023453 Abstraktes Objekt: Das Aktiendepot mit Nummer DP-Akt-005625 des Kunden K-003432 Ereignis: Der Kauf der Aktie Nr. 023453 für den Kunden K-003432 Entität: Eine Entität ist ein in sich geschlossenes Ding, für welches bestimmte Eigenschaften (Daten) gelten. Entitäten müssen mittels bestimmter Eigenschaften eindeutig identifiziert werden können. Bei der Modellierung werden nicht die einzelnen Entitäten dargestellt (was vollständig auch gar nicht möglich wäre), sondern es werden Mengen aus Entitäten gleicher Art gebildet, sogenannte Entitätsmengen (Englisch: Entity Set). Unseren Beispiel-Entitäten werden Entitätsmengen zugeordnet: Personen: Kunden Reale Objekte: Aktien Abstrakte Objekte: Aktiendepots Ereignisse: Aktienkäufe Teil 2: Konzeptionelle Datenmodellierung 28 4. Elementarinstrumente des konzeptionellen Datenmodells Entitätsmenge: Eine Entitätsmenge ist eine Menge von Entitäten, welche die selben Eigenschaften aufweisen. Die Entitätsmengen werden im grafischen Modell als Rechtecke dargestellt: Kunden Figur 5: Darstellung von Entitätsmengen In der Praxis werden die Begriffe Entität und Entitätsmenge leider häufig als Synonyme verwendet. Eine klare Trennung der Begriffe ist aber zweckdienlich, da z.B. eine Schulklasse eine einzelne Entität sein kann, aber auch eine Entitätsmenge, nämlich eine Menge von Schülern. Im zweiten Fall ist der Schüler die Entität. Auch die Namensgebung (Entitätsmengen werden im Modell benannt) ist nicht einheitlich. So werden Entitätsmengen im Singular (z.B. Kunde, Aktie, ...) aber auch im Plural (z.B. Kunden, Aktien, ...) benannt. Dies hat aber auf das Verständnis des Datenmodells meist wenig Einfluss. Wichtig für das Verständnis ist hingegen die Wahl eines sinnvollen, ausdrucksvollen Namens für die Entitätsmenge. Im Folgenden wird immer die Pluralform verwendet, da diese weniger missverständlich ist. Entitäten und Entitätsmengen können zusätzlich als unabhängige oder abhängige Entitäten bzw. Entitätsmengen klassifiziert werden. Eine abhängige Entität ist von der Existenz einer anderen Entität abhängig, kann also nur dann existieren, wenn diese referenzierte Entität auch existiert. Eine abhängige Entitätsmenge ist eine Menge von abhängigen Entitäten gleicher Art. Als Beispiel für eine abhängige Entität kann z.B. das Aktiendepot DP-Akt-005625 dienen. Es darf nur dann im System existieren, wenn diesem ein Kunde (Eigentümer) zugeordnet ist (Depots ohne Eigentümer gibt es nicht). Unterschiedliche Datenmodelle haben weitere Methoden zur Klassifizierung der Entitätsmengen entwickelt, diese lassen wir zunächst ausser Betracht. Später werden wir Entitätsmengen und die sie umgebenden Entitätsmengen betrachten und hierbei eine weitere Klassifizierung vornehmen. 4.2. Beziehung, Beziehungsmenge Bisher sind die Entitätsmengen ohne Verknüpfung zueinander dargestellt worden. Mittels Beziehungen (Beziehungsmengen = Menge aus Beziehungen der selben Art) werden diese Verknüpfungen im Datenmodell dargestellt. So wird zum Beispiel festgehalten, dass einem Depot immer ein Kunde zugeordnet ist und ein Kunde mehrere Depots haben kann. Leider findet man in der Praxis zwei voneinander abweichende Varianten zur Darstellung der Beziehungen zwischen den Entitätsmengen. In den folgenden zwei Unterkapiteln werden diese beiden Varianten erläutert. 4.2.1. Die Beziehung im Entity-Relationship-Modell Die Beziehungsmenge (Englisch: Relationship Set; der Begriff Relation wird im relationalen Modell für Entitätsmengen verwendet und wird daher im Entity-Relationship-Modell vermieden) stellt die Verknüpfung zwischen zwei oder mehr Entitätsmengen her. So wird z.B. mittels der Beziehungsmenge 'Depotinhalt' festgehalten, welche Aktien im Depot (eines Kunden) abgelegt sind (siehe Figur unten). Andererseits ist damit auch festgehalten, in welchen Depots eine bestimmte Aktie abgelegt ist. Entitätsmengen werden nicht direkt miteinander verbunden, sondern werden immer und ausschliesslich mittels einer Beziehungsmenge verknüpft. Zusätzlich wird festgehalten, wie viele Entitäten der einen Entitätsmenge einer Entität der anderen Entitätsmenge zugeordnet sind (und umgekehrt, Notation wird später erläutert). Grafisch werden Entitätsmengen als Rechtecke, Beziehungsmengen als Rhomben dargestellt. Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 29 Sachbearbeiter betreuen Betreuung betreut durch Kunden besitzen KundenDepots gehören Depots Aktien deponiert in enthalten Depotinhalt Figur 6: Datenmodellgrafik im Entity-Relationship-Modell So wird z.B. in unserem Mini-Modell festgehalten, dass: ein Sachbearbeiter einen oder mehrere Kunden betreuen kann ein Kunde durch keinen oder einen Sachbearbeiter betreut werden kann ein Kunde kein, ein oder mehrere Depots besitzen kann ein Depot genau zu einem Kunden gehört ein Depot keine, eine oder mehrere Aktien beinhalten kann eine Aktie in keinem, einem oder mehreren Depots deponiert sein kann Im Entity-Relationship-Modell wird auch der Begriff Rolle (Englisch: Role) geführt. Die Rolle einer Entitätsmenge in einer Beziehung hält fest, welches der Verwendungszweck der Entitätsmenge in der Beziehung ist. So nimmt die Entitätsmenge 'Aktien' in der Beziehung mit der Beziehungsmenge 'Depotinhalt' die Rolle 'ist deponiert in' wahr. Die Linien zwischen den Entitäts- und Beziehungsmengen repräsentieren somit die Rollen der Entitätsmengen in den Beziehungen und werden entsprechend ihrer Rolle beschriftet. Die Benennung der Rolle ist in der Praxis häufig mangelhaft. Auf die Benennung der Rolle kann verzichtet werden, falls sich die Rolle aus dem Zusammenhang ergibt, muss aber immer dann erfolgen, wenn diese nicht a priori klar ist. Die konsequente Vergabe von Rollennamen ist sicher die beste Variante. Der Rollenbegriff wird, wie noch gezeigt wird, auch in anderen Zusammenhängen verwendet. Um die Verständlichkeit des grafischen Datenmodells zu erhöhen (gilt für beide BeziehungsDarstellungsmethoden), ist es vorteilhaft, die Entitätsmengen derart zu platzieren, dass die Entitätsmengen hierarchisch angeordnet sind. Der routinierte Datenmodellierer kann ein derart gestaltetes Datenmodell schneller lesen. Teil 2: Konzeptionelle Datenmodellierung 30 4. Elementarinstrumente des konzeptionellen Datenmodells 4.2.2. Erweitertes Relationenmodell, Beziehungs-Variante des EntityRelationship-Modells Eine verbreitete und wichtige Änderung im Entity-Relationship-Modell ist jene, in welcher nicht zwischen Entitätsmengen und Beziehungsmengen differenziert wird (entsprechende Modelle sind auch unabhängig vom Entity-Relationship-Modell entwickelt worden). Beziehungsmengen werden hier als normale Entitätsmengen behandelt, der Begriff Beziehungsmenge existiert genau genommen nicht mehr. Grundsätzlich könnte das Datenmodell noch zu jenem in der ursprünglichen Variante identisch dargestellt werden, abgesehen davon, dass Beziehungsmengen nicht mehr als Rhomben dargestellt werden. Technisch ist es aber möglich, Beziehungen zwischen Entitätsmengen direkt herzustellen. Es wird daher (in Voraussicht des internen Schemas) gänzlich darauf verzichtet, die ursprünglichen Beziehungsmengen im Modell darzustellen, vielmehr werden die einzelnen Entitätsmengen direkt miteinander verbunden. Wie später noch gezeigt wird, ist aber von der Verwendung von direkten 'Mehrfach- zu Mehrfach-Beziehungen' abzuraten (Normalisierung). Bei diesen Beziehungen wird daher die ursprüngliche Beziehungsmenge nicht eliminiert. Diese Entitätsmengen werden in der Praxis aufgrund ihrer Bedeutung häufig dennoch als Beziehungsmenge bezeichnet, obgleich der Begriff Beziehungsmenge nicht mehr eindeutig definiert ist. Diese Variante des Entity-Relationship-Modells wird im Folgenden in Anlehnung an [Zehnder 89] erweitertes Relationenmodell bezeichnet. Es orientiert sich stark am relationalen Modell. Sachbearbeiter betreuen Kunden besitzen Depots Aktien deponiert in enthalten Depotinhalt Figur 7: Datenmodellgrafik im erweiterten Relationenmodell Der Begriff der Rolle, wie er im Entity-Relationship-Modell eingeführt wurde, kann in dieser Variante nicht mehr in der selben Form verwendet werden. Die Linie, welche die Entitätsmengen verbindet, wird hier als Beziehung bezeichnet. Im grafischen Datenmodell kann die Beziehung (wie vorher die Rolle) mit einer Bezeichnung ergänzt werden, um die Verständlichkeit zu erhöhen. 4.2.3. Vor- und Nachteile beider Ansätze Die konsequente Verwendung von Beziehungsmengen im Entity-Relationship-Modell zum Verknüpfen von Entitätsmengen hat folgende Vor- und Nachteile: Das Datenmodell ist aussagekräftiger. Das Datenmodell nimmt keinerlei Bezug auf ein bestimmtes Datenbanksystem, ist daher wirklich rein konzeptionell. Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 31 Die Zahl der Modellierungs-Instrumente und die Anzahl der Elemente im Datenmodell ist grösser und damit unübersichtlicher. Die Modellierung ohne Differenzierung zwischen normalen Entitäts- und Beziehungsmengen entspricht der Denkart des relationalen Ansatzes. Die Herleitung der physischen Speicherorganisation (internes Schema) für ein relationales Datenbanksystem ist daher bei der Modellierung mit Differenzierung geringfügig komplizierter. In der Praxis ist es nicht immer einfach zu entscheiden, ob es sich nun tatsächlich um eine Beziehungsmenge handelt oder ob es nicht vielleicht doch eine Entitätsmenge ist. Stellenweise wird dieser Konflikt behoben, indem Entitätsmengen erlaubt sind, die beides gleichzeitig sind (grafisch: Rhombus innerhalb Rechteck). Die Vor- und Nachteile der beiden Varianten fallen kaum ins Gewicht, so dass der Entscheid für oder gegen einen der beiden Ansätze schwer fällt. Tröstlich ist der Umstand, dass Modelle, erstellt in einem der beiden Ansätze, immer ohne Schwierigkeiten in den anderen Ansatz umgesetzt werden können. Im Folgenden werden beide Ansätze fallweise verwendet, so dass der Leser im Umgang mit beiden Ansätzen vertraut wird. 4.2.4. Assoziationstypen, Beziehungstypen Wie oben schon ersichtlich wurde, und dies gilt für beide Ansätze, wird für jede Beziehung bzw. Beziehungsmenge angegeben, in welchem Mengenverhältnis die Entitätsmengen zueinander stehen. In der Praxis haben sich folgende vier Mengenangaben (Assoziationstypen) durchgesetzt: einfache Assoziation (genau eine): Einer Entität aus der Entitätsmenge A ist genau eine Entität aus der Entitätsmenge B zugeordnet, z.B. ist einem Aktiendepot genau ein Kunde zugeordnet. konditionelle Assoziation (keine oder eine): Einer Entität aus der Entitätsmenge A ist keine oder eine Entität aus der Entitätsmenge B zugeordnet, z.B. ist einem Kunden kein oder ein Sachbearbeiter zugeordnet. multiple Assoziation (eine oder mehrere): Einer Entität aus der Entitätsmenge A sind eine oder mehrere Entitäten aus der Entitätsmenge B zugeordnet, z.B. sind einem Sachbearbeiter ein oder mehrere Kunden zugeordnet. multipel-konditionelle Assoziation (keine, eine oder mehrere): Einer Entität aus der Entitätsmenge A sind keine, eine oder mehrere Entitäten aus der Entitätsmenge B zugeordnet, z.B. sind einem Kunde kein, ein oder mehrere Aktiendepots zugeordnet. Zur Angabe der Assoziationstypen (Mengenverhältnisse) in grafischen Modellen haben sich mehrere Notationen durchgesetzt. Diese sind inhaltlich aber praktisch identisch, so dass eine Umsetzung von einer Notation zur anderen i.d.R. durch einfache Neubeschriftung erfolgt. Die folgende Tabelle zeigt einige in der Praxis verwendete Notationen: genau eine keine oder eine eine oder mehrere keine oder mehrere 1 c m mc 1,1 0,1 1,m 0,m Tabelle 3: Assoziationstypen und Notationen Bisher wurde die Beziehung nur ausgehend von einer Entitätsmenge betrachtet. Dies ist allerdings erst ein Teil der gesamten Beziehung, die umgekehrte Sichtweise ist ebenfalls Teil der BeTeil 2: Konzeptionelle Datenmodellierung 32 4. Elementarinstrumente des konzeptionellen Datenmodells ziehung. Der gerichtete Teilaspekt der Gesamtbeziehung wird Assoziation genannt. Eine einzelne Mengenangabe in der Datenstruktur entspricht daher der Assoziation. Die Beziehung selbst ergibt sich aus der Summe ihrer Assoziationen. Verwendet man die vier Assoziationstypen, lassen sich daraus 10 Beziehungstypen herleiten: 1 1:1 c 1:c c:c m 1:m c:m m:m mc 1:mc c:mc m:mc mc:mc 1 c m mc Tabelle 4: Beziehungstypen Die 'leeren' Tabellenzellen sind in der Tabelle bereits vorhanden (symmetrisch). Vier dieser zehn Beziehungstypen treten aber überhaupt nicht auf (blau unterlegte Felder): Die 1:1-Beziehung ergibt mit einer Ausnahme im konzeptionellen Modell keinen Sinn, da die entsprechenden Entitätsmengen zu einer einzigen Entitätsmenge zusammengefasst werden können, was in der Praxis wenn immer möglich durchgeführt werden sollte. Nur falls eine einzelne Entitätsmenge rekursiv mit sich selbst verknüpft wird, ist die 1:1-Beziehung sinnvoll (siehe ‘6.3. Rekursion’ auf Seite 61). Wie weiter oben bereits erwähnt, sind m:m-, aber auch m:mc- und mc:mc-Beziehungen aufgrund einer Normalisierungsregel (2. Normalform) verboten und müssen daher auch im erweiterten Relationenmodell mittels einer Beziehungsmenge gestaltet werden. Woher rührt dieser Unterschied vom Entity-Relationship-Modell zum erweiterten Relationenmodell (zweiter Aufzählungspunkt)? Der Ursprung ist lediglich aufgrund der unterschiedlichen Definition des Begriffs Beziehung zustandegekommen. Genau genommen handelt es sich bei einer Beziehung im Entity-Relationship-Modell im Sinne des erweiterten Relationenmodells um zwei Beziehungen. Depots Aktien deponiert in enthalten Depotinhalt Figur 8: Beschriftung des ER-Modells aufgrund des erweiterten Relationenmodells Dabei handelt es sich im Entity-Relationship-Modell, aus Sicht des erweiterten Relationenmodells, immer um 1:-Beziehungen, d.h. der zweite Punkt der obigen Aufzählung kann gar nicht auftreten. Aus den 10 Beziehungstypen verbleiben im Sinne des erweiterten Relationenmodells also lediglich 6 Beziehungstypen (in der Matrix grün hinterlegt). Die restlichen Beziehungstypen dürfen in der konzeptionellen Datenstruktur nicht direkt auftreten, sondern müssen immer mittels einer Beziehungsmenge gebildet werden. Im Sinne des Entity-Relationship-Modells verbleiben 9 Beziehungstypen, lediglich die 1:1-Beziehung macht meist keinen Sinn, die anderen Beziehungstypen sind eigentlich bereits aufgelöst. Beim Auflösen von verbotenen m:m-Beziehungstypen im erweiterten Relationenmodell kann immer auf die selbe Art verfahren werden. Es wird eine zusätzliche Beziehungsmenge (wie beim Entity-Relationship-Modell) eingefügt, die beiden Assoziationstypen werden übers Kreuz ausgetauscht und die neuen Assoziationstypen vom Typ 'genau eine' eingetragen: Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells unerwünschte m:mc-Beziehung Depots Aktien Depots Aktien 33 aufgelöste m:mc-Beziehung Depotinhalt Figur 9: Auflösung verbotener m:m-Beziehungstypen Stellenweise wird in der Theorie auch gefordert, dass c:c-, c:m- und c:mc-Beziehungen im erweiterten Relationenmodell nicht direkt realisiert werden dürfen. Diese Beziehungstypen sollten im konzeptionellen Datenmodell ebenfalls mittels einer Beziehungsmenge aufgelöst werden. Diese berechtige Forderung rührt daher, dass bei diesen Beziehungstypen Entitäten auftreten können, welche ohne Referenz sind, d.h. eine leere Referenz aufweisen. Wie aber soll festgestellt werden, ob eine Entität referenziert wird oder nicht? Diese Frage muss aber eindeutig beantwortet werden können, denn nur so kann sichergestellt werden, dass eine allfällige Referenz auch tatsächlich korrekt ist. In der Praxis wird in der Regel angenommen, dass ein Fremdschlüssel keine Entität referenziert, falls ein Fremdschlüsselattribut den Wert NULL enthält. Für den konkreten Fall muss daher bei diesen Beziehungstypen definiert werden, in welcher Situation eine Entität referenziert wird und in welcher nicht. Diese Frage muss bei der Herleitung des internen Schemas unter Berücksichtigung des Zieldatenbanksystems geklärt werden. Hierfür kann allenfalls ein entsprechendes Attribut eingeführt werden. Im Folgenden sollen diese Beziehungstypen im konzeptionellen Modell erlaubt sein, bei der Herleitung des internen Modells müssen diese aber noch gründlich analysiert werden. Meist kann das Problem mit diesen Beziehungstypen auch dadurch sinnvoll aufgelöst werden, dass die Entitätsmenge, welche den Fremdschlüssel enthält, weiter verfeinert wird. Denn eigentlich wurden zwei oder sogar mehr Entitätstypen (solche mit und solche ohne Referenz) in einer einzigen Entitätsmenge vereint. Im Beispiel besteht zwischen Kunde und Sachbearbeiter eine m:c-Beziehung. Diese kann durch eine Beziehungsmenge oder durch die Spezialisierung (siehe '6.5. Spezialisierung/Generalisierung' auf Seite 64) in Beratungskunden (mit Sachbearbeiter) und Normalkunde (ohne Sachbearbeiter) aufgelöst werden. 4.2.5. Verhalten bei Datenbank-Transaktionen Die Beziehungstypen halten fest, wie die Entitätsmengen zueinander in Beziehung stehen, aber sie geben nicht an, wie im Falle einer Datenbank-Transaktion reagiert werden soll. Wie soll das Datenbanksystem z.B. reagieren, falls ein Kunde gelöscht werden soll, der noch ein gefülltes Aktiendepot besitzt? Damit muss für Transaktionen, in welchen referenzierte Daten gelöscht werden oder in welchen der referenzierte Entitätsschlüssel geändert wird, angegeben werden, wie das Datenbanksystem bzw. die Anwendung reagieren soll. In der Literatur sind meist drei mögliche Verhaltensvarianten für die beiden Fälle angegeben: Teil 2: Konzeptionelle Datenmodellierung 34 4. Elementarinstrumente des konzeptionellen Datenmodells Löschung der referenzierten Entitätsmenge Änderung des referenzierten Entitätsschlüssels Weiterleiten (cascades) Die untergeordneten Entitäten werden ebenfalls gelöscht. Die Fremdschlüssel der untergeordneten Entitäten werden ebenfalls geändert. Verhindern (restricted) Falls untergeordnete Entitäten existieren, wird der Löschvorgang verhindert. Falls untergeordnete Entitäten existieren, wird die Änderung des Entitätsschlüssels verhindert. Loslösen (nullifies) Die Fremdschlüssel der untergeordneten Entitäten werden auf NULL gesetzt. Die Fremdschlüssel der untergeordneten Entitäten werden auf NULL gesetzt. Tabelle 5: Referentielle Integrität und Datenbank-Transaktionen Allerdings sind die Beziehungstypen und das Fremdschlüsselverhalten nicht ganz unabhängig voneinander. So muss es sich, falls das Fremdschlüsselverhalten 'Loslösen' definiert ist, immer um eine c:-Beziehung (=beliebig) handeln, so dass der Fremdschlüssel auch tatsächlich NULLWerte annehmen kann. In der Datenstruktur könnten die Beziehungen mit dem Beziehungstyp, deren Rollen und dem Fremdschlüsselverhalten versehen werden. In den meisten Datenmodellen ist die Erweiterung um das Fremdschlüsselverhalten nicht vorgesehen, es werden nur der Beziehungstyp und die Rollen angegeben. 4.3. Wertebereich Der Wertebereich definiert die erlaubten Werte, welche eine bestimmte Eigenschaft (z.B. Alter, Geschlecht, Zivilstand) einer Entität einnehmen können. Synonyme von Wertebereich sind Domäne und Datentyp. Beispiele für Wertebereiche für die Entitätsmenge Kunde: Alter: 0..150 Geschlecht: 'männlich', 'weiblich' Rechtsform: 'natürliche Person', 'Aktiengesellschaft', 'Einzelfirma', 'Verein' Dabei können die selben Wertebereiche natürlich von mehreren Entitätsmengen gleichzeitig verwendet werden. So können sämtliche oben aufgeführten Wertebereiche auch von der Entitätsmenge Sachbearbeiter verwendet werden. 4.3.1. Elementarer Wertebereich In der Praxis werden abhängig vom Datenbanksystem bestimmte elementare Wertebereiche vorgegeben. Häufig werden folgende Wertebereiche durch das Datenbanksystem zur Verfügung gestellt: ganze Zahlen (Integer) reelle Zahlen (Real, Float, Numeric) Zeichenketten (Charakter, String) Wahrheitswerte, logische Variablen mit den Werten 'wahr' und 'falsch' (Boolean: benannt nach dem Logiker und Mathematiker George Bool, 1815 bis 1864) Uhrzeit (Time) Datum (Date) Dabei wird in aller Regel für Zahlen und Zeichenketten bei der Definition der Variablen auch angegeben, wie viele Stellen geführt werden sollen (z.B. 'REAL 6.3', d.h. hier 6 Stellen vor und 3 Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 35 Stellen nach dem Komma). Für diese elementaren Wertebereiche stehen eine Reihe von praktischen Rechenoperationen zur Verfügung. So könnte z.B. berechnet werden, welches Datum heute in 30 Tagen ist: 'Datum := Heute_Datum + 30'. 4.3.2. Strukturierter Wertebereich Mittels elementarer Wertebereiche werden für die gängigsten Wertebereiche deren Definition sowie dazugehörige Operationen vom Datenbanksystem vordefiniert. In der Praxis ist es zur Steigerung der Software- und Datenqualität und zur Vereinfachung der Programmierung häufig wünschenswert, diese mittels selbstdefinierter Wertebereiche (= strukturierte Wertebereiche) zu ergänzen. Zur Definition strukturierter Wertebereiche stehen mehrere Methoden zur Verfügung; die wichtigsten Methoden im Datenbankbereich sind: Unterbereich: Hier wird der Wertebereich von einem definierten Wertebereich mittels Angabe einer unteren und oberen Grenze, abgeleitet. So kann z.B. der Wertebereich 'Alter' als Unterbereichstyp vom Wertebereich 'Integer' mit der unteren Grenze 0 und der oberen Grenze 150 definiert werden. Aufzählungstyp: Die erlaubten Werte werden mittels Aufzählung definiert. So wurde im Beispiel oben der Wertebereich 'Geschlecht' durch die beiden Werte 'männlich', 'weiblich' definiert. Wiederholungsgruppe: Bei der Wiederholungsgruppe (auch Feldtyp, Array oder Indextyp) können einer Variablen mehrere Werte des selben Wertebereichs zugeordnet werden. So kann z.B. beim Kunden in einem Wertebereich Beratungsdatum vom Typ Datum[1:4] festgehalten werden, welches die Daten der letzten 4 Beratungsgespräche waren. Der Zugriff auf einen bestimmten Eintrag erfolgt dabei durch Angabe der Indexnummer. Es sind auch Wertebereiche möglich, die mehr als eine Dimension aufweisen, z.B. Betrag[1:2,1:12]. Wie später noch gezeigt wird, sind in der konzeptionellen Datenmodellierung Wiederholungsgruppen verboten (Normalisierung). Beim Herleiten des internen Schemas stellen Wiederholungsgruppen aber eine äusserst interessante Möglichkeit zur Performance-Verbesserung dar. Datenbanksysteme, welche Wiederholungsgruppen zulassen, bieten daher eine wichtige Variante zur Performance-Steigerung. Redefinition bzw. varianter Verbund: In vielen Programmiersprachen ist es möglich, den selben Speicherbereich mit unterschiedlichen Wertebereichen zu redefinieren. Hiermit kann ein und die selbe Information in mehreren Variablen mit unterschiedlichen Wertebereichen ohne Typumwandlung verwendet werden. So kann z.B. die Kundennummer 'K-003432' als Charakter 8, oder als zwei Variablen mit den Wertebereichen Charakter 2 ('K-') und Integer 6 (3432) verwendet werden. Diese Technik wird beim Erstellen kommerzieller Systeme häufig eingesetzt. Der Einsatz dieser Technik ist praktisch, aber auch gefährlich. So muss einerseits sichergestellt sein, dass die innere Struktur der Daten nicht geändert wird, andererseits muss genau bekannt sein, wie das System die internen Daten in die unterschiedlichen Formate umwandelt. 4.3.3. NULL-Werte Häufig ist für eine Variable deren Wert nicht bekannt, so dass bis zur Eintragung eines korrekten Wertes ein ungültiger Wert gespeichert wird. So kann z.B. beim Kunden zunächst unklar sein, um welche Rechtsform es sich handelt und erst nach weiteren Abklärungen kann die Rechtsform angegeben werden. Um in Abfragen und Programmen dennoch zu erkennen, dass kein gültiger Wert vorhanden ist, werden sogenannte Standardwerte eingetragen, welche diesen ungültigen Zustand repräsentieren. So könnte zum Beispiel im Wertebereich Rechtsform der Wert 'unbekannt' und im Wertebereich 'Alter' der Wert -1 oder 999 zum Festhalten des Umstandes 'Alter nicht bekannt' verwendet werden. Diese Arbeitsweise hat sich allerdings als unbefriedigend erTeil 2: Konzeptionelle Datenmodellierung 36 4. Elementarinstrumente des konzeptionellen Datenmodells wiesen, da diese Werte in sämtlichen Abfragen und Programmen dem Anwender bekannt sein müssen und zudem bei Änderungen des Wertebereichs der Standardwert nachträglich unerwartet einen gültigen Wert repräsentieren kann. Es hat sich daher schon in Dritt-Generationssprachen durchgesetzt, einen derartigen Wert explizit als Teil der Programmiersprachen zu integrieren. Dieser Wert ist dadurch automatisch Teil sämtlicher Wertebereiche. Die Bezeichnungen dieses Wertes sind in den Datenbanksystemen unterschiedlich, meist aber NULL (im Folgenden wird immer der Wert NULL verwendet). In den Abfragen und Programmen muss daher nicht der jeweilige Standardwert gekannt werden, sondern es handelt sich immer um den Wert NULL. Zusätzlich werden sämtliche Operationen des Datenbanksystems derart erweitert, dass diese auch NULL-Werte verarbeiten können. So muss insbesondere die Verarbeitung boolscher Variablen so erweitert werden, dass nicht nur die Werte 'wahr' und 'falsch', sondern auch der Wert NULL verarbeitet werden kann. Aus einer 2wertigen Logik (wahr und falsch) ist damit eine 3-wertige Logik (wahr, falsch und unbekannt) geworden. Tatsächlich kann der NULL-Wert noch weiter gegliedert werden. So kann NULL etwa bedeuten, der Wert ist noch nicht bekannt oder aber für diese Entität wird hier kein Wert eingetragen. Bei Kunden kann NULL im Wertebereich Rechtsform daher bedeuten, die Rechtsform ist noch nicht bekannt oder es handelt sich um einen Kunden, dem lediglich Werbung zugesandt wird, die Rechtsform daher nicht interessiert. Auf diese weitere Gliederung wird verzichtet, da hierdurch die Operationen des Systems erneut erweitert werden müssten, was auch auf Abfragen und Programme Einfluss hätte, der Gewinn durch die weitere Verfeinerung aber klein wäre. Später wird zudem gezeigt, dass bei Entitätsmengen, welche NULL-Werte der Art 'hier wird kein Wert eingetragen' haben, durch Bildung von Teilmengen diese NULL-Werte verschwinden. In unserem Beispiel könnte die Entitätsmenge Kunden zusätzlich in die Teilmengen Anlagekunden und Werbekunden gegliedert werden. Jeder der drei Entitätsmengen würden jeweils die entsprechenden Wertebereiche zugeordnet. Der Wertebereich Rechtsform würde im Beispiel nur der Entitätsmenge Anlagekunden zugeordnet. 4.3.4. Typenbindung Grundsätzlich können Werte unterschiedlicher Wertebereiche für viele Operationen nicht direkt miteinander verarbeitet werden. So kann etwa der Wert ' +2.4400' des Wertebereichs Charakter 10 nicht direkt mit dem Wert 2.44 des Wertebereichs Real verglichen werden. Diese Art der Wertebereichsüberprüfung wird strenge Typenbindung (strongly typed) genannt. Datenbanksysteme erlauben es in der Regel aber, Werte von einem Wertebereich in einen anderen Wertebereich zu überführen, so dass die gewünschte Operation dennoch ausgeführt werden kann. Diese Umwandlung erfolgt mittels Funktionen, welche vom System zur Verfügung gestellt werden. Z.B. wird häufig die Funktion 'VAL()' verwendet, um Zahlen im Charakter-Format in RealZahlen umzuwandeln. Dieser Umwandlungsvorgang wird semantische Übersteuerung (Semantic Override) genannt. 4.4. Attribut Im Attribut werden die Werte eines Wertebereichs den Entitäten einer Entitätsmenge oder Beziehungsmenge zugeordnet. Entsprechend ihrer Herkunft werden sie daher auch Entitätsattribut oder Beziehungsattribut genannt. So kann im Attribut Geburtsdatum (Attributsname) der Entitätsmenge Kunden zum Beispiel der Wert {23.7.1959} (Attributswert) aus dem Wertebereich Datum abgelegt werden (Synonyme: Feldname, Spalte). Mittels der Attribute wird somit die innere Struktur der Entitätsmenge definiert. Wurde vorher die Entitätsmenge als Menge aller Entitäten der selben Art definiert, so kann die Entitätsmenge jetzt als Menge aller Entitäten mit den selben Attributen (nicht aber Attributswerten) festgelegt werden. Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 37 Kunden Attributsname: Kunden# Kundenname GeburtsDatum Geschlecht Gesellschaft LetzteBeratung ... Wertebereich: Character 8 Character 30 Datum Geschlecht Rechtsform Datum Beschreibung: Kundennummer (z.B. K003432) Name und Vorname des Kunden Geburtsdatum des Kunden Geschlecht des Kunden Rechtsform des Kunden/Gesellschaft Datum des letzten Beratungsgespräches Attributsname: Wertebereich: Beschreibung: Depot# Kunden# EröffnungsDatum SaldierungsDatum ... Character 20 Character 8 Datum Datum Depot-Identifikation (z.B. DP-Akt-005625) Kunde.Kunden#, Kundennummer des Eigentümers Datum der Depoteröffnung Datum der Depotsaldierung Depots Tabellen 6: Auszug des Attributskatalogs der Entitätsmengen Kunden und Depots Wie bei der Beziehungsmenge, so ist jetzt die Linie, welche die Entitäten mit den Wertebereichen verbindet, die Rolle, welche dem Wertebereich für die entsprechende Entitätsmenge zugeordnet wird. Dabei kann der selbe Wertebereich durchaus mehrere Rollen in der selben Entitätsmenge erhalten (z.B. die Rollen 'Geburtsdatum des Kunden', 'letztes Datum eines Beratungsgespräches' für den Wertebereich Datum). Der Attributsname ist meist ein Kürzel für die Rolle des Wertebereichs (z.B. wird der Attributsname 'GeburtsDatum' für die Rolle 'Geburtsdatum des Kunden' vergeben). Auf die grafische Darstellung der Attribute und Wertebereiche wird in der Regel verzichtet, da das Modell dabei 'überladen' würde, wie der kleine Ausschnitt des Datenmodells mit wenigen Attributen schon zeigt: Kunden Be le t ra zte tu ng sd a tum na m e # ie r un g sng ffu tum Erö d a Sa ld en en Datum besitzen Ku nd nd Ku m a tu n rtsd nd e u b Ku Ged e s KundenDepots gehören Charakter o t# sc G ha e se fts llfo rm De p Rechtsform KundenGeschlecht Geschlecht Depots Figur 10: Datenmodellgrafik im Entity-Relationship-Modell mit Attributsdarstellung Meist werden die Attribute der Entitätsmengen lediglich in einem separaten Verzeichnis, dem Attributskatalog, festgehalten. Die Attributsnamen sollten dabei so gewählt werden, dass der Inhalt des Attributs daraus abgeleitet werden kann. Namen wie K# anstelle von Kunden# sind überaus mangelhaft. Teil 2: Konzeptionelle Datenmodellierung 38 4. Elementarinstrumente des konzeptionellen Datenmodells 4.4.1. Entitätsschlüssel, Schlüsselkandidat Zur Verarbeitung und zum Erstellen der Beziehungen zwischen den Daten muss sichergestellt sein, dass jede Entität eindeutig identifiziert werden kann. Dabei sollten nicht die technischen Gegebenheiten der Datenbank (Record-Nummer), welche häufig ebenfalls die Entitäten eindeutig identifizieren, genutzt werden, da sich diese Identifikationen bei Strukturänderungen der Daten oder bei der Reorganisation ändern können. Es wird daher festgelegt, welches Attribut bzw. welche Kombination von Attributen, d.h. Attributskombination, eine einzelne Entität eindeutig identifiziert. Dieses Attribut oder Attributskombination wird Entitätsschlüssel, aber auch Identifikationsschlüssel oder Primärschlüssel genannt. So könnte z.B. das Attribut 'Kunden#' Entitätsschlüssel in der Entitätsmenge Kunden sein. Das oder die Attribute, welche den Entitätsschlüssel bilden, werden als Schlüsselattribute bezeichnet. Schlüsselattribute werden im Attributskatalog in der Regel durch einfaches Unterstreichen des Attributsnamens gekennzeichnet. Werden mehrere Attribute zur Bildung des Entitätsschlüssels verwendet, so dürfen nur jene Attribute in den Entitätsschlüssel aufgenommen werden, welche auch tatsächlich notwendig sind, d.h. der Entitätsschlüssel muss minimal sein. In einer Entitätsmenge können sich durchaus mehrere Attribute oder Attributskombinationen als Entitätsschlüssel eignen. Diese Attribute und Attributskombinationen werden Schlüsselkandidaten (Englisch: Candidate Key) genannt. Weist eine Entitätsmenge mehrere Schlüsselkandidaten auf, so muss einer dieser Schlüsselkandidaten als Entitätsschlüssel gewählt werden. In der Regel sollte versucht werden, einen Schlüsselkandidaten mit möglichst wenigen Attributen zu wählen, welcher zudem durch den Anwender leicht gehandhabt werden kann (Verständlichkeit). Es kann aber auch sein, dass eine Entitätsmenge keinen Entitätsschlüssel aufweist. In diesem Fall muss ein künstlicher Entitätsschlüssel eingeführt werden, d.h. es wird ein weiteres geeignetes Attribut aufgenommen. Im Prinzip handelt es sich bei der Kundennummer ebenfalls um einen künstlichen Schlüssel, nur wurde dieser auch ohne Datenbanksystem vergeben. Der Entitätsschlüssel sollte etwa folgende Eigenschaften aufweisen: Der Entitätsschlüssel muss einfach und eindeutig durch den Benutzer, eventuell durch das System vergeben werden können. Der Entitätsschlüssel sollte kurz, im besten Fall ein Attribut, und durch den Benutzer leicht zu handhaben sein (merkfähig, schreibbar). Im Datenbanksystem müssen der Entitätsschlüssel sowie sämtliche Schlüsselkandidaten explizit definiert werden, damit dieses sicherstellen kann, dass jeder Entitätsschlüssel und jeder Schlüsselkandidat wirklich nur ein einziges Mal in der Entitätsmenge auftritt. Die Forderung, dass jeder Entitätsschlüssel im System einen eindeutigen Wert in der Entitätsmenge haben muss, wird Entitätsintegrität (Englisch: Entity Integrity) genannt. Dabei wird zudem gefordert, dass die Attribute des Entitätsschlüssels nicht den Wert NULL annehmen dürfen. Ob einzelne Attribute des Entitätsschlüssels dennoch den Wert NULL annehmen dürfen, muss im konkreten Fall untersucht werden. Stellenweise wird in der Literatur gefordert, dass der Entitätsschlüssel unveränderlich sei. Diese Forderung ist für die Praxis meist zu streng. Allerdings muss beim Ändern des Entitätsschlüssels darauf geachtet werden, dass Entitätsmengen, welche den Wert des Entitätsschlüssels referenzieren, einen neuen korrekten Wert erhalten. 4.4.2. Fremdschlüssel Eine technische Erläuterung des Begriffs Fremdschlüssel wurde bereits im Kapitel '2.2.3. Relationale Datenbanksysteme' auf Seite 14 gegeben. Der Fremdschlüssel ist nicht ein allgemeines Instrument der konzeptionellen Ebene, sondern wird im relationalen Datenmodell zur Erstellung der Beziehungen zwischen den Entitätsmengen verwendet. Die notwendigen Beziehungen, Beziehungsmengen sind im konzeptionellen Modell bereits festgehalten. Die Fremdschlüssel könnten daher bis zur Herleitung des internen Schemas unberücksichtigt bleiben, da erst zu diesem Zeitpunkt das zu verwendende Datenbanksystem betrachtet wird. In der Praxis ist zum Zeitpunkt der konzeptionellen Modellierung allerdings meist schon bekannt, welcher Art das zu verwenTeil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 39 dende Datenbanksystem ist. Ist das Zielsystem ein relationales Datenbanksystem, werden daher die notwendigen Fremdschlüssel bereits im konzeptionellen Modell in den Attributskatalog aufgenommen. Im Attributskatalog wird im Wertebereich des Fremdschlüsselattributs das entsprechende Attribut der referenzierten Entitätsmenge angegeben (siehe Attributskatalog des Beispiels: Kunden# in der Entitätsmenge Depots im Kapitel '4.4. Attribut'). Durch die Definition der Entitätsschlüssel ergibt sich automatisch der Aufbau der Fremdschlüssel. Der Fremdschlüssel hält ja fest, welche Entität der referenzierten Entitätsmenge verwendet wird. Zur Identifikation der referenzierten Entität eignet sich natürlich der Entitätsschlüssel dieser referenzierten Entitätsmenge am besten. Der Aufbau des Fremdschlüssels entspricht daher exakt dem Aufbau des Entitätsschlüssels der referenzierten Entitätsmenge. Für jedes Attribut des Entitätsschlüssels wird ein entsprechendes Attribut im Fremdschlüssel eingebaut. So wird z.B. in der Entitätsmenge Depots der Fremdschlüssel 'Kunden#' eingefügt, welcher den Entitätsschlüssel im Kunden referenziert. Die Namensgebung der Fremdschlüsselattribute ist zwar frei, dennoch sollten nach Möglichkeit die selben Attributsnamen wie im Entitätsschlüssel verwendet werden. Das Besondere des Fremdschlüssels ist, dass die erlaubten Werte der Fremdschlüsselattribute nicht mittels Wertebereichen definiert werden, sondern dass die erlaubten Werte von den in der referenzierten Entitätsmenge existierenden Entitätsschlüsseln abhängen. Erlaubt sind im Fremdschlüssel nur Werte im Attribut bzw. in der Attributskombination, welche auch in der referenzierten Entitätsmenge auftreten. Wäre dem nicht so, würde der Fremdschlüssel auf nicht existierende Entitäten verweisen. Der Wertebereich des Fremdschlüssels ist daher nicht ein statischer, fest vorgegebener Wertebereich, sondern ein dynamischer Wertebereich, welcher sich mit den Entitäten in der referenzierten Entitätsmenge ändert. Die Sicherstellung des korrekten Fremdschlüsselwertes wird durch die referentielle Integrität (Englisch: Referential Integrity) und deren Definition im Datenbanksystem gewährt. Im Gegensatz zum Entitätsschlüssel dürfen Fremdschlüssel in ihren Attributen den Wert NULL annehmen. In diesem Fall ist der Entität mit dem Fremdschlüssel keine Entität der referenzierten Entitätsmenge zugeordnet. In manchen Situationen muss eine aus mehreren möglichen Entitätsmengen zur Definition der Fremdschlüsseldomäne gewählt werden. Grundsätzlich ist in diesen Situationen immer jene Entitätsmenge zu wählen, welche den erlaubten Wertebereich am stärksten einschränkt. Stehen zum Beispiel die Entitätsmengen Kunden und Anlagekunden (Anlagekunden ist eine Teilmenge der Entitätsmenge Kunden) für die Definition des Fremdschlüssels Kunden# der Entitätsmenge Depots zur Auswahl, so sollte die Entitätsmenge Anlagekunden gewählt werden (linke Variante) und nicht die Entitätsmenge Kunden (rechte Variante). Kunden können sein Werbekunden Kunden können sein können sein Anlagekunden besitzen Depots können sein Werbekunden Anlagekunden besitzen Depots Figur 11: Domänenwahl für Fremdschlüssel In den vorhergehenden Absätzen sind wir davon ausgegangen, dass der Fremdschlüssel auf dem Entitätsschlüssel der referenzierten Entitätsmenge basiert. Theoretisch wäre auch denkbar, einen Schlüsselkandidaten anstelle des Entitätsschlüssels als Basis zu verwenden. Dies ist zwar möglich, sollte aber zur besseren Lesbarkeit der Daten und der Datenstruktur unterlassen werden. Teil 2: Konzeptionelle Datenmodellierung 40 4. Elementarinstrumente des konzeptionellen Datenmodells Da die Entitätsschlüsselwerte der referenzierten Entitätsmenge den gültigen Wertebereich des Fremdschlüssels definieren, kann die referenzierte Entitätsmenge auch als Wertebereichsdefinition des Fremdschlüssels für einen Aufzählungstyp verstanden werden. Dieser Ansatz wird dann verwendet, wenn sich der Wertebereich dynamisch ändert oder falls das Datenbanksystem keine Möglichkeiten bietet, den Wertebereich entsprechend zu definieren. Hier zeigt sich ein weiteres Mal die Schwierigkeit, abschliessend festzulegen, um welches elementares Instrument es sich handelt (Wertebereich oder referenzierte Entitätsmenge). Wird eine Entitätsmenge zur Definition eines Wertebereichs verwendet, besteht diese nur aus dem Entitätsschlüsselattribut, welches die gültigen Werte definiert (z.B. Entitätsmenge Kontoarten mit den Werten 'Depositenkonto', 'Kontokorrent', 'Fremdwährungskonto'). Häufig wird allerdings ein weiteres den Wert beschreibendes Attribut hinzugefügt (z.B. 'Konto in Fremdwährung ohne Zins und ohne Kreditmöglichkeit'), welches in den Anwendungen aktiv verwendet wird (siehe auch '6.6. Wertetabelle' auf Seite 67). Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 41 4.5. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 155. 4.5.1. Fragetyp A, Einfachauswahl 1. Ein Entitätsschlüssel (Primärschlüssel) ... 2. A) B) C) D) E) 1:1 1:c 1:m 1:mc c:m A) B) C) D) E) werden im relationalen Modell als eigenständige Relationen realisiert. sind im relationalen Modell nicht notwendig. lassen sich im relationalen Modell nicht realisieren. werden aufgelöst, und das Attribut einer der beiden Relationen zugeordnet. werden mittels Domänenkonzept realisiert. NULL-Werte... 6. das erweiterte Relationenmodell das Entity-Relationship-Modell (ER-Modell) nach Chen das hierarchische Datenmodell das netzwerkartige Datenmodell das relationale Datenmodell Beziehungsmengen des Typ 1:m im Entity-Relationship-Modell, welche mindestens ein Attribut enthalten... 5. A) B) C) D) E) Welcher Beziehungstyp macht im konzeptionellen Modell nur in einem bestimmten Zusammenhang Sinn? 4. ist nicht immer ein Schlüsselkandidat. ist auch immer ein Fremdschlüssel. kann die Domäne eines Fremdschlüssels definieren. ist meistens eindeutig. ist höchstens aus zwei Attributen zusammengesetzt. Welches Datenmodell kennt Beziehungsmengen? 3. A) B) C) D) E) A) B) C) D) E) sind Blanks. sind Nullen. stehen für 'kein Wert definiert'. sind HEX-0 - Werte. bedeuten 'keine Anzeige'. Das Entity-Relationship-Modell und das erweiterte Relationenmodell unterscheiden sich wesentlich in/im: A) B) C) D) E) referentieller Integrität Navigation Beziehungen zwischen Entitätsmengen Darstellung Wertebereich Teil 2: Konzeptionelle Datenmodellierung 42 7. 4. Elementarinstrumente des konzeptionellen Datenmodells Was triff auf einen Schlüsselkandidaten zu? A) B) Er kann aus mehreren Attributen zusammengesetzt sein. Der Benutzer bestimmt kraft seines betrieblichen Wissens, wann ein Attribut ein Schlüsselkandidat sein darf. C) Jede Entitätsmenge enthält mehrere Schlüsselkandidaten. D) Ein Schlüsselkandidat muss mindestens vierstellig sein. E) Er kann bei Eignung als Entitätsschlüssel gewählt werden. 8. Eine Assoziation... A) B) ist eine Menge von verschiedenen Datenwerten. zwischen zwei Entitätsmengen legt fest, wie viele Entitäten aus Entitätsmenge 2 einer Entität aus Entitätsmenge 1 zugeordnet sein können. C) legt fest, wie die wechselseitige Beziehung zwischen Entitätsmengen sein kann. D) ist die Beschreibung einer bestimmten Eigenschaft einer Entitätsmenge. E) ist eine Beziehungsform zwischen zwei Entitäten. 9. Was bedeuted referentielle Integrität? A) B) Keine Komponente des Entitätsschlüssels einer Entitätsmenge darf den Wert NULL haben. Jeder Entitätsschlüssel einer Entitätsmenge muss auch als Fremdschlüssel in einer anderen Entitätsmenge auftreten. C) Stellt sicher, dass Fremdschlüssel keine NULL-Werte haben. D) Für jeden von NULL verschiedenen Fremdschlüsselwert muss ein entsprechender Entitätsschlüsselwert aus der gleichen Domäne existieren. E) Verbietet NULL-Werte in Attributen. 4.5.2. Fragetyp B, Zuordnung Für welchen Begriff gilt der unten beschriebene Sachverhalt? A) Entität B) Entitätsschlüssel C) Fremdschlüssel D) Schlüsselkandidat E) Nullwerte 1. Tupel (Zeile) im relationalen Modell A) 2. C) D) E) B) C) D) E) B) C) D) E) E) E) Ist möglicher Identifikator in einer Entitätsmenge. A) 5. Basiert auf den Werten, welche in einer anderen Entitätsmenge auftreten. A) 4. B) Verhindert, dass doppelte Einträge in einer Tabelle auftreten. A) 3. B) C) D) Hat eine spezifische Bedeutung in jeder Domäne. A) B) C) D) Ordnen Sie der Beziehung zwischen den beiden Entitätsmengen den korrekten Beziehungstyp zu. A) 1:1 B) c:c C) 1:mc D) 1:c E) c:m 6. Paar: linker Schuh, rechter Schuh A) B) C) Teil 2: Konzeptionelle Datenmodellierung D) E) 4. Elementarinstrumente des konzeptionellen Datenmodells 7. Heirat: Frauen, Männer (in christlichem Umfeld) A) 8. B) C) D) E) D) E) C) D) E) C) D) E) E) Kundenbeziehung: Kunden, Werbekunden A) 9. 43 B) C) Betreuung: Sachbearbeiter, Kunden A) B) 10. Besitzverhältnis: Konti, Kunden A) B) Für welchen Begriff gilt der unten beschriebene Sachverhalt? A) Entitätsmenge B) Beziehungsmenge C) Entitätsschlüssel D) Domäne E) Attribut 11. Menge von verschiedenen Datenwerten A) B) C) D) 12. Beschreibung einer bestimmten Eigenschaft der Entitäten einer Entitätsmenge A) B) C) D) E) C) D) E) C) D) E) C) D) E) 13. Menge von Tupeln A) B) 14. Identifizierendes Attribut A) B) 15. Assoziiert Entitäten wechselseitig A) B) 4.5.3. Fragetyp E, kausale Verknüpfung 1. Der Fremdschlüssel ist in seinem Aufbau identisch zum Entitätsschlüssel der referenzierten Entitätsmenge, weil der Fremdschlüssel jede Entität der referenzierten Entitätsmenge eindeutig identifizieren muss. A) 2. +weil+ B) +/+ C) +/- D) -/+ E) -/- Im Entity-Relationship-Modell müssen m:m-Beziehungen nicht aufgelöst werden, weil das Entity-Relationship-Modell m:m-Beziehungen verhindert. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 4.5.4. Fragetyp K, mehrfache Entscheidung 1. Welche Aussagen sind für das erweiterte Relationenmodell zutreffend? + Kennt keine Beziehungsmengen. Enthält weniger Elementarinstrumente als das Entity-Relationship-Modell. Kennt genau die drei Assoziationstypen 1, c und m. Hält ausschliesslich das interne Schema (3-Schema-Modell nach ANSI-SPARC) der Daten fest. Teil 2: Konzeptionelle Datenmodellierung 44 2. 4. Elementarinstrumente des konzeptionellen Datenmodells Der Entitätsschlüssel sollte so gewählt werden, dass dieser + 3. einfach und wenn möglich eindeutig ist. möglichst kurz ist. numerisch ist. schreibbar ist. Welche Aussagen gelten für den Fremdschlüssel? + Mittels des Fremdschlüsselkonzepts lässt sich für Attribute ein dynamischer Wertebereich (dieser ändert sich im Laufe der Zeit) (aber nicht Wertetyp) definieren. Fremdschlüssel sind immer auch Schlüsselkandidaten. Die referenzielle Integrität sichert den korrekten Zustand aller Fremdschlüssel. Die Fremdschlüssel müssen im DBMS definiert werden, damit dieses deren Zustand kontrollieren kann. Teil 2: Konzeptionelle Datenmodellierung 4. Elementarinstrumente des konzeptionellen Datenmodells 45 4.6. Bearbeitungsaufgaben Die Lösungen zu den folgenden Bearbeitungsaufgaben finden Sie auf Seite 158. 4.6.1. KontoSys, Kontoverwaltungs-System Schwierigkeitsgrad: Trockenübung Zeitaufwand: 20 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Die Bank 'SuperSeriös & Co. AG' möchte zur Verwaltung der Konti ein Kontoverwaltungs-System erstellen, um das manuelle Karteisystem abzulösen. Zur Zeit bestehen zwei Karteien für Kunden und Konten. Ein Kunde kann mehrere Konten haben, ein Konto kann von einem oder von mehreren Kunden eröffnet werden. In der Kontokartei werden zusätzlich für jedes Konto die einzelnen Kontobewegungen (Datum, Buchungsbetrag, Begünstigter bei Belastungen bzw. Auftraggeber bei Vergütungen) festgehalten. Die Kontobewegungen sind genau einem Konto zugeordnet (sie sind daher nicht mit dem Buchungssatz der Buchhaltung zu vergleichen, der immer zwei Konten angibt). 1. Stellen Sie die oben geschilderte Datenstruktur im Entity-Relationship-Modell dar. 2. Stellen Sie die oben geschilderte Datenstruktur im erweiterten Relationenmodell dar. 3. Zeigen Sie den Attributskatalog für das Kontoverwaltungs-System (Identifikationsund Fremdschlüssel kennzeichnen). 4.6.2. RezeptSys, Rezeptverwaltungs-System Schwierigkeitsgrad: Planschbecken Zeitaufwand: 40 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Die Textilfärberei 'Colour-It GmbH' hält in ihrem EDV-System unterschiedliche Stammrezepte (pro Farbe ein Stammrezept) fest. Das Stammrezept setzt sich dabei aus unterschiedlichen Produkten (Farbstoffe und Chemikalien) zusammen. Auch die Farbstoffe und Chemikalien sollen im System als selbständige Entitätsmenge(n) geführt werden, da später eine Lagerkontrolle integriert werden soll (Attribute hierfür bereits einfügen). Im Stammrezept wird festgehalten, wie viel (in Gramm) Farbstoff bzw. Chemikalie pro Liter Färbebrühe (Volumen) oder pro kg Färbematerial benötigt wird. Diese Stammrezepte werden unabhängig von existierenden Aufträgen verwaltet. Pro Auftrag wird jeweils ein Stammrezept ausgeführt. Im Auftrag selbst wird lediglich noch festgehalten, wie viel Material (in kg) in welchem Volumen (in Liter) gefärbt wird, daraus errechnet das Rezeptverwaltungssystem (ausgehend vom zugeordneten Stammrezept) dann automatisch die benötigten Mengen an Farbstoffen und Chemikalien und druckt das entsprechende Rezept aus. 1. Stellen Sie die oben geschilderte Datenstruktur im Entity-Relationship-Modell dar. 2. Stellen Sie die oben geschilderte Datenstruktur im erweiterten Relationenmodell dar. 3. Zeigen Sie den Attributskatalog für das Rezeptverwaltungssystem (Entitäts- und Fremdschlüssel kennzeichnen). Teil 2: Konzeptionelle Datenmodellierung 46 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 5. Normalisierung von Entitätsmengen im konzeptionellen Modell Im vorhergehenden Kapitel wurde lediglich gezeigt, wie die Datenstruktur dargestellt wird. Es wurden bisher aber keine Aussagen dazu gemacht, welche Verhaltensregeln beim Erstellen der Datenstruktur beachtet werden sollten. Die Normalisierung ist eine Sammlung derartiger Verhaltensregeln, deren Einhaltung die Wahrscheinlichkeit von Redundanzen und damit die Wahrscheinlichkeit von widersprüchlichen Daten (Speicheranomalie) reduziert. Beim Eliminieren von Redundanzen steigt gleichzeitig auch die Verständlichkeit der Datenstruktur. Die Normalisierung betrachtet allerdings nur einzelne, isolierte Entitätsmengen und erkennt daher Redundanzen, welche auf mehrere Entitätsmengen verteilt sind, nicht. Auch können innerhalb einer einzelnen, vollnormalisierten Entitätsmenge weiterhin Redundanzen auftreten. Die Normalisierung ist daher nur eine erste Hilfe, um die Datenstruktur zu verbessern, darf aber keinesfalls als vollständige und abschliessende Regelsammlung zur Datenmodellierung aufgefasst werden. In der Normalisierung sind mehrere Normalformen bekannt. Jede Normalform stellt sicher, dass die Daten bestimmte Bedingungen einhalten. Am bekanntesten sind die 1., 2. und 3. Normalform (als Kürzel wird häufig NF anstelle von Normalform geschrieben, z.B. 3. NF). Nebst den ersten drei Normalformen sind aber noch weitere Normalformen bekannt. Diese sind in der Praxis allerdings von geringer Bedeutung und daher kaum bekannt. Bei der Nummerierung der Normalformen ist zu bemerken, dass jede Normalform alle vorhergehenden Normalformen beinhaltet. So ist z.B. eine Entitätsmenge in 3. Normalform auch in 2. und 1. Normalform. Ursprünglich stammt die Normalisierung aus dem relationalen Ansatz, daher rührt auch der mathematische Ansatz. Die Normalisierung eignet sich aber für sämtliche datenorientierten Modelle und wird heute daher in der Datenmodellierung allgemein verwendet. Die Normalisierung findet auf der konzeptionellen Ebene statt, in welcher Redundanzen ja grundsätzlich eliminiert werden. Beim Herleiten des internen Modells wird teilweise denormalisiert, d.h. es werden wieder gezielt Redundanzen eingeführt, um die Performance des Systems zu verbessern. Dabei wird versucht, möglichst wenig, im besten Fall keine Redundanzen durch Denormalisierung in die Daten einzubringen. Durch die vorhergehende Normalisierung ist in diesen Fällen aber zumindest bekannt, an welchen Stellen Redundanzen bestehen, so dass diese entsprechend berücksichtigt werden können. Die Aussage 'unsere Daten sind in der Datenbank voll normalisiert' lässt daher darauf schliessen, dass die Performance des Systems deutlich verbessert werden könnte (falls nötig). In den meisten Fällen ist die Aussage allerdings schlicht falsch. In der Regel treten beim Erstellen des konzeptionellen Datenmodells durch einen erfahrenen Modellierer gar keine Redundanzen auf. Verletzungen der Normalformen treten nur auf, falls inhaltlich unabhängige Entitätsmengen in eine gemeinsame Entitätsmenge gepackt werden. Diese unabhängigen Entitätsmengen werden bei der Normalisierung durch das Aufteilen der gepackten Entitätsmenge erarbeitet. Die Normalisierung in den folgenden Unterkapiteln soll anhand folgender zwei Entitätsmengen gezeigt werden, welche eine einfache Auftragsverwaltung realisieren: Aufträge Auftrags# 1 2 3 Artikel#[1:10] 4, 5 5, 9 4 Artikel_Bez Toaster, TV TV, Locher Toaster Betrag 120, 2'889 2'889, 49 120 Kunden Kunden# Name PLZ Ort 1 2 Maier Müller 8001 8001 Zürich Zürich Auftrags#[1:100] 1, 2 3 Tabellen 7: Unnormalisierte Entitätsmengen Teil 2: Konzeptionelle Datenmodellierung Auftrags_Datum 12. März 24. März 23. März 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 47 Hinweis zu den Entitätsmengen: Mittels der Wiederholungsgruppe im Attribut Auftrags# (Fremdschlüssel) in der Entitätsmenge Kunden wird zwischen den Entitätsmengen eine m:m-Beziehung realisiert. Das Datenstrukturmodell der beiden Entitätsmengen sieht wie folgt aus: Aufträge Kunden Figur 12: Auftragsverwaltung unnormalisiert 5.1. 1. Normalform Eine Entitätsmenge ist in 1. Normalform, wenn die Wertebereiche sämtlicher Attribute skalar (ein Wertebereich ohne Wiederholungsgruppen heisst skalar oder atomar) sind. Damit sind für Attribute Wiederholungsgruppen (siehe '4.3.2. Strukturierter Wertebereich' auf Seite 35) als Wertebereiche verboten. Die 1. Normalform wird in aller Regel im Modellierungsprozess vom Modellierer automatisch eingehalten. Beim ersten Normalisierungsschritt werden die betroffenen Entitätsmengen noch nicht geteilt, wie dies in den folgenden Normalisierungsschritten der Fall sein wird. Die Entitäten der betroffenen Entitätsmengen werden aber mehrfach, nämlich je Ausprägung in der Wiederholungsgruppe, in die Entitätsmenge eingetragen. Nach dieser Mehrfacheintragung ist allerdings der bisherige Entitätsschlüssel in aller Regel nicht mehr eindeutig, so dass der Entitätsschlüssel neu bestimmt werden muss, dies auch darum, weil der Entitätsschlüssel in den folgenden Normalisierungsschritten eine wichtige Rolle spielt. Im Beispiel müssen beide Entitätsmengen bearbeitet werden. Nach der Vervielfachung der Entitäten fällt auf, dass der Entitätsschlüssel, wie vorhergesagt, nicht mehr eindeutig ist, daher muss dieser um geeignete Attribute erweitert werden. Hierfür sind lediglich Attribute aus der Wiederholungsgruppe geeignet. Im Beispiel werden in der Entitätsmenge Aufträge das Attribut Artikel# und in der Entitätsmenge Kunden das Attribut Auftrags# dem Entitätsschlüssel hinzugefügt: Aufträge Auftrags# 1 1 2 2 3 Artikel# 4 5 5 9 4 Artikel_Bez Toaster TV TV Locher Toaster Betrag 120 2'889 2'889 49 120 Auftrags_Datum 12. März 12. März 24. März 24. März 23. März Kunden Kunden# 1 1 2 Name Maier Maier Müller PLZ 8001 8001 8001 Ort Zürich Zürich Zürich Auftrags# 1 2 3 Tabellen 8: Entitätsmengen in 1. Normalform Basis des gesamten Normalisierungsprozesses sind funktionale Abhängigkeiten. In der Normalisierung werden die funktionalen Abhängigkeiten zwischen den Attributen betrachtet. Ein Attribut A (z.B. Kundenname) ist von einem Attribut B (z.B. Kundennummer) funktional abhängig, wenn zu einem bestimmten Wert von B höchstens ein Wert von A möglich ist. Bei Angabe der Kundennummer kann im Beispiel der Kundenname hergeleitet werden und es ist pro Kundennummer höchstens ein Kundenname möglich (mathematisch: f[x]=y, bzw. f[KunTeil 2: Konzeptionelle Datenmodellierung 48 5. Normalisierung von Entitätsmengen im konzeptionellen Modell dennummer]=Kundenname). Damit ist der Kundenname funktional abhängig von der Kundennummer. Bei Angabe des Kundennamens kann die Kundennummer nicht eindeutig hergeleitet werden, da ev. zwei Kunden mit dem selben Namen existieren. Die Kundennummer ist damit nicht funktional abhängig vom Kundennamen. In der ersten Normalform wird verlangt, dass sämtliche Nichtschlüsselattribute (Attribut, welches nicht Teil des Entitätsschlüssels ist) funktional abhängig vom Entitätsschlüssel sind. Daraus folgt, dass ein Nichtschlüsselattribut höchstens einen Wert aufweisen darf, d.h., dass Wiederholungsgruppen als Wertebereich für Attribute nicht erlaubt sind. 5.2. 2. Normalform Eine Entitätsmenge ist in 2. Normalform, wenn sie in 1. Normalform ist und wenn jedes Nichtschlüsselattribut von allen Attributen des Entitätsschlüssels gemeinsam abhängig ist. Die 2. Normalform kann nur verletzt sein, falls sich der Entitätsschlüssel aus mehreren Attributen zusammensetzt und die Entitätsmenge Nichtschlüsselattribute enthält. Dann kann es nämlich vorkommen, dass ein Attribut nicht vom gesamten Entitätsschlüssel, sondern nur von einem Teil der Attribute des Entitätsschlüssels abhängig ist. Dies ist in der Entitätsmenge 'Aufträge' leicht zu sehen. Die Artikelbezeichnung lässt sich schon allein aufgrund des Attributes Artikelnummer herleiten, ohne dass das zweite Entitätsschlüsselattribut Auftragsnummer dazu notwendig ist. Auch sind die sich daraus ergebenden Redundanzen leicht zu erkennen. Diese Redundanzen lassen sich nur entfernen, indem die betroffenen Entitätsmengen gezielt aufgeteilt werden. In den meisten Fällen ist die Teilung der Entitätsmengen intuitiv klar und einfach. Dennoch ist dabei Vorsicht geboten. Grundsätzlich sind die Entitätsmengen derart zu trennen, dass sich aus den resultierenden Entitätsmengen die vorherige Entitätsmenge herleiten lässt. D.h. Trennung ohne Informationsverlust. Auf wie viele Arten kann eine Entitätsmenge getrennt werden? Dies ist abhängig von der Anzahl der Attribute im Entitätsschlüssel. Die Tabelle unten zeigt, auf wie viele Arten eine Entitätsmenge mit 2 und 3 Schlüsselattributen A, B und C getrennt werden kann: 2 Attribute: A; B oder AB 3 Attribute: A; B; C; AB; AC; BC oder ABC Eine Entitätsmenge mit n Attributen lässt sich damit auf 2 n - 1 Arten teilen. Bei vier Schlüsselattributen sind damit schon 15 mögliche Entitätsmengen zu betrachten. Bei der Trennung der Entitätsmenge geht man am besten in folgenden Schritten vor: 1. Bestimmen der möglichen Entitätsschlüsselkombinationen, die aus den gegebenen Schlüsselattributen gebildet werden können. 2. Zuordnen der Nichtschlüsselattribute zu jener Entitätsschlüsselkombination, von welcher das Nichtschlüsselattribut tatsächlich abhängig ist. Diese Zuordnung kann nur mit Kenntnis des tatsächlichen Sachverhaltes erfolgen. 3. Entitätsschlüsselkombinationen, welchen mindestens ein Nichtschlüsselattribut zugeordnet wurde, sind mit Sicherheit notwendig. Diese Entitätsmengen sind die ersten Resultatemengen. 4. Verbleiben Entitätsschlüsselkombinationen, welchen kein Nichtschlüsselattribut zugeordnet wurde, muss entschieden werden, ob diese ohne Informationsverlust weggelassen werden können. Dies ist nicht einfach. Wieder muss dies aufgrund des tatsächlichen Sachverhalts entschieden werden. Dabei wird überlegt, ob sich die ursprüngliche Entitätsmenge noch herleiten lässt, falls diese Entitätsschlüsselkombination nicht verwendet wird. 5. Benennung der Resultatemengen. Teil 2: Konzeptionelle Datenmodellierung 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 49 Diese Ausführungen zeigen, dass die Herleitung der Resultatemengen in 2. Normalform nicht trivial ist und eine vertiefte Kenntnis des Sachverhalts verlangen. Es sollte daher bei der Normalisierung der Versuch vermieden werden, ausgehend von einer unnormalisierten Entitätsmenge direkt die Resultatemengen in 3. Normalform herzuleiten, dabei werden häufig Fehler begangen. Durch die notwendige Kenntnis des Sachverhalts, treten bei der Normalisierung häufig auch inhaltliche Fragen zu den Daten auf. Es werden jetzt die beiden Entitätsmengen des Beispiels in 2. Normalform gebracht. Herleitung der 2. Normalform der Entitätsmenge Aufträge: 1. Auftrags#; Artikel#; Auftrags#, Artikel# 2. Artikel_Bez und Betrag gehören zu Artikel#. Auftrags_Dat gehört zu Auftrags# 3. 1. Artikel#, Artikel_Bez, Betrag 2. Auftrags#, Auftrags_Dat 4. Die Entitätsschlüsselkombination Auftrags#, Artikel# ist notwendig und muss daher als dritte Resultatemenge verwendet werden. Diese Entitätsmenge erstellt die Verbindung zwischen den Artikeln und den Aufträgen. 5. Resultatemengen: Aufträge Auftrags# 1 2 3 Auftrags_Datum 12. März 24. März 23. März Artikel Artikel# Artikel_Bez 4 5 9 Toaster TV Locher Betrag 120 2'889 49 Auftragspositionen Auftrags# 1 1 2 2 3 Artikel# 4 5 5 9 4 Tabellen 9: Entitätsmengen in 2. Normalform (Auftrag) Herleitung der 2. Normalform der Entitätsmenge Kunde: 1. Kunden#; Auftrags#; Kunden#, Auftrags# 2. Name, PLZ und Ort: Kunden#. 3. 1. Kunden#, Name, PLZ, Ort 4. Während die Entitätsschlüsselkombination Kunden#, Auftrags# notwendig ist (diese hält fest, welcher Kunde welche Aufträge vergeben hat), kann die Entitätsschlüsselkombination Auftrags# ohne Informationsverlust eliminiert werden. Interessant ist hierbei der Aspekt, dass bei der Normalisierung der ersten Entitätsmenge bereits eine Entitätsmenge der Aufträge entstanden ist. Da die Normalisierung aber nur einzelne Entitätsmengen isoliert betrachtet, erkennt sie diesen UmTeil 2: Konzeptionelle Datenmodellierung 50 5. Normalisierung von Entitätsmengen im konzeptionellen Modell stand nicht! Hier zeigen sich bereits deutlich die Grenzen einer isolierten Betrachtung der Entitätsmengen. 5. Resultatemengen: Kunden Kunden# 1 2 Name Maier Müller PLZ 8001 8001 Ort Zürich Zürich Auftragsvergaben Kunden# 1 1 2 Auftrags# 1 2 3 Tabellen 10: Entitätsmengen in 2. Normalform (Kunde) Nachdem die Ausgangsentitätsmengen in die 2. Normalform gebracht worden sind, hat sich die Struktur des Datenmodells deutlich geändert. Dabei fällt insbesondere auf, dass die m:m-Beziehung in 1:m-Beziehungen aufgelöst wurde. Damit wird deutlich, das m:m-Beziehungen die 2. Normalform verletzen und darum verboten sind. Beim Erstellen der Datenstruktur sollten m:m-Beziehungen im erweiterten Relationenmodell daher am besten von Anfang an vermieden und sofort mittels zweier 1:m-Beziehungen aufgelöst werden. Artikel Aufträge Auftragspositionen Kunden Auftragsvergaben Figur 13: Auftragsverwaltung in 2. Normalform Während in der 1. Normalform die funktionalen Abhängigkeiten betrachtet wurden, wird in der 2. Normalform verlangt, dass sämtliche Nichtschlüsselattribute voll funktional abhängig vom Entitätsschlüssel sind. D.h., es gilt f[s]=a (wobei s Entitätsschlüssel, und a Nichtschlüsselattribut), aber es gibt für t kein g so dass gilt, g[t]=a (wobei t Entitätsschlüsselteil ist). 5.3. 3. Normalform In der ersten und zweiten Normalform standen die Nichtschlüsselattribute und deren Abhängigkeit vom Entitätsschlüssel im Zentrum der Überlegungen. In der dritten Normalform werden nun störende Abhängigkeiten zwischen den Nichtschlüsselattributen gesucht und eliminiert. Hier muss bemerkt werden, dass von verschiedenen Autoren unterschiedlich strenge Definitionen der 3. Normalform gegeben wurden. Der Einfachheit halber wird hier nur die strengste Form, welche die Mängel der vorhergehenden Formen beseitigte, gezeigt. Diese Normalform wird in Anlehnung an deren Autoren auch Boyce/Codd-Normalform genannt. Eine Entitätsmenge ist in 3. Normalform, wenn sie in 2. Normalform ist, und wenn jedes Nichtschlüsselattribut nur vom Entitätsschlüssel und den Schlüsselkandidaten abhängig ist. Ein Nichtschlüsselattribut darf damit nicht von einem anderen Attribut oder einer Attributskombination abhängig sein, welches nicht Entitätsschlüssel oder Schlüsselkandidat ist (Bem: der EntiTeil 2: Konzeptionelle Datenmodellierung 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 51 tätsschlüssel ist auch ein Schlüsselkandidat). Im Gegensatz zur 2. Normalform, bei welcher sich die Beseitigung des Mangels schwierig gestaltete, ist dies bei der 3. Normalform einfach. Werden Attribute gefunden, welche die 3. Normalform verletzen, werden diese in eine separate Entitätsmenge ausgelagert. Dabei werden Attribute, welche vom selben Attribut bzw. von der selben Attributskombination abhängig sind, natürlich in eine gemeinsame Entitätsmenge eingelagert. Zusätzlich wird in die Entitätsmenge das Attribut bzw. die Attributskombination, von welchem die ausgelagerten Attribute abhängen, als Entitätsschlüssel in die neue Entitätsmenge eingefügt, ohne dass dieses aus der ursprünglichen Entitätsmenge entfernt würde. In der ursprünglichen Entitätsmenge ist dieses Attribut bzw. Attributskombination der Fremdschlüssel, welcher die neue Entitätsmenge referenziert. Im Beispiel der Auftragsverwaltung ist nur eine Verletzung der 3. Normalform zu finden. Das Attribut Ort der Entitätsmenge Kunden ist vom Attribut PLZ abhängig (ohne Berücksichtigung der Tatsache, dass Ortschaften allenfalls die selbe PLZ haben). Das Attribut PLZ ist in der Entitätsmenge Kunden weder Entitätsschlüssel noch Schlüsselkandidat, was an den Beispieldaten leicht zu erkennen ist. Nach der Behebung des Mangels sind aus der Entitätsmenge Kunden zwei Entitätsmengen entstanden: Kunden Kunden# 1 2 Name Maier Müller PLZ 8001 8001 Ortsverzeichnis (CH) PLZ Ort 8001 Zürich Tabellen 11: Entitätsmengen in 3. Normalform Ortsverzeichnis Artikel Aufträge Auftragspositionen Kunden Auftragsvergaben Figur 14: Auftragsverwaltung in 3. Normalform Die 3. Normalform ist verletzt, falls es Funktionen f und g gibt, so dass f[a]=b, g[b]=c gilt, aber keine Funktion h, so dass h[b]=a, wobei bc (a ist Entitätsschlüssel, b ist ein Attribut oder eine Attributskombination, c ist Nichtschlüsselattribut). Damit ist b und c von a, aber auch c von b funktional abhängig; b kann kein Schlüsselkandidat sein, da sonst a von b funktional abhängig wäre. Diese Art der Abhängigkeit g[f[a]]=c wird transitive Abhängigkeit genannt, c ist transitiv abhängig von a. Im Zusammenhang mit der 3. Normalform wird zu deren Definition auch der Begriff Determinante (Englisch: Determinant) eingeführt. Die Determinante ist ein Attribut bzw. Attributskombination, von welchem ein Attribut funktional abhängig ist. Eine Verletzung der 3. Normalform liegt demnach vor, wenn b Determinante aber nicht Schlüsselkandidat ist. Die 3. Normalform lässt sich damit auch wie folgt definieren: Teil 2: Konzeptionelle Datenmodellierung 52 5. Normalisierung von Entitätsmengen im konzeptionellen Modell Eine Entitätsmenge ist in 3. Normalform, wenn jede Determinante Schlüsselkandidat ist. Dabei fällt auf, dass in dieser Definition die 1. und 2. Normalform nicht explizit erwähnt werden müssen, sondern dass diese bereits integriert sind. Die letzte Definition besticht durch ihre Eleganz, während die vorhergehenden Definitionen für den Praktiker verständlich und leicht umzusetzen sind. Teil 2: Konzeptionelle Datenmodellierung 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 53 5.4. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 161. 5.4.1. Fragetyp A, Einfachauswahl 1. Folgende Entitätsmenge befindet sich in: A) B) C) D) E) in keiner Normalform 1. Normalform 2. Normalform 3. Normalform In 3. aber nicht in 2. Normalform Annahme: Ein Mitarbeiter ist nur in einer Filiale angestellt. Personal Personal# 2. 1 1 1 2 2 2 Lohn Maier Mayr Meier Meyer Meyr 794.63.268.156 120.55.221.257 820.70.334.055 653.09.529.127 3'400 6'700 5'400 4'500 557.33.271.059 4'900 A) B) C) D) E) wird auf der internen, physischen Ebene ausgeführt. hat das Ziel, Redundanzen innerhalb einer Entitätsmenge zu minimieren. ist eine umfassende Entwurfsmethodik für konzeptionelle Datenmodellierung. zerlegt Entitätsmengen und fügt diese in einem geordneten Prozess wieder zusammen. dient ausschliesslich der Vermeidung von Anomalien bei Speicheroperationen. Bei welchem Normalisierungsschritt werden m:m-Beziehungen zu je zwei 1:m-Beziehungen aufgelöst? 4. 1 2 3 1 Name AHV# Die Normalisierung... 3. Filial# A) B) C) D) E) bei keinem Normalisierungsschritt 1. Normalform 2. Normalform 3. Normalform bei der Denormalisierung Eines der Ziele der Normalisierung ist... A) B) C) D) E) die übersichtliche Gestaltung der Entitätsmengen. das Schaffen neuer Entitätsmengen. die Minimierung der Redundanz. die Gewährleistung der Benutzerfreundlichkeit. das Erkennen der funktionalen Abhängigkeiten. 5.4.2. Fragetyp B, Zuordnung Welche Begriffe lassen sich einander zuordnen? A) Normalisierung B) Denormalisierung C) Referentielle Integrität D) Schlüsselkandidaten E) Restriktion 1. Performance-Verbesserung A) B) C) D) E) Teil 2: Konzeptionelle Datenmodellierung 54 2. 5. Normalisierung von Entitätsmengen im konzeptionellen Modell Redundanzminderung A) 3. C) D) E) B) C) D) E) Vermeidung von Speicheranomalien A) 5. Voraussetzung für Fremdschlüssel-Entitätsschlüsselbeziehung A) 4. B) B) C) D) E) C) D) E) Eindeutige Identifikation A) B) Für welchen Begriff gilt der unten beschriebene Sachverhalt? A) funktionale Abhängigkeit B) voll funktionale Abhängigkeit C) transitive Abhängigkeit D) Wiederholungsgruppe E) Fremdschlüsselbeziehung 6. Welcher Begriff wird einzig im Zusammenhang mit unnormalisierten Relationen verwendet? A) 7. C) D) E) B) C) D) E) Welcher Begriff betrachtet die Abhängigkeiten von Nichtschlüsselattributen in einer einzelnen Relation? A) 9. Was betrachtet die Normalisierung nicht? A) 8. B) B) C) D) E) Welcher Begriff betrachtet die Entitätsschlüsselteile in einer Relation? A) B) C) D) E) 10. Bei welchem der Begriffe werden allfällige Schlüsselkandidaten betrachtet? A) B) C) D) E) 5.4.3. Fragetyp E, kausale Verknüpfung 1. Bei der Normalisierung werden leistungsbestimmende Überlegungen nicht einbezogen, weil die Normalisierung keine Aussagen zu Hilfsorganisationen (Zugriffsbeschleunigung) in der internen Ebene macht. A) 2. +weil+ B) +/+ C) +/- D) -/+ E) -/- Durch die Normalisierung der Entitätsmengen werden Anomalien bei Speicheroperationen vermieden, weil die Normalisierung eine umfassende Entwurfsmethodik für konzeptionelle Datenbanken ist. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 5.4.4. Fragetyp K, mehrfache Entscheidung 1. Entitätsmengen in der 1. Normalform... + lassen am Schnittpunkt Attribut/Tupel auch Attribute mit mehreren Werten zu. haben keine Nichtschlüsselattribute, die vom Gesamtschlüssel abhängig sind. können in Datensichten (Views) gebraucht werden. haben grössere Redundanzen als voll normalisierte Entitätsmengen. Teil 2: Konzeptionelle Datenmodellierung 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 2. Was sind die Ziele und Eigenschaften der Normalisierung? + 3. 55 Redundanzen innerhalb einer Entitätsmenge zu minimieren. Sorgt für eine zweckmässige Strukturierung der Daten, auch für die physische, interne Ebene. Dient der Vermeidung von Anomalien bei Speicheroperationen. Eliminiert auch Redundanzen, die über mehrere Entitätsmengen verteilt sind. Welche Abhängigkeiten sind funktionale Abhängigkeiten? + Geburtsdatum Sternzeichen Schweizer AHV-Nummer Name Name Vorname Autokennzeichen Wagentyp (Wechselnummern vernachlässigen) Teil 2: Konzeptionelle Datenmodellierung 56 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 5.5. Bearbeitungsaufgaben Die Lösungen zu den folgenden Bearbeitungsaufgaben finden Sie auf Seite 164. 5.5.1. Normalisierung Projektverwaltung Schwierigkeitsgrad: Trockenübung (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Zeitaufwand: 15 Minuten Normalisieren Sie folgende Entitätsmenge einer Projektverwaltung. Zeigen Sie die Entitätsmenge(n) nach jedem Normalisierungsschritt und kennzeichnen Sie deren Entitätsschlüssel. Projektverwaltung Mitarbeiter# 1 2 Name Projekt# Müller Meier 1 2, 3 Projektbezeichnung Staudamm S3 Brücke B134, Tunnel T25 StatusCode A B, B 3 Sieber 1, 2 Staudamm S3, Brücke B134 A, B StatusBezeichnung aktiv offeriert, offeriert aktiv, offeriert Tabelle 12: Unnormalisierte Entitätsmenge Projektverwaltung 5.5.2. Normalisierung Buchhandelssystem Schwierigkeitsgrad: Planschbecken Zeitaufwand: 20 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Normalisieren Sie folgende Entitätsmenge einer Applikation, welche Bestellungen von Büchern verwalten soll. Zeigen Sie die Entitätsmenge(n) nach jedem Normalisierungsschritt und kennzeichnen Sie deren Entitätsschlüssel. Annahmen zur Aufgabe: Eine Bestellung kann durch mehrere Besteller gemeinsam ausgelöst werden. Eine Bestellung kann mehrere Bücher umfassen. Bestellungen Bestell_Nr 1 Bestell_Datum 4. März 2 3 4 6. März 7. März 7. März Buch_Nr 232-41, 343-21 534-45 231-55 232-41 Buch_Bez Mörder im Rosengarten, Der Tod im Schulzimmer Vegetarier leben länger Sinue und Echnaton Mörder im Rosengarten Besteller_Nr 1 Besteller Fritz Müller 2 1 3, 4 Hans Meier Fritz Müller Urs Schmid, Rita Gugolz Tabelle 13: Unnormalisierte Entitätsmenge Bestellwesen Teil 2: Konzeptionelle Datenmodellierung 57 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 5.5.3. Normalisierung Wagenvermietung Schwierigkeitsgrad: Schwimmer Zeitaufwand: 40 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Normalisieren Sie die unten gezeigten Entitätsmengen (1. bis 3. Normalform). Bemerkungen und Tipps zum Vorgehen: Vorsicht, die in dieser Übung verwendeten Entitätsmengen weisen mehrere Stolpersteine auf. Ein unüberlegtes Anwenden der Normalisierungsregeln führt zu unsinnigen Resultaten! Überlegen Sie sich bei jedem Schritt genau, was Sie tun. Beim Übergang in die erste Normalform sind die Entitätsschlüssel beider Entitätsmengen nicht mehr eindeutig, so dass diese um geeignete Schlüsselattribute erweitert werden müssen, bevor der zweite Normalisierungsschritt angegangen werden kann (der zweite Normalisierungsschritt untersucht den Entitätsschlüssel). In der Entitätsmenge Wagen kann dies durch den Einbezug zweier weiterer Attribute erreicht werden. In der Entitätsmenge Mieter ist die Situation wesentlich ungünstiger, da zwei Entitäten in der Tabelle sind, die absolut identisch sind, so dass der Einbezug beliebig vieler Attribute nicht zu einem eindeutigen Schlüssel führt. Um einen eindeutigen Schlüssel zu erhalten, muss ein neues Attribut eingeführt werden! Annahme: Ein Kunde mietet den selben Wagen nur ein einziges Mal am gleichen Tag, kann aber natürlich mehrere Wagen am selben Tag mieten. Annahme: Der Kilometeransatz ist einzig vom Wagentyp abhängig. Unnormalisierte Relationen: Wagen Wagen_Nr Kennzeichen 1 ZH 333 666 2 ZH 111 222 3 ZH 100 000 4 ZH 25 25 25 Wagentyp Fr/km Mieter_Nr Mercedes 190 Toyota MR2 Suzuki Swift Mercedes 190 0.80 0.75 0.50 0.80 3/64/19 5/3 19/5 - Datum Preis 11.11/2.5/14.3 5.8/24.4 12.3/12.8 - 160/400/200 82.50/150 200/50 - Total 760.00 232.50 250.00 - Mieter Mieter_Nr 3 64 5 19 Name Maier Meier Meyer Meyr Total 310.00 400.00 132.50 400.00 Zahl_Datum 1.12/26.4 2.6 3.9/3.9 28.3/28.3 Zahl_Betrag 160/150 400 82.50/50 200/200 Tabellen 14: Unnormalisierte Entitätsmengen Wagen und Mieter Teil 2: Konzeptionelle Datenmodellierung 58 6. Verbundinstrumente des konzeptionellen Modells 6. Verbundinstrumente des konzeptionellen Modells Während bei den Elementarinstrumenten die kleinsten Einheiten des konzeptionellen Datenmodells besprochen wurden (die Normalisierung zeigt Regeln zur Strukturierung der Elementarinstrumente Entitäts- und Beziehungsmenge), sollen jetzt daraus komplexere Gebilde zusammengefügt werden. Vergleichbar ist dies etwa mit den chemischen Elementen (der Periodentabelle), aus welchen komplexere chemische Verbindungen (Moleküle) erzeugt werden können. Aus diesen Verbundinstrumenten wird schliesslich das eigentliche Datenmodell gebildet. 6.1. Hierarchie Die hierarchische Beziehung zweier Entitätsmengen wird mit genau einer 1:m-, 1:mc- c:m- oder c:mc-Beziehung hergestellt (z.B. Kunden und Aktiendepots, oder Sachbearbeiter und Kunden). Es ist das einfachste Verbundinstrument. Hierarchische Beziehungen sind in Datenstrukturen sehr häufig. Dabei bilden sich häufig mehrstufige Hierarchien. Kunden besitzen Kunden KundenDepots besitzen Depots gehören Depots Figur 15: Hierarchie Kunden Kunden# K-000001 K-000002 K-000003 K-000004 Name Müller Meier Sieber Egli Gurtsdatum 7. März 4. Juli 12. März 20. Januar Geschlecht männlich männlich weiblich männlich Depots Depot# Kunden# Eröffnungsdatum Saldierungsdatum DP-Akt-001001 DP-Akt-001231 DP-Akt-002342 DP-Akt-009786 K-000002 K-000001 K-000003 K-000003 3. Juni 6. Juni 9. April 12. Januar <NULL> 19.8. <NULL> <NULL> Tabellen 15: Entitätsmengen bei der Hierarchie 6.2. Beziehungsstruktur Zur Abgrenzung zu den Begriffen Beziehung und Beziehungsmenge wurde hier der Name Beziehungsstruktur vergeben. Die Beziehungsstruktur realisiert eine m:m-, m:mc- oder mc:mcBeziehung zwischen zwei (oder mehr) Entitätsmengen. Im Entity-Relationship-Modell werden als Elementarinstrumente zwei Entitätsmengen und eine Beziehungsmenge zur Bildung der BeTeil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 59 ziehungsstruktur verwendet; im erweiterten Relationenmodell werden 3 Entitätsmengen verwendet. Die Entitätsmenge in der Beziehungsstruktur, welche die Entitätsmengen verbindet, wird auch im erweiterten Relationenmodell häufig Beziehungsmenge genannt. Depots Aktien deponiert in enthalten Depotinhalt Depots Aktien deponiert in enthalten Depotinhalt Figur 16: m:m-, m:mc- und mc:mc-Beziehungsstruktur Depots Depot# Kunden# DP-Akt-001001 DP-Akt-001231 DP-Akt-002342 DP-Akt-009786 K-000002 K-000001 K-000003 K-000003 Eröffnungsdatum 3. Juni 6. Juni 9. April 12. Januar Saldierungsdatum <NULL> 19. August <NULL> <NULL> Aktien Aktien# 103923 204432 532994 394001 AktienArt Inhaberaktie Obligation Namenaktie Inhaberaktie Emittent FantasyAG FantasyAG TraspoAG Colour-It & Co. AG AktuellerKurs 450,55 28,60 230,30 202,05 Depotinhalt Depot# DP-Akt-001001 DP-Akt-001231 DP-Akt-001231 DP-Akt-001231 DP-Akt-002342 DP-Akt-002342 Aktien# 204432 103923 204432 394001 103923 204432 Saldo 20 50 250 10 100 500 Tabellen 16: Entitätsmengen bei der Beziehungsstruktur Mit dieser Grundstruktur lassen sich aber nicht nur zwei, sondern auch drei oder mehr Entitätsmengen miteinander verbinden. Teil 2: Konzeptionelle Datenmodellierung 60 6. Verbundinstrumente des konzeptionellen Modells Aufträge Artikel Rechnungen erbracht im Auftrag bestehen aus Rechnungsdetails Auftragspositionen Aufträge Artikel Rechnungen erbracht im Auftrag bestehen aus Rechnungsdetails Auftragspositionen Figur 17: Beziehungsstruktur mit drei Entitätsmengen Aufträge Auftrags# 254301 254302 244692 Kunden# 1 1 2 Auftragsdatum 4. März 4. März 4. März Artikel Artikel# Bezeichnung 2531 7121 2644 4623 Monitor XP 34-3 Monitor XP 34-4 Diskette XDS Tastatur HG/3 Preis 1'090,00 1'490,00 4,50 99,00 Lagerbestand 6,00 5,00 5'465,00 12,00 Rechnungen Rechnungs# 32 33 34 35 Datum 12. März 23. März 14. März 5. Mai Betrag 2'580,00 198,00 112,50 99,00 Auftragspositionen Auftrags# Artikel# Rechnungs# 254301 254301 254302 244692 244692 2531 7121 4623 2644 4623 32 32 33 34 35 Bestellmenge 1,00 1,00 2,00 25,00 1,00 Rechnungsbetr. 1'090,00 1'490,00 198,00 112,50 99,00 Lieferdatum 10. März 10. März 23. März 12. März 2. Mai Tabellen 17: Entitätsmengen bei der Beziehungsstruktur mit drei Entitätsmengen Als Entitätsschlüssel der Beziehungsmenge wird häufig die Kombination der Fremdschlüssel verwendet. In besonderen Fällen ist diese Wahl allerdings nicht korrekt. Soll eine Entität der einen Entitätsmenge (z.B. die Aktie 023453) mehrfach der selben Entität (Aktiendepot DP-Akt-001001 des Kunden K-000002) der anderen Entitätsmenge zugeordnet werden (wobei jeder Eintrag z.B. Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 61 einem Kaufgeschäft zu einem bestimmten Preis entspricht), so würde die selbe Entitätsschlüsselwert-Kombination mehrfach auftreten und wäre damit nicht mehr eindeutig. Meist erhält die Beziehungsmenge in diesen Fällen weitere Beziehungsattribute. Diese eignen sich allenfalls dafür, den Entitätsschlüssel in geeigneter Weise zu ergänzen. Falls dies nicht möglich ist, muss ein künstlicher Entitätsschlüssel für die Beziehungsmenge geschaffen werden. Dieser künstliche Schlüssel kann natürlich von der Applikation verwaltet werden und dem Anwender verborgen bleiben. Auch muss beachtet werden, dass drei Entitätsmengen nicht nur mittels einer einzigen Entitätsmenge (mit drei referenzierten Entitätsmengen), sondern auch mit 2 oder 3 Beziehungsmengen (mit jeweils zwei referenzierten Entitätsmengen) verknüpft werden können. Ausserdem lassen sich 3 Entitätsmengen mit 2 Beziehungsmengen mit jeweils 2 referenzierten Entitätsmengen auf 3 unterschiedliche Arten verknüpfen. 3 Entitätsmengen lassen sich damit auf insgesamt fünf verschiedene Arten verknüpfen. Nur eine dieser fünf Varianten ist jeweils korrekt. Bei einer genauen Betrachtung des Sachverhalts lässt sich die korrekte Lösung bestimmen. 6.3. Rekursion Bei der Rekursion erstellt eine Entitätsmenge mittels einer c:c- oder c:mc-Beziehung eine Referenz auf sich selbst. Dabei sind die Assoziationstypen 1 und m fast immer ungeeignet, da sonst eine Entität immer eine Entität referenzieren (1), bzw. immer durch eine Entität der selben Entitätsmenge referenziert werden müsste (m), wobei fast zwangsläufig Zyklen, Kreise entstehen. Rekursive mc:mc-Beziehungen sind aufgrund der Normalisierung verboten und müssen mittels einer Beziehungsmenge aufgelöst werden. Dabei entsteht das Verbundinstrument, wie es im Kapitel '6.4. Aggregation' auf Seite 63 beschrieben wird. Es verbleiben demnach nur die beiden anfangs genannten Beziehungstypen. Durch die rekursive Referenz für sich ist noch keine innere Strukturierung der Entitäten vorgegeben (innerhalb der Entitätsmenge). D.h. die Entitäten können, zumindest von aussen betrachtet, kreuz und quer Referenzen aufbauen. Eine rekursive c:c-Beziehung lässt allerdings höchstenfalls paarige Verknüpfungen von Entitäten zu, denn einer Entität kann höchstens eine Entität zugeordnet werden. So liesse sich in der Entitätsmenge der Kunden z.B. festhalten, welches der Lebenspartner des Kunden ist. Lebenspartner Kunden Kunden verbunden m it verbunden m it verbunden m it Figur 18: Paarbildung durch rekursive c:c-Beziehung Kunden Kunden# K-000001 K-000002 K-000003 K-000004 Lebenspartner K-000003 <NULL> <NULL> <NULL> Name Gurtsdatum Geschlecht Müller Meier Sieber Egli 7. März 4. Juli 12. März 20. Januar männlich männlich weiblich männlich Tabelle 18: Entitätsmenge bei der rekursiven c:c-Beziehung Eine rekursive c:mc-Beziehung erlaubt fast alle Möglichkeiten der Verknüpfung. Eine Entität kann aber im Maximum genau eine Entität referenzieren, dadurch lassen sich nur bestimmte Netzstrukturen bilden. Grundsätzlich können nun daraus dennoch beliebig viele Grundstrukturen (inTeil 2: Konzeptionelle Datenmodellierung 62 6. Verbundinstrumente des konzeptionellen Modells nerhalb der selben Entitätsmenge) gebildet werden. In der Praxis sind zwei Strukturen häufig. Die erste ist jene, in welcher die Entitäten beliebig miteinander verknüpft werden können. Dabei entsteht ein oder auch mehrere voneinander unbhängige Netzwerke von verbundenen Entitäten (dabei besteht kein Zusammenhang zu netzwerkartigen Datenbanksystemen). So kann z.B. festgehalten werden, welcher Sachbearbeiter welchen Sachbearbeiter bei Absenz vertritt. Von aussen betrachtet scheinen die Entitäten aber keinem Ordnungsprinzip untergeordnet. Sachbearbeiter Stellvertretung Sachbearbeiter Stellvertretung vertritt vertreten durch Figur 19: Rekursive c:mc-Beziehung ohne innere Strukturierung Sachbearbeiter Sachbearbeiter# 1 2 3 4 Name Stellvertretung Jäggi Wick Schär Pfeiffer 2 3 1 2 Tabelle 19: Entitätsmenge der rekursiven c:mc-Beziehung ohne innere Strukturierung Vielfach wird mittels rekursiver c:mc-Beziehungen eine hierarchische Struktur der Entitäten erstellt, die zweite mögliche Grundstruktur rekursiver c:mc-Beziehungen. Bei einer hierarchischen Grundstruktur hat eine Entität maximal eine übergeordnete Entität. Nur die Entität der obersten Hierarchiestufe hat keine übergeordnete Entität mehr. Dabei können wiederum mehrere voneinander unabhängige Hierarchien innerhalb einer einzigen Entitätsmenge gebildet werden. Hätte eine Entität mehr als eine übergeordnete Entität, würde daraus wieder die oben gezeigte Netzwerkstruktur. Daher kann die hierarchische Struktur auch als Spezialfall der Netzwerkstruktur betrachtet werden. So kann z.B. festgehalten werden, wie sich die Organisationseinheiten einer Unternehmung hierarchisch gliedern, wie Hauptkonten der Buchhaltung in Konten und wieder in Unterkonten gegliedert werden. Organisationseinheiten Organisationsstruktur Organisationseinheiten untergeordnete Einheit Figur 20: rekursive c:mc-Beziehung zur Hierarchiebildung Organisationseinheiten Einheiten_Id Bezeichnung OrgEDV Organisation und EDV Übergeordnete_Einheit GeschLeit Teil 2: Konzeptionelle Datenmodellierung Organisationsstruktur übergeordnete Einheit 6. Verbundinstrumente des konzeptionellen Modells EntWart RechZen SysProg Entwicklung und Wartung Rechenzentrum Systemprogrammierung 63 OrgEDV OrgEDV RechZen Tabelle 20: Entitätsmenge der rekursiven c:mc-Beziehung zur Hierarchiebildung Natürlich könnte die selbe Hierarchie auch mittels mehrerer Entitätsmengen, welche mit dem Verbundinstrument Hierarchie verknüpft werden, erzeugt werden. Dabei würden einerseits aber Entitäten der selben Art in mehreren Entitätsmengen verwaltet, andererseits wäre die Struktur der Hierarchie fest vorgegeben und Änderungen der Hierarchie (z.B. der Gliederungstiefe) könnten nur mit grossem Aufwand vollzogen werden. Die Problemstellung bei rekursiven Beziehungen ist immer von der selben Art. Wie soll die gewählte innere Strukturierung, welcher Art auch immer, gewährleistet werden? Durch die innere Struktur, d.h. durch die Fremdschlüssel, ist die Einhaltung der Strukturierungsregel bei diesem Verbundinstrument nicht garantiert. Damit muss diese durch ergänzende Regeln, Integritätsregeln garantiert werden. Diese Integritätsregeln sind Teil des Datenmodells. Falls möglich, werden diese Integritätsregeln bei der physischen Definition der Datenstruktur direkt im Datenbanksystem definiert. Im schlechteren Fall müssen diese in der Anwendung in den Programmen sichergestellt werden. In den gezeigten drei Grundstrukturen ist die Definition der Integritätsregeln selbst einfach. Paarbildung: Bei c:c-Beziehungen muss garantiert werden, dass nur eine Entität der beiden verknüpften Entitäten effektiv einen Eintrag im Fremdschlüssel hat, oder dass dieser auch tatsächlich auf den anderen Partner zeigt. Netzstruktur: In der Netzstruktur ist keine Integritätsregel notwendig, sämtliche Verknüpfungen sind erlaubt. Hierarchische Struktur: Die hierarchische Struktur ist sichergestellt, falls keine zyklischen Verknüpfungen der Entitäten vorhanden sind. Beim Einfügen von Entitäten oder beim Ändern des Fremdschlüssels einer Entität muss daher lediglich geprüft werden, ob dadurch ein Zyklus entsteht. An dieser Stelle sei erneut auf die Problematik von Fremdschlüsseln in c:-Beziehungen hingewiesen, siehe auch Kapitel '4.2.4. Assoziationstypen, Beziehungstypen' auf Seite 31. 6.4. Aggregation Bei der Aggregation (zu lat. aggregare "beigesellen") werden, ganz ähnlich zur Rekursion, die Entitäten einer Entitätsmenge netzwerkartig verknüpft, einander beigesellt. Während bei der Rekursion eine Entität nur eine einzige Entität referenzieren kann, kann in der Aggregation eine einzelne Entität beliebig viele Entitäten referenzieren. Dadurch können alle denkbaren Netzstrukturen gebildet werden (die Rekursion kann als Spezialfall der Aggregation aufgefasst werden), was bei der Rekursion nicht möglich war. Bei der Aggregation wird eine Beziehungsmenge eingefügt, welche eine selbstbezügliche mc:mc-Beziehung ermöglicht. Die m:m-Beziehung ist, entsprechend den Ausführungen zur Rekursion, bei diesem Verbundinstrument nur in den seltensten Fällen sinnvoll. Die bekannteste Verwendung der Aggregation ist die Stückliste. Bei der Stückliste werden Stücke (z.B. die Kaffeemaschine) verwaltet, welche sich aus anderen Einzelteilen (z.B. Wasserbehälter, Pumpe, Schraube M6/5, ...) zusammensetzt. Dabei kann das selbe Stück, wie zu erwarten, mehrfach bei der Herstellung unterschiedlicher Stücke verwendet werden. Teil 2: Konzeptionelle Datenmodellierung 64 6. Verbundinstrumente des konzeptionellen Modells Stücke Oberteil Stücke Unterteil Stückstrukturen Oberteil Unterteil Stückstrukturen Figur 21: Darstellung der Aggregation Stücke Stück# 57120 76342 36234 77982 90871 Bezeichnung Kaffeemaschine Pumpe Wasserbehälter C-8.5 Dichtung K6-4 Schraube M6/5 Stückstrukturen Oberteil 57120 57120 76342 76342 Unterteil 36234 76342 77982 90871 Menge 1 1 1 3 Tabellen 21: Entitätsmengen bei der Aggregation Durch das Datenmodell selbst ist nicht sichergestellt, dass keine zyklischen (unerwünschten) Verknüpfungen entstehen. So könnte z.B. eingetragen werden, dass der Wasserbehälter Unterteil von sich selbst ist. Es muss daher mittels einer Integritätsregel sichergestellt werden, dass zyklische Verknüpfungen verhindert werden (siehe auch '8. Integrität im konzeptionellen Modell' auf Seite 83). Im Beispiel erfolgt pro Unterteil ein einzelner Eintrag in die Entitätsmenge Stückstrukturen (z.B. für die Schraube M6/5 3 Stück), auch wenn dieses mehrfach verwendet wird. Sollen für das einzelne Unterteil aber zusätzliche Informationen gespeichert werden (z.B. Planlage), so muss pro Unterteil ein Eintrag erstellt werden (im Beispiel wären das 3 Tupel). Häufig wird versucht, die Stückliste mittels einer selbstbezüglichen Beziehungsmenge zu bilden, welche nicht nur zwei Fremdschlüssel, sondern so viele Fremdschlüssel wie Anzahl notwendige Gliederungsstufen enthält. Meist werden dabei drei Fremdschlüssel, womit die maximale Gliederungstiefe von drei Stufen vorgegeben wird, in die Beziehungsmenge eingebettet. Diese Entitätsmenge enthält mit Sicherheit Redundanzen und ist damit in der konzeptionellen Datenmodellierung unerwünscht. Durch die vorgegebene Strukturierungstiefe der Stückliste hat das Modell zudem viel an Flexibilität verloren. Es ist nachträglich nur mit grossem Entwicklungsaufwand möglich, Änderungen der vorgegebenen Strukturierungstiefe zu realisieren. 6.5. Spezialisierung/Generalisierung Bei der Spezialisierung wird eine Entitätsmenge in mehrere Entitätsmengen zerlegt. Dabei werden Entitätsmengen mit spezifischeren Eigenschaften gebildet. So kann z.B. die Entitätsmenge Valoren (Wertpapiere) in die Entitätsmengen Inhaberaktien, Namensaktien und Obligationen aufgeteilt werden. Die ursprüngliche Entitätsmenge wird dabei nicht eliminiert. In dieser werden die gemeinsamen Eigenschaften (Attribute) aller spezialisierten Entitätsmengen geführt, während die neuen Entitätsmengen nur die für sie spezifischen Eigenschaften führen. So sind in der Entitätsmenge Valoren die Attribute Valoren-Nr, Bezeichnung, etc. zu finden, während in der Entitätsmenge Obligationen z.B. der Zinssatz, der Verfalltermin, etc. festgehalten werden. Dadurch ist auch unmittelbar klar, dass die spezialisierten Entitätsmengen mit der Entitätsmenge, welche Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 65 die gemeinsamen Eigenschaften beinhaltet, verknüpft werden müssen. Dabei wird jede spezialisierte Entitätsmenge mit genau einer 1:c-Beziehung mit der gemeinsamen Entitätsmenge verknüpft. Die spezialisierten Entitätsmengen werden dann häufig Subentitätsmengen, die ursprüngliche Entitätsmenge Superentitätsmenge bezeichnet. Die gesamten Eigenschaften einer einzelnen 'Entität' sind dabei nur bekannt, falls die Eigenschaften beider Entitäten zusammen betrachtet werden. Valoren können sein können sein können sein Inhaberaktien Nam enaktien Obligationen Valoren können sein können sein Inhaberaktien Nam enaktien können sein Obligationen Figur 22: Darstellung der Spezialisierung/Generalisierung Valoren Valoren# 103923 204432 532994 394001 AktienArt Inhaberaktie Obligation Namenaktie Inhaberaktie Emittent FantasyAG FantasyAG TranspoAG Colour-It & Co. AG AktuellerKurs 450,55 28,60 230,30 202,05 Inhaberaktien Valoren# 103923 394001 Kaufkurs 420,30 210,10 Namenaktien Valoren# 532994 Kunden# K-0000005 Obligationen Valoren# 204432 Zinssatz Verfalltermin 4.75 31. Dezember Teil 2: Konzeptionelle Datenmodellierung 66 6. Verbundinstrumente des konzeptionellen Modells Tabellen 22: Entitätsmengen bei der Spezialisierung/Generalisierung Bei der Generalisierung handelt es sich um das selbe Verbundinstrument, aber um den umgekehrten Vorgang. Wurden bei der Spezialisierung für eine einzelne Entitätsmenge Attribute in mehrere spezialisierte Entitätsmengen ausgelagert, so werden bei der Generalisierung die gemeinsamen Attribute von Entitätsmengen in eine gemeinsame Entitätsmenge eingebracht. So können z.B. die gemeinsamen Attribute (Name, Strasse, Ort, ...) der Entitätsmengen Kunden und Angestellte in die Entitätsmenge Partner eingebracht werden. Auf konzeptioneller Ebene ist die möglichst detaillierte und realitätsnahe Gliederung der Entitätsmengen wünschenswert. Wird zur Darstellung des Sachverhalts die obige Notation verwendet, so droht die Gefahr, dass das Datenmodell unübersichtlich und damit schlecht lesbar wird. Ausserdem ist es mittels der bisherigen Instrumente nicht möglich festzuhalten, ob im Datenmodell überlappende Entitätsmengen zugelassen sind oder nicht. So können sich zum Beispiel die Entitätsmengen Kunden und Angestellte überlagern, d.h. der Partner ist sowohl Kunde als auch Angestellter und benötigt daher die Eigenschaften beider Subentitätsmengen (bereits möglich). Ein Valor aber kann eine Namensaktie, aber niemals gleichzeitig auch Inhaberaktie oder Obligation sein. Daher muss in diesem Fall ein gleichzeitiger Eintrag in beide Subentitätsmengen verhindert werden (noch nicht möglich). In der Praxis sind zwei Ansätze zu finden, mittels welcher dieser Sachverhalt festgehalten werden kann. Im ersten Ansatz werden die Entitätsmengen unverändert belassen, während die Darstellung der Beziehung verändert wird. Die betroffenen 1:c-Beziehungen, welche bisher unabhängig voneinander modelliert wurden, von welchen aber nur jeweils eine einzige verwendet werden darf, werden als eine 'gegabelte' Beziehung dargestellt: Valoren können sein Inhaberaktien Nam enaktien Obligationen Valoren können sein Inhaberaktien Nam enaktien Obligationen Figur 23: Darstellung Spezialisierung/Generalisierung mittels gegabelter Beziehungen Bei dieser Darstellungsform wird der Sachverhalt korrekt widergegeben, aber das Datenmodell verliert erneut an Übersichtlichkeit. Mit der zweiten Methode wird der Sachverhalt ebenfalls korrekt festgehalten, zusätzlich wird das Datenmodell aber kompakter, was insbesondere bei grösseren Modellen wünschenswert ist. Zur Darstellung der Mengen und deren Verhältnisse werden die Teilmengen und die Schnittmengen (falls vorhanden) direkt grafisch veranschaulicht (entsprechend Mengenalgebra). Zwar können die 1:c-Beziehungen noch immer in das Modell eingetragen werden, in der Regel wird aber darauf verzichtet, da sich diese direkt aus dem Zu- Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 67 sammenhang heraus ergeben. Grundsätzlich können damit vier unterschiedliche Fälle auftreten: Valoren Inhaberaktien Partner Nam enaktien Kunden Obligationen Teilmengen ohne Überschneidung Angestellte Teilmengen mit Überschneidung Valoren Inhaberaktien Partner Nam enaktien Obligationen Teilmengen mit vollständiger Überdeckung ohne Überschneidung Kunden Angestellte Teilmengen mit vollständiger Überdeckung mit Überschneidung Figur 24: Darstellung Spezialisierung/Generalisierung mittels Mengendarstellung Wurde die zerlegte Entitätsmenge durch eine andere Entitätsmenge referenziert, so muss nach der Zerlegung überlegt werden, welche Entitätsmenge neu referenziert werden soll. Und auch im umgekehrten Fall muss überlegt werden, welche Entitätsmenge die Referenz behalten soll. Dabei sollten Referenzen grundsätzlich so gewählt werden, dass die mögliche Menge der Entitäten möglichst klein ist. So muss z.B. für Namenaktien der Inhaber festgehalten werden (Aktienbuch), während bei Inhaberaktien dieser nicht verwaltet werden muss. Der Fremdschlüssel (welcher den Inhaber referenziert) wird daher nicht in der Superentitätsmenge Valoren integriert, sondern besser in der Entitätsmenge der Namensaktien. NULL-Werte in einer Entitätsmenge in 3. Normalform sind häufig ein Hinweis darauf, dass die betroffene Entitätsmenge mittels einer Spezialisierung in mehrere Subentitätsmengen zerlegt werden kann. Die Attribute, in welchen NULL-Werte auftreten, werden dabei in die Subentitätsmengen ausgelagert. Dadurch treten in der ursprünglichen Entitätsmenge keine NULLWerte mehr auf. Bei der Erklärung von NULL-Werten wurde bereits darauf hingewiesen, dass NULL-Werte unterschiedliche Bedeutungen haben können (siehe '4.3.3. NULL-Werte' auf Seite 35). Diese Zerlegung in Subentitäten ist immer dann sinnvoll, wenn der NULL-Wert die Bedeutung 'für diese Entität wird hier kein Wert eingetragen' hat und dieser spezielle Typ von Entität innerhalb der Entitätsmenge mehrfach auftritt. 6.6. Wertetabelle Mittels der Wertetabelle (auch Code-Tabelle oder statische Tabelle) kann für Attribute ein dynamischer Wertebereich definiert werden. Die erlaubten Werte des Wertebereichs ändern sich dabei mit der Zeit, was für einen normalen Wertebereich nicht unmittelbar möglich ist. So kann z.B. in einer Wertetabelle festgehalten werden, mit welchen Strategien die Depots der Kunden Teil 2: Konzeptionelle Datenmodellierung 68 6. Verbundinstrumente des konzeptionellen Modells verwaltet werden (z.B. CH-Low-Risk-Fond). Wird eine neue Strategie hinzugefügt, bzw. eine alte eliminiert, können diese Änderungen ohne Eingriff in das Datenmodell, d.h. die Definition der Wertebereiche, vorgenommen werden. Zwischen der Wertetabelle und der Entitätsmenge, welche die Wertetabelle verwendet, besteht eine 1:mc-Beziehung. Das Attribut, welches die Wertetabelle als Wertebereich verwendet, ist dabei ein Fremdschlüssel, welcher die Wertetabelle referenziert. VerwaltungsStrategien verwendet in VerwaltungsStrategien StrategieZuordnung verwendet in Depots haben Depots Figur 25: Darstellung der Wertetabelle Depots Depot# Kunden# DP-Akt-001001 DP-Akt-001231 DP-Akt-002342 DP-Akt-009786 K-000002 K-000001 K-000003 K-000003 Eröffnungsdatum 3. Juni 6. Juni 9. April 12. Januar Saldierungsdatum <NULL> 19.8. <NULL> <NULL> Verwaltungsstrategie CHLowRiskFond USALowRiskFond CHLowRiskFond CHAktienAAA Verwaltungsstrategien Verwaltungsstrategie ohne CHLowRiskFond USALowRiskFond CHAktienAAA Beschreibung kein Verwaltungsauftrag Aktienfonds Schweizer Firmen mit geringem Risiko Aktienfonds USA Firmen mit geringem Risiko Aktien von Firmen mit S&P-Rating AAA Tabellen 23: Entitätsmengen bei der Wertetabelle In der Wertetabelle werden häufig zusätzliche Attribute eingefügt, welche den Wert ausführlicher Beschreiben (z.B. 'Aktienfonds Schweizer Firmen mit geringem Risiko') oder welche die Verarbeitung der Entitäten mittels Parametern zulassen (z.B. zur Steuerung der Verrechnungsart der Managementgebühren). Von aussen betrachtet mag die Wertetabelle zunächst wie das Verbundinstrument 'Hierarchie' aussehen, inhaltlich handelt es sich aber um einen gänzlich anderen Sachverhalt (Semantik des Modells). Dies äussert sich auch in einer Reihe von inhaltlichen Unterschieden. Während bei der Hierarchie die Menge der Entitäten in der übergeordneten Entitätsmenge meist kontinuierlich wächst, enthält die Wertetabelle relativ wenige und eine mehr oder weniger konstante Zahl von Entitäten (dieser Umstand nimmt Einfluss auf die Herleitung des internen Modells). Ausserdem werden in der Hierarchie zusammengehörige Entitäten zu einem ganzheitlichen Gebilde verknüpft, während bei der Wertetabelle lediglich Entitäten mit gleichen Eigenschaften versehen werden. In Datenmodellen treten zum Teil sehr viele Wertetabellen auf. Die Übersichtlichkeit des Datenmodells leidet darunter, obgleich die Wertetabellen meist wenig zum grundlegenden Verständnis des Modells beitragen. Häufig werden daher Wertetabellen in grossen Datenmodellen überhaupt nicht dargestellt. Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 69 6.7. Variante Referenzierung Bisher wurde davon ausgegangen, dass Beziehungen zwischen Entitätsmengen unabhängig voneinander modelliert werden können. Einzige Ausnahme war bisher das Verbundinstrument Spezialisierung/Generalisierung (siehe '6.5. Spezialisierung/Generalisierung' auf Seite 64). In der Praxis treten aber häufig Situationen auf, in welchen eine Beziehung je nach Fall die eine oder andere Entitätsmenge verwenden soll. So können z.B. Versandinstruktionen (wohin sollen die Kunden-Unterlagen verschickt werden) auf Kundenebene festgehalten werden. Die Versandinstruktionen gelten dann auch für sämtliche dem Kunden untergeordneten Konti: Versandinstruktionen Versandart festlegen VersandartenZuordnung Versandinstruktionen Versandart festlegen haben Kunden Kunden besitzen besitzen KundenKonti Konti gehören Konti Figur 26: Versandinstruktionen auf Kundenebene Es kann aber auch auf Kontoebene festgehalten werden, wohin die Konto-Unterlagen je Konto verschickt werden sollen. Es muss dann für jedes einzelne Konto des Kunden die Versandinstruktion definiert werden. Kunden Versandinstruktionen Versandart festlegen besitzen KundenKonti VersandartenZuordnung gehören Kunden Versandinstruktionen Versandart festlegen besitzen haben Konti Konti Figur 27: Versandinstruktionen auf Kontoebene Keiner der beiden Ansätze lässt es zu, die Versandinstruktionen situationsgerecht zu vergeben und damit vollständig und einfach zu verwalten. Wünschenswert ist daher ein Ansatz, der beide Möglichkeiten fallweise, aber nicht gleichzeitig bietet. Wären beide Möglichkeiten gleichzeitig Teil 2: Konzeptionelle Datenmodellierung 70 6. Verbundinstrumente des konzeptionellen Modells erwünscht (was durchaus denkbar ist), würden natürlich zwei voneinander unabhängige Beziehungen zur Entitätsmenge Versandinstruktionen erstellt. Während bei der Spezialisierung/Generalisierung die Darstellung des Sachverhalts mittels gegabelter Beziehung oder mittels Mengendarstellung möglich ist, kann hier nur eine Darstellung mittels gegabelter Beziehungen angewandt werden. Für das Verbundinstrument variante Referenzierung ist damit etwa folgende Darstellung möglich (in der Praxis existiert keine einheitliche Darstellungsform!): Versandinstruktionen Versandart festlegen VersandartenZuordnung Versandinstruktionen haben Kunden Versandart festlegen Kunden besitzen KundenKonti besitzen Konti gehören Konti Figur 28: variante Referenzierung, Versandinstruktionen auf Kunden- oder Kontoebene Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 71 6.8. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 169. 6.8.1. Fragetyp A, Einfachauswahl 1. Bei der Rekursion... 2. werden zwei Entitätsmengen mittels Fremdschlüssel rekursiv verknüpft. wird eine mc:mc-Beziehung aufgelöst. wird die 3. Normalform verletzt. wird eine Entitätsmenge mit sich selbst mittels Fremdschlüssel verknüpft. wird kein Fremdschlüssel benötigt. Bei der Spezialisierung... 3. A) B) C) D) E) A) B) C) D) E) werden Entitäten einer einzelnen Entitätsmenge mittels Attribut spezifiziert. entsteht eine Super- und mehrere Subentitätsmengen. entsteht eine selbstbezügliche Beziehungsmenge. entstehen mehrere 1:-mc, bzw. 1:m-Beziehungen. werden Entitäten hierarchisch geordnet. Mit welchem Verbundinstrument wird die Stückliste realisiert? A) B) C) D) E) Hierarchie Beziehungsstruktur Rekursion Aggregation Generalisierung 6.8.2. Fragetyp E, kausale Verknüpfung 1. Bei der Hierarchie kann einer untergeordneten Entität nur genau eine Entität der übergeordneten Entitätsmenge zugeordnet werden, weil der Fremdschlüssel der Entität in der untergeordneten Entitätsmenge nur genau eine Entität referenzieren kann. A) 2. +weil+ B) +/+ C) +/- D) -/+ E) -/- Die Anzahl Entitätsmengen, welche mittels einer Beziehungsstruktur verknüpft werden können, ist beliebig, weil die Fremdschlüssel der untergeordneten Entitätsmenge immer als Entitätsschlüssel verwendet werden. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 6.8.3. Fragetyp K, mehrfache Entscheidung 1. Bei der Spezialisierung/Generalisierung... + 2. handelt es sich um die selben, aber umgekehrten Vorgänge. werden Entitätsmengen eliminiert. werden Super- und Subentitätsmengen gebildet. werden Entitäten zyklisch verknüpft. Bei der Aggregation... + wird ein Fremdschlüssel benötigt. werden zwei Fremdschlüssel benötigt. können alle Entitätsmengen Attribute enthalten. handelt es sich um einen Spezialfall der Generalisierung. Teil 2: Konzeptionelle Datenmodellierung 72 3. 6. Verbundinstrumente des konzeptionellen Modells Subentitätsmengen... + enthalten den Entitätsschlüssel der Superentität als Fremdschlüssel. sind Spezialisierungen der Superentität. erben die Eigenschaften der Superentität. dürfen nicht konditional mit der Superentität assoziiert sein. Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells 73 6.9. Bearbeitungsaufgaben Die Lösungen zu den folgenden Bearbeitungsaufgaben finden Sie auf Seite 171. 6.9.1. Liversys, Liegenschafts-Verwaltungs-System Schwierigkeitsgrad: Nichtschwimmer (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Zeitaufwand: 140 Minuten Sie sind in einem Projekt zur Automatisierung einer Liegenschaftsverwaltung einer grösseren Verwaltungsgesellschaft beschäftigt. Die Gesellschaft verwaltet die Liegenschaften verschiedener, ev. mehrerer Eigentümer und vermietet diese weiter (die kleinste Einheit für Eigentum ist die Liegenschaft). Liegenschaftsaufbau: In der Regel enthält eine Liegenschaft mehrere Häuser bzw. Wohnungen. Jedes Haus hat, innerhalb der Ortschaft, eine eindeutige Hausnummer. Zusätzlich hat jedes Haus einen oder aber auch mehrere Ausgänge und liegt damit eventuell an mehreren Strassen und hat mehrere Strassennummern (die Hausnummer hat nichts mit der Strassennummer gemeinsam). Mietobjekte: Das Haus selbst kann wieder über mehrere Mietobjekte verfügen, über die mit einem oder mehreren Mietern ein Mietvertrag abgeschlossen wird. Dabei müssen auch Garagen, Parkplätze, Kellerabteile etc. erfasst werden können. Ein Mietvertrag kann mehrere Mietobjekte umfassen, kann aber auch mehrere Mieter einbeziehen. 1. Entwickeln Sie das grafische, konzeptionelle Datenmodell. 2. Erstellen Sie einen Attributskatalog der notwendigen und weiterer möglicher Attribute. 3. Erweitern Sie den Attributskatalog sowie das Datenbankstrukturdiagramm um die Entitätsmenge Hauswarte. 4. Zeichnen Sie je ein externes Schema für die Funktionen: 'Mutation von Mietverträgen' und 'Mutation von Eigentümer'. 6.9.2. Transpo, Transport-Verwaltungs-System Schwierigkeitsgrad: Schwimmer Zeitaufwand: 300 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Die Transpo AG ist ein grosses Transportunternehmen, das in den meisten Ländern Europas Filialen betreibt. Die zu transportierenden Waren werden von der Transpo AG jeweils durch die nächstgelegene Filiale (mit eigenen Transportmitteln) beim Kunden abgeholt und zunächst im lokalen Lager der Filiale (jede Filiale verfügt über genau ein Lager) zwischengelagert. Die Transportaufträge (nicht die Ware) werden dann in die Dispositionszentrale des eigenen Landes geschickt. Jedes Land besitzt eine eigene Dispositionszentrale, eine ausgewählte Filiale. Für länderübergreifende Transporte werden die Aufträge in die in der Schweiz gelegene Dispositionszentrale geschickt. Viele der Auftraggeber und deren Empfänger gehören zu den ständigen Kunden der Transpo AG (siehe auch Beispieldaten auf den folgenden Seiten). In der Dispositionszentrale wird dann versucht, die einzelnen Aufträge optimal zu kombinieren, wobei insbesondere der letzte erlaubte Auslieferungstermin beachtet werden muss. Für den Transport der Waren werden Zugverbindungen, Fluggesellschaften und eigene Fahrzeuge eingesetzt. In einem ersten Schritt werden die Waren in die dem Zielort am nächsten liegende Filiale transportiert. Von dieser Filiale aus werden die Waren mit den eigenen Transportfahrzeugen ausgeliefert. Die Empfänger werden über die Lieferung wenn zeitlich möglich per Post, ansonsten per Telefon informiert. Für sämtliche Transporte müssen die Routen und die Auslastung der Fahrzeuge geplant werden. Die Planung der Fahrstrecke und der Ladung der Fahrzeuge erfolgt manuell. Teil 2: Konzeptionelle Datenmodellierung 74 6. Verbundinstrumente des konzeptionellen Modells Die Transpo AG verfügt zur Zeit über drei Kategorien von Fahrzeugtypen (A, B und C), für welche die Fahrer die notwendige Qualifikation ausweisen müssen. Für die Lieferung von Filiale zu Filiale wird in einer Tabelle festgehalten, welches die Transportmittel und welches die Transportkosten je kg Ware sind. Die Berechnung der Kosten der Abholung und Anlieferung erfolgt aufgrund der Anzahl km sowie dem Gewicht der Materialien. Folgende Listen und Tabellen werden zur Zeit geführt (Beispiellisten siehe unten): Transportauftrag: Wird pro Auftrag geführt und beinhaltet die Artikel eines Kunden, die ausgeliefert werden sollen (siehe Beispiel). Abholliste: Enthält die Artikel und Auftraggeber, bei welchen auf einer Fahrt die Artikel abgeholt und ins lokale Lager transportiert werden. Transferliste: Enthält die Artikel, welche von einer Filiale auf einer Fahrt in die anderen Filialen transportiert werden bzw. an entsprechende Verladestellen gebracht werden. Lieferliste: Enthält die Artikel, welche von einer Filiale auf einer Fahrt zu den Empfängern gebracht werden (siehe Beispiel). Transportkosten und Transportartenliste: Hält fest, wie die Artikel zwischen Kunden und Filiale bzw. zwischen Filialen transportiert werden und was der Transport kostet (siehe Beispiel). Rechnung: Verrechnung der im Transportauftrag aufgeführten Lieferungen (siehe Beispiel). Empfangsbestätigung: Was erhält der Empfänger in einer Lieferung? Aufgaben: 1. Erstellen Sie das grafische, konzeptionelle Datenmodell und den Attributskatalog der Transpo AG. 2. Verwenden Sie den Fragenkatalog im Kapitel '13.4. Kontrollfragen zum konzeptionellen Datenmodell' auf Seite 150, um das konzeptionelle Datenmodell zu überprüfen. 3. Tragen Sie die Beispieldaten der beiliegenden Listen in Ihr Modell ein (Tabellen aufzeigen). 4. Normalisieren Sie (erste drei Normalformen) das konzeptionelle Datenmodell der Transpo AG. 5. Externe Schemata der Transpo AG erstellen für: Fahrer modifizieren Auftrag erfassen Lieferliste erstellen Teil 2: Konzeptionelle Datenmodellierung 6. Verbundinstrumente des konzeptionellen Modells Transportauftrag Auftraggeber: Auftragsnummer: Rufi AG Langackerstr. 12 9001 St.Gallen, Schweiz Tel: 071: 225 40 90 7721 Auftragsdatum: 12. Mai Abholdatum: 2. Juni Artikelbezeichnung, Masse, Menge, Gewicht Empfänger Spätestes Lieferdatum 1. Schreibmaschine, 30x20x15 cm, 3 Stück, 0.4 kg je Stück Flexi AG Bächliweg 8 8001 Zürich, Schweiz Tel: 01- 363 89 56 14. Juni 2. Bürostuhl Vario, 50x50x80 cm, 2 Stück, 16 kg je Stück Blusara AG Querstrasse 20 8004 Zürich, Schweiz Tel: 01- 223 11 54 12. Juni 3. ... (weitere Auftragspositionen) ... Lieferliste Uhrzeit, Datum: Fahrer: Fahrzeugtyp: Material-Nr. 75 Liefernummer: 1722 Routennummer: 2341 8:00 Uhr; 12. Juni Mario Donati. Filiale Zürich, Personalnr. 403 LW 2-1, ZH 244 684 Artikelbezeichnung Empfänger 1. 23509 Schreibmaschine, 30x20x15 cm, 3 Stück, 0.4 kg je Stück Flexi AG Bächliweg 8 8001 Zürich, Schweiz Tel: 01- 363 89 56 2. 23798 Fahrräder, ca. 150x40x100 cm, 12 Stück, 8.3 kg je Stück Velos und Mofas Müller Runzelstrasse 879 8032 Zürich, Schweiz Tel: 01 - 296 78 39 3. ... (weitere Positionen) Teil 2: Konzeptionelle Datenmodellierung 76 6. Verbundinstrumente des konzeptionellen Modells Rechnung Auftraggeber: Rechnungsnummer: Rufi AG Langackerstr. 12 9001 St.Gallen, Schweiz Tel: 071: 225 40 90 4679 Auftragsdatum: 12. Mai Abholdatum: 2. Juni Rechnungsdatum: 30. Juni Artikelbezeichnung, Masse, Menge, Gewicht Empfänger Kosten je Position 1. Schreibmaschine, 30x20x15 cm, 3 Stück, 0.4 kg je Stück Flexi AG Bächliweg 8 8001 Zürich, Schweiz Tel: 01- 363 89 56 25.40 2. Bürostuhl Vario, 50x50x80 cm, 2 Stück, 16 kg je Stück Blusara AG Querstrasse 20 8004 Zürich, Schweiz Tel: 01- 223 11 54 34.40 3. ... (weitere Auftragspositionen) ... ... Total 254.30 Transportkosten und Transportartenliste Von (Auftraggeber, Empfänger bzw. Filiale) Nach (Filiale) Art Distanz in km Kosten pro kg Die Verechnung erfolgt entweder je kg oder je km. Bei der Verrechnung je km ist der Kostenansatz fest: 0.30 Fr. /kg /km. Die Kosten für die umgekehrte Reiserichtung sind jeweils identisch. Filiale Russikon Filiale St.Gallen Lastwagen Schweizer Verband der Färbereien, 9303 Wittenbach SG Filiale St.Gallen Lastwagen 8.5 Technikum Winterthur, Technikumsstrasse 12, 9400 Winterthur Filiale Winterthur Lastwagen 1.5 Filiale St.Gallen ... Zug Figur 30: Beispiellisten zur Übung Transpo Teil 2: Konzeptionelle Datenmodellierung 10.- 23.50 7. Spezielle Problemstellungen des konzeptionellen Modells 77 7. Spezielle Problemstellungen des konzeptionellen Modells In diesem Kapitel werden Problemstellungen und Fragen, wie sie in der konzeptionellen Modellierung häufig auftreten, besprochen und deren möglichen Lösungsansätze gezeigt. 7.1. Mengenprobleme im Verbundinstrument Beziehungsstruktur In diesem Kapitel soll gezeigt werden, wie Mengenprobleme im Verbundinstrument Beziehungsstruktur gemildert werden können. Dabei werden nicht Mengenprobleme besprochen, welche die Performance der Datenbank beeinflussen, denn diese werden beim Herleiten des internen Modells betrachtet. Hier werden Mengenprobleme diskutiert, welche den Benutzer einzig in der Handhabung der Daten behindern. Bei der Erstellung einer Beziehung können in der Beziehungsmenge sehr viele Entitäten auftreten. Falls eine Entität eine Entität der anderen Entitätsmenge höchstens ein Mal referenzieren darf, sind im Maximum Anzahl Entitäten der Entitätsmenge A mal Anzahl Entitäten der Entitätsmenge B möglich. Enthält A 100'000 und B 50'000 Entitäten sind bereits 5'000'000'000 Entitäten in der Beziehungsmenge möglich. Falls eine Entität die selbe Entität der referenzierten Entitätsmenge mehrfach verwenden darf, können sogar beliebig viele Entitäten in der Entitätsmenge auftreten. Abgesehen davon, dass in dieser Situation technische Probleme auftreten können, ist auch der Benutzer in der Verwaltung der Daten gefordert. Ein typisches Problem der Informatik ist die Zuordnung von Zugriffsrechten zu Benutzern. Enthält die Anwendung z.B. lediglich 1'000 Funktionen und 200 Benutzer, wobei jeder Benutzer im Durchschnitt 100 Zugriffsrechte zu den Funktionen erhält, so muss der Verantwortliche 20'000 Zugriffsrechte verwalten. Hierbei die Übersicht zu behalten und allen Benutzern die notwendigen, aber keine überflüssigen Rechte zu erteilen, fällt schwer. Ausserdem müssen für jeden neuen Benutzer 100 Zugriffsrechte im System erfasst werden. Zugriffsrechte Benutzer vergeben an erhalten Zugriffsrechtvergaben Zugriffsrechte Benutzer vergeben an erhalten Zugriffsrechtvergaben Figur 29: Zugriffsrechtvergabe an Benutzer Die Lösung für dieses Problem liegt auf der Hand und wird in der Praxis häufig angewendet. Die Zugriffsrechte werden mittels einer übergeordneten Entitätsmenge (Hierarchie, Zugriffsrechtgruppe) strukturiert und die Benutzer werden nicht mehr unmittelbar den Zugriffsrechten zugeordnet, sondern der Entitätsmenge Zugriffrechtsgruppen. Ein einzelner Benutzer kann hierbei natürlich mehreren Zugriffrechtsgruppen zugeordnet werden. Teil 2: Konzeptionelle Datenmodellierung 78 7. Spezielle Problemstellungen des konzeptionellen Modells Benutzer zugeteilt zu Gruppenzuordnungen beinhalten Zugriffsrechte Zugriffsrechtgruppen vergeben an erhalten Zugriffsrechtvergaben Benutzer zugeteilt zu Zugriffsrechte Zugriffsrechtgruppen vergeben an erhalten Zugriffsrechtvergaben Figur 30: Zugriffsrechtvergabe an Benutzer mittels Zugriffsrechtgruppen Bei der Modellierung von Beziehungsmengen im konzeptionellen Modell sollte auf eine effiziente und überschaubare Handhabbarkeit von Beziehungsmengen geachtet werden. Dadurch kann die Qualität der Anwendungen aus Sicht der Benutzer oft deutlich gesteigert werden. 7.2. Historisierung von Daten Ein in der Praxis häufiges Problem ist die vollständige Rekonstruktion des Datenbestandes für einen bestimmten Zeitpunkt bzw. der Nachvollzug aller Änderungen innerhalb einer bestimmten Periode (z.B. Aktienbestand des Depots per Vormonat, Zu- bzw. Abfluss an finanziellen Mitteln innerhalb des letzten Monats). Dabei ist klar, dass bei sämtlichen Änderungen die vorherigen Daten in irgendeiner Art und Weise erhalten bleiben müssen, ansonsten ist eine Rekonstruktion nicht mehr möglich. Im Folgenden werden Methoden aufgezeigt, wie diese historischen Daten im Datenmodell festgehalten werden können. Grundsätzlich ist auch denkbar, dass das Datenbanksystem die historischen Daten gänzlich selbständig verwaltet. Gängige relationale Systeme bieten diese Möglichkeit allerdings nicht, so dass das Problem durch den Entwickler bzw. Datenmodellierter gelöst werden muss. Sämtliche unten aufgeführten Methoden gehen davon aus, dass der Entitätsschlüssel unveränderlich sei. Die historischen und aktuellen Daten einer Entität werden nämlich mittels des selben Entitätsschlüsselwertes verknüpft. Es sollten daher auch keine Entitätsschlüsselwerte von bereits gelöschten Entitäten verwendet werden. Teil 2: Konzeptionelle Datenmodellierung 7. Spezielle Problemstellungen des konzeptionellen Modells 79 7.2.1. Periodenstempel Sämtliche Entitäten, für welche historische Daten geführt werden sollen, werden mit einem Periodenstempel ergänzt. Dieser hält fest, ab wann (Gültig-Ab-Zeitstempel) und bis wann (GültigBis-Zeitstempel) die Entität Gültigkeit hatte. Beim Erzeugen, Ändern oder Löschen der Entitäten müssen die entsprechenden Zeitstempel gesetzt werden. Einfügen: Der Gültig-Ab-Zeitstempel wird mit dem Datum und der Systemzeit (die Uhrzeit ist allenfalls zu ungenau) der Einfügeoperation versehen. Ändern: Bei der zu verändernden Entität wird der Gültig-Bis-Zeitstempel gesetzt, ohne dass die Entität tatsächlich geändert wird. Zum Festhalten der Änderungen wird die ursprüngliche Entität kopiert (ohne Gültig-Bis-Zeitstempel) und bei der neuen Entität der Gültig-Ab-Zeitstempel auf den selben Wert gesetzt, wie der Gültig-BisStempel der ursprünglichen Entität. Löschen: Beim Löschen wird lediglich der Gültig-Bis-Zeitstempel gesetzt. Wird der Periodenstempel eingesetzt, muss innerhalb der Anwendung sichergestellt werden, dass nur jeweils die aktuellen bzw. die gewünschten historischen Daten angezeigt werden. Die Datenstruktur des konzeptionellen Modells selbst ändert sich nicht, es müssen lediglich die notwendigen Attribute in jene Entitätsmengen eingefügt werden, für welche historische Daten gesammelt werden sollen. Ein Problem stellt sich allerdings. Der Entitätsschlüssel der derart erweiterten Entitätsmengen ist nicht mehr eindeutig. Durch Erweitern des Entitätsschlüssels mit dem Datum-Ab-Zeitstempel ist dieser wieder eindeutig. Dadurch müssen aber sämtliche Fremdschlüssel, welche den Entitätsschlüssel referenzieren, genauer untersucht werden. Grundsätzlich müssten alle Fremdschlüssel ebenfalls mit dem Datum-Ab-Zeitstempel der referenzierten Entitätsmenge erweitert werden. Dabei stellt sich jedoch das Problem, dass nicht immer die aktuellste Version referenziert wird, falls nicht auch der Fremdschlüssel stetig nachgeführt wird. Dieser Ansatz ist daher nur für Datenbanksysteme sinnvoll, welche eine Fremdschlüsseldefinition zulassen, welche nicht ausschliesslich auf der Wertebereichsdefinition des Fremdschlüssels durch die Entitätsschlüsselwerte basiert, sondern welche mit einer Bedingung (im Bsp.: immer die aktuell gültige Version verwenden) verknüpft werden kann (siehe interne Ebene). An dieser Stelle ist damit eine Kenntnis des Datenbanksystems bereits auf der konzeptionellen Ebene von Vorteil. Im Kapitel '7.2.3. Auslagerung historischer Daten' auf Seite 80 wird ein Ansatz aufgezeigt, welcher diesen Nachteil nicht in sich birgt, daher für sämtliche Datenbanksysteme geeignet ist. 7.2.2. Gültig-Ab- und Lösch-Zeitstempel Die Methode des Periodenstempels brilliert durch ihre Einfachheit. Bei Datenbanksystemen mit hoher Belastung (Transaktionslast) ist es aber aus Performancegründen unerwünscht, dass bei Änderungsoperationen auch eine Änderungsoperation des Gültig-Bis-Zeitstempels an der ursprünglichen Entität vorgenommen werden muss. Daher wird der Gültig-Bis-Zeitstempel aufgegeben. Der Zeitpunkt, bis zu welchem eine Entität gültig war, ergibt sich ja aus dem Gültig-AbZeitstempel der zeitlich nachfolgenden Entität. Man könnte nun versucht sein zu behaupten, der Gültig-Bis-Zeitstempel des Periodenstempels berge lediglich Redundanzen, daher könne dieser vernachlässigt werden. Dies ist nicht der Fall. Ohne Gültig-Bis-Stempel kann nicht mehr festgestellt werden, ob eine Entität gelöscht worden ist. Es muss daher ein Lösch-Zeitstempel in die Entitätsmenge eingefügt werden. Einfügen: Der Gültig-Ab-Zeitstempel wird gesetzt. Ändern: Der Gültig-Ab-Zeitstempel wird gesetzt. Löschen: Beim Löschen wird der Lösch-Zeitstempel gesetzt. Der Lösch-Zeitstempel enthält damit in allen historischen Entitäten, abgesehen von der letzten gelöschten Entität, NULL-Werte. Vergleicht man die Lösung, fällt die Ähnlichkeit zum Periodenstempel auf. Mit dem Vorteil, dass bei Änderungsoperationen die ursprüngliche Entität Teil 2: Konzeptionelle Datenmodellierung 80 7. Spezielle Problemstellungen des konzeptionellen Modells nicht geändert werden muss, ist gleichzeitig ein Nachteil aufgetaucht. Bis wann eine historische Entität gültig war oder ob die Entität noch gültig ist, kann erst festgestellt werden, wenn die zeitlich nächste Entität gelesen wird. Dies kann in den Auswertungen deutlich ins Gewicht fallen. Eine generelle Aussage zugunsten dieser Methode oder des Periodenstempels kann daher nicht gemacht werden, es muss einmal mehr von Fall zu Fall entschieden werden. Für diesen Ansatz gelten die selben Bemerkungen zum Problem des Entitätsschlüssels und der Fremdschlüsselreferenzen, wie diese bereits im Kapitel '7.2.1. Periodenstempel' gemacht wurden. 7.2.3. Auslagerung historischer Daten Anstatt die historischen Entitäten in der selben Entitätsmenge zu belassen, werden sie in diesem Ansatz in eine separate Entitätsmenge ausgelagert. Die aktuelle Version der Entität verbleibt in der ursprünglichen aktuellen Entitätsmenge. Die Datenstruktur der historischen Entitätsmenge muss erweitert werden. Hierfür stehen wiederum die beiden vorgängig besprochenen Varianten mit den jeweiligen Vor- und Nachteilen offen. Bei diesem Ansatz stellt sich das Problem des Entitätsschlüssels, im Gegensatz zu den beiden vorherigen Varianten, nicht. Der Entitätsschlüssel der aktuellen Entitätsmenge muss nicht geändert werden; lediglich der Entitätsschlüssel der historischen Entitätsmenge muss ergänzt werden. Fremdschlüsselreferenzen zur aktuellen Entitätsmenge können unverändert übernommen werden. Durch die Trennung der aktuellen von den historischen Daten ist es auch leicht möglich, diese auf physisch unterschiedlichen Speichermedien abzulegen. Die historischen Daten können daher, falls diese nur gelegentlich verwendet werden, auf einem billigeren, dafür langsameren Speichermedium abgelegt werden. Es ist auch denkbar, nicht nur die historischen Daten in die Entitätsmenge auszulagern, sondern jeweils auch eine Kopie der aktuellen Entität auszulagern. Dadurch beinhaltet die ausgelagerte Entitätsmenge nicht nur historische Informationen zu einer Entität, sondern immer deren gesamten bisherigen Lebenslauf. Damit kann häufig die technische Erzeugung und applikatorische Verarbeitung der Auslagerungsdatei vereinfacht werden. Hierbei entstehen Redundanzen, welche allerdings keine Gefahr für die Datenbasis darstellen, da diese Redundanzen immer korrekt sind. 7.2.4. Auslagerung der Änderungen Sollen für bestimmte Attribute die Änderungen an den Entitäten festgehalten werden, für andere Attribute aber nicht (z.B. aufgrund von Datenschutzüberlegungen), so werden in die ausgelagerte historische Entitätsmenge nur jene Attribute aufgenommen, für welche die Änderungen nachvollzogen werden können müssen. Die Gültigkeitsperiode der ausgelagerten Änderungen wird entsprechend der Auslagerung historischer Daten festgehalten. Sollen die Änderungen sowie der letzte vollständige Zustand auch nach dem Verfall der Entität noch nachvollzogen werden können, so darf die Entität beim Verfall nicht physisch gelöscht werden. Sie muss auch nach der Löschung, entsprechend gekennzeichnet (z.B. 'Status gelöscht'), in der Entitätsmenge verbleiben (einige Datenbanksysteme unterstützen die Verwaltung gelöschter Entitäten). 7.3. Migration von Informationen Bei der Migration werden Informationen von einem Datenbanksystem auf ein anderes Datenbanksystem übertragen. Dies ist eine höchst anspruchsvolle Aufgabe. Ob die zu übertragenden Informationen aus einem alten oder aus einem fremden System (z.B. eingekaufter Adressenstamm) stammen, ist dabei eher nebensächlich. Für eine erfolgreiche Migration müssen zunächst die konzeptionellen Modelle sowie die Geschäftsprozesse beider Systeme exakt bekannt sein. Teil 2: Konzeptionelle Datenmodellierung 7. Spezielle Problemstellungen des konzeptionellen Modells 81 Sind die entsprechenden Kenntnisse über die konzeptionellen Modelle und die Geschäftsprozesse aufgebaut worden, so können der Zeitplan und die Migrationsregeln erstellt werden. In den Migrationsregeln wird definiert, wie die Entitäten und deren Attribute des Zielsystems mittels der Informationen des Ausgangssystems gefüllt werden müssen. Im einfachsten Fall entsprechen sich Entitäten und Attribute beider Systeme und können 1:1 übernommen werden. Meist ist dies jedoch nicht der Fall. Selbst wenn zwei Attribute in beiden Systemen in den selben Entitätsmengen auftreten, stimmen häufig deren Domänen nicht überein. In diesem Fall muss überprüft werden, ob bei der Übertragung der Daten keine Informationen verloren gehen und im Fehlerfall ein entsprechendes Protokoll erzeugt werden (z.B. numerischer Überlauf). Es kann aber auch sein, dass ein Attribut des Zielsystems aufgrund von Informationen von mehreren Attributen in unterschiedlichen Entitätsmengen des Ausgangssystems hergeleitet werden muss. Diese Herleitung ist dann meist aufwendig und mit grosser Unsicherheit belastet. Häufig tritt auch der Fall auf, dass eine Entität des Ausgangssystems mehrere Entitäten im Zielsystem verlangt (oder umgekehrt). Die Definition der Migrationsregeln verlangt daher eine sehr gute Kenntnis beider Systeme. Für den Entscheid über das weitere Vorgehen und zur Bereitstellung des notwendigen Externspeichers müssen im nächsten Schritt die zukünftigen Datenmengen ermittelt werden. Diese lassen sich mit Hilfe der Migrationsregeln meist recht leicht berechnen. Aufgrund der Migrationsregeln und der Datenmengen muss nun entschieden werden, mit welchem Verfahren die Informationen auf das neue System übertragen werden sollen. Dabei sind grundsätzlich das manuelle und das maschinelle Verfahren möglich sowie entsprechende Mischformen. In der Praxis zeigt sich immer wieder, dass Aufwandschätzungen zur Erstellung von Migrationsprogrammen deutlich zu tief liegen. Bei ähnlich grossen Aufwandschätzungen (Kosten) sollte daher eher die manuelle Form bevorzugt werden. Die Migration selbst erfolgt meist in zwei Schritten. Im ersten Schritt werden die Informationen des Ausgangssystems extrahiert und in sequentiellen Dateien gespeichert bzw. auf Listen ausgegeben. Im zweiten Schritt werden diese Daten in das Zielsystem übertragen (maschinell bzw. manuell). Falls der direkte Zugriff auf beide Systeme möglich ist, können die Informationen auch ohne Zwischenschritt übertragen werden. Bei der Extraktion der Daten in sequentielle Dateien sollten diese soweit möglich, falls eine maschinelle Migration geplant ist, ohne Änderungen in die sequentiellen Dateien übertragen werden. Dadurch muss bei einer allfällig notwendigen Korrektur der Migrationsprogramme nur der zweite Teil der Migration wiederholt werden. Der Zeitverlust durch die erneute Migration kann damit in Grenzen gehalten werden. Während der Migration müssen vielfach zusätzliche Protokolle erstellt werden. Diese dienen der Revision der Migration. Diese Protokolle erfordern manchmal einen Aufwand, der die eigentliche Migration der Informationen übersteigt. Nach der Migration der Daten muss deren Qualität kontrolliert werden. Einerseits können Entitätsintegrität, referentielle Integrität und benutzerdefinierte Integritätsregeln überprüft werden, sofern dies nicht bereits durch das Datenbanksystem erfolgt. Andererseits müssen die Daten durch fundierte Testverfahren auf deren Qualität hin untersucht werden. Auf Testverfahren kann an dieser Stelle nicht eingegangen werden, hierfür muss entsprechende Literatur zur Hand genommen werden. Der gesamte Ablauf der Migration stellt sich damit wie folgt dar: 1. Ermittlung der konzeptionellen Modelle und der Geschäftsprozesse beider Systeme 2. Bestimmung des Migrationszeitplanes und Erstellung der Migrationsregeln 3. Datenmengen ermitteln 4. Entscheid zur manuellen oder automatischen Migration 5. Bereitstellung der Informationen (Datei oder Liste) 6. Erzeugung und Protokollierung der neuen Informationen (automatisch oder manuell) 7. Qualitätskontrolle der neuen Informationen mittels Testverfahren Teil 2: Konzeptionelle Datenmodellierung 82 7. Spezielle Problemstellungen des konzeptionellen Modells 7.4. Verdichtung von Informationen Bei der Verdichtung werden Informationen nach bestimmten Kriterien gruppiert und für diese Gruppen statistische Informationen ausgewiesen. So wird zur Gruppenbildung häufig die Bildung von Zeitperioden, z.B. Tag, Monat verwendet. Aber auch andere Kriterien, z.B. nach Organisationseinheit, Produkt, Absatzland sind möglich. Bei der Bildung der statistischen Informationen werden meist numerische Informationen verwendet. So können z.B. die Gesamtsumme, Mittelwert, Varianz gebildet werden. Es kann der arithmetische Mittelwert des Wertes des Aktiendepots je Monat berechnet werden oder die Gesamtsumme der Erträge je Produkt und Jahr oder die Anzahl der Ein- Auslagerungen von Aktien eines Aktiendepots je Monat. Die verdichteten Informationen sind, zumindest im Zeitpunkt ihrer Erstellung, völlig redundant, gehören damit vom Grundsatz her nicht ins konzeptionelle Datenmodell. Meist ist die Bildung entsprechender Entitätsmengen aber ein komplexer und schwer nachvollziehbarer Vorgang, so dass die Bildung, Darstellung und Erläuterung dieser Entitätsmengen durchaus schon auf der konzeptionellen Ebene seine Berechtigung hat. Teil 2: Konzeptionelle Datenmodellierung 8. Integrität im konzeptionellen Modell 83 8. Integrität im konzeptionellen Modell Der Begriff Integrität wurde bisher mehrfach verwendet. Allerdings waren die Darstellungen bis jetzt unsystematisch und fallweise. In diesem Kapitel wird der Begriff Integrität auf konzeptioneller Ebene systematisch eingeführt. Integrität umfasst, betrachtet man alle Ebenen und nicht nur die konzeptionelle Ebene, drei Komponenten [Zehnder 89]: Datenkonsistenz (logisch): Mittels Konsistenzregeln werden gültige Datenzustände definiert, ungültige Zustände werden verboten (z.B. Wertebereich). Hierdurch wird die Qualität der Daten selbst gewährleistet. In der Praxis werden die Begriffe Konsistenz und Integrität häufig als Synonyme verwendet. Datensicherheit (physisch): Die Datensicherheit stellt sicher, dass die Daten nicht durch technische Fehler verfälscht werden oder gar verloren gehen (z.B. Systemabsturz). Datensicherheit wird mittels technischer Massnahmen sichergestellt, hat keinen Einfluss auf die Definition des konzeptionellen Modells und wird daher erst zu einem späteren Zeitpunkt detailliert betrachtet. Datenschutz (ethisch): Beim Datenschutz werden die Daten (und damit auch die von den Daten Betroffenen) vor unerlaubten Zugriffen und Änderungen geschützt (z.B. Datenschutzgesetz). Aber auch vor unbeabsichtigten Fehlmanipulationen müssen die Daten geschützt werden. Eingabe Verwendung Datenkonsistenz Datenschutz Datenbasis Datensicherheit Betrieb Figur 31: Datenintegrität und Datenbasis Im Folgenden werden die Datenkonsistenz und der Datenschutz im konzeptionellen Modell betrachtet. 8.1. Datenkonsistenz im konzeptionellen Modell Die Datenkonsistenz, häufig auch semantische Integrität genannt, selbst kann wiederum in drei Teile gegliedert werden: Entitätsintegrität: Die Entitätsintegrität stellt sicher, dass jeder Entitätsschlüsselwert nur ein einziges Mal in einer Entitätsmenge auftritt. Siehe hierfür Kapitel '4.4.1. Entitätsschlüssel, Schlüsselkandidat' auf Seite 38. Referentielle Integrität: Mittels referentieller Integrität wird gewährleistet, dass jeder Fremdschlüssel immer einen korrekten Wert enthält. Siehe hierfür Kapitel '4.4.2. Fremdschlüssel' auf Seite 38. Benutzerdefinierte Konsistenz: Hier werden spezifische Konsistenzregeln der Anwendung definiert, welche die gültigen Zustände der Daten definieren. Im Folgenden soll lediglich die benutzerdefinierte Konsistenz vertieft werden. Werden die benutzerdefinierten Konsistenzregeln eingehalten, kann die Qualität der Daten aus applikatorischer Sicht gewährleistet werden. Es wird daher versucht zu definieren, was gültige DatenTeil 2: Konzeptionelle Datenmodellierung 84 8. Integrität im konzeptionellen Modell bankzustände sind und was unerlaubte Datenbankzustände sind. Das Datenbanksystem wird dann überprüfen müssen, ob vom Benutzer ausgeführte Änderungen an Daten sinnvoll sind oder ob diese definierte Konsistenzbedingungen verletzen. Die vollständige Definition einer Konsistenzregel umfasst vier Angaben [Schlag 83]: 1. Objekt: Beschreibung der Menge der Objekte, auf die sich die Konsistenzbedingung erstreckt. 2. Bedingung: Die logische Bedingung (Prädikat), welche für alle betroffenen Objekte immer erfüllt sein muss. 3. Auslöseregel: Ereignis, welches die Überprüfung der Bedingung auslöst. 4. Reaktionsregel: Wie soll im Falle einer Konsistenzverletzung verfahren werden? Die Definition der benutzerdefinierten Konsistenzregeln kann im konzeptionellen Modell natürlichsprachlich oder in einer SQL-ähnlichen Form erfolgen. Wichtig ist hierbei, immer alle vier Angaben festzulegen. Meist dürfte die natürlichsprachliche Definition bevorzugt werden, da diese auch von den am Modellierungsprozess betroffenen Benutzern verstanden wird. 1. Objekt: Attribut Lebenspartner in der Entitätsmenge Kunden (siehe Beispiel im Kapitel '6.3. Rekursion' auf Seite 61. 2. Bedingung: Das Feld Lebenspartner eines allfällig referenzierten Partners muss den Wert NULL enthalten (d.h. darf nicht nochmals mit jemand anders verbunden sein). 3. Auslöseregel: Änderungen am Attribut Lebenspartner. 4. Reaktionsregel: Änderungen verweigern. Mittels 'Pseudo'-SQL: ASSERT Leb_Partner ON UPDATE OF Kunden (Lebenspartner): Lebenspartner = <NULL> OR (SELECT Kunden (Lebenspartner) FROM Kunden WHERE Kunden# = Kunde.Lebenspartner) = <NULL> Figur 32: Definition der Konsistenzregel Leb_Partner In der Literatur werden benutzerdefinierte Konsistenzregeln ausserdem häufig nach bestimmten Eigenschaften gegliedert. Mögliche Gliederungskriterien sind z.B.: Reichweite der Bedingung: Ein Attribut, mehrere Attribute einer Entität, mehrere Entitäten einer Entitätsmenge oder mehrere Entitäten mehrerer Entitätsmengen. Zeitpunkt der Überprüfung: Unmittelbar nach jeder Datenbankoperation (primäre Konsistenzbedingung) oder erst nach mehreren Datenbankoperationen (sekundäre Konsistenzbedingung). Reaktion auf Verletzung: Muss die Konsistenzbedingung immer eingehalten werden (strenge Konsistenzbedingung) oder kann die Konsistenzbedingung ausnahmsweise verletzt werden (schwache Konsistenzbedingung). Art der Überprüfbarkeit: Wird mit der Konsistenzbedingung ein Zustand (z.B. Abholdatum < Lieferdatum) oder ein Übergang (z.B. vom Zivilstand 'ledig' in 'verheiratet') überprüft. 8.2. Datenschutz im konzeptionellen Modell Eigentlich kann bereits im konzeptionellen Modell zusammen mit dem Benutzer definiert werden, wer wie auf welche Daten zugreifen darf. In der Praxis wird der Datenschutz meist gar nicht Teil 2: Konzeptionelle Datenmodellierung 8. Integrität im konzeptionellen Modell 85 oder dann äusserst restriktiv gehandhabt. Im ersten Fall ist die Einhaltung der Datenschutzgesetzte (auch im Interesse des Unternehmens) auf den guten Willen der Mitarbeiter angewiesen. Im zweiten Fall fehlen dafür im täglichen Ablauf häufig notwendige Zugriffsrechte und die Effizienz der Arbeit leidet dann darunter drastisch. Wünschenswert ist es daher, pragmatische, den Bedürfnissen angepasste Definitionen zu finden. Zusätzlich zu den angesprochenen EDV-Schutzmassnahmen müssen auch organisatorische Massnahmen wie Zu- und Abgangskontrollen, Transportkontrollen (Kryptographie) etc. eingeführt werden. Drei wichtige Begriffe im Datenschutz sind: 1. Identifikation: Anmeldung eines Benutzers unter Angabe einer Benutzeridentifikation und eines Kennwortes. 2. Authentisierung: Vorgang, bei welchem überprüft wird, ob es sich tatsächlich um den berechtigten Benutzer handelt. 3. Autorisierung: Vergabe von Zugriffsrechten an Benutzer. Der Mechanismus zur Vergabe der Zugriffsrechte kann sehr unterschiedlich gelöst werden. Eine grosse Verbreitung hat die Definition der Zugriffsrechte mittels der Zugriffsrechtsmatrix. In der Zugriffsrechtsmatrix werden die Objekte der Anwendung (Daten, Programme, ...) sowie die erlaubten Aktivitäten für jeden Benutzer bzw. Benutzergruppe festgehalten. In der Abszisse werden dann die Objekte, in der Ordinate die Benutzer und in den Zellen die erlaubten Aktivitäten (Lesen, Ändern, ...) festgehalten. Einen anderen Ansatz wählt SQL. In SQL hat der Erzeuger einer Entitätsmenge zunächst das alleinige Recht diese Entitätsmenge zu nutzen. Diese Rechte kann er gezielt mit Angabe der erlaubten Operationen an weitere Benutzer weitergeben. Diese Benutzer dürfen die ihnen vergebenen Rechte allenfalls wieder an andere Benutzer weitergeben und so weiter. Wird einem Benutzer ein Recht entzogen, so werden auch sämtliche Rechte, die er aufgrund des entzogenen Rechts vergeben hat, den betroffenen Benutzern entzogen. Die Definition des Zugriffsrechts erfolgt mit folgender Syntax: GRANT INSERT, UPDATE ON Aufträge TO Moni WITH GRANT OPTION Figur 33: Zugriffsrechtsvergabe mittels SQL Teil 2: Konzeptionelle Datenmodellierung 86 8. Integrität im konzeptionellen Modell 8.3. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 180. 8.3.1. Fragetyp A, Einfachauswahl 1. Die Authentisierung bezweckt... 2. A) B) C) D) E) die Anmeldung des Benutzers. die Komprimierung der Daten. die Überprüfung der Zugriffsberechtigung des Benutzers. die Verdichtung der Daten. die Daten in verschlüsselter Form für andere unleserlich abzuspeichern. Datenschutz ist ein Element der... A) B) C) D) E) Datenkonsistenz. Datensicherheit. Datenintegrität. referentiellen Integrität. Entitätsintegrität. 8.3.2. Fragetyp K, mehrfache Entscheidung 1. Die Definition einer Konsistenzbedingung umfasst: + die Auslöseregel die betroffenen Objekte die Reaktionsregel die Bedingung Teil 2: Konzeptionelle Datenmodellierung 87 Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 89 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems In diesem Kapitel muss vorerst ein rudimentäres Verständnis für die Arbeitsweise von Datenbanksystemen vermittelt werden. Nur mit Kenntnis der internen Softwarekomponenten und deren Lösungskonzepten kann ein effizientes und auf das Datenbanksystem ausgerichtetes internes Datenmodell erstellt werden, können Programme mit optimalem Zugriffsverhalten gestaltet werden. Ein noch so komplexes und leistungsstarkes Datenbanksystem besteht letztendlich nur aus Software. Entsprechend jeder anderen Software lassen sich Datenbanksysteme ebenfalls in Software-Module gliedern. Zwar existiert für bestehende Datenbanksysteme keine allgemeingültige Gliederung in Module, doch lässt sich durch eine verallgemeinerte Gliederung die Arbeitsweise anschaulich erklären. Im Folgenden werden wir ein Schichtenmodell, angelehnt an Senko [Senko73], verwenden, welches das Datenbanksystem in fünf Schichten (Module) gliedert (siehe auch [Härder 01]). Teil 3: Internes Datenmodell 90 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Program m e, Benutzer Mengenorientierte Schnittstelle Entitätsmengenverwaltung • Optimizer • Datenbanksprachen (SQL) Satzorientierte Schnittstelle Entitätenverwaltung • • • • Metadatenbank Transaktionsverwalter Integritätssicherung Cursor-Verwalter Interne Satzschnittstelle Record- und Zugriffspfadverwaltung • Recordverwalter • Zugriffspfadverwalter System pufferschnittstelle Systempufferverwaltung • Systempufferverwalter Dateischnittstelle Externspeicherverwaltung • Externspeicherverwalter Geräteschnittstelle Daten Figur 34: Schichtenmodell eines Datenbanksystems Jede Schicht verwendet die Funktionen der unteren Schicht, um ihre jeweils spezifischen Funktionen zu realisieren, welche diese Schicht wieder der nächsthöheren Schicht zur Verfügung stellt. Dadurch wird das Datenbanksystem hierarchisch strukturiert. Die von den Schichten den untenliegenden Schichten zur Verfügung gestellten Funktionen werden auch als Schnittstelle bezeichnet. 9.1. Externspeicherverwaltung Die Software-Komponente Externspeicherverwaltung hat zur Aufgabe, die unterschiedlichen Geräteeigenschaften (z.B. Spurenanzahl, Blockgrösse etc.) der verwendeten Speichermedien der nächsthöheren Komponente (der Systempufferverwaltung) zu verstecken und stattdessen eine dateiorientierte Sichtweise auf die Speichermedien zu gewähren. Diese Schicht ist im Normalfall Teil des Betriebssystems. Diese Schicht stellt in der Dateischnittstelle Funktionen zur Verfü- Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 91 gung, welche ein Verarbeiten von Dateien erlauben: Erzeugen, Löschen, Öffnen und Schliessen von Dateien, Lesen und Schreiben eines Dateiblocks. 9.2. Systempufferverwaltung Die Systempufferverwaltung vermittelt der übergeordneten Schicht den Eindruck, sämtliche Daten seien im Systempuffer des Hauptspeichers gespeichert. Die Systempufferverwaltung übernimmt dabei die Aufgabe, Daten im Systempuffer zur Verfügung zu stellen und geänderte Daten wieder auf die Speichermedien zu übertragen. Die im Systempuffer verarbeiteten Einheiten werden Segmente oder Seiten genannt. Natürlich haben nicht sämtliche Daten im Systempuffer Platz. Der Systempufferverwalter muss daher für neu angeforderte Segmente entscheiden, welche Segmente auf das Speichermedium ausgelagert werden sollen. Für diesen Entscheid sind eine ganze Reihe von Strategien denkbar. Durch die geeignete Wahl der Ersetzungsstrategie kann die Leistung des Datenbanksystems beträchlich gesteigert werden. Sinnvollerweise unterstützt der Systempufferverwalter unterschiedliche Segmenttypen, um einen differenzierten Einsatz unterschiedlicher Strategien je Datentyp (Benutzerdaten, DBMS-Daten etc.) zu ermöglichen. Die Konfiguration des Systempufferverwalters (z.B. auch dessen Grösse) kann an dieser Stelle nicht weiter beschrieben werden und es muss daher auf weitere Ausführungen verzichtet werden. Der Systempufferverwalter selbst kann noch immer als Teil des Betriebssystems realisiert sein. In diesem Fall sollten aber bestimmte Funktionen vom Systempufferverwalter dem Datenbanksystem zur Verfügung gestellt werden, ansonsten können wünschenswerte Funktionen des Datenbanksystems nicht oder nur ineffizient realisiert werden. 9.3. Record- und Zugriffspfadverwaltung Die in dieser Schicht wahrgenommenen Aufgaben können leicht in zwei Aufgabenbereiche gegliedert werden: 1. Recordverwalter bzw. Satzverwaltung: Der Recordverwalter übernimmt die physische Abspeicherung von Datensätzen mit entsprechenden Funktionen wie Lesen, Einfügen, Modifizieren und Löschen. 2. Zugriffspfadverwaltung: Für eine praktikable Verarbeitung müssen Datensätze mit bestimmten gesuchten Eigenschaften effizient gefunden werden. Hierfür stellt das Datenbanksystem spezielle Zugriffshilfen zur Verfügung. Diese Zugriffshilfen werden allgemein als Zugriffspfade bezeichnet. 9.3.1. Recordverwaltung Der Recordverwalter hat die Aufgabe, die physischen Datensätze des Datenbanksystems in den Segmenten des Systempuffers abzulegen. Bei der Definition des Datensatzformates werden dessen Felder sowie deren Datenformate festgehalten. Dadurch ist die Gesamtlänge des Datensatzes gegeben. Im günstigen Fall haben pro Segment ein oder auch mehr Datensätze Platz. Ist der Datensatz grösser als ein einzelnes Segment, muss dieser auf mehrere Segmente verteilt werden, was zu einer deutlichen Verschlechterung der Zugriffszeiten führt. Zur besseren Nutzung des verfügbaren Speichermediums drängt sich die Komprimierung (allenfalls mit gleichzeitiger Chiffrierung) der physischen Datensätze auf. Der erhöhte Rechenaufwand hält sich dabei die Waage mit den Zeitersparnissen beim reduzierten Ein- und Ausgabeaufwand. Der Datensatz hat dann keine feste Länge mehr, sondern diese variiert je nach Dateninhalt. Messungen zeigen, dass durch Komprimierung der physische Speicherbedarf für die Daten im Durchschnitt auf ca. 50% der ursprünglichen Grösse reduziert werden kann. Dadurch wäre es dem Datenbanksystem grundsätzlich auch möglich, die Feldlänge der einzelnen Datensätze variabel zu gestalten. Die meisten Datenbanksysteme bieten diese Möglichkeit nicht an, sondern haben aus Effizienzgründen feste Feldlängen. Diese stellen dafür andere KonTeil 3: Internes Datenmodell 92 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems strukte zur Verfügung, um Felder variabler Länge (z.B. für Textdokumente, Grafiken) im Datenbanksystem abzulegen. 9.3.2. Zugriffspfadverwaltung Bis jetzt können Daten im Datenbanksystem zwar abgelegt werden, doch muss zum Auffinden eines Datensatzes mit bestimmten Eigenschaften der gesamte Datenbestand sequentiell durchsucht werden. In einem ersten Lösungsansatz könnten die Datensätze nach einem einzigen Kriterium physisch sortiert werden (z.B. nach dem Entitätsschlüssel Kundennummer), doch sind dann andere Zugriffspfade (z.B. nach dem Kundennamen oder nach Ort und Kundenname) noch immer nicht möglich. Mittels Hilfsstrukturen sollen derartige Zugriffe nach beliebig kombinierten Attributen möglichst effizient gestaltet werden können. Die physische Sortierung der Daten auf dem Speichermedium wird physischer Zugriffspfad genannt. Das physische Sortierkriterium entspricht dem Primärschlüssel. Der Primärschlüssel muss nichts mit dem Entitätsschlüssel (oder auch Identifikationsschlüssel) der Entitätsmenge gemeinsam haben (meist verwendet das DBMS einen eigenen Primärschlüssel, die Datensatznummer). Der sekundäre Zugriffspfad erlaubt den Zugriff mit einem frei definierbaren Sekundärschlüssel. Im Gegensatz zum Primärschlüssel dürfen für einen Sekundärschlüssel bei einem bestimmten Schlüsselwert beliebig viele Datensätze auftreten (z.B. 20 Entitäten mit dem Kundennamen ‘Müller’). Im Folgenden wird nicht mehr zwischen physischem und sekundärem Zugriffspfad differenziert, da die Realisierung der Zugriffspfade auf inhaltlich identischen Algorithmen basiert. Zur Optimierung der Zugriffszeiten müssen für sekundäre Zugriffspfade zwingend redundante Informationen durch den Zugriffspfadverwalter (z.B. ein Index nach Kundennamen) bereitgestellt werden. Es werden damit gezielt redundante Informationen eingeführt, um die Leistung des Datenbanksystems zu erhöhen. In der Theorie wurde eine Vielzahl von Algorithmen für Zugriffsverfahren entwickelt. In der Praxis sind allerdings nur wenige dieser Verfahren mit leichten Abweichungen und allerlei Mischvarianten anzutreffen. Mittels Hilfsstrukturen wird der effiziente Zugriff nach einem festgelegten Kriterium möglich. Doch lässt sich der Zugriff weiterhin beschleunigen, falls die Datensätze nach dem am häufigsten verwendeten Kriterium eines Sekundärschlüssels physisch sortiert abgelegt werden und zur Sortierung nicht die Datensatznummer verwendet wird. Diese gezielte physische Anordnung der Datensätze wird Clustering genannt. Können z.B. 20 Datensätze pro Segment gespeichert werden, so müsste im günstigsten Fall erst nach jeweils 20 Datensätzen wieder ein neues Segment gelesen werden. Wird kein Clustering eingesetzt, sind die Datensätze unsortiert und es würde allenfalls pro Zugriff ein Segment gelesen werden. Mittels Clustering kann die Zugriffshäufigkeit auf das Speichermedium daher im angesprochenen Fall bis zum Faktor 20 reduziert werden. Dies bedingt allerdings, dass die Entwickler über das Clustering informiert sind und dieses gezielt nutzen, oder dass das Datenbanksystem selbständig den optimalen Zugriffspfad wählt. 9.3.2.1. Zugriffsverfahren mit invertierten Listen Bei der invertierten Liste wird für das gewünschte Zugriffskriterium ein Index gebildet in welchem die auftretenden Werte sortiert abgelegt werden. Zusätzlich wird für jeden Indexeintrag eine Zeigerliste geführt, welche die betreffenden Datensätze referenziert (z.B. mittels interner Datensatznummer). Für einen Zugriff auf den bzw. die Datensätze mit dem gewünschten Kriterium wird zunächst im Index die Position der Datensätze bestimmt und anschliessend direkt auf die entsprechenden Datensätze zugegriffen. Eine Zugriffsbeschleunigung erfolgt aus zwei Gründen: Erstens ist der Index nach dem gewünschten Zugriffskriterium sortiert und ermöglicht damit binäres Suchen. Zweitens benötigt der Index selbst deutlich weniger Platz als die eigentlichen Daten, so dass pro Segment beträchtlich mehr Indexeinträge als Datensätze gespeichert werden können. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Index Anz. Zeiger 93 Zeigerlisten mit Record-Id Schluep 2 2'345 Schlüer 1 9'452 Schlum sberger 4 16 Schlünz 1 734 ... ... 321 341 389 1'532 Figur 35: Index und Zeigerlisten bei der invertierten Liste Da die Länge der Zeigerlisten zu Beginn nicht bekannt ist und die Realisierung variabel langer Zeigerlisten aufwendige Algorithmen bedingt, werden die Zeigerlisten meist separat zur Indexstruktur abgelegt. In der Indexstruktur wird lediglich auf die betreffende Zeigerliste referenziert (wieder mittels Zeiger), welche separat hiervon verwaltet wird. Trotz der einfachen Struktur und Algorithmen sind invertierte Listen in Reinform kaum anzutreffen. Das Aufsuchen von Datensätzen ist zwar äusserst effizient, aber beim Einfügen und Löschen neuer Datensätze ergeben sich Schwierigkeiten. Grundlage der invertierten Listen ist ein sortierter Index, dessen Einträge physisch sortiert sind. Dies bedingt, dass beim Einfügen für den neuen Indexeintrag Platz geschaffen werden muss und sämtliche nachfolgenden Indexeinträge daher nach hinten geschoben werden. Entsprechend müssen beim Löschen die Lücken wieder geschlossen werden. Zwar können durch Überlaufbereiche die Mängel etwas gedämpft werden, sie gewähren aber nur einen mangelhaften Kompromiss. Um diesen Mangel zu beseitigen liegt die Idee nahe, den Index in kleinere Einheiten zu gliedern und zum Auffinden des korrekten Indexteiles wiederum einen Index zu verwenden. Dadurch würde ein hierarchischer, zweistufiger Index gebildet. Natürlich kann dieser Unterteilungsschritt beliebig oft wiederholt werden und dadurch ein mehrstufiger Index gebildet werden. Dieser Vorgang wird sinnigerweise so lange wiederholt, bis die grössten Indexteile physisch exakt die Grösse eines Segmentes haben. Verfeinert man diesen Algorithmus noch in der Art und Weise, dass die einzelnen Indexteile auf allen Hierarchiestufen möglichst gleichmässig und vollständig gefüllt sind, dann handelt es sich annähernd um einen baumstrukturierten Zugriffspfad. Interessant ist natürlich die Frage, wie viele Zugriffe sind auf den Systempufferverwalter nötig, bis die gesuchten Daten gefunden werden. Die Antwort ist nicht ganz einfach zu geben. Geht man von einem einfachen Index aus, in welchem mittels binärer Suche die Zeigerreferenz eruiert wird und bei welchem für jeden Suchschritt ein Segment angefordert werden muss (was nicht ganz korrekt ist), so müssen etwa log 2(D) Zugriffe auf den Index erfolgen (D entspricht der Anzahl der Datensätze). Bei 1’000’000 Datensätzen sind damit ca. 17 Zugriffe notwendig. Dies ist ein durchaus befriedigendes Ergebnis, allerdings treten beim Einfügen und Löschen von Daten beträchtliche Probleme auf. So muss für diese Operationen im Schnitt jeweils die Hälfte aller Datensätze verschoben werden, für ein Datenbanksystem keine akzeptable Lösung. 9.3.2.2. Baumstrukturierte Zugriffsverfahren, B- und B*-Baum Für baumstrukturierte Zugriffsverfahren wurde eine Vielzahl unterschiedlicher Algorithmen entwickelt. Im Folgenden werden zwei wichtige Vertreter vorgestellt, welche sich speziell für den Einsatz in Datenbankumgebungen eignen und daher auch eine entsprechende Verbreitung gefunden haben. Dabei handelt es sich bei Ersterem um sogenannte B-Bäume und beim Zweiten um eine Variante hiervon, dem B*-Baum (siehe auch [Wirth 96]). Das B in der Bezeichnung bringt zum Ausdruck, dass es sich um balancierte Bäume handelt, es darf nicht mit Binär- (für Datenbanksysteme ungeeignet) oder Bitbäumen (nur in Ausnahmefällen geeignet) in Verbindung gebracht werden. Folgende Begriffe werden im Zusammenhang mit Bäumen verwendet: 1. Knoten: Die Knoten sind die Grundkomponenten des Baumes. 2. Zeiger: Mittels der Zeiger (physische Adressverweise, Pointer) werden die Knoten des Baumes miteinander verknüpft. Teil 3: Internes Datenmodell 94 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 3. Wurzel: Die Wurzel ist der oberste Knoten des Baumes. 4. Blätter: Die Blätter sind jene Knoten, welche selbst keine untergeordneten Knoten mehr haben. In B-Bäumen werden die Daten baumartig in den Knoten angeordnet, welche mittels Zeigern verknüpft sind. Die Grösse der Knoten entspricht dabei i.d.R. der Grösse der durch den Systempufferverwalter verarbeiteten Segmente. Die Knoten des B-Baumes beinhalten: 1. Mehrere Schlüsseleinträge 2. Die jeweils zugehörigen Daten selbst oder als Variante einen Zeiger auf die eigentlichen Daten 3. Mehrere Zeiger, welche auf je einen untergeordneten Knoten verweisen, in welchem sämtliche Schlüsselwerte grösser sind als der links vom Zeiger liegende Schlüsselwert, aber in welchem alle Schlüsselwerte kleiner sind als der rechts vom Zeiger liegende Schlüsselwert (dies gilt auch für alle wiederum untergeordnete Knoten) Graf Egli Aelig Dim m Voss Hess Koster Sandr Frei Figur 36: Baum für das Attribut Name (ohne Daten) Damit ist es möglich einen gewünschten Schlüsselwert gezielt zu suchen. Bei optimaler Verteilung und Belegung des Baumes ist das Suchen eines Schlüsselwertes sogar effizienter als die binäre Suche, und das ganz ohne dass die Daten physisch sequentiell geordnet sein müssen. Lediglich in den einzelnen Knoten selbst müssen die Daten sortiert sein. Durch geeignete Algorithmen muss nun sichergestellt werden, dass die Knoten immer mindestens bis zu einem bestimmten Grad gefüllt sind und dass der Baum mehr oder weniger gleichmässig balanciert ist. Werden diese Forderungen nicht aufgestellt, kann ein Baum im schlimmsten Fall zu einer linearen Liste verkommen, der Zugriff zu gesuchten Daten entspricht dann dem sequentiellen Durchsuchen der Daten. In der Regel werden folgende Bedingungen für B-Bäume definiert: 1. Alle Knoten, mit Ausnahme der Wurzel, müssen mindestens je zur Hälfte mit Daten gefüllt sein. 2. Die Weglänge von der Wurzel bis zu sämtlichen Blättern des B-Baumes ist identisch. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 95 Locher Isler Burri Klee Sigg Hasler Popp Kägi Rüegg Kasper Stam pf Kram er Lanz Vettiger Theiler Lehner Weiss Zappa Zwingli Figur 37: B-Baum Während die erste Forderung intuitiv noch recht einfach zu gewährleisten ist, scheint es zunächst schwierig die zweite Forderung zu erfüllen, doch lässt sich dieses Problem recht elegant lösen. Geht man davon aus, dass der Baum an den Blättern wächst und schrumpft, kann ein unkontrolliertes Wachstum nur schwerlich verhindert werden. Lässt man den Baum aber an der Wurzel wachsen und schrumpfen, wird vieles deutlich einfacher. Wächst und schrumpft der Baum an der Wurzel, ist immer automatisch sichergestellt, dass sämtliche Weglängen immer gleich lang sind. Durch geeignete Algorithmen müssen Daten im korrekten Blatt im Baum so eingefügt werden, dass beim Überlauf (Einfügen in einen vollen Knoten) der Knoten in der Mitte geteilt wird und genau ein Knoteneintrag nach oben gereicht wird. Dadurch entstehen zunächst zwei exakt zur Hälfte gefüllte Knoten, ohne dass der Baum nach unten gewachsen wäre. Der nach oben gereichte Knoteneintrag enthält den Schlüsselwert, der exakt den Wert in der Mitte aller sortierten Schlüsselwerte enthält. Damit können die beiden neuen Knoten leicht mittels Zeigern an den neu im obenliegenden Knoten eingebetteten Schlüsselwert angebunden werden. Ist dieser obenliegende Knoten wiederum voll, wird der selbe Vorgang rekursiv wiederholt. Isler Aerni Burri Hasler Kägi Klee Kram er Lanz Lehner Kasper Isler Meier Leitner Klee Lehner Aerni Burri Hasler Kägi Kram er Kasper Lanz Leitner Meier Teil 3: Internes Datenmodell 96 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Isler Aerni Burri Klee Hasler Lehner Kram er Kägi Lanz Kasper Leitner Meier Figur 38: Einfügen von Daten in einen B-Baum Handelt es sich beim obenliegenden Knoten um die Wurzel, dann wird die Wurzel geteilt und ein Knoteneintrag gemäss den vorgängigen Erläuterungen nach oben gereicht. Bei dem nach oben gereichten Knoteneintrag handelt es sich natürlich um die neue Wurzel, während die alte Wurzel zu zwei ‘normalen’ Knoten umgewandelt wird. Der Baum ist nach oben gewachsen. Die Weglängen von der Wurzel zu den Blättern hat für alle Wege um eine Hierarchiestufe zugenommen. Beim Löschen von Knoteneinträgen sorgen entsprechend umgekehrte Vorgänge für ein Zusammenlegen von Knoten und allenfalls für ein Schrumpfen der Baumhöhe. Entscheidend für die Effizienz der Zugriffe ist die höchstmögliche Anzahl der Knoteneinträge in die Knoten. Es liegt daher nahe, diese dadurch zu erhöhen, dass die Daten bzw. die Zeiger auf die Daten, nicht in sämtlichen Knoten geführt werden. Im B*-Baum werden die Daten oder deren Zeiger nicht in sämtlichen Knoten geführt, sondern nur in den Blättern des Baumes. In einem ‘normalen’ Knoten haben damit mehr Schlüsseleinträge Platz. Dies bedingt allerdings, dass die Schlüsseleinträge von ‘normalen’ Knoten redundant geführt werden und in den Blättern erneut auftreten. Locher Isler Burri Hasler Klee Sigg Isler Kägi Popp Kasper Rüegg Klee Kram er Sigg Stam pf Lanz Locher Vettiger Theiler Vettiger Weiss Zappa Figur 39: B*-Baum B-Bäume und B*-Bäume sind die Standardlösung als Zugriffsverfahren. Sie erlauben den raschen Zugriff für ein bestimmtes Zugriffskriterium, ermöglichen effizientes sequentielles Lesen, Einfügeund Lösch-Operationen zeigen ebenfalls ein gutes, ausgewogenes Leistungsverhalten. Die notwendige Anzahl der Zugriffe auf den Systempufferverwalter hängt jetzt nicht nur von der Anzahl der Datensätze ab, sondern auch von der Anzahl der im Knoten abgelegten Schlüsselwerte (im Folgenden S genannt). Die benötigte Anzahl Zugriffe ist für B-Bäume etwa logS(D)+1. Bei 1’000’000 Datensätzen und einem S von 100 (für B-Bäume) ergibt sich eine durchschnittliche Zugriffszahl von unter 4. Im Vergleich zur invertierten Liste erhält man bei einem grossen S eine deutliche Leistungssteigerung. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 97 Zur Steigerung der Performance bieten bzw. nutzen Datenbanksysteme auch die Möglichkeit, für einen Zugriff nur den Zugriffspfad zu verwenden. So lange nur Daten benötigt werden, welche im Zugriffspfad gespeichert sind, ist ein Zugriff auf die eigentlichen Daten überflüssig. Da der Zugriffspfad meist vollständig im Systempuffer abgelegt ist, sind derartige Zugriffe im Vergleich zu vollständigen Zugriffen dann um ein Vielfaches schneller. Entsprechend kann auch verfahren werden, wenn nur die Anzahl der Datensätze gesucht wird, die ein bestimmtes Kriterium erfüllen. 9.3.2.3. Zugriffsverfahren mit Schlüsseltransformation Das Zugriffsverfahren mit Schlüsseltransformation (auch Hash, bzw. Hashing genannt) besticht durch seine unglaublichen Leistungsmerkmale. Im günstigen Fall benötigt es einen einzigen Zugriff auf das externe Speichermedium um gesuchte Daten zu finden. Im Gegensatz zu den baumstrukturierten Zugriffsverfahren wird keine zusätzliche Hilfsorganisation aufgebaut, sondern die Daten werden derart geschickt abgelegt, dass das Datenbanksystem direkt aus dem Schlüsselwert die Segment-Adresse des Datensatzes berechnen kann. Damit ist auch bereits die Arbeitsweise von Zugriffsverfahren mit Schlüsseltransformation erklärt. Das Datenbanksystem nimmt den Schlüsselwert und berechnet daraus mittels definierter Transformationen die Segment-Adresse, an welcher der Datensatz gespeichert wird. Beim Suchen von Daten wird mittels des selben Transformationsverfahrens die Segment-Adresse des vermeintlichen Datensatzes bestimmt, und der Zugriff auf das betreffende Segment gibt Auskunft, ob der Datensatz tatsächlich existiert. Für dieses Verfahren muss damit bereits beim Anlegen der Datenbank bestimmt werden, wieviel Speicherplatz die Entitätsmenge benötigt, damit dieser reserviert werden kann. Entscheidend für die Effizienz des Zugriffsverfahrens ist der Algorithmus, mittels welchem der Schlüsselwert in die Segment-Adresse umgerechnet wird. Einerseits muss verhindert werden, dass allzu häufig die selbe Segment-Adresse berechnet wird, denn dann müssen Überlaufbereiche angelegt werden, welche zusätzliche Zugriffe erfordern. Andererseits sollte der zur Verfügung gestellte Speicherbereich möglichst dicht mit Daten belegt werden. Es muss also ein Transformationsverfahren gewählt werden, welches die Daten möglichst gleichmässig verteilt. Häufig wird für die Transformation das Divisionsrestverfahren (Modulo-Funktion) verwendet. Dabei wird der Schlüsselwert (bzw. dessen numerischer Bytewert) durch eine vorgegebene Zahl, vorteilhafterweise eine Primzahl, dividiert (z.B. 19 Modulo 7 ergibt 5; 2*7+5=12. Der Divisionsrest ergibt dann direkt die Segment-Adresse des Datensatzes. Die gewählte Primzahl entspricht damit auch direkt dem Speicherplatz, welcher reserviert werden muss. Neben den bereits erwähnten Nachteilen (der zu reservierende Speicherplatz, die Überlaufbereiche mit mehrfachem Zugriff), ist die sequentielle sortierte Verarbeitung der Daten kaum möglich. Zugriffsverfahren mittels Schlüsseltransformation eignen sich daher nur für Datenbestände, welche bestimmte Bedingungen erfüllen: Die Menge der zur Laufzeit auftretenden Entitäten sollte möglichst genau bekannt sein und sollte sich im Lauf der Zeit nur wenig ändern. Die Werte und die Verteilung der Schlüsselwerte sollten ebenfalls möglichst genau bekannt sein, damit ein geeigneter Transformationsalgorithmus bestimmt werden kann. Die Verarbeitung der Daten sollte nicht sequentiell sortiert erfolgen. Zwar wurden auch dynamische Verfahren entwickelt, um die vorgängigen Bedingungen zu entschärfen, doch haben sich Schlüsseltransformationsverfahren in der Praxis nicht durchgesetzt, sondern wurden allenfalls als zusätzliche Variante (zu den B-Bäumen) integriert. 9.4. Entitätenverwaltung Während der Recordverwalter noch mit den physischen Einheiten des Datenbanksystems arbeitet, werden die Daten in der satzorientierten Schnittstelle (realisiert durch Entitätenverwaltung) in den logischen Einheiten des Datenbanksystems verwaltet. So verwendet der Recordverwalter Teil 3: Internes Datenmodell 98 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems z.B. für die Bezeichnung der Datensatzfelder noch technische Bezeichnungen (z.B. ‘AB’), während die Entitätenverwaltung (auch zugriffspfadbezogenes Datenmodell genannt) hiervon abstrahiert und die Feldbezeichnung logisch geführt wird (z.B. ‘Kundennummer’). Für diese Umsetzung muss das Datenbanksystem Informationen über die gespeicherten Informationen sammeln. Diese Informationen über die Informationen werden Metadaten genannt. Die Datenbankkomponente, in welcher die Metadaten gehalten werden, wird sinngemäss Metadatenbank genannt. 9.4.1. Metadatenbank In der Metadatenbank (auch Data Dictionary, Datenwörterbuch, Repository) werden sämtliche Informationen über die verwalteten Daten und Komponenten des Datenbanksystems abgelegt. So können in der Metadatenbank nicht nur Strukturinformationen über die Benutzerdaten selbst abgelegt werden (physisches und externe Schemas), sondern es können zum Beispiel auch die verwendeten Programme, Benutzerangaben, Statistiken registriert werden. Diese Informationen spielen in der Entwicklung und Wartung von Datenbanksystemen eine entscheidende Rolle zur Effizienzsteigerung. So kann zum Beispiel mittels Metadatenbank festgehalten werden, welches Programm welche Entitätsmengen verwendet. Eine derart ausgelegte Metadatenbank wird zum zentralen Koordinationsinstrument aller betroffenen Abteilungen (EDV-Entwicklung, Fachabteilungen, Organisation etc.). Die folgenden Entitätsmengen zeigen im Ausschnitt, wie ein kleines konzeptionelles Datenmodell in einer Metadatenbank abgelegt werden könnte. Entitätsmengen Entitätsmengenname Kunden Aufträge Auftragspositionen ... Beschreibung Enthält die Informationen unserer Kunden Enthält die durch unsere Kunden vergebenen Aufträge Hält fest, welche Artikel in einem Auftrag verkauft wurden. ... Attribute Entitätsmengenname Kunden Attributsname Kunden_Id Entitätsschlüsselteil Ja Kunden Name Nein Kunden Geschäftsform Nein Beschreibung Domäne Eindeutige Identifikation des Kunden Name des Kunden (Nachname bzw. Firmenname) Geschäftsform: juristisch / natürlich Numerisch 10 Alphabetisch 30 ... ... Tabellen 24: Teil des konzeptionellen Datenmodells (Struktur der Benutzerdaten), gespeichert in Metadatenbank Werden in der Metadatenbank nicht nur das physische Schema und die externen Schemas verwaltet, sondern wird darüber hinaus auch das konzeptionelle Datenmodell bewirtschaftet, lässt sich das Datenbanksystem über alle Phasen der Datenmodellierung einsetzen. Gängige Datenbanksysteme sind allerdings nicht in der Lage, das konzeptionelle Datenmodell parallel zum physischen Datenmodell zu pflegen. Werden zusätzlich zu den Datenmodellen Geschäftsprozesse, logische Transaktionen etc. betreut, der Entwickler mit abgestimmten Methoden in Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 99 seiner Arbeit unterstützt, dann handelt sich um mehr als eine reine Datenbank, dann ist es ein Case-Tool. Da ein Datenbanksystem als Zielsetzung die effiziente Verwaltung von Daten hat, sollte es auch möglich sein, die Metadaten selbst mittels den genau gleichen Komponenten und Methoden des Datenbanksystems zu verwalten wie normale Daten. Dieser Ansatz wird in relationalen Datenbanksystemen auch tatsächlich verfolgt. Hierdurch können alle Vorteile von Datenbanksystemen voll genutzt werden. Es wird somit eine Meta-Datenbasis angelegt, für welche das Datenbanksystem wie für normale Daten z.B. die Datenintegrität (z.B. für den Mehrbenutzerbetrieb) sicherstellt. Das Datenmodell mittels welchem die Metadaten abgelegt werden können, kann nun auch exakt mit den selben Methoden dargestellt und strukturiert werden, wie wir dies für ‘normale’ konzeptionelle Datenmodelle gezeigt haben: Dom änen Applikationen Benutzer Datensichten Entitätsm engen Zugriffsrechte Attribute Zugriffsrechtvergaben Datensichtenaufbau Figur 40: Ausschnitt eines einfachen, konzeptionellen Datenmodells für Metadaten Betrachtet man das Datenmodell der Metadaten eines konkreten Datenbanksystems, so können daraus direkt auch die Fähigkeiten des Datenbanksystems abgeleitet werden. Z.B. kann man direkt ersehen, welches die maximale Länge für die Bezeichnung eines Attributes ist, ob für Domänendefinitionen Aufzählungstypen erlaubt sind. In der Praxis ist leider nicht in jedem Datenbanksystem eine Metadatenbank integriert. In diesen Fällen kann es sinnvoll sein, trotzdem eine Metadatenbank anzulegen. Natürlich ist dann der Funktionsumfang nicht der selbe, wie dies bei einer integrierten Metadatenbank der Fall ist. Zur Unterscheidung des Funktionsumfangs lassen sich Metadatenbanken nach bestimmten Kriterien klassifizieren: Passive Metadatenbank: Bei einer passiven Metadatenbank ist die Metadatenbank nicht in das Datenbanksystem integriert. Damit kann die Metadatenbank das Datenbanksystem in dessen Arbeit nicht unterstützen, sondern dient vorwiegend Dokumentationszwecken. Häufig müssen damit identische Informationen in die Metadatenbank und in das Datenbanksystem eingegeben werden. Aktive Metadatenbank: Eine aktive Metadatenbank weist Schnittstellen zum Datenbanksystem auf und hat damit die Möglichkeit, Informationen gezielt auszutauschen. So können z.B. die Informationen in der Metadatenbank eingegeben werden und später mittels Schnittstelle in das Datenbanksystem übertragen werden. Damit entfällt die doppelte Eingabe der Informationen. Integrierte Metadatenbank: Eine integrierte Datenbank ist Teil der Datenbank selbst. Damit werden auch die Metadaten nicht mehr doppelt geführt, sondern müssen Teil 3: Internes Datenmodell 100 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems nur einmal abgelegt werden, Schnittstellen und Kommunikation entfällen. Integrierte Metadatenbanken sind die beste Lösung und heute in den meisten Datenbanksystemen standardmässig eingebaut. Damit können z.B. Programme zur Laufzeit Informationen aus der Metadatenbank lesen und verwenden. Natürlich stellt sich jetzt wiederum die Frage, wo speichert das Datenbanksystem die Informationen über die Struktur der Metadaten (die Meta-Meta-Daten). Im Prinzip könnte eine beliebig lange Kette von Meta-Ebenen gebildet werden, wobei jede höherliegende Ebene einen höheren Abstraktionsgrad aufweist und im Vergleich zu den untenliegenden Ebenen einfacher gestaltet ist. In der Praxis werden die Strukturinformationen der Metadatenbank aus Gründen der Effizienz allerdings häufig bereits nicht mehr in einer Meta-Meta-Datenbank abgelegt, sondern sind als Teil der Programme des Datenbanksystems implementiert. Erfüllt das Datenbanksystem in der gegebenen Form nicht die durch den konkreten Einsatz nötigen Anforderungen, so ist es theoretisch möglich, die Metadatenbank so zu gestalten, dass die zusätzlichen Anforderungen doch noch befriedigt werden. Dies indem die Strukturinformationen über die Metadatenbank in der Meta-Meta-Datenbank entsprechend ergänzt werden. Soll z.B. die Anzahl der erlaubten Zeichen für Attributsnamen verlängert werden, so wird die Domänendefinition für Attribute in der Meta-Meta-Datenbank geändert. Dabei ist zu beachten: 1. Durch die Änderung der Struktur der Metadatenbank müssen allenfalls bestehende Programme des Datenbanksystems geändert und neue Programme erstellt werden. 2. Bei jedem Versionswechsel des Datenbanksystems müssen die geänderten und neu erstellten Programme überarbeitet werden. Ausserdem muss sichergestellt werden, dass die Metadaten vollständig in die neue und geänderte Metadatenbank übernommen werden. Trotz der reizvollen Aufgabe sollte daher in aller Regel darauf verzichtet werden Strukturänderungen vorzunehmen. Bei notwendigen Änderungen müssen diese gezielt vorgenommen und gut dokumentiert ausgeführt werden. 9.4.2. Transaktionsverwaltung Die Entitätenverwaltung erlaubt die Verarbeitung der Datenbankobjekte mittels definierter Operationen. Bisher sind die vom Datenbanksystem dargebotenen Operationen als einzelne, unabhängige Operationen betrachtet worden. In der Praxis genügt diese Sichtweise aber nicht. Eine logisch zusammengehörige Operation (aus Sicht der Anwendung) kann sich aus mehreren Operationen des Datenbanksystems zusammensetzen. So sind z.B. Buchung und Gegenbuchung auf zwei Konten aus abstrakter Sicht eine einzelne Operation, aus Sicht des Datenbanksystems aber aus mindestens zwei oder sogar mehr Operationen zusammengesetzt. Diese abstrakten Operationen werden Transaktionen genannt. Transaktion: Eine Transaktion ist aus Sicht der Anwendung eine unteilbare, ununterbrechbare Operation (bestehend aus beliebig vielen Datenbankoperationen) auf den Daten des Datenbanksystems [Date 00]. Mittels des Transaktionskonzepts lassen sich zwei wesentliche Eigenschaften von Datenbanksystemen realisieren: 1. Integritätswahrung: Die Integritätsbedingungen werden während der Ausführung von einzelnen Operationen zwangsläufig verletzt und sind erst nach einer Reihe von Operationen wieder erfüllt (z.B. Ausführung einer Haben- und Sollbuchung). Das Datenbanksystem muss daher wissen, welche Operationen zusammengehören und die Datenbank wieder in einen konsistenten Zustand überführen. Mittels Transaktionen können diese Operationen zu einer einzigen logischen Operation (der Transaktion) gebündelt werden. Ohne Transaktionskonzept ist daher schwerlich eine griffige InTeil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 101 tegritätssicherung zu realisieren. Natürlich muss vom Datenbanksystem auch verhindert werden, dass nur ein Teil der Transaktion ausgeführt wird. Dies ist nicht im Sinne des Anwenders und würde die Datenbank zudem mehrheitlich in einen inkonsistenten Zustand versetzen. 2. Mehrbenutzerbetrieb: Im Mehrbenutzerbetrieb muss das Datenbanksystem dem einzelnen Anwender den Eindruck vermitteln, er sei zur Zeit allein im Datenbanksystem aktiv. Es darf nicht geschehen, dass ein Anwender eine Reihe von zusammengehörenden Operationen ausführt und ein anderer Anwender gleichzeitig die verwendeten Daten verändert. Dadurch könnten Daten verloren gehen oder widersprüchlich gespeichert werden. Das Datenbanksystem muss damit während den logisch zusammengehörenden Operationen (der Transaktion) sicherstellen, dass kein anderer Benutzer die Daten lesen oder ändern kann. Transaktion 1: Verbuchen Ertrag Transaktion 2: Verbuchen Aufwand Einlesen des Ertrages Einlesen des Aufwandes Kontostand Konto 'Kasse' lesen Kontostand Konto 'Gewinn' lesen Kontostand Konto 'Gewinn' lesen Kontostand Konto 'Kontokorrent' lesen Kontostand Konto 'Kasse' um Ertrag erhöhen Kontostand Konto 'Kontokorrent' um Aufwand verkleinern Zeit Kontostand Konto 'Gewinn' um Ertrag erhöhen Kontostand Konto 'Gewinn' um Aufwand verkleinern Figur 41: Fehlerbeispiel für Mehrbenutzerbetrieb ohne Transaktionslogik In der Figur wird die zeitliche Abfolge gezeigt, in welcher zwei Benutzer die gemeinsamen Daten ohne schützende Transaktionslogik verändern und dadurch am Ende ihrer Arbeit einen inkonsistenten Zustand der Daten hinterlassen. Im Beispiel wird nur der Aufwand im Gewinnkonto verbucht. Der Ertrag wird nur im Konto Kasse verbucht, denn die nachfolgende Operation beim Verbuchen des Aufwandes im Gewinnkonto überschreibt die Verbuchung des Gewinnes im Gewinnkonto wieder. Zur Realisierung des Transaktionskonzepts muss das Datenbanksystem eine Reihe von Fähigkeiten aufweisen: 1. Änderungen an Daten durch unvollständig abgelaufene Transaktionen (z.B. beim Systemabsturz, Programmfehlern) oder durch Transaktionen mit einem integritätsverletzenden Endzustand müssen auf den ursprünglichen Zustand zurückgesetzt werden. Derartige fehlerhafte Transaktionen dürfen keine Spuren in den Daten hinterlassen. 2. Dagegen muss sichergestellt sein, dass Transaktionen, welche erfolgreich abgeschlossen wurden, auch tatsächlich in der Datenbank gespeichert sind. Es darf Teil 3: Internes Datenmodell 102 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems nicht der Fall eintreten, dass Änderungen verloren gehen, weil diese nur im Systempuffer abgelegt waren (z.B. beim Systemabsturz). 3. Im Mehrbenutzerbetrieb muss verhindert werden, dass Transaktionen anderer Benutzer Daten lesen, welche durch die eigene laufende Transaktion verändert oder eingefügt wurden. Würden andere Benutzer diese Daten als Basis für ihre Transaktionen nehmen, die eigene Transaktion aber abgebrochen und die bisherigen Änderungen zurückgesetzt, würden die anderen Transaktionen auf falschen Daten basieren. 4. Ausserdem muss im Mehrbenutzerbetrieb verhindert werden, dass andere Transaktionen Daten ändern, welche die eigene Transaktion lediglich gelesen hat. Wäre dies erlaubt, könnten z.B. die von der eigenen Transaktion gelesenen Daten zum Teil auf einem alten und zum Teil auf einem neuen Stand basieren. Zur Realisierung dieser Fähigkeiten sind im Wesentlichen drei Algorithmen von Interesse. Diese drei Algorithmen werden als optimistisches, pessimistisches und Zeitstempel-Verfahren bezeichnet. Im Folgenden werden diese kurz, aber nicht im letzten Detail besprochen. Die drei im Folgenden aufgeführten Algorithmen stellen sicher, dass der parallele Betrieb von Transaktionen zu gültigen Resultaten führt. Ein Transaktionsalgorithmus gilt dann als korrekt, wenn er serialisierbar ist, d.h., dass die Resultate, welche durch den Transaktionsalgorithmus erzeugt werden, auch durch irgendeine erlaubte serielle Ausführung der Transaktionen erzeugt würden. 9.4.2.1. Optimistisches Verfahren Dieses Verfahren wird optimistisches Verfahren genannt, weil die Grundannahme des Algorithmus jene ist, dass es sehr selten Konflikte zwischen den unterschiedlichen Anwendern im Zugriff auf die Daten gibt. Der Algorithmus wird leider sehr ineffizient, falls es dennoch häufig zu Konflikten kommt. Im schlechtesten Fall kann kein einziger Anwender mehr seine Transaktion erfolgreich beenden. Dieser gravierende Mangel hat auch verhindert, dass dieser Algorithmus in bestehenden Datenbanksystemen realisiert wurde. Welcher Hersteller könnte sein Datenbanksystem mit dieser Einschränkung erfolgreich verkaufen? Hier soll daher auch nur kurz und oberflächlich die Funktionsweise des Algorithmus erläutert werden. Während der eigentlichen Transaktion, in der Lesephase, werden sämtliche Änderungen an den Daten nicht an den Daten selbst, sondern an Kopien der Daten vorgenommen. Erst am Ende der Transaktion wird in der Validierungsphase überprüft, ob es zu einem Konflikt mit anderen Transaktionen gekommen ist. Ist kein Konflikt aufgetreten, werden die Änderungen an den Daten in der Schreibphase auf die effektiven Daten übertragen. Im Falle eines Konfliktes werden die Änderungen auf den Kopien verworfen. 9.4.2.2. Pessimistisches Verfahren Das pessimistische Verfahren oder auch Sperrverfahren ist das bedeutendste Verfahren für die Praxis. Die Mehrzahl der Datenbanksysteme verwendet dieses Verfahren. Im Gegensatz zum optimistischen Verfahren wird ein allfälliger Konflikt nicht erst am Ende der Transaktion festgestellt, sondern es wird jeder einzelne Zugriff unmittelbar auf Konflikte überprüft. Zudem kann garantiert werden, dass selbst bei höchster Last immer wieder Transaktionen erfolgreich beendet werden. Da dieses Verfahren das meistverbreitete Verfahren ist und weil das Verfahren auf das Erstellen der Anwendungsprogramme Einfluss nimmt, soll es hier entsprechend detailliert erläutert werden. Grundidee des pessimistischen Verfahrens ist es, ein Verzeichnis der durch die aktuell aktiven Transaktionen benutzen Objekte mit Verweis auf die Nutzungsart in einer zentralen Sperrtabelle (Locktabelle) anzulegen (siehe Tabelle unten). Dazu eignen sich zunächst zwei Nutzungsarten: 1. Lesesperre (Shared Lock): Das Objekt wurde durch die Transaktion gelesen. 2. Schreibsperre (Exclusive Lock): Das Objekt wurde durch die Transaktion verändert und in die Datenbasis geschrieben. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Sperrobjekt Nutzungsa rt Verwendungsna chwies Datensatz 253 Schreibsperre Transaktion T1 Datensatz 563 Lesesperre Transaktionen T1, T2, T4 Datensatz 974 Lesesperre Transaktion T1 Datensatz 2983 Schreibsperre Transaktion T2 ... ... ... 103 Figur 42: Beispiel einer Sperrtabelle Bei jedem Lese- oder Schreibzugriff innerhalb einer Transaktion auf ein Objekt des Datenbanksystems muss nun überprüft werden, ob kein Konflikt vorhanden ist. Dabei können folgende Fälle auftreten: 1. Falls das Objekt noch nicht in der zentralen Tabelle vorhanden ist, ist der Zugriff sicher erlaubt. Das Objekt muss noch mit der Identifikation der entsprechenden Transaktion (Transaktionsmarke) und der Nutzungsart eingetragen werden. 2. Das Objekt wird ausschliesslich durch die eigene Transaktion genutzt: Der Zugriff ist in jedem Fall erlaubt. Falls die Nutzungsart vorgängig ‘gelesen’ war und das Objekt geändert wird, muss neu die Nutzungsart ‘geschrieben’ gesetzt werden. 3. Das Objekt soll gelesen werden und wurde bereits durch eine oder mehrere andere Transaktionen gelesen (ohne Schreiboperationen): So lange die anderen Transaktionen die verwendeten Daten nicht ändern, besteht keine Gefahr, der Zugriff ist erlaubt. Damit keine andere Transaktion die gelesenen Daten ändert, wird in der Tabelle das Objekt mit der Nutzungsart ‘gelesen’ durch die eigene Transaktion eingetragen. 4. Das Objekt soll gelesen werden, wurde aber bereits durch eine andere laufende Transaktion geändert: Die eigene Transaktion darf auf die Daten nicht zugreifen, denn der effektive Zustand der Daten ist erst bekannt, wenn die andere Transaktion beendet wird. Würden die Daten dennoch verwendet, bestünde z.B. die Gefahr, dass die Daten als ganzes inkonsistent erscheinen. Die eigene Transaktion muss daher so lange warten, bis die andere Transaktion beendet ist und die Daten wieder frei gibt (d.h. Fall 1, 2 oder 3 eintritt). 5. Das Objekt soll geändert werden und wurde bereits durch eine andere Transaktion gelesen oder geändert: Die eigene Transaktion darf die Daten nicht ändern und muss warten, bis die anderen Transaktionen die Daten vollständig freigegeben haben. Würde z.B. eine andere Transaktion abgebrochen und müsste zurückgesetzt werden, dann würden die Änderungen der eigenen Transaktion verloren gehen oder die Transaktion müsste ebenfalls zurückgesetzt werden (d.h. Fall 1 oder 2 tritt ein). Die Eintragungen in der Locktabelle müssen bis zum endgültigen Ende der Transaktion bestehen bleiben und dürfen nicht früher freigegeben werden. Würden Objekte noch während der Transaktion freigegeben, so könnte z.B. bei einem Fehler der eigenen Transaktion diese nicht mehr korrekt zurückgesetzt werden, falls eine andere Transaktion Daten, welche die eigene Transaktion geändert hat, später auch geändert hat und die andere Transaktion bereits erfolgreich das Ende der Transaktion erreicht hat. Transaktionen tragen damit während der Transaktion mehr und mehr Sperren in die Tabelle ein (Wachstumsphase) und geben sämtliche Sperren am Ende der Transaktion gleichzeitig frei (Schrumpfungsphase). Dieses Verfahren wird daher strikt zweiphasig genannt. Strikt, da die Sperren bis zum Ende gehalten werden. Teil 3: Internes Datenmodell 104 Anz. Sperren 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Zeit Transaktionsstart Transaktionsende Figur 43: Sperrenanzahl einer Transaktion bei strikt zweiphasigem Verfahren Bisher war einfach von Daten bzw. Objekten die Rede, die gesperrt werden. Dabei sind grundsätzlich zwei Ansätze möglich. Entweder werden die logischen Objekte der Datenbank (z.B. die einzelnen Datensätze) oder es werden die physischen Objekte (z.B. Segmente des Systempuffers) gesperrt. Je kleiner der Sperrbereich ist, desto kleiner ist die Wahrscheinlichkeit, dass sich Transaktionen gegenseitig behindern. So werden beim Sperren eines Segments i.d.R. mehrere Datensätze gesperrt. Dafür wird, je kleiner der Sperrbereich, der notwendige Verwaltungsaufwand umso grösser. Es gilt damit zwischen der Wahrscheinlichkeit der gegenseitigen Behinderung und dem Verwaltungsaufwand abzuwägen. In der Praxis haben sich jene Systeme durchgesetzt, welche die logischen Objekte der Datenbank sperren. Prinzipiell können die logischen Objekte der Datenbank auf unterschiedlicher Stufe gesperrt werden. So ist es z.B. denkbar, anstelle des ganzen Datensatzes nur die betroffenen Attribute des Datensatzes zu sperren. In den meisten Datenbanksystemen werden aber nur Datensätze und allenfalls ganze Entitätsmengen gesperrt. Damit ist auch schon angedeutet, dass ein Datenbanksystem nicht nur genau zwei Arten von Sperren (Lese- und Schreibsperre) haben kann, sondern dass eine ganze Reihe von verschiedenen Sperrtypen auftreten können. Zusätzlich zur Differenzierung der gesperrten Objekte kann auch noch detaillierter auf die gewünschte Zugriffsart eingegangen werden. In der Praxis muss daher abgeklärt werden, welche Sperrmodi das eingesetzte Datenbanksystem unterstützt. Damit das Datenbanksystem weiss, wann eine Transaktion beginnt und wann sie wieder endet, müssen die Transaktionsgrenzen definiert werden. Hierfür müssen drei Befehle vom Datenbanksystem in dessen Sprache zur Verfügung gestellt werden: 1. Transaktionsstart (z.B. ‘Begin Of Transaction’): Sämtliche nachfolgenden Befehle sind Teil der Transaktion. 2. Transaktionsende (z.B. ‘End Of Transaction’ oder ‘Commit’): Mit diesem Befehl wird die Transaktion erfolgreich abgeschlossen. Sämtliche Änderungen müssen unwiderruflich gespeichert werden und alle Sperren müssen anschliessend freigegeben werden. 3. Transaktionsabbruch (z.B. ‘Rollback’, ‘Undo’): Tritt innerhalb der Transaktion ein Fehler auf, muss es möglich sein die Transaktion abzubrechen und sämtliche bisher durchgeführten Änderungen auf den Anfangszustand zurückzusetzen (Rollback = zurückrollen). Um die Arbeit anderer Benutzer möglichst wenig zu behindern und die Performance des Systems nicht zu belasten, sollten Transaktionen möglichst wenige Befehle beinhalten. Die Startund Endemarke der Transaktion sollten daher in Programmen möglichst nahe beieinander liegen. Vorbereitende Datenbankzugriffe sollten wenn immer möglich (d.h. die konsistente Sicht auf die Daten ist dennoch gewährleistet) ausserhalb der Transaktion liegen. Zusammengehörige Lese- und Änderungsoperationen müssen aber innerhalb der Transaktionsgrenzen liegen. Durch eine geeignete Strukturierung der Programme können die Transaktionen meist deutlich gekürzt werden. Im pessimistischen Verfahren kann eine Situation auftreten, in welcher sich zwei oder mehr Transaktionen gegenseitig derart blockieren, dass keine der Transaktionen mehr mit der Verarbeitung fortfahren kann. Diese Situation tritt z.B. ein, wenn die Transaktion T1 das Datenbankobjekt O1 mittels Schreibsperre exklusiv für sich reserviert und nun auf das Datenbankobjekt O2 zugreifen möchte. Das Datenbankobjekt O2 hat wiederum die Transaktion T2 mittels Schreibsperre Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 105 exklusiv für sich reserviert, welche gleichzeitig versucht auf das Datenbankobjekt O1 zuzugreifen. Damit wartet T1 darauf, dass T2 O2 freigibt und T2 wartet darauf, dass T1 O1 freigibt. Ohne Eingriff von aussen wären die beiden Transaktionen für immer blockiert. Diese Verklemmungssituation wird als Deadlock bezeichnet. Bei einem Deadlock blockieren sich zwei oder mehr Transaktionen gegenseitig, so dass ohne Eingriff von aussen keine der betroffenen Transaktionen mehr mit der Verarbeitung fortfahren kann. Grundsätzlich sind zwei Ansätze zum Erkennen eines Deadlocks möglich. Im ersten Ansatz geht das Datenbanksystem davon aus, dass eine Deadlocksituation dann vorliegt, wenn eine Transaktion für eine bestimmte Zeit (z.B. 10 Minuten) auf die Freigabe eines Objektes warten muss. Durch diesen Algorithmus werden allenfalls Transaktionen abgebrochen, für die gar keine Deadlocksituation vorlag. Im zweiten Ansatz untersucht das Datenbanksystem, wer auf wen wartet und erkennt die Deadlocksituation korrekt. Betrachtet man die nachfolgende Figur, so ist leicht zu erkennen, wann eine Deadlocksituation auftritt. Der Pfeil stellt dar, dass z.B. Transaktion 2 darauf wartet, dass Transaktion 4 ein Objekt freigibt. Eine Deadlocksituation besteht damit genau dann, wenn in der Grafik ein geschlossener Zyklus (im Beispiel unten rot markiert) existiert. T6 T2 T1 T4 T5 T3 Figur 44: Deadlock mit mehreren Transaktionen Zur Auflösung des Deadlocks muss eine der betroffenen Transaktionen abgebrochen werden (d.h. der Kreis zerstört werden). Im ersten Ansatz fällt dieser Entscheid dahin. Im zweiten Ansatz muss jedoch eine der Transaktionen, welche sich gegenseitig blockieren, ausgewählt werden. Hier sind wiederum unterschiedliche Algorithmen in unterschiedlichen Datenbanksystemen realisiert worden. Sinnvoll wäre es z.B. jene Transaktion auszuwählen, welche bisher am wenigsten Rechenzeit verwendet hat. Hier zeigt sich auch der Nachteil des ersten, einfacheren Ansatzes. Dieser setzt immer jene Transaktion zurück, die am längsten von allen gewartet hat. In bestimmten Datenbanksystemen wird der Transaktionsbeginn und/oder das Transaktionsende nicht explizit in den Programmen festgelegt, sondern implizit durch das Datenbanksystem bestimmt. Um sicherzustellen, dass während der gesamten Transaktion (aus der Sicht des Entwicklers) die verwendeten Objekte korrekt gesperrt werden, muss durch den Entwickler überprüft werden, ob das Datenbanksystem den Start- und Endpunkt der Transaktion korrekt erkennt. Gegebenenfalls muss steuernd eingegriffen werden. Oben wurde ein Ansatz mit zwei Sperrmodi eingeführt und darauf verwiesen, dass Datenbanksysteme zum Teil noch weitere Sperrmodi haben. Leider gibt es auch Systeme, welche nur die Schreibsperre kennen, aber keine Lesesperre aufweisen. Zur Wahrung der konsistenten Sicht auf die Daten während der Transaktion müssten diese Datenbanksysteme gelesene Daten ebenfalls mit einer Schreibsperre versehen. Genau darauf verzichten diese Datenbanksysteme aber in aller Regel. Es wird damit dem Entwickler überlassen zu überprüfen, ob die Gefahr besteht, dass durch die Transaktion eine inkonsistente Sicht auf die Daten entsteht. Dies ist kein einfacher Entscheid. Verhindert werden kann dies dann nur dadurch, dass gelesene Daten ebenfalls mit einer Schreibsperre versehen werden. Hierfür müssen gelesene Daten zusätzlich mittels einer Änderungsoperation ohne Änderung (Pseudo-Update) bearbeitet werden. Teil 3: Internes Datenmodell 106 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Leider treten in der Praxis häufig Transaktionen auf, welche sehr lange dauern. Dies ist z.B. dann der Fall, wenn der Benutzer eine grössere Menge von Daten eingeben bzw. ändern muss. Ändert diese Transaktion Daten, welche durch andere Transaktionen ebenfalls häufig benötigt werden, kann schnell ein Engpass in der Verarbeitung auftreten. Dieses Problem wir häufig mittels folgendem Algorithmus gelöst: 1. Die benötigten Daten werden vor dem eigentlichen Start der Transaktion gelesen. Damit werden diese nicht mit einer Lesesperre versehen und können durch andere ohne Einschränkungen genutzt werden. 2. Der Benutzer gibt die Daten ein, bzw. ändert die Daten. Hierbei werden nicht die eigentlichen Daten selbst, sondern Kopien der Daten verwendet. 3. Nachdem der Benutzer abgeschlossen hat, wird der Transaktionsstart ausgeführt. 4. Jetzt muss überprüft werden, ob die betroffenen Daten zwischenzeitlich geändert wurden. Dies erfolgt z.B. mit einem Zeitstempel, welcher im Datensatz gespeichert ist. Wurden die Daten geändert, muss jetzt die Transaktion abgebrochen (Rollback) werden. 5. Die Änderungen werden an den Daten durchgeführt und die Transaktion abgeschlossen. Sinnvoll ist dieses Vorgehen insbesondere dann, wenn ein Teil der vor Beginn der Transaktion gelesenen Daten, ohne Einfluss auf den Erfolg der Transaktion, geändert werden dürfen. D.h. im Schritt 4 werden nicht sämtliche, sondern nur ein Teil der Daten auf Änderungen untersucht. Dieses Verfahren wird häufig Read-Before-Update genannt. Im Prinzip handelt es sich um ein erweitertes, selektives, optimistisches Verfahren. 9.4.2.3. Zeitstempel-Verfahren Im pessimistischen Verfahren werden die Informationen über die aktiven Lese- und Schreiboperationen in einer zentralen Tabelle verwaltet. Beim Zeitstempelverfahren werden diese Informationen nun direkt beim betroffenen Datensatz abgelegt. Jeder Datensatz muss hierfür mit einer Lese- und Schreibmarke versehen werden. Die Lesemarke hält fest, wann der Datensatz zum letzten Mal gelesen wurde. Die Schreibmarke hält fest, wann der Datensatz zum letzten Mal geändert wurde. Beim Lesen bzw. Schreiben eines Datensatzes müssen nun folgende Bedingungen überprüft werden: Lesen: Der Zeitpunkt der Schreibmarke muss vor der Startzeit der Transaktion, festgehalten in der Transaktionsmarke, liegen. Schreiben: Der Zeitpunkt der Lese- und der Schreibmarke muss vor der Startzeit der Transaktion liegen. Ist eine der beiden Bedingungen nicht erfüllt, so ist die Operation nicht erlaubt. Das ZeitstempelVerfahren hat aber einen gravierenden Nachteil. Das Verfahren kann nur dann ordnungsgemäss ablaufen, wenn die Transaktion nur eine einzige Schreiboperation aufweist. Treten mehrere eigenständige Schreiboperationen auf, dann können andere Transaktionen die vorgängigen eigenen Schreiboperationen allenfalls noch zu Laufzeit der eigenen Transaktion wieder überschreiben. Andere Transaktionen dürfen die geänderten Daten nämlich ändern, falls diese zeitlich nach der Änderung gestartet wurden. Im Fehlerfall der eigenen Transaktion ist dann das Rücksetzen nicht mehr möglich. Für den praktischen Einsatz muss das Zeitstempel-Verfahren daher noch dahingehend ergänzt werden, dass die Änderungsoperationen zusammen in einem einzigen logischen Schritt ausgeführt werden. Das Zeitstempelverfahren weist aber noch einen weitere Nachteil im Vergleich zum pessimistischen Verfahren auf. Während im pessimistischen Verfahren im Falle eines Konfliktes die betroffene Transaktion wartet, bis das angeforderte Datenbankobjekt freigegeben wird, wird die Transaktion im Zeitstempel-Verfahren sofort abgebrochen. Die Wahrscheinlichkeit, dass eine Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 107 Transaktion im Zeitstempel-Verfahren erfolgreich abgeschlossen werden kann, ist daher kleiner als im pessimistischen Verfahren. 9.4.2.4. Transaktionslogik in verteilten Datenbanksystemen Bei verteilten Datenbanksystemen, d.h. die Daten sind auf mehrere parallel arbeitende Datenbanksysteme verteilt, sind die entsprechenden Algorithmen für das Zeitstempelverfahren relativ einfach zu realisieren. Es muss lediglich dafür gesorgt werden, dass ein zentraler Taktgeber die ‘Uhren’ der Systeme gleichschaltet. Natürlich muss im Fehlerfall dafür gesorgt werden, dass sämtliche Änderungsoperationen auf allen Datenbanksystemen zurückgesetzt werden. Im pessimistischen Verfahren ist der Sachverhalt etwas komplizierter. Im pessimistischen Verfahren wurden die Daten der Sperren zentral in der Locktabelle verwaltet. Würde diese Tabelle nun zentral auf einem zuvor bestimmten Datenbanksystem verwaltet, müssten sämtliche Leseund Schreib-Operationen an jene Datenbank mitgeteilt werden. Die Verwaltung der Locktabelle an und für sich ist schon eine sehr rechenintensive Angelegenheit, so dass Datenbankhersteller diese mit grosser Umsicht implementieren. Würde nun zusätzlich für jede Operation eine Kommunikation zwischen den unterschiedlichen Datenbanksystemen notwendig, wäre die Leistung des Datenbanksystems stark beeinträchtigt. Um diesen Kommunikationsaufwand möglichst klein zu halten, synchronisieren sich heutige Datenbanksysteme erst wieder am Ende ihrer Transaktionen. Das Verfahren wird Two-Phase-Commit (Zwei-Phasen-Bestätigung) genannt: Phase 1: Jedes Datenbanksystem startet eine eigene Transaktion und versucht die anfallenden Operationen auszuführen. Am Ende der systemübergreifenden Transaktion versuchen die einzelnen Datenbanksysteme ihre Transaktionen abzuschliessen. Dabei dürfen die Sperren auf die Objekte aber noch nicht freigegeben werden. Ist die Teiltransaktion erfolgreich beendet worden, so meldet das Datenbanksystem dies an den zentralen Transaktionsmanager (Commit der ersten Phase). Phase 2: In der zweiten Phase wird überprüft, ob alle beteiligten Datenbanksysteme die betroffene Transaktion erfolgreich beenden konnten. Ist dies der Fall, so können die Transaktionen endgültig abgeschlossen (Commit der zweiten Phase), die Sperren auf die Datenbankobjekte zurückgezogen werden. Im Fehlerfall müssen sämtliche Transaktionen zurückgesetzt (Rollback) werden. 9.4.3. Integritätssicherung im Datenbanksystem (interne Ebene) Die Integrität der Daten wurde bereits auf konzeptioneller Ebene besprochen, siehe ‘8. Integrität im konzeptionellen Modell’ auf Seite 83. An dieser Stelle soll die Integrität aus Sicht des Datenbanksystems auf der internen Ebene betrachtet werden. Dabei sollen aber nicht die technischen Integritätssicherungen im Datenbanksystem selbst (z.B. Paritätsbit), sondern nur jene Integritätsmassnahmen betrachtet werden, welche die Integrität der Benutzerdaten selbst (Miniwelt) sicherstellen. 9.4.3.1. Datenkonsistenz Bei der Betrachtung der integritätssichernden Massnahmen stellt sich zunächst die Frage nach der Effizienz. Integritätsregeln erfordern häufig zusätzliche Datenbankoperationen. Wird nicht nur eine einfache Integritätsregel überwacht (z.B. die Geschwindigkeit muss zwischen 0 und 200 liegen), so müssen meist zusätzliche Werte in der Datenbank gelesen werden (z.B. der eingegebene Wechselkurs darf nur 5% vom Tageskurs abweichen). Diese Zugriffe müssen bei der Definition der Integritätsregel bezüglich Rechenleistung vorsichtig beurteilt werden. Bei der Realisierung der Integritätssicherung haben die Datenbankhersteller deutlich abweichende Wege beschritten. Diese sollen nur im Ansatz aufgezeigt werden. Ein erster Ansatz ist es, die Programme vor der eigentlichen Übersetzung durch den Compiler mit einem speziellen PreCompiler zu übersetzen. Dieser untersucht die auftretenden Änderungsoperationen und überTeil 3: Internes Datenmodell 108 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems prüft, welche Integritätsregeln davon berührt werden. Falls er derartige Operationen findet, ergänzt er diese in geeigneter Weise, so dass die Integritätsregeln nicht verletzt werden können. Wird dieser Ansatz gewählt, ist es dem professionellen Anwender meist möglich, die Operationen auf einer tieferen Schicht der Datenbank auszuführen und damit die Integritätsregeln zu umgehen. Zudem müssen Online-Abfragen vor ihrer Ausführung aufwändig überprüft werden und sind damit entsprechend langsamer. Ein anderer Ansatz legt die Überprüfung der Integritätsregeln im Kern des Datenbanksystems ab. Der Zugriff auf die Daten erfolgt hierbei immer über ein Modul. Dieses Modul wird nach der Definition der Integritätsregeln generiert und beinhaltet deren Überprüfung. Ein Umgehen der Integritätsregeln ist damit ausgeschlossen. Die Performance des Systems ist in Programmen und Online-Abfragen gleichermassen gut. Allerdings können nur unverzögerte Integritätsregeln überprüft werden (d.h. nach jeder einzelnen Operation), aber keine Integritätsregeln, die erst am Ende der Transaktion erfüllt sein müssen. 9.4.3.2. Datensicherheit, Recovery Das oben eingeführte Transaktionskonzept stellt besondere Anforderungen an die Datensicherheit im Datenbanksystem. Änderungen durch Transaktionen dürfen nur gänzlich oder gar nicht im Datenbestand Eingang finden. Das Datenbanksystem muss daher in bestimmten Fällen fähig sein, bereits vollzogene Änderungen rückgängig zu machen, bzw. verlorene Änderungen erneut in den Datenbestand einfliessen zu lassen. Für einen sicheren Betrieb sind zumindest folgende vier Recovery-Massnahmen notwendig [Reuter 81]: 1. Partielles Zurücksetzen (partieller Rollback): Falls eine einzelne Transaktion nicht erfolgreich abgeschlossen werden kann, müssen sämtliche bisher durchgeführten Änderungen der Transaktion wieder auf den Startzustand zurückgesetzt werden. Parallel hierzu laufende Transaktionen dürfen dabei nicht gestört werden. 2. Partielles Wiederholen (partieller Rollforward): Bei einem Systemausfall müssen Änderungen, welche erfolgreich abgeschlossene Transaktionen ausgeführt haben, die nur im Systempuffer nicht aber auf dem externen Speichermedium abgelegt wurden, nachträglich im externen Speichermedium eingetragen werden. 3. Vollständiges Zurücksetzen (vollständiger Rollback): Sämtliche Änderungen aller Transaktionen, die zum Zeitpunkt eines Systemabsturzes noch aktiv waren, müssen zur Konsistenzerhaltung beim erneuten Starten des Datenbanksystems rückgängig gemacht werden. 4. Vollständiges Wiederholen (vollständiger Rollforward): Bei einem Defekt der externen Speichermedien (z.B. bei einem Head-Crash) muss der letzte konsistente Zustand wieder hergestellt werden. Hierfür muss zunächst eine Archivkopie geladen werden und anschliessend müssen sämtliche nachträglichen Änderungen von erfolgreich abgeschlossenen Transaktionen wiederholt werden. Bei einem Systemabsturz müssen in einem ersten Schritt sämtliche unerwünschten Änderungen nicht abgeschlossener Transaktionen im externen Speichermedium mittels vollständigem Rücksetzen (Rollback) beseitigt werden. Im zweiten Schritt müssen verloren gegangene Änderungen abgeschlossener Transaktionen durch ein partielles Wiederholen (Rollforward) wieder aufgenommen werden. Im Folgenden wird anhand einiger einfacher Operationen gezeigt, wie das Datenbanksystem die oben aufgezählten Forderungen erfüllen kann. Grundsätzlich ist es natürlich immer derart, dass die Sicherheit nur durch Sammeln von redundanten Informationen erhöht werden kann. Die folgenden Ausführungen zeigen daher hauptsächlich, welche redundanten Informationen zu welchem Zeitpunkt durch das Datenbanksystem abgelegt werden. Diese Redundanzen werden im Protokoll bzw. Log festgehalten. Entsprechend wird das Verfahren als Protokollierungsverfahren bzw. Logging bezeichnet. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 109 2. 1. 3. BeforeIm age Datensatz After-Im age 4. 6. tem poräre Protokolldatei System puffer Daten 5. After-Im age ArchivProtokolldatei Figur 45: Physisches Logging Im Bild werden die einzelnen Schritte gezeigt, welche das Datenbanksystem zum Lesen und Ändern eines Datenbankobjektes (z.B. Datensatz) ausführt: 1. Das gewünschte Datenobjekt wird vom externen Speichermedium in den Systempuffer kopiert. Zur Vereinfachung sei angenommen, dass das Datenbanksystem die logischen Objekte des Datenbanksystems (hier ein Datensatz) für das Logging verwendet, und dass die Segmente des Systempuffers exakt einem Datensatz entsprechen. 2. Soll eine Änderung an den Daten vorgenommen werden, so muss vorerst eine Kopie des aktuellen Zustandes vom Datensatz angelegt werden. Diese Kopie wird als Before-Image (Vor-Abbild) bezeichnet. Die Kopie wird in der temporären Protokolldatei (rascher, nichtflüchtiger Speicher) abgelegt. Mittels dieser Kopie kann später ein partieller oder vollständiger Rollback ausgeführt werden. 3. Nun können die Änderungen an den Daten ausgeführt werden. 4. Schliesst die Transaktion die Verarbeitung erfolgreich ab, muss sichergestellt werden, dass die ausgeführten Änderungen nicht verloren gehen können. Hierfür wird eine Kopie des geänderten Datensatzes im schnellen Speichermedium der temporären Protokolldatei abgelegt. Dieses Abbild des geänderten Zustandes wird als AfterImage (Danach-Abbild) bezeichnet. Diese Kopien ermöglichen das partielle Wiederholen nach einem Systemabsturz. 5. Für ein vollständiges Wiederholen ist die temporäre Protokolldatei ungeeignet, da sämtliche Änderungen seit dem Erstellen der letzten Archivkopie gespeichert werden müssen, was eine beträchtliche Menge an Daten wäre. Es wird daher ein günstigeres, dafür langsameres Speichermedium für die Archiv-Protokollldatei verwendet. Auf keinen Fall dürfen die After-Images aber auf dem selben physischen Speichermedium wie die Daten selbst liegen, ansonsten wären diese z.B. bei einem Head-Crash ebenfalls verloren. 6. Wird das Segment zu einem beliebigen späteren Zeitpunkt im Systempuffer für andere Daten benötigt, so werden die geänderten Daten auf das externe Speichermedium geschrieben und das Segment freigegeben. After-Images in der temporären Protokolldatei, welche Änderungen für dieses Segment festgehalten hatten, können jetzt gelöscht werden. Bei einem Systemabsturz stellt sich allerdings noch immer ein Problem. Da das Datenbanksystem nicht weiss, welches die erste älteste Änderung ist, die nicht vom Systempuffer auf das externe Teil 3: Internes Datenmodell 110 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Speichermedium übertragen wurde, müssen sämtliche Änderungen seit dem letzten Start des Datenbanksystems nachgeholt werden (partieller Rollforward). Dies kann lange Laufzeiten erfordern. Um dies zu verhindern werden während der Verarbeitung Checkpoints (Sicherungspunkte) gesetzt. Bei einem Checkpoint werden sämtliche Daten des Systempuffers auf das externe Speichermedium übertragen. Damit ist der Zeitpunkt, ab welchem die Änderungen nachgeholt werden müssen, bekannt. Im Extremfall könnte immer am Ende einer Transaktion ein Checkpoint gesetzt werden. Damit würde der partielle Rollforward überflüssig, denn alle Änderungen wären immer im externen Speicher abgelegt. Leider kostet auch der Checkpoint Zeit (zum Teil einige Sekunden), so dass dieser nur abgestimmt eingesetzt werden darf. 9.4.3.3. Datenschutz, Kryptographie Der Datenschutz wurde auf konzeptioneller Ebene bereits im Kapitel ‘8.2. Datenschutz im konzeptionellen Modell’ auf Seite 84 besprochen. Hier sollen Schutzmassnahmen auf physischer Ebene gezeigt werden. Dabei spielt das Betriebssystem eine wichtige Rolle. Das Betriebssystem sollte über sichere Massnahmen zur Identifikation und Authentisierung der Benutzer verfügen. Dadurch kann sichergestellt werden, dass tatsächlich nur berechtigte Benutzer das Datenbanksystem verwenden. Ausserdem sollte das Betriebssystem Möglichkeiten bieten, auch Dateien vor unerlaubten Zugriffen zu schützen. Nur so können Daten, welche z.B. auch in Zugriffswegen und Protokolldateien liegen, effektiv vor unerwünschten Einblicken geschützt werden. Mittels Kryptographie können Daten verschlüsselt in den Dateien abgelegt und bei Bedarf auch verschlüsselt über die Leitungen verschickt werden. Verschlüsselte Daten können nur mit grösstem Aufwand entschlüsselt werden. Verschlüsselte Daten bieten daher einen guten Schutz, auch wenn der Zugriff versehentlich erfolgte. Zum vollständigen Schutz müssen, wie Eingangs bereits erwähnt, natürlich auch alle redundanten Informationen verschlüsselt werden. Damit müssen bei Schlüsseländerungen die alten Schlüssel aufbewahrt werden, da ansonsten z.B. eine alte Archivkopie nicht mehr entschlüsselt werden kann. 9.4.4. Cursor-Verwalter Das durch den Cursor-Verwalter realisierte Currency-Konzept ermöglicht die satzorientierte Verarbeitung der Datensätze. Die nächsthöhere Schicht realisiert zwar die mengenorientierte Verarbeitung, dennoch ist es in Programmen häufig trotzdem notwendig, die Daten Satz für Satz zu lesen und zu verarbeiten. So stellt z.B. auch die mengenorientierte Sprache SQL das CurrencyKonzept zur Verfügung (SQL-Befehl: ‘DECLARE CURSOR’). Mittels Cursor (häufig auch Datensatzzeiger genannt) wird die aktuelle Position in einer Menge von Datensätzen festgehalten. Diese Cursor können vom Datenbanksystem implizit erstellt werden oder müssen explizit durch den Anwender definiert werden. Weitere Operationen erlauben den Programmen, den Cursor innerhalb der Menge auf jeden beliebigen Datensatz zu setzen und diesen gezielt zu verarbeiten. Typische Operationen sind ‘springe auf den nächsten / vorhergehenden Datensatz’ und ‘gehe auf den ersten / letzten Datensatz’. DECLARE Cursor_Aufträge_Kunde CURSOR FOR SELECT Auftrags_Nr, Auftraggeber_Nr, Auftrags_Datum FROM Aufträge WHERE Aufträge.Auftraggeber_Nr = Kunden.Kunden_Nr Figur 46: Explizite Cursordefinition in SQL 9.5. Entitätsmengenverwaltung Während mit der satzorientierten Schnittstelle eine satzorientierte Verarbeitung ermöglich wird, wird mittels der Entitätsmengenverwaltung (auch zugriffspfadunabhängiges Datenmodell geTeil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 111 nannt) die mengenorientierte Schnittstelle realisiert. Anfragen und Änderungsoperationen können dann auf ganze Mengen von Daten ausgeführt werden (z.B. Zeige die Angestellten in Zürich). Die Entitätsmengenverwaltung übersetzt hierfür die mengenorientierten Anfragen in satzorientierte Anfragen. 9.5.1. Zugriffspfadoptimierer, Optimizer Mittels Optimierern möchte man verhindern, dass der Benutzer bzw. die Programme entscheiden müssen, welche Zugriffspfade für den Zugriff auf die Daten verwendet werden sollen. Damit erhöht man die Unabhängigkeit der Programme vom internen Modell (physische Datenunabhängigkeit). So soll z.B. beim Suchen der Angestellten in Zürich das Datenbanksystem selbständig überprüfen, ob ein geeigneter Zugriffsweg für das Attribut Arbeitsort besteht. Bei Bedarf können ohne Änderungen in den Programmen neue Zugriffspfade erzeugt, bzw. bestehende Zugriffspfade gelöscht werden. Damit hat man ein geeignetes Mittel, um die Performance des Datenbanksystems zu steuern. Bei komplexeren Anfragen ist es meist schwierig zu entscheiden, welches die optimale Kombination von Zugriffspfaden ist. Sollen z.B. alle weiblichen Angestellten in Zürich gesucht werden, kann nicht mehr a priori gesagt werden, welcher Zugriffsweg zur Bestimmung des ersten Zugriffspfades Vorrang hat. Sind z.B. nur 2% der Angestellten in Zürich, aber insgesamt 60% der Angestellten weiblich, dann ist es sicher besser den Ort zur ersten Selektion zu verwenden. Damit zeigt sich bereits, dass zur Wahl der besten Zugriffsstrategie statistische Informationen benötigt werden. Für die Realisierung eines effizienten Optimizers (Optimierer) gilt es demnach, den Aufwand für die Gewinnung der statistischen Informationen dem hierdurch gewonnenen Minderaufwand beim Suchen der eigentlichen Daten gegenüberzustellen. Fehlentscheide durch den Optimizer können drastische Auswirkungen auf das Laufzeitverhalten der Programme haben (Faktor 1000 und mehr). Daher bieten Sprachen gängiger Datenbanksysteme meist ergänzende Möglichkeiten, den Optimizer bei der Wahl des Zugriffspfades zu steuern. Bekannte Schwächen von Optimizern werden vom Konkurrenten häufig für den Vergleich unterschiedlicher Datenbanksysteme verwendet. Das eigene Datenbanksystem zeigt dann ein unvergleichlich besseres Leistungsverhalten. Es ist daher entscheidend, dass Laufzeitverhalten des Datenbanksystems in der eigenen Umgebung mit den eigenen Daten zu testen. 9.5.2. Datenbanksprachen Datenbanksprachen müssen eine Reihe unterschiedlichster Bedürfnisse erfüllen. Je nach Benutzergruppe werden differenzierte Anforderungen gestellt: Anwendungsprogrammierer: Zum Erstellen von Programmen sind primär Manipulationssprachen (Englisch: Data Manipulation Language, DML) erwünscht, die es erlauben, die Verarbeitung der Daten zielgerichtet zu definieren, und eine effiziente Verarbeitung durch die Programme gewährleisten. Datenbankadministrator (DBA): Der Datenbankadministrator möchte die Struktur der Daten (auf allen Ebenen) möglichst realitätsnahe festhalten, hierfür nutzt er die Datendefinitionssprache (Englisch: Data Definition Language, DDL). Zusätzlich muss er die Konsistenzregeln zum Datenmodell festhalten können. Endbenutzer: Der Endbenutzer möchte seine Operationen auf den Daten möglichst einfach gestalten können. Die Ausführungseffizienz ist für ihn in der Regel nur von zweitrangigem Interesse. Zusätzlich werden an eine Datenbanksprache weitere Anforderungen gestellt, welche unabhängig von der jeweiligen Benutzergruppe sind. So sollte die Sprache z.B. möglichst homogen für alle drei Benutzergruppen sein. Sie sollte den einzelnen Benutzern die Möglichkeit bieten, mit zunehmender Kenntnis der Sprache einen erweiterten, komplexeren Sprachumfang zu nutzen. Teil 3: Internes Datenmodell 112 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Sie muss sämtliche notwendigen Operationen zur Verarbeitung und Definition der Daten aufweisen. Bei all diesen Anforderungen ist es schwer, eine kompakte und dennoch allen Anforderungen gerechtwerdende Sprache zu definieren. Hierfür wurde eine Reihe von unterschiedlichen Ansätzen zur Definition einer derartigen Sprache entwickelt: Tupelorientierte gegenüber mengenorientierten Sprachen: Mengenorientierte Sprachen (auch als relationale Sprachen bezeichnet) verwenden als Operanden immer Mengen von Datensätzen, d.h. Entitätsmengen. Auch die Resultate dieser Operationen sind wieder Entitätsmengen. Diese Sprachen werden häufig auch als Sprachen der 4. Generation bezeichnet. Ein typisches Beispiel hierfür ist SQL mit dem mengenorientierten SELECT-Befehl. Tupelorientierte Sprachen (Sprachen der 3. Generation) verwenden in ihren Operationen hingegen immer einzelne Datensätze. So finden sich darin typischerweise Anweisungen, welche das Suchen von einzelnen Datensätzen erlauben (z.B. Seek oder Find), die das sequentielle Verarbeiten einer Folge von Datensätzen ermöglichen (z.B. Next oder Skip). Eingebettete gegenüber selbständigen Sprachen: Selbständige Sprachen verfügen über sämtliche Operationen, die zum Erstellen vollständiger Anwendungen notwendig sind. Eingebettete Sprachen bieten hingegen nur jene Operationen an, die zur Anwendung der Datenbank unmittelbar notwendig sind. Die Programme werden dann in einer anderen Gast-Sprache (English: Host-Sprache, z.B. COBOL) erstellt, die DML-Befehle aber in der Datenbanksprache (z.B. mittels SQL) definiert. Bei eingebetteten Sprachen ist häufig zwischen Gast- und Datenbanksprache ein konzeptioneller Bruch festzustellen, viele erwünschte Eigenschaften gehen dabei verloren. Eine moderne Datenbank-Sprache erhält dabei unter Umständen das Korsett einer 'veralteten' Gast-Sprache. Für relationale Systeme wurden durch E.F. Codd [Codd 72] die grundlegenden relationalen Operationen definiert. Für diese Operationen wurde gezeigt, dass sämtliche denkbaren und erwünschten Abfragen ausgeführt werden können. Datenbanksprachen, mit denen alle relationalen Operationen ebenfalls definiert werden können, werden daher als relational vollständig bezeichnet. So ist z.B. die Datenbanksprache SQL relational vollständig. Die Definition der relationalen Operationen im relationalen System lehnt sich an der Relationenalgebra an und ist damit stark mathematisch geprägt. Auf eine detaillierte Ausführung wird an dieser Stelle daher verzichtet. Dagegen soll hier eine kurze Einführung in die Datenbanksprache SQL (Structured Query Language, zu Deutsch: Strukturierte Abfrage-Sprache) gegeben werden, da diese in der Praxis eine grosse Bedeutung gewonnen hat. Für vertiefte Ausführungen sei auf [Date 97] verwiesen. SQL enthält Befehle zur Datendefinition, zur Datenmanipulation und eine Reihe weiterer notwendiger Befehle. Im Folgenden werden typische Befehle aufgezeigt (zum Teil nicht ANSI-StandardSQL). Zur Datendefinition wird der Create-Table-Befehl eingesetzt. Im folgenden wird eine Entitätsmenge für Aufträge mit entsprechenden Attributen, Datentypen und Integritätsregeln erzeugt: CREATE TABLE Aufträge ( Auftrags_Nr Auftraggeber_Nr Autrags_Datum Bezeichnung DECIMAL(10) PRIMARY KEY, DECIMAL (10) NOT NULL REFERENCES Auftraggeber, DECIMAL(8), CHARACTER(20) ) Figur 47: Definition der Entitätsmenge Aufträge mittels SQL Bei der Erzeugung der Entitätsmenge Aufträge wird definiert, dass die Attribute Auftrags_Nr und Auftraggeber keine NULL-Werte enthalten dürfen, dass das Attribut Auftrags_Nr eindeutig sein muss, da dieses als Entitätsschlüssel (Primärschlüssel) definiert wurde. Das Attribut Auftraggeber Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 113 wurde als Fremdschlüssel definiert und referenziert die Entitätsmenge der Auftraggeber. Damit lässt sich die gesamte Datenstruktur festhalten. Müssen zusätzlich Konsistenzbedingungen zum Datenmodell sichergestellt werden, lassen sich diese ebenfalls in SQL festhalten, siehe ‘8.1. Datenkonsistenz im konzeptionellen Modell’ auf Seite 83. Auch für den Datenschutz stellt SQL Befehle zur Definition der Zugriffsrechte zur Verfügung, siehe ‘8.2. Datenschutz im konzeptionellen Modell’ auf Seite 84. Zur Manipulation von Daten werden vier Grundbefehle verwendet: INSERT (Einfügen), DELETE (Löschen), UPDATE (Manipulation) und SELECT (Auswahl). Alle vier Befehle sind grundsätzlich mengenorientiert. Die Syntax ist ebenfalls sehr ähnlich. An dieser Stelle soll nur ein Beispiel für den SELECT-Befehl gegeben werden: SELECT Auftrags_Nr, Auftraggeber_Nr, Auftrags_Datum FROM Aufträge WHERE Auftrags_Nr > 1000 Figur 48: Bilden einer Entitätsmenge mit Auftragsnummern grösser als 1'000 Direkt hinter dem SELECT-Befehl werden die Attribute aufgezählt, welche in der durch den Befehl gebildeten Entitätsmenge enthalten sein sollen. Die Resultatemenge enthält damit die drei Attribute Auftrags_Nr, Auftraggeber_Nr und Auftrags_Datum. Hinter dem FROM-Schlüsselwort wird die Entitätsmenge angegeben, aus welcher die Entitäten selektiert werden sollen, in unserem Fall aus der Entitätsmenge Aufträge. Im letzten Teil des Befehls, im WHERE-Teil, wird die Bedingung formuliert, mittels welcher die Datensätze aus der Ursprungsentitätsmenge ausgewählt werden. Da die SQL-Befehle in Programmen aber oft in eine Gast-Sprache eingebettet werden, ist eine mengenorientierte Verarbeitung nicht immer möglich. Um die satzweise Verarbeitung der Daten zu ermöglichen, wird daher ein Cursor eingeführt, mittels welchem Satz für Satz dem Programm zugänglich gemacht wird. Siehe auch ‘9.4.4. Cursor-Verwalter ’ auf Seite 110. Teil 3: Internes Datenmodell 114 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 9.6. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 181. 9.6.1. Fragetyp A, Einfachauswahl 1. Hash ist... 2. den Vorgang, eine nicht mehr lesbare Datenbank wieder herzustellen. die Rücksetzung fehlerhafter Transaktionen. den Vorgang, eine inkonsistente Datenbank wieder in einen konsistenten Zustand zu überführen. die Wiederholung abgebrochener Transaktionen. die Auflösung von Deadlocks. A) B) C) D) E) Physische Speicherung von Benutzerdaten Element der konzeptionellen Modellierung Redundante Information Teil des Loggings Hilfsstruktur um auf Daten zuzugreifen A) B) C) D) E) Je kleiner der Sperrbereich umso weniger parallele Verarbeitung Je kleiner der Sperrbereich umso höher der Verwaltungsaufwand Je kleiner der Sperrbereich umso mehr Deadlocksituationen Je kleiner der Sperrbereich umso mehr Logging Je kleiner der Sperrbereich umso weniger Locking Es gibt Datenbanksysteme, in welchen kein Shared-Lock existiert, sondern nur ein ExclusiveLock für Änderungs-Operationen. In diesen Datenbanksystemen... 7. A) B) C) D) E) Welche Aussage trifft für den Sperrbereich beim Locking zu? 6. bei einem Systemabsturz fehlerhafte Daten zurückzusetzen. bei einem Systemabsturz die Logdatei wieder herzustellen. bei einem Systemabsturz die verlorenen Daten des Puffers zu retten. bei einem Systemabsturz den Rollforward zu gewährleisten. Änderungen der Metadaten zu protokollieren. Welche Beschreibung trifft den Begriff Zugriffspfad am besten? 5. A) B) C) D) E) Der Begriff Recovery umschreibt... 4. eine Netzwerk-Datenbankstruktur. eine Zugriffsorganisation, die nur Fremdschlüssel zulässt. eine Datenbankstruktur, die nur sequentielles Lesen effizient unterstützt. eine Zugriffsorganisation, bei der die Blockadresse direkt aus dem Schlüsselwert bestimmt wird. eine Tabelle für die indexsequentielle Speichertechnik. After-Images werden verwendet, um... 3. A) B) C) D) E) A) B) C) D) E) ist die Datenkonsistenz immer sichergestellt. spielt die Datenkonsistenz keine Rolle. wird die Datenkonsistenz nachträglich sichergestellt. kann die Datenkonsistenz nur durch besondere Massnahmen sichergestellt werden. kann die Datenkonsistenz auch durch besondere Massnahmen nicht garantiert werden. Welche Aussage trifft für Transaktion am besten zu? Eine Transaktion... A) B) C) D) E) kann zurückgesetzt werden. wird protokolliert. ist eine atomare Operation auf einer konsistenten Datenbasis. kann vorübergehend zu inkonsistenten Datenbeständen führen. sollte bei jeder Datenmanipulation gemacht werden. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 115 9.6.2. Fragetyp B, Zuordnung Welche Begriffe lassen sich einander zuordnen? A) Checkpoint B) Rollback C) Generationsprinzip D) Reaktionsregel E) Sperrprotokoll 1. Konsistenzbedingung A) 2. D) E) B) C) D) E) B) C) D) E) Synchronisation paralleler Transaktionen A) 5. C) Recovery A) 4. Log-Unterteilung A) 3. B) B) C) D) E) B) C) D) E) E) Archivkopie A) Welche Begriffe, Aussagen lassen sich einander zuordnen? A) Pessimistisches Sperrverfahren B) Optimistisches Sperrverfahren C) Zeitstempelverfahren D) Recovery E) Logging 6. Deadlocksituationen treten auf beim... A) 7. C) D) B) C) D) E) D) E) D) E) D) E) Die Kontrolle erfolgt dezentral im... A) 9. B) Eignet sich auch für Datensysteme mit vielen gleichzeitig laufenden, konkurrenzierenden Transaktionen. A) 8. B) C) Legt die Informationen beim Datensatz ab: A) B) C) 10. Verwaltet die Informationen zentral: A) B) C) Für welchen Begriff gilt der unten beschriebene Sachverhalt? A) Checkpoints B) After Image C) Before Image D) Protokolldatei E) Transaktion 11. Damit werden redundante Informationen über Änderungen gezielt gesammelt. A) B) C) D) E) D) E) 12. Dient der Minimierung des Recoveryaufwands. A) B) C) Teil 3: Internes Datenmodell 116 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 13. Fasst die Datenbankoperationen in logische Einheiten zusammen. A) B) C) D) E) E) 14. Beeinflusst die Verarbeitung des Systempufferverwalters. A) B) C) D) 15. Steuert die Vergabe und Freigabe der Sperren im pessimistischen Verfahren. A) B) C) D) E) Für welchen Begriff gilt der unten beschriebene Sachverhalt? A) Entitätsmengenverwaltung B) Entitätenverwaltung C) Record- und Zugriffspfadverwaltung D) Systempufferverwaltung E) Externspeicherverwaltung 16. Überführt mengenorientierte Anforderungen relationaler Datenbanksysteme in satzorientierte Operationen. A) B) C) D) E) 17. Benötigt einen Optimizer, um die Datenbankzugriffe zu verbessern. A) B) C) D) E) D) E) D) E) D) E) 18. Wird auch Satz-Verwalter genannt. A) B) C) 19. Verwaltet den Puffer im Speicher. A) B) C) 20. Fügt neue Datensätze in den B-Baum ein. A) B) C) 9.6.3. Fragetyp E, kausale Verknüpfung 1. Direktlesen ist bei Hash-Organisation sehr effizient, weil Kollisionen beim Einfügen bei der Hash-Organisation durch Überlaufbereiche aufgelöst werden können. A) 2. B) +/+ C) +/- D) -/+ E) -/- +weil+ B) +/+ C) +/- D) -/+ E) -/- Um eine Datenbank bei einem Systemabsturz wieder in einen konsistenten Zustand zu überführen, genügt es nicht, nur After-Images auf der Archivprotokolldatei zu verzeichnen, weil die Archivprotokolldatei bei einem Systemabsturz ev. auch nicht alle abgeschlossenen Transaktionen verzeichnet hat. A) 4. Für die Zugriffspfade sind baumstrukturierte Organisationsformen von grosser Bedeutung, weil baumstrukturierte Organisationsformen für alle möglichen Datenbankoperationen optimal sind. A) 3. +weil+ +weil+ B) +/+ C) +/- D) -/+ E) -/- Synchronisationsverfahren sollten nicht durch den Anwendungsprogrammierer selbst programmiert werden, weil die Programmierung von Synchronisationsverfahren auf der Ebene der Anwendungsprogramme aufwendig und ineffizient ist. A) +weil+ B) +/+ Teil 3: Internes Datenmodell C) +/- D) -/+ E) -/- 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 5. Für mengenorientierte Befehle sollte das DBMS einen Optimizer (optimiert Benutzerabfragen) besitzen, weil der Benutzer bei mengenorientierten Befehlen nicht angibt, auf welche Art und Weise die Befehle ausgeführt werden sollen. A) 6. 117 +weil+ B) +/+ C) +/- D) -/+ E) -/- Transaktionen müssen vollständig abgearbeitet werden, weil Konsistenzbedingungen zu Datenverlust führen. A) +weil+ B) +/+ C) +/- D) -/+ E) -/- 9.6.4. Fragetyp K, mehrfache Entscheidung 1. Ein Data Dictionary-System ist... + 2. Deadlocksituationen treten nur beim pessimistischen Synchronisationsverfahren auf. Der Deadlock lässt sich nur durch Zurücksetzen (Rollback) aller beteiligten Transaktionen wieder auflösen. Bei Systemen ohne Shared-Lock aber mit Exclusive-Lock können keine Deadlocksituationen auftreten. Bei einem Deadlock haben zwei Transaktionen Exclusive-Locks auf mindestens je zwei Datenobjekte beantragt. Folgende Aussagen treffen für das Zeitstempelverfahren zu: + 5. Eignet sich vor allem bei stark dynamischen Datenbeständen. Garantiert, dass beim Lesen der Datensatz mit einem einzigen Datenbankzugriff gelesen wird. Die Berechnung der Speicheradresse erfolgt direkt aus dem Primärschlüsselwert. Das Divisionsrestverfahren wird für Hashing häufig verwendet. Folgende Aussagen treffen für den Deadlock zu: + 4. selbst ein Datenverwaltungssystem. ein Führungsmittel. wegen der Netzwerkstruktur der Metaobjekte nur als CODASYL-Datenbank implementierbar. ein Mittel für Revision und Datenschutz. Folgende Aussagen treffen für die gestreute Organisation (Hash) zu: + 3. Jedes Objekt erhält eine Lese- und eine Schreibmarke. Die Transaktion erhält eine Transaktionsmarke mit der Startzeit. Die Transaktion darf nur Daten lesen, deren Lesemarke einen späteren Zeitpunkt enthält als die Transaktionsmarke. Das Verfahren eignet sich für verteilte Datenbanken. Folgende Aussagen treffen für den Sperrmodus Shared-Lock zu: + Er erlaubt anderen Transaktionen nur das Lesen. Er kann unter gewissen Umständen in einen Exclusiv-Lock umgewandelt werden. Wird beim strikt zweiphasigen Sperren erst am Ende der Transaktion aufgelöst. Sperrt immer nur physische Objekte. Teil 3: Internes Datenmodell 118 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 9.7. Bearbeitungsaufgaben Die Lösungen zu den folgenden Bearbeitungsaufgaben finden Sie auf Seite 185. 9.7.1. Zugriffspfade Unten finden Sie die Daten für die nachfolgenden drei Aufgaben: Kunden Daten- Id.-Nr Name satz-Nr 1 2 Meier 2 23 Müller 3 166 Sieber 4 64 Mori 5 132 Müller 6 101 Keller 7 37 Wurster Ort Zürich Russikon Waldkirch Greifensee Winterthur Zürich Zürich Tabellen 25: Übungsdaten 9.7.1.1. 1. Aufgabe: Invertierte Liste Schwierigkeitsgrad: Trockenübung Zeitaufwand: 5 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Erstellen Sie eine invertierte Liste, sortiert nach Namen für die obigen Beispieldaten. Was passiert, falls Sie nachträglich den Datensatz ‘42; Kübler; Thalwil’ einfügen müssen? Index Anz. Zeiger Zeigerlisten mit Satznr. Figur 49: Index und Zeigerlisten für die invertierte Liste Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 119 9.7.1.2. 2. Aufgabe: HASH Schwierigkeitsgrad: Trockenübung Zeitaufwand: 10 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Es wird zur Berechnung der Adresse das Divisionsrestverfahren auf die Id-Nr (die Datensatznummer wird hier nicht verwendet) angewandt, der Divisionsrest ergibt direkt die Seitenadresse. Zur Division wird die Zahl 7 verwendet. Pro Segment (Seiten) können maximal 2 Datensätze gespeichert werden. Beim Überlauf der Seite wird die Seite mit den zusätzlichen Daten via Adresszeiger (Pointer, d.h. Seitenadresse) referenziert (siehe unten). Segmentadresse Daten Adresszeiger Segmentadresse 0 7 1 8 2 2; Meier; Zürich 9 3 Überlaufbereich Adresszeiger 10 4 5 6 Tabelle 26: Segmente für Hashing 9.7.1.3. 3. Aufgabe: B-Baum Schwierigkeitsgrad: Schwimmer Zeitaufwand: 20 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Die Daten sollen in der oben gezeigten Reihenfolge (siehe ‘9.7.1. Zugriffspfade’ auf Seite 118), in einen B-Baum eingefügt werden. Dabei soll jeder Knoten zwei Einträge inkl. Daten aufweisen. Der Baum wird nach der Id.-Nr sortiert. Teil 3: Internes Datenmodell 120 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 9.7.2. Metadatenbank Schwierigkeitsgrad: Nichtschwimmer (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Zeitaufwand: 40 Minuten Entwickeln Sie ein konzeptionelles Datenmodell (Entitätsmengen, sowie deren Attribute) für ein Data Dictionary, welches geeignet ist, die Informationen der konzeptionellen Ebene aufzunehmen. Entitätsmengen bzw. Teil des DDs (Data Dictionary) sind zum Beispiel: Entitätsmengen Attribute Views Entitäts-, Sortier-, Fremdschlüssel Datentypen (Domänen) Programme Zugriffsrechte Applikationen Konsistenzbedingungen etc. Übertragen Sie das konkrete Beispiel von unten in Ihre Metadatenbank und überprüfen Sie dabei die Vollständigkeit ihres Datenmodells: Beschreibung der Applikation Auftrag: In der Applikation 'Auftragsabwicklung' werden drei Relationen verwendet, dies sind die 'Kunden', die 'Aufträge' und 'Artikel'. Die Datenstruktur sieht wie folgt aus (Fremdschlüssel beachten!): Kunden Kund_Id Name Strasse PLZ Ort N8 A40 A40 N5 A40 Artikel Art_Id Bez Preis N8 A40 N11.4 Aufträge Kund_Id Art_Id Menge Datum Preis N8 N8 N8 D N11.4 Für die Relation 'Kunden' ist eine View 'Kunden', für die Relation 'Artikel' eine View 'Artikel' definiert, die sämtliche Attribute umfasst. Des weiteren wurde die View 'Auftrag' definiert, die folgende Attribute enthält. Aufträge.Kund_Id Kunden.Name Aufträge.Art_Id Artikel.Bezeichnung Artikel.Preis Aufträge.Menge Aufträge.Datum Aufträge.Preis Es wurde eine Konsistenzbedingung (Aufträge.Preis = Artikel.Preis * Aufträge.Menge) definiert, die sicherstellen soll, dass der Preis (redundante Information) in der Relation 'Aufträge' immer aktuell ist. Der Benutzer 'MARE' hat lediglich Zugriff auf die View 'Kunden', der Benutzer 'BRUNNER' hat Zugriff auf alle drei Views. Für die Applikation 'Auftragsabwicklung' wurden drei Programme entwickelt. Das Programm 'Kun_Mut' verwendet die View 'Kunden', das Programm 'Art_Mut' die View 'Artikel' und das Programm 'Auftr_Mut' alle drei Views. Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 121 9.7.3. Deadlock im pessimistischen Verfahren Schwierigkeitsgrad: Planschbecken Zeitaufwand: 10 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Die folgende Liste zeigt den hypothetischen Ablaufplan (Folge von Anweisungen) von drei Transaktionen. Dabei bewirkt die Anweisung 'FETCH a' eine Lesesperre für das Datenelement a, die Anweisung 'UPDATE a' eine Schreibsperre für das Datenelement a. Kann der Ablaufplan so durchgeführt werden oder kommt es zu einem Deadlock? Transaktionen: Transaktion 1 Transaktion 2 Transaktion 3 Fet1: Fet2: Fet3: Ope1: Fet4: Fet5: Ope2: Upd2: Ope3: Upd3: Fet6: Ope4: Fet7: Ope5: Fet8: Ope6: Upd1: FETCH a INTO var1 FETCH b INTO var2 FETCH c INTO var3 var4 := var1 + var2 + var3 UPDATE a FROM var4 FETCH a INTO var5 FETCH b INTO var6 var5 := var5 * var6 UPDATE a FROM var5 var6 := var6 * 1.1 UPDATE b FROM var6 FETCH e INTO var7 DISPLAY var7 FETCH f INTO var8 DISPLAY var8 FETCH a INTO var9 DISPLAY var9 Tabelle 27: Drei Transaktionen Ablaufplan Fet1 Fet4 Fet6 Fet2 Ope4 Fet5 Ope2 Fet7 Ope5 Fet3 Ope1 Fet8 Ope6 Upe1 Upd2 Ope3 Upd3 Tabelle 28: Ablaufplan dreier Transaktionen Teil 3: Internes Datenmodell 122 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 9.7.4. Locking im pessimistischen Verfahren Schwierigkeitsgrad: Nichtschwimmer (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Zeitaufwand: 25 Minuten Unten ist der Aufbau von drei Transaktionen gezeigt. Die Transaktionen sollen in einem DBMS mit pessimistischem Sperrverfahren (Locking, strikt zweiphasig) vollständig abgearbeitet werden. Die Anweisung 'FETCH a' bewirkt dabei eine Lesesperre für das Datenelement a, die Anweisung 'UPDATE a' eine Schreibsperre für das Datenelement a (wird erst zugelassen, wenn kein einziger Eintrag für eine Lesesperre für das Datenelement a vorhanden ist). Jede der drei Transaktionen darf jeweils eine einzelne Operation (0pe1, Ope2, ...) (Fetch, Update oder Berechnung) durchführen, danach wird die Kontrolle an die nächste Transaktion abgegeben (Transaktion 1 » Transaktion 2 » Transaktion 3 » Transaktion 1 » Transaktion 2 usw.). Transaktion 1 Transaktion 2 Transaktion 3 Ope1: Ope2: Ope3: Ope1: Ope2: Ope3: Ope4: Ope5: Ope6: Ope1: Ope2: Ope3: Ope4: Ope5: Ope6: Fetch a var1 := a * 2 Update a FROM var1 Fetch a Fetch b var3 := a - 1 var4 := b - 1 Update a FROM var3 Update b FROM var4 Fetch b Fetch a var5 := a - 2 Update a FROM var5 var5 := b- 2 Update b FROM var5 Tabelle 29: Definition der Operationen der Transaktionen Kann eine Transaktion keine Operation ausführen, weil sie auf ein Datenelement wartet, so übergibt sie die Kontrolle direkt an die nächst folgende Transaktion. Tritt ein Deadlock auf, erkennt dies das DBMS sofort und setzt diejenige Transaktion, die gerade aktiv ist, noch in der selben Anweisung zurück (Rollback) und übergibt anschliessend die Kontrolle an die nächstfolgende Transaktion. Das Programm ist derart gestaltet, dass nach einem Deadlock und anschliessendem Rollback erneut versucht wird, die Transaktion von vorne auszuführen. Erst nach drei erfolglosen Versuchen, die gesamte Transaktion auszuführen (beim dritten Rollback) wird die betroffene Transaktion durch das Anwendungsprogramm endgültig abgebrochen und eine Fehlermeldung ausgegeben. Unten sehen Sie, wie die ersten Schritte ausgeführt werden. Wie sieht der gesamte Ablaufplan aus, wenn alle drei Transaktionen vollständig abgearbeitet werden? Welches sind die Werte von a und b nach Ablauf aller Transaktionen (Initialwerte a=1; b=2)? Transaktion 1 Transaktion 2 Transaktion 3 Ope1: BOT, Shared-Lock: a (ok) Fetch a (Wert von a ist 1) Ope1: BOT, Shared-Lock: a (ok) Fetch a (Wert von a ist 1) Ope1: BOT, Shared-Lock: b (ok) Fetch b (Wert von b ist 2) Ope2: var1 := a * 2 (Wert von a ist 2) Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 123 Teil 3: Internes Datenmodell 124 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems Tabelle 30: Ablaufplan der Operationen der Transaktionen 9.7.5. Ablaufplan Schwierigkeitsgrad: Schwimmer Zeitaufwand: 30 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Wir definieren drei Transaktionen mit folgenden Operationen: TA1: Addiere 1 zu a. TA2: Verdopple den Wert von a. TA3: Zeige den Wert von a an und setzte den Wert von a anschliessend auf 1. Teilaufgaben: a: Nehmen wir an, die Transaktionen werden in einer belieben Reihenfolge gestartet. Wie viele mögliche korrekte Resultate gibt es, falls a zu Beginn mit 0 initialisiert wird? (6) b: Die Tabelle unten zeigt die interne Struktur der Transaktionen: Transaktionen: Transaktion TA1 Transaktion TA2 Transaktion TA3 Fet1: Fet2: Fet3: Upd1: FETCH a INTO t1 t1 := t1 + 1 UPDATE a FROM t1 Upd2: FETCH a INTO t2 t2 := t2 * 2 UPDATE a FROM t2 Upd3: FETCH a INTO t3 DISPLAY t3 UPDATE a FROM 1 Tabelle 31: Operationen der Transaktionen Wie viele Ablaufpläne sind möglich, falls die Transaktionen ohne jegliches Locking abgearbeitet werden? (90 Stück, wieso?) c: Wird a wieder mit 0 initialisiert, gibt es dann einen Ablaufplan (ohne Locking!), der ein korrektes Resultat produziert, der aber nicht konsistenzerhaltend ist? (ja, wieso?) d: Gibt es einen konsistenzerhaltenden Ablaufplan, der mit Locking nicht erlaubt ist? (ja, welchen?) Teil 3: Internes Datenmodell 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 125 9.7.6. Transaktionslogik und Programme Schwierigkeitsgrad: Planschbecken Zeitaufwand: 10 Minuten (Trockenübung, Planschbecken, Nichtschwimmer, Schwimmer) Betrachten Sie die beiden folgenden Programm-Beispiele und überlegen Sie sich, ob die Lösung gut ist oder ob diese besser programmiert werden könnte. * Dieses Programm rechnet jede Buchungen in Fremdwährung des gestrigen * Tages in Landeswährung um. Dieses Programm wird am Tagesende ausgeführt. DECLARE tageskurs BEGIN TRANSACTION READ ALL Buchung FOR Buchung.datum = YESTERDAY IF Buchung.währ_bez <> 'CHF' THEN FETCH tageskurs FROM tag_kurs TABLE Kurse WHERE Kurse.währ_bez = Buchung.währ_bez AND Kurse.datum = Buchung.datum; UPDATE haben_chf TABLE Buchung WITH haben_fremdwährung * tageskurs; UPDATE soll_chf TABLE Buchung WITH soll_fremdwährung * tageskurs; ENDIF; ENDREAD; END TRANSACTION; Figur 50: Programm Umrechnung * Dieses Programm liest die Währung, zwei Konti mit identischer Währung und * einen Betrag ein und überträgt den Betrag vom ersten zum zweiten Konto. DECLARE währung,konto_1,konto_2,bu_betrag BEGIN TRANSACTION INPUT währung READ FIRST Währung FOR Währung.währ_bez = währung IF Währung.währ_bez = währung INPUT bu_betrag,konto_1; READ FIRST Konto FOR Konto.konto_nr = konto_1; IF Konto.konto_nr <> konto_1 OR Konto.betrag - bu_betrag < Konto.min_betrag Konto.währ_bez <> währung THEN ERROR 'Buchungen nicht ausgeführt'; ROLLBACK; ELSE UPDATE betrag TABLE Konto WITH Konto.betrag ENDIF; INPUT konto_2; READ FIRST Konto FOR Konto.konto_nr = konto_2; IF Konto.konto_nr <> konto_2 OR Konto.betrag + bu_betrag < Konto.min_betrag Konto.währ_bez <> währung THEN ERROR 'Buchungen nicht ausgeführt'; ROLLBACK; ELSE UPDATE betrag TABLE Konto WITH Konto.betrag ENDIF; ELSE ERROR 'Währung nicht gefunden'; ROLLBACK; ENDIF; END TRANSACTION; OR - bu_betrag; OR + bu_betrag; Figur 51: Programm Kontoübertrag mit Fremdwährung Teil 3: Internes Datenmodell 126 10. Internes Datenmodell 10. Internes Datenmodell An dieser Stelle sind nun alle Kenntnisse vorhanden, um das interne Datenmodell zu erstellen. In aller Regel wird dabei, ausgehend vom konzeptionellen Modell, das interne Modell für ein bestimmtes Datenbanksystem abgeleitet. Zielsetzung ist hierbei, dass interne Modell möglichst wenig zu ändern und so nahe wie möglich am konzeptionellen Modell zu bleiben. Bestehen keine Performance-Probleme, so sollte das interne Modell, wenn möglich, 1:1 übernommen werden. Beim Herleiten des internen Modells müssen folgende mögliche bzw. notwendige Aktivitäten und. Änderungen untersucht werden: Herleitung des internen Datenmodells für vorgegebenes Datenbanksystem: Es muss für das festgelegte Datenbanksystem untersucht werden, ob das konzeptionelle Modell 1:1 in das interne Modell umgesetzt werden kann. Allenfalls muss das interne Modell den Möglichkeiten des Datenbanksystems angepasst werden. Bestimmen der Zugriffspfade: Damit ein Datenbanksystem mit grösseren Datenmengen sinnvolle Antwortzeiten haben kann, müssen für die häufigsten Zugriffe zwingend Zugriffspfade erstellt werden. Allerdings kann die Zahl der Zugriffspfade nicht beliebig erhöht werden. Jeder zusätzliche Zugriffspfad bedeutet einen erhöhten Verwaltungsaufwand und reduziert damit die Gesamt-Performance. Physische Organisation: Festlegen der physischen Organisation der Daten, z.B. Komprimierung. Denormalisierung zur Performance-Verbesserung: Bestehen Performance-Probleme, so muss das interne Modell entsprechend überarbeitet werden. Hierbei werden bewusst Normalisierungsregeln verletzt, das Datenmodell wird wieder denormalisiert. Damit ist auch schon gesagt, dass zwar das konzeptionelle Modell voll normalisiert sein muss, das interne Modell aber durchaus Normalisierungsregeln verletzen darf. In der Praxis ist die Aussage ‘Unsere Datenbank ist voll normalisiert’ nicht nur meist falsch, sondern die Aussage muss zudem auf deren Zweckmässigkeit überprüft werden. Berücksichtigung von Betriebssystem und Hardware: In einem letzten Schritt kann das interne Modell den Bedürfnissen und Gegebenheiten des Betriebssystems und der Hardware angepasst werden. Details hierzu können hier nicht gegeben werden, sondern müssen im konkreten Fall betrachtet werden. Dabei müssen z.B. folgende widersprüchlichen Ziele bei der Herleitung des internen Modells gegeneinander abgewogen werden: Effiziente Ausführungsgeschwindigkeit Minimaler Speicherbedarf der Daten und Hilfsstrukturen Möglichst wenig Redundanzen 10.1. Herleitung des internen Datenmodells für ein vorgegebenes Datenbanksystem In diesem Kapitel wird beschrieben, wie ausgehend vom konzeptionellen Modell, das interne Modell für ein gegebenes Datenbanksystem hergeleitet wird. Dabei sollen ausschliesslich relationale Datenbanksysteme betrachtet werden. Für die Darstellung des konzeptionellen Modells wurde das erweiterte Relationenmodell und das Entity-Relationship-Modell eingeführt. Für beide müssen die Regeln zur Erstellung des internen Modells gegeben werden. Zum Glück sind dafür bereits sämtliche Grundlagen geschaffen. Beim erweiterten Relationenmodell ist die Umsetzung denkbar einfach; alle Entitätsmengen können direkt in Relationen des Datenbanksystems umgewandelt werden. Daher ist die Modellierung mittels erweitertem Relationenmodell in der Praxis auch so beliebt. Im Entity-RelationshipModell ist die Umsetzung etwas komplizierter. Teil 3: Internes Datenmodell 10. Internes Datenmodell 127 Sämtliche Entitätsmengen werden unverändert als Relationen verwendet. Beziehungsmengen, welche mehr als eine c-, m-, oder mc-Assoziation (Rolle) aufweisen, werden ebenfalls als eigenständige Relationen im internen Modell benötigt. Die verbleibenden Beziehungsmengen weisen höchstens eine c-, m-, oder mc-Assoziation auf und haben genau eine oder mehrere 1-Assoziationen. Diese Beziehungsmengen werden im internen Modell nicht benötigt. Die Beziehungsmenge kann in eine der Entitätsmengen integriert werden, welche die 1-Assoziation aufweist. Dies daher, weil zwischen der Entitätsmenge und der Beziehungsmenge eigentlich eine 1:1-Beziehung besteht. D.h. für jeden Datensatz in der Beziehungsmenge existiert genau ein Datensatz in der Entitätsmenge. Damit liegt es nahe, aus den jeweils zusammengehörenden Datensätzen einen einzigen Datensatz zu bilden, d.h. eine einzelne Relation zu erstellen. 10.2. Bestimmen der Zugriffspfade Ideal wäre sicher, wenn für jeden zukünftig notwendigen Zugriff auf die Daten ein Zugriffspfad zur Verfügung stünde. Allerdings wäre der Verwaltungsaufwand beim Einfügen, Löschen oder Ändern von Daten dann gewaltig, ganz abgesehen von der riesigen Menge redundanter Daten. Es liegt damit in der Natur der Sache, dass man sich auf die wichtigsten, am häufigsten verwendeten Zugriffspfade beschränkt. Um die Zahl und Art der Zugriffspfade festzulegen, kann wie folgt vorgegangen werden (unter Vernachlässigung der zusätzlichen Datenmengen): 1. Auffinden der potentiell geeigneten Zugriffspfade und Bestimmen der Verwendungshäufigkeit eines ausgewählten, hypothetischen Zugriffspfades (z.B. pro Tag). 2. Berechnen, welches der Zeitgewinn (CPU-Zeit) pro Tag ist, falls dieser Zugriffspfad existieren würde. 3. Berechnen des Zeitaufwandes (in CPU-Zeit) zur Verwaltung des ausgewählten Zugriffspfades. Dafür muss bekannt sein, wie häufig Datensätze der entsprechenden Relation eingefügt, gelöscht oder geändert werden. Ist der Zeitgewinn pro Tag grösser als der Zeitaufwand, dann lohnt sich die Realisierung des Zugriffspfades. Zur Berechnung des Zeitaufwandes bzw. -gewinns müssen somit eine Reihe statistischer Daten erhoben werden. Eine besondere Schwierigkeit stellt dabei der Umstand dar, dass der Datenbestand keine statische Grösse ist, sondern sich im Laufe der Zeit ändert. 10.2.1. Mögliche Zugriffspfade bestimmen Die am meisten verwendeten Zugriffspfade ergeben sich direkt aus dem Datenmodell. Häufig werden natürlich Entitäts- und Fremdschlüssel als Zugriffspfad verwendet. Dadurch ist der schnelle Zugriff von über- auf untergeordnete Daten und umgekehrt möglich. Es liegt damit nahe, für jeden Entitäts- und Fremdschlüssel einen Zugriffspfad zur Verfügung zu stellen. Häufig ergänzt man in der Praxis diese ermittelten Zugriffspfade durch zusätzliche Zugriffspfade, für welche man intuitiv häufig Zugriffe erwartet. Allerdings ist es bei diesem Vorgehen möglich, dass sehr viel Rechenzeit verschwendet wird, weil die Zugriffspfade nicht optimal sind. Ein besseres Bild über die möglichen Zugriffspfade erhält man, wenn man sämtliche notwendigen logischen Transaktionen betrachtet, welche auf den Daten ausgeführt werden sollen. Diese logischen Transaktionen sind die aus Sicht der Anwendung notwendigen Operationen. Meist werden diese als Geschäftsprozesse bzw. als Systemfunktionen bezeichnet. So ist z.B. das ‘Erfassen eines neuen Kunden’ ein Geschäftsprozess. Für jeden Geschäftsprozess kann angegeben werden, welche Zugriffspfade dieser verwendet und wie häufig der Geschäftsprozess auftritt. Hat man alle Geschäftsprozesse bestimmt, festgelegt, wie häufig diese verwendet werden und welche Zugriffspfade diese benutzen, dann ist für die gesamte Anwendung bekannt, welche Zugriffspfade, wie oft verwendet werden. Diese Informationen lassen sich in einer Tabelle festhalten: Teil 3: Internes Datenmodell 128 10. Internes Datenmodell Geschäftsprozess 1. 1.1 1.2 1.3 Häufigkeit Zugriffspfad: Zugriffspfad Kunden: Kunden# Kunden: Name (pro Tag) Anz. Zugriffe / Geschäftsprozess Kundenverwaltung Kunden erfassen Kunde und dessen Verwandten löschen Kunde suchen 2 Auftragsverwaltung 2.1 Auftrag erfassen ... TOTAL Anz. Zugriffe / Tag Anz. Zugriffe / Geschäftsprozess 4 2 1.0 3.4 4.0 6.8 0.0 0.0 24 2.0 24.0 … 100 0.2 20.0 0.8 … 54.8 Tabelle 32: Ausschnitt aus der Geschäftsprozess-/ Zugriffspfad-Matrix Falls in der Anwendung auch Tagesendverarbeitungen (Batch-Programme) oder ähnliches ausgeführt werden, ist es sinnvoll, diese in einer separaten Tabelle explizit auszuweisen. Häufig kann bei Batch-Programmen eine längere Verarbeitungszeit akzeptiert werden. 10.2.2. Zugriffspfad-Effizienz bestimmen Um den Zeitgewinn bzw. -verlust zu berechnen, müssen zunächst die Datenmengen sowie die anfallenden Operationen je Relation bekannt sein. Diese Zahlen können wieder in einer Tabelle oder direkt in einem leicht erweiterten Datenmodell abgelegt werden: Mengen und Operationen auf den Relationen Kunden Aufträge Auftragspositionen ... Anzahl Datensätze Anzahl Datensätze / Segment 10’000 100’000 Einfügen / Tag 10 40 Löschen / Tag 4 50 2 50 Tabelle 33: Ausschnitt aus der Relationen-/ Operationen-Matrix Ausserdem müssen die Änderungsoperationen festgehalten werden, welche einen Zugriffspfad betreffen, sowie wie viele Einträge pro Knoten im B-Baum Platz haben: Operationen auf Zugriffspfaden der Relation Kunden Änderungen / Tag Kunden# Name ... 0.1 5 Einträge / Knoten des B-Baumes 40 10 Tabelle 34: Ausschnitt aus der Zugriffspfad-/ Operationen-Matrix Jetzt kann die Gewinn-/Verlustrechnung ausgeführt werden (hier eine einfache Form). Es wird hier nur die Anzahl der Zugriffe auf das externe Speichermedium als Mass für den Zeitaufwand verwendet: Teil 3: Internes Datenmodell 129 10. Internes Datenmodell Aufwand (in Anzahl pro Zugriff Zugriffen) Zugriffspfad Kunden: Kunden# pro Tag (* 54.8) Zugriffsaufwand ohne Anzahl Datensätze / Anzahl Datensätze pro Segment / 2 = Zugriffspfad Zugriffsaufwand mit Log(Einträge pro Knoten) (Anzahl Datensätze) + 1 = Zugriffspfad Zeitgewinn / Zugriff 500 27’400 3.5 192 495 27’208 Tabelle 35: Zeitgewinn beim Zugriff Aufwand Zugriffspfad pro Operation Kunden: Kunden# Aufwand Einfügen Aufwand Löschen Aufwand Ändern Aufwand TOTAL pro Tag Log(Einträge pro Knoten) (Anzahl Datensätze) + 3 = Log(Einträge pro Knoten) (Anzahl Datensätze) + 3 = Log(Einträge pro Knoten) (Anzahl Datensätze) + 6 = 5.5 5.5 8.5 22 11 0.85 33.85 Tabelle 36: Zeitverlust durch Verwaltungsaufwand Durch die Einführung eines Zugriffspfades für die Kunden# in der Relation Kunden lassen sich somit pro Tag ca. 27’000 Zugriffe auf das externe Speichermedium sparen (27’208 minus 33.85). Diese berechneten Werte sind mit äusserster Vorsicht zu geniessen und müssen durch eine Vielzahl weiterer Faktoren relativiert werden: In der Berechnung wurde der Systempuffer nicht berücksichtigt. In der Berechnung wurde die eigentliche Rechenzeit (CPU-Leistung) nicht berücksichtigt. In der Berechnung wurde der zusätzliche Speicherbedarf nicht berücksichtigt. Trotzdem liefern diese Werte einen wichtigen Hinweis für die Wahl der Zugriffspfade. Leider ändern sich die für die Rechnungen verwendeten Werte während des Betriebes der Anwendung, so dass die getroffenen Annahmen revidiert werden müssen. Für ein Datenbanksystem, in welchem der Optimizer dynamisch entscheidet, welche Zugriffspfade verwendet werden sollen, können noch während des Betriebs ohne Programmänderungen Zugriffspfade gelöscht oder eingefügt werden. Falls die Zugriffspfade aber in den Programmen fest vorgegeben werden, können keine dynamischen Anpassungen ohne Eingriffe in die Programme vorgenommen werden. Ist die Gesamt-Performance der Anwendung nach der Gestaltung der Zugriffspfade nicht genügend, bleiben zwei Möglichkeiten: Entweder werden die Geschäftsprozesse gezielt überarbeitet oder das interne Datenmodell wird denormalisiert (siehe unten). Mit den obigen Berechnungen lässt sich bereits vor der Erstellung der Anwendung eine erste Aussage zur GesamtPerformance machen. 10.3. Physische Organisation Bei der Abbildung der logischen Datensätze der Datenbank in die physischen Datensätze können eine Reihe von Massnahmen zur Performance-Verbesserung ergriffen werden, z.B. Clustering, Komprimierung, Wahl der physischen Abbildung, Prefetch-Technik, virtuelle Attribute etc. An diese Stelle wird nicht weiter auf diese Möglichkeiten eingegangen, da diese stark vom konkreten Datenbanksystem abhängen. Einige Ansatzpunkte sind auch im Kapitel ‘9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems’ auf Seite 89 aufgezeigt. Teil 3: Internes Datenmodell 130 10. Internes Datenmodell 10.4. Denormalisierung zur Performance-Verbesserung Bei der Denormalisierung des internen Datenmodells werden zur Performance-Verbesserung gezielt Normalisierungsregeln gebrochen. Allerdings sollte nur dann denormalisiert werden, wenn die Performance des Systems nicht mehr genügend ist und keine anderen Massnahmen (ev. Erhöhung der Rechnerleistung) möglich sind. Nach der Denormalisierung sind zumindest die kritischen Stellen (mit Redundanzen) im internen Datenmodell bekannt und können mit entsprechender Vorsicht behandelt werden. Bei der Denormalisierung können die kritischen Zugriffe betrachtet werden und daraus gezielt Änderungen am internen Datenmodell abgeleitet werden. Es ist nicht möglich, sämtliche Massnahmen abschliessend aufzuzählen. Im Folgenden sollen einige Beispiele eine Idee über mögliche Änderungen geben: Einführen von Redundanzen (z.B. der Kundennummer in der Relation Auftragsposition). Werden Datensätze einer Relation und referenzierte untergeordnete Datensätze einer anderen Relation häufig zusammen gelesen, dann können die beiden Relationen zusammengelegt werden. Werden häufig nur bestimmte Felder einer Relation verwendet, kann die Relation geteilt werden, so dass die häufig verwendeten Felder kompakt in einer einzigen Relation abgelegt sind. Bietet das Datenbanksystem die Möglichkeit, Attribute oder Attributsgruppen mit Mehrfacheintrag (Wiederholungsgruppen) zu bilden, ergeben sich daraus eine Reihe interessanter Möglichkeiten. Damit können z.B. m:m-Beziehungen ohne Beziehungsmenge direkt realisiert werden. Teil 3: Internes Datenmodell 10. Internes Datenmodell 131 10.5. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 194. 10.5.1. Fragetyp K, mehrfache Entscheidung 1. Die Datenmodellierung auf der internen Ebene setzt folgende Ziele: + 2. effiziente Ausführungsgeschwindigkeit minimaler Speicherbedarf der Daten wenig Redundanz Vernachlässigung datenbankspezifischer Eigenschaften Zählen Sie die Merkmale des internen, physischen Designs auf: + Berücksichtigt Hardwareüberlegungen Berücksichtigt Datenmengen und Zugriffshäufigkeiten Hier wird die Datenstruktur denormalisiert Die Speicherstruktur und -organisation wird hier festgelegt Teil 3: Internes Datenmodell 132 11. Verteilung von Daten 11. Verteilung von Daten 11.1. Vorteile und Nachteile verteilter Datenbanksysteme Von einer verteilten Datenbasis bzw. verteilten Datenbanksystemen spricht man in aller Regel, wenn mehrere, mittels Netzwerk verbundene, ansonsten aber unabhängige Datenbanksysteme eine gemeinsame Datenbasis bilden. Jeder Netzwerkknoten verfügt dabei über ein eigenes, eigenständiges Datenbanksystem mit eigenem Rechner. So kann ein verteiltes Datenbanksystem z.B. einen Knoten in München, einen anderen Knoten in Zürich und einen weiteren Knoten in Wien aufweisen. Die Datensätze der Relation Kunden werden hierbei z.B. jeweils lokal im entsprechenden Knoten verwaltet. Es werden also alle Kunden von München im Knoten von München, alle Kunden von Zürich in Zürich und alle Kunden von Wien in Wien selbst gespeichert. Aber nur alle Daten zusammengezogen ergeben die gemeinsame, konsistente Datenbasis. Die Vorteile und Nachteile einer solchen Verteilung liegen auf der Hand, z.B.: Durch die lokale Speicherung der Daten reduziert sich der Kommunikationsaufwand zwischen den Knoten. Wären sämtliche Daten zentral gespeichert, müsste ein noch grösserer Teil der Kommunikation über das langsame Netz erfolgen. Da die für die einzelnen Knoten relevanten Daten lokal gespeichert werden, können diese Daten auch dann noch verwendet werden, wenn ein anderer Knoten ausgefallen ist. Werden die Daten mehrfach in unterschiedlichen Knoten gespeichert, erhöht sich die Datensicherheit dadurch beträchtlich. Allenfalls kann sogar auf eine Sicherungskopie verzichtet werden. Die Integrität der Daten ist nur mit hohem Rechenaufwand zu gewährleisten. Integritätsregeln können Daten auf unterschiedlichen Knoten betreffen, was einen zusätzlichen Kommunikationsaufwand schafft. Durch die Verteilung der Daten entstehen neue, komplexe Anforderungen an den Integritätsschutz. 11.2. Eigenschaften verteilter Datenbanksysteme Durch die Verteilung der Datenbasis auf mehrere unabhängige Datenbanksysteme müssen eine Reihe neuer Fähigkeiten durch das Datenbanksystem wahrgenommen werden. Diese Fähigkeiten zu gewährleisten ist besonders dann schwierig, wenn die miteinander verbundenen Datenbanksysteme nicht vom selben Hersteller sind, sondern es sich dabei um technisch unterschiedliche Datenbanksysteme handelt. Man spricht von homogener Verteilung, wenn in sämtlichen Knoten das selbe Datenbanksystem verwendet wird, ansonsten von heterogener Verteilung. Um Programme und Abfragen auch in verteilten Systemen einfach und unabhängig von der effektiven Verteilung der Daten erstellen zu können, werden eine Reihe von Eigenschaften von verteilten Datenbanksystemen gefordert. Diese Eigenschaften sind Teil der physischen Datenunabhängigkeit: Ortstransparenz (Englisch: Location Transparency): Weder Benutzer noch Entwickler sollten von der Verteilung der Daten Kenntnis nehmen oder diese gar kennen müssen. Für jede Operation auf Daten, auch wenn diese nicht in der lokalen Datenbasis abgelegt sind, muss das Datenbanksystem die entsprechenden Daten automatisch und selbständig beschaffen. Dadurch können Programme unabhängig von der Verteilung der Daten erstellt werden und die Daten können auch noch während des Betriebes neu verteilt werden. Fragmentierungstransparenz (Englisch: Fragmentation Transparency): Können nicht nur Entitätsmengen verteilt werden, sondern können auch einzelne Entitätsmengen Teil 3: Internes Datenmodell 11. Verteilung von Daten 133 in Stücke geschnitten werden, sogenannte Fragmente, spricht man von Fragmentierung. Fragmentierungstransparenz ist gegeben, wenn weder Benutzer noch Entwickler von der Verteilung der Fragmentierung Kenntnis haben müssen. Von horizontaler Fragmentierung spricht man, falls eine Entitätsmenge tupelweise zerschnitten wird. Von vertikaler Fragmentierung ist die Rede, wenn die Entitätsmenge spaltenweise zerschnitten wird. Hierbei muss zusätzlich in jedem Fragment der Entitätsschlüssel mitgeführt werden. Replikationstransparenz (Englisch: Replication Transparency): Zur Verbesserung der Performance und zur Erhöhung der Datensicherheit liegt es nahe, Kopien von Daten in mehreren Knoten abzulegen. Diese Datenkopien werden als Replikat bezeichnet. Replikationstransparenz fordert vom Datenbanksystem, dass diese Replikate vollautomatisch vom Datenbanksystem verwaltet werden. So muss das Datenbanksystem z.B. eine Änderung an den Daten auch an allen übrigen Replikaten nachführen. Durch diese Eigenschaften wird sichergestellt, dass eine verteilte Datenbank sich Benutzern und Entwicklern wie eine einzige, zentrale Datenbank präsentiert. Dadurch wird die Komplexität verteilter Systeme gänzlich verborgen. Das darf aber nicht darüber hinwegtäuschen, dass die technischen Anforderungen an das Datenbanksystem enorm sind. So müssen z.B. Mehrbenutzerbetrieb, Transaktionslogik, Integrität weiterhin gewährleistet werden. Auf das Problem der Transaktionslogik in verteilten Datenbanksystemen wurde in Kapitel ‘9.4.2.4. Transaktionslogik in verteilten Datenbanksystemen’ auf Seite 107 eingegangen. Teil 3: Internes Datenmodell 134 11. Verteilung von Daten 11.3. Checkfragen Die Lösungen zu den folgenden Checkfragen finden Sie auf Seite 195. 11.3.1. Fragetyp K, mehrfache Entscheidung 1. Folgende Aussagen zur Datenverteilung sind korrekt: + Replikate sind Datenkopien auf unterschiedlichen Knoten. Änderungen an Replikaten werden bei Ortstransparenz automatisch in allen Knoten nachgeführt. Fragmente sind Datenkopien auf unterschiedlichen Knoten. Änderungen an Fragmenten werden bei Ortstranspartenz automatisch in allen Knoten nachgeführt. Teil 3: Internes Datenmodell 135 Teil 4: Fallbeispiel 12. Fallbeispiel TTW 137 12. Fallbeispiel TTW Das Fallbeispiel behandelt die Probleme der TTW AG (Travel-The-World AG). Hierbei werden alle wichtigen Themen der Datenorganisation und -modellierung kurz angesprochen. Die Durchführung des Fallbeispiels ist nur in der angegebenen Reihenfolge möglich, da nachfolgende Übungen auf den vorgehend aufgebauten Erkenntnissen basieren! Beachten Sie jeweils die Lösungen der einzelnen Aufgabenschritte und verwenden Sie diese als Basis zur weiteren Bearbeitung der Aufgaben. Die Lösungen zu den einzelnen Aufgabenschritten finden Sie ab Seite 196. Der zeitliche Aufwand zur Durchführung der Übung beträgt ca. 3½ bis 4 Stunden. Zielsetzungen zum Fallbeispiel (Anwendung von): Dateiverwaltung / DBMS Top-Down- und Bottom-Up-Analyse ANSI/SPARC-Architektur Normalisierung Verbundinstrumente in Datenmodellen (Hierarchie, Rekursion, Beziehungsmenge, Spezialisierung/Generalisierung, Aggregation, etc.) Zeitabhängige Daten und Varianten von Daten Meta-Entitätstypen, Data-Dictionary Integration von Teilmodellen Internes Schema, physische Datenorganisation Die Travel-The-World AG ist ein kleines schweizerisches Reiseunternehmen, welches geführte Gruppenreisen in alle Teile der Welt organisiert (ca. 45 Reise-Angebote pro Jahr, welche ca. 10 mal mit etwa 18 Reisenden pro Reise durchgeführt werden) und mit Reiseleitern, welche i.d.R. aus dem Ferienland stammen, durchführt. Die Reisen und Prospekte werden vom Unternehmen selbst zusammengestellt. Die gesamte Organisation (Reisezusammenstellung, Planung & Kontrolle, Rechnungswesen, ...) liegt in den Händen von einem kleinen Team von Mitarbeitern (ca. 10 Personen). Die TTW AG konnte ihre Arbeit in der Vergangenheit vor allem darum sehr effizient durchführen, da das Arbeitsteam klein, die Kommunikation im Team und der Informationsstand der einzelnen Mitarbeiter gut waren. In den letzten Jahren ist allerdings die Gewinnmarge der einzelnen Reisen immer kleiner geworden, so dass sich die TTW gezwungen sah (entgegen ihrer Geschäftsstrategie, welche die Abgrenzung zu den grossen Reiseunternehmen beabsichtigt), das Reiseangebot und -volumen zu vergrössern. Die TTW AG hat dadurch ihren Personalbestand vergrössern müssen (ursprünglich waren 6 Mitarbeiter angestellt) und für grössere Schwankungen mehrere temporäre Arbeitskräfte (Studenten) einsetzen müssen. Dadurch ist aber ein grosser Teil der Vorteile, welche die TTW AG gegenüber ihren grösseren Konkurrenten hatte, verloren gegangen (Führungsprobleme, Wissenslücken, gegensätzliche Entscheide, ...). Um diesem Missstand abzuhelfen und wieder auf die ursprüngliche Unternehmensgrösse zu gelangen (Personalbestand, ROI, ...), wurde beschlossen ein neues EDV-System anzuschaffen bzw. entwickeln zu lassen. Bei der aktuellen Unternehmensstruktur ist ansonsten das Überleben des Unternehmens ernsthaft gefährdet. Da die Margen durch den erhöhten Konkurrenzdruck klein sind und bleiben, ist dies natürlich nur mit dem bereits erhöhten Kapitalumschlag möglich. Daher muss der bestehende Umsatz beibehalten werden, der Personalbestand aber deutlich verringert werden. Zur Zeit wird in der TTW AG eine einfache Applikation (TravelSys) eingesetzt, basierend auf einem Dateiverwaltungssystem, welches vor Jahren für die Firma entwickelt wurde und seither ohne Änderungen läuft. Dieses System ist nur schlecht und unvollständig dokumentiert. 12.1. Ist-Analyse: Datenmodell zur Anwendung TravelSys ermitteln (Bottom-Up) In einem ersten Schritt soll die Struktur der bestehenden Anwendung TravelSys ermittelt werden (Datenmodell und Attributskatalog). Dieses Datenmodell ist die Grundlage für den Entscheid, wie weiter vorgegangen werden soll. Teil 4: Fallbeispiel 138 12. Fallbeispiel TTW 12.1.1. Ermittlung des Datenmodells zur Anwendung TravelSys (55 Minuten) Zur Ermittlung der bestehenden Struktur können das Datenmodell (unvollständig), verschiedene Bildschirmmasken (nur ein Teil der Masken) und Recordbeschreibungen (nur von einem Teil der Dateien) verwendet werden. Jeder der drei Teile gibt nur einen Teil der Gesamtlösung wieder, dennoch kann aus den Angaben die gesamte Ist-Lösung rekonstruiert werden. Erstellen Sie das grafische Datenmodell der Ist-Lösung sowie den vollständigen Attributskatalog von TravelSys. Kennzeichnen Sie Entitäts- und Fremdschlüssel in Ihrer Lösung. In dieser ersten Aufgabe ist die Analyse der bestehenden Lösung gefragt, nicht eine verbesserte Lösung! Fügen Sie keine Entitätsmengen und Attribute ein, die nicht Teil der Ist-Lösung sind. Versuchen Sie in einem ersten Schritt, die Entitäts- und Fremdschlüssel der Ist-Lösung zu bestimmen und erst anschliessend die Entitätsmengen und deren Beziehungen festzulegen. Das 'Datenmodell' ist mit unbekannten Konventionen erstellt worden. Es ist nicht gesichert, dass sämtliche Dateien und Zusammenhänge aufgezeigt werden: Kunden Reisen Rechnungen Preise Figur 52: Datenmodell-Ausschnitt von TravelSys mit unbekannter Notation Recordstruktur zweier Dateien (nur von einem Teil der Dateien): DEFINE RECORD Preis Reise#: Numeric(10) Datum_Start_Fenster: Date Anzahl_Nächte: Numeric(3) Zimmergrösse: Numeric(2) Verpflegung: Character(4) Preis: Numeric(10.2) Woche_Start_Fenster: Numeric(2) END OF RECORD Preis DEFINE RECORD Rechnung Rechnungs#: Numeric(10) Rechnungsdatum: Date Kunden#: Numeric(10) Rechnungsbetrag: Numeric(10.2) Rechnungscode: Character(2) Rechnungscode_Text: Character(20) Buchungs#[4]: Numeric(10) Künstliche Nummer der Reise (pro Reise mehrere Preise) Datum, ab welchem der Preis gilt Anzahl Buchungsnächte der Reise Zimmergrösse (z.B. Einzel-, Doppel-Zimmer) Verpflegungsart ('VP'=Vollpension, 'HP'=Halbpension, 'ZF'=Frühstück oder 'ohne') Preis gültig ab diesem Datum, für diese Anz. Nächte, für diese Zimmergrösse etc. Wochennr., ab welchem der Preis gilt Künstliche Rechnungsnummer Datum der Rechnungsstellung Künstliche Kundennummer (bezahlt die Rechnung) Rechnungs-, bzw. Teilrechnungsbetrag in Fr. Rechnungscode (z.B. 'Of') Rechnungscodetext (z.B. 'Offen' für Code = 'Of') Wiederholungsgruppe mit max. 4 Ausprägungen. Mit einer (Teil-)Rechnung können max. 4. Reisen eines Kunden bezahlt werden (unternimmt die Reise). END OF RECORD Rechnung Figur 53: Rekorddefinitionen von TravelSys Bildschirmmasken (nur ein Teil der Masken der Anwendung): Felder mit kleinen Buchstaben können nicht bearbeitet werden (reine Output-Felder), Felder mit Buchstaben in roter Farbe können eingegeben bzw. bearbeitet werden. Teil 4: Fallbeispiel 12. Fallbeispiel TTW n x tt/mm/jjjj l 139 Numerisch Alphanumerisch Datum Logisch (J/N) Buch01 Buchung erfassen / modifizieren Kunden-Nr: Name: Adress_Zeile_1: Adress_Zeile_2: Land, PLZ, Ort: User-ID nnnnnnnnnn xxxxxxxxxxxxxxxxxxxx Nationalität: xxxxxxxxxxxxxxxxxxxx Rechnungs-Saldo: xxxxxxxxxxxxxxxxxxxx xxx-nnnnnn xxxxxxxxxxxxxxxxxxxx _ _ _ _ _ _ _ _ _ _ _ ReiseDatum tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj ReiseNummer nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn _ tt/mm/jjjj nnnnnnnnnn Anzahl Nächte nnn nnn nnn nnn nnn nnn nnn nnn nnn nnn nnn Anzahl Personen nnn nnn nnn nnn nnn nnn nnn nnn nnn nnn nnn Zimmergrösse nn nn nn nn nn nn nn nn nn nn nn Verpflegung xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx tt/mm/jjjj xxx nnnnnnnnnnnn.nn (offen) Preis (effektiv) nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn nnnnnnnnnn.nn BuchungsNummer nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn F1=Auswahl F3=Ende F5=Auswahl Reisevariante (Preis) F6=Einfügen Buchung F7=Löschen Buchung Reis01 Reisen erfassen / modifizieren Reise-Nr: Bezeichnung: Dauer (Anzahl Tage): Hotel: Reisemittel zum Startort: Startort: Reisemittel vom Endeort: Endeort: User-ID tt/mm/jjjj nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx nnn (0 falls variable Buchungsdauer) xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Durchschnittliche Einnahmen pro Kunde (Ertrag): Durchschnittliche Ausgaben pro Kunde (Aufwand): nnnnnnnnnn.nn nnnnnnnnnn.nn F1=Auswahl F3=Ende F6=Einfügen Reise F7=Löschen Reise Figur 54: Bildschirmmasken von TravelSys 12.1.2. Normalisierung des Datenmodells (25 Minuten) Zeigen Sie für jeden Normalisierungsschritt den vollständigen Attributskatalog aller geänderten Entitätsmengen sowie das Datenmodell für die 3. Normalform auf. Es dürfen keine Attribute weggelassen oder hinzugefügt werden. Zeigen Sie die Resultate (Attributskatalog für jede betroffene Entitätsmenge) für jeden einzelnen Normalisierungsschritt. Überlegen Sie sich nach jedem Schritt, wie sich der Entitätsschlüssel der veränderten Entitätsmengen zusammensetzt und kennzeichnen Sie diesen. 1. Normalform: Keine Wiederholungsgruppen. 2. Normalform: Alle Relationen sind in 1. Normalform und alle Nichtschlüsselattribute sind vom Entitätsschlüssel voll funktional abhängig. 3. Normalform: Alle Relationen sind in 2. Normalform und kein Nichtschlüsselattribut ist von einem Entitätsschlüssel transitiv (via Nichtschlüsselattribut) abhängig. Teil 4: Fallbeispiel 140 12. Fallbeispiel TTW 12.2. Soll-Konzept: Datenmodell mit neuen Anforderungen ergänzen (TopDown) Um eine Reduktion des Personalbestandes zu ermöglichen, muss die neue Anwendung eine Reihe neuer Fähigkeiten aufweisen. Erweitern Sie das Datenmodell in der Weise, dass diese neuen Fähigkeiten ebenfalls abgedeckt sind und bestehende Daten in das neue Modell migriert werden können. 12.2.1. Strukturierung der Reisen, Aggregation (Part-Of-Struktur / Stückliste) (25 Minuten) Die Struktur der Reisen kann im jetzigen System nicht mit dem notwendigen Detaillierungsgrad festgehalten werden. Der Aufbau der Reisen ist den einzelnen Mitarbeitern durch die grössere Anzahl von Reisen nicht mehr geläufig, so dass deren Struktur festgehalten werden können muss. Eine Reise kann sich aus einer Reihe von Reisen zusammensetzen, jede dieser Reisen kann wiederum aus einer Reihe von Reisen bestehen usw. Jede Reise lässt sich damit als eine Art Baum darstellen, wobei jeder Knoten des Baumes eine Reise repräsentiert. Ein und dieselbe Reise kann Bestandteil mehrerer Reisen sein. Sonderangebot USA intensiv Reisenr. 67452 USA Western Ride Reisenr. 7634 Great Canyon Donkey Trip Reisenr. 76341 Reisefolgenr. 1 Miami, Disneyworld Reisefolgenr. 1 Reisenr. 2453 Reisefolgenr. 2 Los Angeles, San Francisco Reisenr. 76352 Reisefolgenr. 2 Figur 55: Beispiel einer Reisestruktur Ein Mitarbeiter der TTW AG hat seine Vorstellungen zu Papier gebracht und eine Bildschirmmaske hierfür entwickelt: Teil 4: Fallbeispiel 12. Fallbeispiel TTW ReSt01 Reisen-Struktur erfassen / modifizieren Reise-Nr: Bezeichnung: Dauer: User-ID 141 tt/mm/jjjj nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnn untergeordnete Reisen: ReisefolgeNr. Reise-Nr nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn nn nnnnnnnnnn _ _ _ _ _ _ _ _ _ _ _ Bezeichnung xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx F1=Auswahl F3=Ende F6=Einfügen Teilreise F7=Löschen Teilreise Figur 56: Beispielmaske für die Reisestrukturierung Zeigen Sie, wie sich dieser Sachverhalt im Datenmodell festhalten lässt und ergänzen Sie dieses entsprechend. Welche Variante wäre ebenfalls möglich, falls jede Reise nur ein einziges Mal als Teilreise auftreten würde (diese Variante wird in der Lösung nicht weiter verwendet)? 12.2.2. Zeitabhängige Daten und Varianten von Daten in Datenmodellen (40 Minuten) Zusätzlich zur eigentlichen Strukturierung der Reisen muss festgehalten werden können, an welchem Datum welche Reisen durchgeführt werden (zeitabhängige Daten). Auch hierfür hat ein Mitarbeiter einen Vorschlag für eine Bildschirmmaske erstellt: ReTe01 Reisetermine erfassen / modifizieren Reise-Nr: Start-Datum: Bezeichnung: Dauer: User-ID tt/mm/jjjj nnnnnnnnnn tt/mm/jjjj xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnn untergeordnete Reisen: _ _ _ _ _ _ _ _ _ _ _ Start-Dat. tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj ReisefolgeNr. nn nn nn nn nn nn nn nn nn nn nn Reise-Nr nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn Bezeichnung xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx F1=Auswahl F3=Ende F6=Einfügen Teilreise F7=Löschen Teilreise Figur 57: Beispielmaske für die Verwaltung der Reisedaten Welche zwei grundsätzlichen Methoden können angewandt werden? Welches sind die Vorund Nachteile der beiden Lösungsansätze? Welche Lösung empfehlen Sie? Zeigen Sie die LöTeil 4: Fallbeispiel 142 12. Fallbeispiel TTW sung für beide Varianten in Ihrem Datenmodelldiagramm. Beachten Sie, dass in der ermittelten Lösung auch ersichtlich sein muss, welche Teilreise (an einem bestimmten Datum) zu welcher übergeordneten Reise (an einem bestimmten Datum) gehört! Zum Teil müssen Reisen auch individuell angepasst werden (z.B beim Anschluss von einer Woche Badeurlaub) (Varianten von Daten). Wie können individuelle Varianten im Datenmodell abgelegt werden? 12.2.3. Mitarbeiterstamm, Spezialisierung/Generalisierung (Is-A-Struktur) (20 Minuten) Zwar ist der Mitarbeiterbestand in der Zentrale klein (ca. 10 Mitarbeiter), dafür sind etwa 100 Reiseleiter im Dienste der TTW AG tätig. Diese sollen ebenfalls erfasst werden können. Dabei muss festgehalten werden können, welche Reisen (bzw. Teilreisen) die einzelnen Reiseleiter begleiten können und welche Reisen diese an welchen Terminen effektiv begleiten (nur ein Reiseleiter pro Termin). Hierbei sollen die gemeinsamen Daten der Kunden und Mitarbeiter (Reiseleiter sind ebenfalls Mitarbeiter) mittels Generalisierung festgehalten werden: Rele01 Reiseleiter erfassen / modifizieren Reise-Nr: Bezeichnung: Dauer: User-ID tt/mm/jjjj nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnn mögliche Reiseleiter: Reiseleiter/Name nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx F1=Auswahl F3=Ende F6=Einfügen möglichen Reiseleiter F7=Löschen möglichen Reiseleiter Rele02 Eff. Reiseleiter erfassen / modifizieren Reise-Nr: Start-Datum: Reiseleiter/Name: Bezeichnung: Dauer: User-ID tt/mm/jjjj nnnnnnnnnn tt/mm/jjjj nnnnnnnnnn xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx nnn effektive Reiseleiter: _ _ _ _ _ _ _ _ _ _ _ Start-Dat. tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj tt/mm/jjjj ReisefolgeNr. nn nn nn nn nn nn nn nn nn nn nn Reise-Nr nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn nnnnnnnnnn Bezeichnung xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx Reiseleiter/Name nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx nnnnnnnnnn xxxxxxxxxxxxxx F1=Auswahl F3=Ende Figur 58: Beispielmasken für die Verwaltung des Mitarbeiterstamms Teil 4: Fallbeispiel 12. Fallbeispiel TTW 143 Untersuchen Sie das Datenmodell auf Verbundinstrumente im Datenmodell. Welche Verbundinstrumente finden Sie, welche weiteren Verbundinstrumente kennen Sie? 12.3. Vorgehensentscheid Dateiverwaltung oder DBMS (20 Minuten) Für das weitere Vorgehen soll der Grundsatzentscheid gefällt werden, ob das bestehende Dateiverwaltungssystem ausgebaut werden soll oder ob eine gänzlich neue Lösung mittels eines Datenbankmanagementsystems erstellt werden soll. Welche Argumente sprechen für, welche gegen den Wechsel zum Datenbanksystem? Bereiten Sie eine Kurzpräsentation der Argumente vor. Bedenken Sie, dass die bestehenden Hardwareressourcen, d.h. das PC-Netzwerk mit Server, weiterhin genutzt werden sollen. 12.4. Ableiten des internen Schemas, Bestimmen der physischen Speicherorganisation 12.4.1. Internes Schema (15 Minuten) Die Geschäftsleitung hat sich aufgrund Ihrer Argumente für die Einführung eines DBMS entschieden. In einem ersten Schritt soll daher das interne Schema ausgehend vom entwickelten konzeptionellen Datenmodell hergeleitet werden. Welche Unterlagen können für die Gestaltung des internen Schemas herangezogen werden? Welche Einflüsse können diese Unterlagen auf das Modell haben, welche Entscheidungen erwarten Sie? 12.4.2. Physische Speicherorganisation (5 Minuten) Das ausgewählte DBMS unterstützt sowohl eine baumstrukturierte Zugriffsmethode wie auch das Hashing-Verfahren. Entscheiden Sie für jede Entitätsmenge, welches der beiden Zugriffsverfahren Sie für diese Entitätsmenge einsetzen möchten. 12.5. Meta-Entitätstypen, Data-Dictionary (20 Minuten) Das Datenbankverwaltungssystem, welches im Netzwerk eingesetzt wird, ist eine typische PCLösung und enthält kein Data-Dictionary. Die Geschäftsleitung der TTW AG hat aus den Erfahrungen mit der Vorgängerlösung gelernt und beschlossen, dass das Datenmodell für die neue Lösung durchgängig zu dokumentieren sei. Hierfür soll ein sehr einfaches Datenmodell für ein passives Data-Dictionary entwickelt werden. Folgende Dokumente und Zusammenhänge sollen darin möglichst einfach abgelegt werden können: Entitätsmengen Attribute Entitäts- und Fremdschlüssel Das Data-Dictionary ist weder aktiv noch integriert zu gestalten. Es wird lediglich zu Dokumentationszwecken eingesetzt. Teil 4: Fallbeispiel 145 Anhang 13. Tabellen, Verzeichnisse 147 13. Tabellen, Verzeichnisse 13.1. Farben, Sonderzeichen und deren Bedeutung Folgende Farben und Sonderzeichen werden im Dokument mit folgender Bedeutung verwendet: Das Kapitel bzw. der Abschnitt enthält Informationen, welche für den Anfänger ohne Modellierungserfahrung nicht geeignet sind oder das vertiefende Detailkenntnisse aufweist. Weist auf die Definition eines Begriffes hin. Wird in Aufzählungen verwendet, die keine feste Anzahl von Punkten haben. 1. Wird in Aufzählungen verwendet, die eine feste Anzahl von Punkten haben. Vorteil in einer Vergleichsliste der Vor- und Nachteile. Nachteil in einer Vergleichsliste der Vor- und Nachteile. Beispiele in SQL-Code sind gelb hinterlegt. Anhang 148 13. Tabellen, Verzeichnisse 13.2. Synonyme unterschiedlicher Systeme und Modelle Die Tabelle enthält die Synonyme (sinnverwandtes Wort) der unterschiedlichen Systeme und Modelle. Dabei wurde stärker auf den möglichen Quervergleich als auf die 100%-ige Übereinstimmung der Begriffe geachtet. In Klammer sind die jeweiligen englischen Begriffe angebracht, sofern diese von den im Deutschen verwendeten Ausdrücken abweichen. Dateiverwaltung hierarchische Datenbank netzwerkartige Datenbank relationale Datenbank Entity-Relationship-Modell objektorientierter Ansatz Datei (File) Record-Typ Record-Typ Tabelle (Table), Relation (Relation) Entitätsmenge (Entity Set) Klasse (Class) Datensatz (Record) Datensatz (Record) Datensatz (Record) Tupel , Zeile (Row) Entität (Entity) Objekt, Instanz Feld (Field) Feld (Field) Item Attribut, Spaltenname Attribut Variable, Attribut - - - Primärschlüssel (Primary Key) Entitätschlüssel (Entity Key) - Set-Typ Set-Typ Referentielle Integrität (Referential Integrity) Beziehungsmenge (Relationship Set) Tabelle 37: Synonyme Systeme und Datenmodelle Anhang 13. Tabellen, Verzeichnisse 149 13.3. Kürzel der Datenmodellierung und Datenbanktechnik # .......................................... Nummer, meist innerhalb Entitätsschlüssel verwendet ANSI-SPARC ........................ Study Group on Data Base Management Systems BCNF ................................... Boyce/Codd Normal Form CODASYL ............................ Conference on Data Systems Languages c ........................................... konditionelle Assoziation: keine oder eine DB ........................................ Database DBA...................................... Database Administrator DBMS ................................... Data Base Management System (Datenbank Management System) DBTG ................................... Data Base Task Group DCL ...................................... Data Control Language (Daten-Integritäts-Sprache) DD........................................ Data Dictionary DDL ...................................... Data Definition Language (Daten-Definitions-Sprache) DML ..................................... Data Manipulation Language (Daten-Manpulations-Sprache) ER ......................................... Entity-Relationship ERM...................................... Entity-Relationship-Model IMS ....................................... Information Management System (IBM) NF......................................... Normalform (1NF, 2NF ...) m .......................................... multiple Assoziation: eine oder mehrere mc ....................................... multiple-konditionelle Assoziation: keine oder mehrere SQL ...................................... Structured Query Language 1 ........................................... einfache Assoziation: genau eine 1NF....................................... Erste Normalform 2NF....................................... Zweite Normalform 3NF....................................... Dritte Normalform Anhang 150 13. Tabellen, Verzeichnisse 13.4. Kontrollfragen zum konzeptionellen Datenmodell Die folgenden 16 Kontrollfragen dienen der Selbstkontrolle von konzeptionellen Datenmodellen. Hiermit können die häufigsten 'einfachen' Fehler aufgespürt und eliminiert werden: Fragen zum Diagramm: Sind alle m:m-Beziehungen aufgelöst (nur für konzeptionelle Modelle) (Assoziationstypen übers Kreuz austauschen)? Sind alle 1:1-Beziehungen eliminiert (nur für konzeptionelle Modelle) (Mengen zusammenfassen)? Sind unklare Fremdschlüsselbeziehungen im grafischen Modell beschriftet? Sind die Namen der Entitätsmengen sinnvoll und beschreiben den Inhalt eindeutig? Ist die Darstellung halbhierarchisch? Wurde die Notation gemäss Vorgabe verwendet? Abgleich zwischen Diagramm und Attributskatalog: Ist die Anzahl der Entitätsmengen im Diagramm und im Attributskatalog identisch? Vorsicht bei Spezialisierungen! Für jede Spezialisierung und für die Generalisierung muss je eine Entitätsmenge im Attributskatalog auftreten! Sind die Namen der Entitätsmengen im Diagramm und im Attributskatalog identisch? Ist die Anzahl der Fremdschlüssel im Diagramm (ein Fremdschlüssel je Verbindungsstrich und je Spezialisierung) und im Attributskatalog identisch? Sind die Fremdschlüssel im Attributskatalog in jenen Entitätsmengen, welche im Diagramm die m-, mc- oder c-Assoziation (nur bei 1:c-Beziehungen) aufweisen? Fragen zum Attributskatalog: Ist der Attributskatalog vollständig (erhöht die Verständlichkeit des Modells)? Sind die Identifikationsschlüssel unterstrichen? Sind die Identifikationsschlüssel eindeutig? Sind die Fremdschlüssel gekennzeichnet (bei Attributskombinationen zusammengehörige Attribute angeben!) und die referenzierte Entitätsmenge angegeben? Ist der Aufbau des Fremdschlüssels identisch zum Aufbau des Identifikationsschlüssels der referenzierten Entitätsmenge? Referenziert der Fremdschlüssel jene Entitätsmenge, welche den erlaubten Wertebereich am stärksten einschränkt (referenziert Aufträge z.B. die Partner anstatt die Kunden)? Anhang 14. Fragetypen der Checkfragen 151 14. Fragetypen der Checkfragen In den Checkfragen werden folgende vier Fragetypen verwendet: 1. Fragetyp A, Fragetyp der Einfachauswahl: Bezeichnen Sie nur eine Wahlantwort (die beste oder einzig zutreffende) durch Markieren des betreffenden Buchstabens. 2. Fragetyp B, Fragetyp der Zuordnung: Auf fünf mit Buchstaben bezeichneten Auswahlantworten folgt eine Gruppe von nummerierten Fragen. Wählen Sie zu jeder dieser nummerierten Fragen nur eine, (die am besten dazu passende) Wahlantwort und markieren Sie den entsprechenden Buchstaben. Ein und dieselbe Antwort kann dabei einmal, mehrmals oder gar nicht verwendet werden. Es braucht also nicht "aufzugehen". 3. Fragetyp E, Fragetyp der kausalen Verknüpfung Halten Sie A) b e i d e Feststellungen u n d die Weil-Verknüpfung für richtig, so markieren Sie den Buchstaben A. B) beide Feststellungen für richtig, die Weil-Verknüpfung jedoch für falsch, so markieren Sie den Buchstaben B. C) die erste Feststellung für richtig, die zweite für falsch, so markieren Sie den Buchstaben C. D) die erste Feststellung für falsch, die zweite für richtig, so markieren Sie den Buchstaben D. E) beide Feststellungen für falsch, so markieren Sie den Buchstaben E. 4. Fragetyp K, Fragetyp der mehrfachen Entscheidung richtig/falsch für jede von vier Fragen: Eine Frage oder Feststellung ist begleitet von vier Antworten oder Ergänzungen; jede dieser Antworten kann richtig oder falsch sein. Halten Sie eine Antwort für richtig, bezeichnen Sie diese mit (+), halten Sie die Antwort für falsch, mit (-). Unabhängig davon, ob die Frage grammatikalisch im Singular oder Plural formuliert ist, können 1, 2, 3, 4 oder auch gar keine der Antworten richtig sein. Die Frage ist nur dann richtig beantwortet, wenn alle 4 Antworten korrekt bezeichnet sind. Anhang 152 15. Lösungen zu den Aufgaben 15. Lösungen zu den Aufgaben 15.1. Checkfragen: 2. Die historische Entwicklung von Datenbanksystemen, Begriff Datenbank 15.1.1. Fragetyp A, Einfachauswahl 1. In hierarchischen Systemen können netzwerkartige Strukturen nur mit hohen Redundanzen gebildet werden. B) In hierarchischen Systemen können netzwerkartige Strukturen nicht direkt abgebildet werden. C) In netzwerkartigen Systemen können auch netzwerkartige Strukturen gebildet werden. D) Durch die physische Referenzierung der Daten sind Strukturänderungen mit hohem technischen Aufwand verbunden. Alle betroffenen Referenzen müssen neu ermittelt werden. E) Die Sprachen hierarchischer und netzwerkartiger Systeme verlangen vom Benutzer eine hohe Kenntnis der Datenbanksprache. 2. 3. A) In hierarchischen DBMS wird mittels physischer Adressverweise navigiert. B) In netzwerkartigen DBMS wird mittels physischer Adressverweise navigiert. C) In relationalen DBMS werden die Daten ohne Navigation aufgrund der Referenzen in den Fremdschlüsseleinträgen verarbeitet. D) Der Begriff ‘Integrative DBMS’ ist frei erfunden. E) Verteilte Systeme können hierarchischer, netzwerkartiger und relationaler Natur sein. Nur in den hierarchischen und netzwerkartigen DBMS wird navigiert. 4. A) In hierarchischen DBMS werden auf der physischen, internen Ebene Beziehungen mittels physischer Adressverweise hergestellt. B) In netzwerkartigen DBMS werden auf der physischen, internen Ebene Beziehungen mittels physischer Adressverweise hergestellt. C) In relationalen DBMS werden die Beziehungen auf der logischen Ebene durch identische Fremdschlüsseleinträge hergestellt. D) Falsche Antwort, siehe C. E) Falsche Antwort, siehe A und B. 5. 6. A) Datenmanipulationssprachen sind nicht nur als 3. Generationssprache entwickelt worden, sondern z.B. auch als 4. Generationssprache (z.B. SQL). B) Eine Menge von Tupeln bildet eine Tabelle (Relation) der Datenbank. Die Tupel werden durch DMLBefehle verarbeitet. C) Die DML (Data Manipulation Language, Daten Manipulations Sprache) wird zur Manipulation der Daten verwendet. D) In der Protokolldatei werden die Änderungen der Daten durch die DML-Befehle protokolliert. E) Konsistenzbedingungen gewährleisten, dass DML-Befehle nur konsistenzerhaltend ausgeführt werden können. 7. A) A) A) B) C) D) E) A) B) C) D) E) Korrekte, aber nicht beste Antwort. Korrekte und beste Antwort. Im relationalen DBMS können Daten auch netzwerkartig abgelegt werden. Nicht der Fremd-, sondern der Entitätsschlüssel identifiziert die Zeilen eindeutig. Relationale Datenbanken können ein Höchstmass an physischer Datenunabhängigkeit gewährleisten. Die Datenbasis ist ebenfalls Teil der Datenbank. Nicht nur relationale Datenbanksysteme können Datenbanken bilden. Richtig, das Datenbanksystem zusammen mit der Datenbasis ergeben die Datenbank. Nicht nur relationale Datenbanksysteme können Datenbanken bilden. Die Datenbasis ist ebenfalls Teil der Datenbank, die Hardware ist belanglos. Durch die Trennung der Daten von den Anwendungen können Struktur-Änderungen auf der logischen Ebene ohne Einfluss auf die Programme vorgenommen werden (z.B. Einfügen eines Feldes). B) Falsch: Durch die Trennung der Daten von den Anwendungen können Struktur-Änderungen auf der physischen Ebene ohne Einfluss auf die Programme vorgenommen werden (z.B. Änderungen der physischen Speicherorganisation). Damit besteht keine Abhängigkeit der Programme. C) Der dauerhafte Bestand der Daten ist Basis jedes Datenbanksystems. Selbst in schwierigen Situationen (z.B. Head-Crash) müssen die Daten erhalten bleiben. D) Mittels Datensichten sollen Benutzer nur den für sie relevanten Teil der Datenbasis sehen. E) Die Strukturierung der Daten verlängert die Lebensdauer der Anwendungen und sorgt für widerspruchsfreie Informationen. Anhang 15. Lösungen zu den Aufgaben 153 15.1.1. Fragetyp E, kausale Verknüpfung 1. 1. / 2. - Der Einsatz von Datenbanksystemen kann nicht generell empfohlen werden (z.B. zur Steuerung technischer Maschinen). Die beiden Aussagen sind ohne Zusammenhang. Die Integrität der Daten muss durch die Definition der Konsistenzregeln (mit dem Benutzer) im Datenbanksystem gesichert werden. 15.1.2. Fragetyp K, mehrfache Entscheidung 1. + Die Dateiverwaltung führt zur Rechenzeit meist nur die notwendigsten Operationen aus. Auf die Überprüfung von Zugriffsrechten, kontrolliertem Mehrbenutzerbetrieb, Überprüfung von Integritätsregeln etc. wird im Gegensatz zum DBMS meist verzichtet. Die Dateiverwaltung ist daher schneller, verzichtet aber auf wichtige Prüfungen. Durch die Trennung der Daten von den Anwendungen können in DBMS Änderungen an der Datenstruktur auch nachträglich einfach ausgeführt werden. Es leistet damit einen direkten Beitrag zur beschleunigten Entwicklung und Wartung. In Datenbanken können Integritätsregeln (im Gegensatz zur Dateiverwaltung) direkt definiert werden. Deren Sicherstellung ist dort automatisch gewährleistet. Entspricht im Kern der Aussage zur zweiten Feststellung. Durch die Trennung der Daten von den Anwendungen ist es möglich die Datenstruktur dynamisch zu entwickeln, ohne bestehende Anwendungen zu gefährden. Anhang 154 15. Lösungen zu den Aufgaben 15.2. Checkfragen: 3. Einführung in die Datenmodellierung 15.2.1. Fragetyp A, Einfachauswahl 1. A) In der externen Ebene wird der für den Benutzer relevante Teil des Datenmodells dargestellt. Auf die Leistung des DBMS hat sie keinen Einfluss, sie ist lediglich ein Ausschnitt des Datenmodells. B) In der konzeptionellen Ebene wird die Datenstruktur unabhängig von einem Ziel-DBMS dargestellt. Überlegungen zur Leistungsbeeinflussung des DBMS sind auf dieser Ebene daher unerwünscht. C) In der internen Ebene wird das Datenmodell für ein bestimmtes DBMS dargestellt. Auf dieser Ebene nehmen Leistungsüberlegungen einen zentralen Punkt ein. D) Siehe Antwort C. E) Siehe Antworten A und B. 15.2.2. Fragetyp E, kausale Verknüpfung 1. 1. + / 2. + Leistungsbestimmende Überlegungen werden nur beim Erstellen des internen Datenmodells, welches auf ein bestimmtes DBMS ausgerichtet ist, einbezogen. Die beiden Aussagen sind ohne Zusammenhang. Der Benutzer muss beim Erstellen des konzeptionellen Modells einbezogen werden, denn nur er kann die Anforderungen an die zu erstellende Anwendung definieren. Meist sind die Benutzer aber nicht in der Lage, das entwickelte Datenmodell zu lesen oder zu überprüfen, sondern müssen gezielt befragt werden. 2. Das konzeptionelle Datenmodell nimmt keinen Bezug auf ein bestimmtes DBMS. Erst beim Erstellen des internen Modells werden Leistungsüberlegungen, bezogen auf ein konkretes DBMS, ausgeführt. weil Die beiden Aussagen sind sinnvoll verknüpft. 2. + Im physischen Design wird entschieden, mittels welcher Hilfsorganisationen (z.B. Index für eine Personalnummer) die effiziente Verarbeitung gewährleistet werden soll. 3. 1. + 1. + / 2. - Das konzeptionelle Datenmodell wird ohne konkreten Bezug auf ein bestimmtes Datenbanksystem erstellt, sondern stellt die Datenstruktur aus abstrakter Sicht dar. Die beiden Aussagen sind ohne Zusammenhang. Das interne Datenmodell wird beim Top-Down-Vorgehen ausgehend vom konzeptionellen Modell abgeleitet. Die Ableitung des internen Modells aus dem konzeptionellen Modell wird daher häufig ausgeführt. 4. 1. + / 2. - Externe Ebene, Benutzersicht und View sind Synonyme. Die beiden Aussagen sind ohne Zusammenhang. Die externe Sicht erlaubt es, die Daten in beliebiger Art und Weise darzustellen (z.B. können zwei Entitätsmengen zu einer Entitätsmenge zusammengefasst werden). Der Benutzer kann daher aus der Benutzersicht keine Rückschlüsse auf das interne Datenmodell ziehen. 5. 1. + Ausgehend vom konzeptionellen Modell werden beim Top-Down-Vorgehen die interne und auch die externen Datenstrukturen abgeleitet. Die beiden Aussagen sind ohne Zusammenhang. Im konzeptionellen Modell werden die Daten aus abstrakter Sicht des Unternehmens dargestellt. Eine Anwendung nimmt dabei meist nur auf einen Ausschnitt des Datenmodells Bezug. / 2. + 15.2.3. Fragetyp K, mehrfache Entscheidung 1. + Anhang Das konzeptionelle Datenmodell wird auf abstrakter Ebene, ohne Berücksichtigung des DBMS oder der Hardware erstellt. Aus dem konzeptionellen Datenmodell werden das interne Datenmodell und die externen Sichten abgeleitet. Das endgültige Datenbankdesign steht mit dem konzeptionellen Modell daher noch nicht fest. Siehe Teilfrage 2 dieser Frage. Mittels des konzeptionellen Datenmodells lassen sich keine Zugriffsbefugnisse realisieren. Mit den externen Datenmodellen können aber Teilsichten auf die Datenbank gebildet werden. Die externen Datenmodelle bieten daher die Möglichkeit, eine erste, einfache Struktur von Zugriffsbefugnissen zu bilden. Indem Benutzern nur jene externen Sichten mit den für sie relevanten Daten zugänglich gemacht werden, können schützenswerte Daten verborgen werden. 15. Lösungen zu den Aufgaben 155 15.3. Checkfragen: 4. Elementarinstrumente des konzeptionellen Datenmodells 15.3.1. Fragetyp A, Einfachauswahl 1. Der Entitätsschlüssel ist immer auch Schlüsselkandidat. Der Entitätsschlüssel ist jener Schlüsselkandidat, der als Entitätsschlüssel festgelegt wurde. B) Ein Entitätsschlüssel kann Fremdschlüssel sein, muss aber nicht Fremdschlüssel sein. C) Die Domäne eines Fremdschlüssels sind immer die Werte eine Entitätsschlüssels. D) Ein Entitätsschlüssel muss immer eindeutig sein. E) Ein Entitätsschlüssel kann aus einem oder beliebig vielen Attributen bestehen. 2. A) Das erweiterte Relationenmodell kennt keine Beziehungsmengen. Dennoch werden Entitätsmengen, welche zwei Entitätsmengen mittels zweier 1:m-Beziehungen verbinden, häufig als Beziehungsmengen bezeichnet. B) Im Entity-Relationship-Modell werden Beziehungsmengen explizit modelliert. C) Das hierarchische Datenmodell kennt keine Beziehungsmengen. D) Das netzwerkartige Datenmodell kennt keine Beziehungsmengen. E) Das relationale Datenmodell kennt keine Beziehungsmengen. 3. 4. A) Siehe Antwort D. B) Korrekte Anwort, bessere Antwort siehe D. C) Jedes Datenmodell des Entity-Relationship-Models lässt sich ohne Informationsverlust in ein relationales Datenmodell umwandeln (und umgekehrt). D) Beim Herleiten des relationalen Modells wird die Beziehungsmenge in eine Entitätsmenge umgewandelt und es werden eine 1:m- und eine 1:1-Beziehung hergestellt. Durch die 1:1-Beziehung kann die neu gebildete Entitätsmenge mit der entsprechenden Entitätsmenge zusammengelegt werden. Dadurch verschwindet die Entitätsmenge und das Attribut wird einer bestehenden Entitätsmenge einverleibt. E) Diese Antwort hat keinen Zusammenhang mit der Frage. 5. 6. A) B) In beiden Modellen spielt die referentielle Integrität eine wichtige Rolle. Der Begriff Navigation wird nur in hierarchischen und netzwerkartigen Datenbanksystemen verwendet. C) Während im Entity-Relationship-Modell Beziehungen immer mittels Beziehungsmengen realisiert werden, werden im erweiterten Relationenmodell keine Beziehungsmengen eingefügt, sondern die Entitätsmengen werden direkt mittels Beziehungen verknüpft. D) Die beiden Modelle unterscheiden sich aufgrund der unterschiedlichen Konzepte etwas in der Darstellung. Die Antwort C ist aber die bessere Antwort. E) Bei beiden Modellen wird der Wertebereich eingesetzt. 7. A) B) Ein Schlüsselkandidat kann mehrere Attribute beinhalten, Antwort E ist aber die bessere Antwort. Schlüsselkandidaten werden aufgrund ihrer eindeutigen Identifizierung der Entitäten einer Entitätsmenge bestimmt. C) Jede Entitätsmenge enthält mindestens einen Schlüsselkandidat, muss aber nicht mehrere Schlüsselkandidaten haben. D) Der Aufbau eines Schlüsselkandidaten kann alle möglichen Formen annehmen. E) Aus der Menge der Schlüsselkandidaten wird der geeignetste als Entitätsschlüssel verwendet. 8. A) Eine Menge verschiedener Datenwerte ist ein Wertebereich, aber keine Assoziation. B) Korrekte Definition der Assoziation. C) Die Beziehung besteht aus einer Assoziation und einer Gegenassoziation. Die Beziehung besteht daher aus zwei Assoziationen. D) Das Attribut beschreibt die Eigenschaften der Entitätsmengen. E) Die Antwort ist ohne tieferen Sinn. A) A) B) C) D) E) A) B) C) D) E) Die 1:1-Beziehung sollte nur für rekursive Beziehungen verwendet werden. Die 1:c-Beziehung tritt im konzeptionellen Modell auf. Die 1:m-Beziehung tritt im konzeptionellen Modell auf. Die 1:mc-Beziehung tritt im konzeptionellen Modell auf. Die c:m-Beziehung tritt im konzeptionellen Modell auf. Blanks stellen die leere Zeichenkette dar, nicht den Wert NULL. Nullen stellen den numerischen Wert Null dar. Die Antwort ist korrekt. HEX-0 - Werte sind numerische Nullen im hexadezimalen System. Diese Antwort hat keinen Zusammenhang mit der Frage. Anhang 156 9. 15. Lösungen zu den Aufgaben A) Diese Eigenschaft wird in der Entitätsintegrität gefordert. B) Dies ist falsch. Entitätsschlüssel werden häufig nicht als Fremdschlüssel verwendet. C) Fremdschlüssel haben dann, wenn keine Beziehung hergestellt werden soll, den NULL-Wert gespeichert. D) Korrekte Definition der referentiellen Integrität. E) NULL-Werte sind in Attributen erlaubt, nur dort können NULL-Werte eingesetzt werden. 15.3.2. Fragetyp B, Zuordnung 1. A) B) C) D) E) Der Begriff Tupel des relationalen Modells entspricht dem Begriff Entität im Entity-Relationship-Model. 2. A) B) C) D) E) Da der Entitätsschlüssel immer eindeutig sein muss, verhindert er identische Entitäten in einer Entitätsmenge (Tabelle). 3. A) B) C) D) E) Der Fremdschlüssel referenziert die Werte eines Entitätsschlüssels und darf nur Werte annehmen, die in der referenzierten Entitätsmenge tatsächlich auftreten. 4. A) B) C) D) E) D) E) Schlüsselkandidaten sind mögliche Entitätsschlüssel. 5. A) B) C) Der NULL-Wert hat in sämtlichen Domänen die Bedeutung von ‘Der Wert ist undefiniert’. 6. A) B) C) D) E) E) Zu einem linken Schuh gehört genau ein rechter Schuh (und umgekehrt). 7. A) B) C) D) Eine Frau kann einen Mann heiraten und ein Mann kann eine Frau heiraten. 8. A) B) C) D) E) Ein Kunde kann zugleich auch ein Werbekunde sein, ein Werbekunde ist aber immer auch (genau ein) Kunde. 9. A) B) C) D) E) Ein Kunde kann durch einen Sachbearbeiter betreut werden und ein Sachbearbeiter hat mehrere Kunden, deren Unterstützung er wahrnehmen muss. 10. A) B) C) D) E) Ein Kunde kann mehrere Konti haben, ein Konto gehört immer genau einem Kunden. 11. A) B) C) D) E) Die Domäne enthält die Menge der erlaubten (verschiedenen) Datenwerte. 12. A) B) C) D) E) E) Die Attribute beschreiben die Eigenschaften der Entitätsmenge. 13. A) B) C) D) Die Entitätsmenge besteht aus einer Menge von Entitäten (Tupel ist Synonym für Entität). 14. A) B) C) D) E) Der Entitätsschlüssel mit einem oder mehreren Attributen identifiziert jede Entität eindeutig. 15. A) B) C) D) Die Beziehungsmenge verknüpft Entitäten von Entitätsmengen miteinander. Anhang E) 15. Lösungen zu den Aufgaben 157 15.3.3. Fragetyp E, kausale Verknüpfung 1. Der Fremdschlüssel entspricht in seinem Aufbau exakt dem Entitätsschlüssel der referenzierten Entitätsmenge. weil Die beiden Aussagen sind korrekt verknüpft. 2. + Würde der Aufbau der beiden Schlüssel nicht übereinstimmen, bestünde die Gefahr, dass mehrere Entitäten gleichzeitig referenziert werden. 2. 1. + / 2. - 1. + Im Entity-Relationship-Modell können m:m-Beziehungen direkt dargestellt werden. Die beiden Aussagen sind ohne Zusammenhang. m:m-Beziehungen werden nicht verhindert, sondern sind explizit erlaubt. 15.3.4. Fragetyp K, mehrfache Entscheidung 1. + 2. + 3. + Das erweiterte Relationenmodell kennt im Gegensatz zum Entity-Relationship-Modell keine Beziehungsmengen. Das erweiterte Relationenmodell hat keine zusätzlichen Elementarinstrumente, dafür fehlt ihm aber die Beziehungsmenge. Das erweiterte Relationenmodell kennt auch den Assoziationstypen mc. Das erweiterte Relationenmodell kann auf allen drei Ebenen verwendet werden. Der Entitätsschlüssel muss immer eindeutig sein. Ein kurzer Entitätsschlüssel ist vorteilhaft. Der Entitätsschlüssel kann Attribute aller möglichen Domänen enthalten. Ein schreib- und lesbarer Entitätsschlüssel erleichtert für Entwickler und Benutzer die Arbeit ungemein. Da sich die effektiv auftretenden Entitätsschlüsselwerte in der durch den Fremdschlüssel referenzierten Entitätsmenge ändern, ändern sich auch die erlaubten Werte für den Fremdschlüssel selbst. Fremdschlüssel können ein Schlüsselkandidat oder ein Teil eines Schlüsselkandidaten (oder auch Entitätsschlüssel) sein, müssen aber nicht. Die referenzielle Integrität ist für den korrekten Zustand der Referenzen verantwortlich. Das DBMS kann nicht von sich aus wissen, welche Fremdschlüssel welche Entitätsmengen referenzieren. Daher müssen diese im DBMS explizit definiert werden. Anhang 158 15. Lösungen zu den Aufgaben 15.4. Bearbeitungsaufgaben: 4. Elementarinstrumente des konzeptionellen Datenmodells 15.4.1. KontoSys, Kontoverwaltungs-System Kunden Konti besitzen gehören Kundenbeziehungen haben KontiUm sätze aus Kontoum sätze Figur 59: Entity-Relationship-Modell von KontoSys Kunden Konti besitzen gehören KundenBeziehungen haben Kontoum sätze Figur 60: Erweitertes Relationenmodell von KontoSys Kunden Attributsname: Kunden# Name Vorname ... Wertebereich: Numerisch 10 Character 20 Character 20 Beschreibung: Kundennummer Name des Kunden Vorname des Kunden Wertebereich: Numerisch 10 Numerisch 10.5 Datum Beschreibung: Kontonummer Aktueller Saldo des Kontos Datum der Kontoeröffnung Wertebereich: Numerisch 10 Numerisch 10 Beschreibung: Kunden.Kunden#, Fremdschlüssel Konti.Konto#, Fremdschlüssel Konti Attributsname: Konto# Betrag Eröffnungsdatum ... Kundenbeziehungen Attributsname: Kunden# Konto# Anhang 15. Lösungen zu den Aufgaben 159 Kontoumsätze Attributsname: Buchungs# Konto# Umsatz ... Wertebereich: Numerisch 10 Numerisch 10 Numerisch 10.5 Beschreibung: Eindeutige Nummer des Kontoumsatzes Konti.Konto#, Fremdschlüssel Verbuchter Umsatz Tabellen 38: Attributskatalog zu KontoSys 15.4.2. RezeptSys, Rezeptverwaltungssystem Stam m rezepte angewandt in Produkte enthalten in verwenden Auftragsvergaben Rezeptzus'setzungen basierend auf Aufträge Figur 61: Entity-Relationship-Modell von RezeptSys Stam m rezepte angewand t in Aufträge Produkte enthalten in verwenden Rezeptzusam m ensetzungen Figur 62: Erweitertes Relationenmodell von RezeptSys Stammrezept Attributsname: Stammrezept_Id Vorgehensbesch. ... Wertebereich: Numerisch 10 Text Beschreibung: Identifikation des Stammrezepts Vorgehensbeschreibung zur Ausführung des Stammrezepts Anhang 160 15. Lösungen zu den Aufgaben Auftrag Attributsname: Auftrags_Id Stammrezept_Id Liter_Färbetrog Wertebereich: Numerisch 10 Numerisch 10 Numerisch 10.3 kg_Material ... Numerisch 10.3 Beschreibung: Identifikation des Auftrags Stammrezept.Stammrezept_Id Anzahl Liter, die der verwendete Färbetrog für diesen Auftrag hat Anzahl kg, die für diesen Auftrag gefärbt werden Attributsname: Wertebereich: Beschreibung: Produkt_Id Character 20 Produktbezeichnung kg_Lagermenge ... Character 80 Identifikation des Produkts (Chemikalien und Farbstoffe werden hier gemeinsam abgelegt) Bezeichnung des Produkts Numerisch 10.3 Aktuelle Anzahl kg im Lager Produkt Rezeptzusammensetzung Attributsname: Zusammensetz_Id Stammrezept_Id Produkt_Id Gramm_Pro_kg Wertebereich: Numerisch 10 Numerisch 10 Character 20 Numerisch 10.3 Gramm_Pro_Liter Numerisch 10.3 Beschreibung: Identifikation des Produktzusammensetzungseintrags Stammrezept.Stammrezept_Id Produkt.Produkt_Id Wieviel Gramm des referenzierten Produkts sollen pro kg Färbematerial für dieses Stammrezept verwendet werden. Wieviel Gramm des referenzierten Produkts sollen pro Liter des Färbetroges für dieses Stammrezept verwendet werden. ... Tabellen 39: Attributskatalog zu RezeptSys Anhang 15. Lösungen zu den Aufgaben 161 15.5. Checkfragen: 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 15.5.1. Fragetyp A, Einfachauswahl 1. A) Falsch, siehe B), C) und D). B) Die Werte der Attribute sind atomar, die Entitätsmenge ist damit in 1. Normalform. C) Keines der Attribute ist nur von einem Teil des Entitätsschlüssels (Personal# oder Filial#) abhängig, die Entitätsmenge erfüllt damit auch die 2. Normalform. D) Zwar ist der Name funktional abhängig vom Nichtschlüsselattribut AHV#, aber die AHV# ist in der Entitätsmenge Schlüsselkandidat. Damit ist die Entitätsmenge auch in 3. Normalform. E) Eine Entitätsmenge in 3. Normalform muss auch die 1. und 2. Normalform erfüllen. Die Antwort kann daher für keine Entitätsmenge zutreffen. 2. A) B) Die Normalisierung wird auf der konzeptionellen Ebene ausgeführt. Die Normalisierung reduziert Redundanzen innerhalb einer Entitätsmenge. Sie ist aber nicht in der Lage, Redundanzen, welche über mehrere Entitätsmengen verteilt sind, zu erkennen. C) Die Normalisierung ist ein kleiner Hilfskoffer, um Redundanzen während der Erstellung des konzeptionellen Modells zu verringern. D) Die Normalisierung zerlegt zwar Entitätsmengen, verfügt aber über keinen Algorithmus, um Entitätsmengen allenfalls wieder zusammenzusetzen. E) Durch die Normalisierung gewinnt das Datenmodell zusätzlich an Aussagekraft. Es werden dabei Entitätsmengen gebildet, welche inhaltlich zusammen gehören. 3. A) siehe C). B) siehe C). C) Werden m:m-Beziehungen direkt realisiert, so wird in der Entitätsmenge, in welcher der Fremdschlüssel eingebettet wird, die 2. Normalform verletzt. Dies, weil sämtliche Attribute, welche nicht zur zu bildenden Entitätsmenge (Beziehungsmenge) gehören, nur von einem Teil des Entitätsschlüssels abhängig sind und zwar von jenem Teil des Entitätsschlüssels, welcher bei der Zerlegung zurückbleiben würde. D) siehe C). E) siehe C). 4. A) B) Korrekte Antwort, beste Antwort siehe C). Es ist nicht das Ziel der Normalisierung, möglichst viele Entitätsmengen zu bilden. Das konzeptionelle Modell sollte ja auch nur so wenig Entitätsmengen wie nötig enthalten. Durch das Zerlegen in inhaltlich zusammengehörige Entitätsmengen entstehen aber zwangsläufig neue Entitätsmengen. C) Durch die Reduzierung der Redundanzen gewinnt das konzeptionelle Modell viel. So ist es besser zu verstehen, führt weniger zu Speicheranomalien, etc. D) Korrekte Antwort, beste Antwort siehe C). E) Korrekte Antwort, beste Antwort siehe C). 15.5.2. Fragetyp B, Zuordnung 1. A) B) C) D) E) Bei der Denormalisierung wird die Datenstruktur bewusst derart verändert, dass die Ausführungsgeschwindigkeit der Anwendung optimal bzw. genügend ist. Dadurch wird die interne Datenstruktur hergeleitet, welche demnach nicht mehr voll normalisiert ist. 2. A) B) C) D) E) Die Normalisierung entfernt unerwünschte Redundanzen in der konzeptionellen Datenstruktur. 3. A) B) C) D) E) Die referentielle Integrität stellt sicher, dass ein Fremdschlüsselwert immer einen korrekten Wert enthält. Die referentielle Integrität ist damit Basis für die Fremdschlüssel-Entitätsschlüssel-Beziehung. 4. A) B) C) D) E) Durch die Normalisierung werden Redundanzen innerhalb der Entitätsmengen reduziert. Dadurch sinkt auch die Wahrscheinlichkeit von Speicheranomalien. 5. A) B) C) D) E) Durch die Normalisierung werden Redundanzen innerhalb der Entitätsmengen reduziert. Dadurch sinkt auch die Wahrscheinlichkeit von Speicheranomalien. Anhang 162 6. 15. Lösungen zu den Aufgaben A) B) C) D) E) Wiederholungsgruppen verletzen die 1. Normalform. Entitätsmengen mit Wiederholungsgruppen sind daher nicht normalisiert. 7. A) B) C) D) E) Die Normalisierung betrachtet ausschliesslich funktionale Abhängigkeiten innerhalb einer Entitätsmenge. Die Fremdschlüsselbeziehung, welche eine funktionale Abhängigkeit über zwei Entitätsmengen herstellt, wird damit nicht untersucht. 8. A) B) C) D) E) Bei der transitiven Abhängigkeit wird eine allfällige funktionale Abhängigkeit unter Nichtschlüsselattributen gesucht. 9. A) B) C) D) E) Bei der Sicherstellung der vollen funktionalen Abhängigkeit der Nichtschlüsselattribute vom Entitätsschlüssel wird dies betrachtet. 10. A) B) C) D) E) Bei der transitiven Abhängigkeit muss sichergestellt werden, dass das Nichtschlüsselattribut, von welchem ein anderes Nichtschlüsselattribut funktional abhängig ist, nicht Schlüsselkandidat ist. 15.5.3. Fragetyp E, kausale Verknüpfung 1. Die Normalisierung findet auf der konzeptionellen Ebene statt und berücksichtigt die Leistung des internen Datenmodells daher nicht. weil Die beiden Aussagen sind korrekt verknüpft. 2. + Hilfsorganisationen werden in der internen Ebene untersucht, daher macht die Normalisierung dazu keine Aussagen. 2. 1. + 1. + / 2. - Durch die systematische Verringerung der Redundanzen verkleinert sich auch die Wahrscheinlichkeit von Fehlern innerhalb der gespeicherten Entitätsmengen. Die beiden Aussagen sind ohne Zusammenhang. Die Normalisierung wird während der Bildung des konzeptionellen Modells verwendet und unterstützt den Ersteller der Datenstruktur bei der Entfernung von Redundanzen. Sie nimmt damit aber nur einen kleinen Teil des gesamten Ablaufs ein. 15.5.4. Fragetyp K, mehrfache Entscheidung 1. + 2. + Anhang Wiederholungsgruppen verletzen die 1. Normalform. Die 2. Normalform stellt sicher, dass alle Nichtschlüsselattribute vom Gesamtschlüssel abhängig sind. Die 1. Normalform verbietet dies aber nicht, so dass es auch in der 1. Normalform Entitätsmengen geben kann, in welchen alle Nichtschlüsselattribute vom Gesamtschlüssel abhängig sind. Das Erstellen von Datensichten ist anhand jeder beliebigen, auch einer nicht normalisierten Entitätsmenge möglich. Die 2. und 3. Normalform entfernen verbleibende Redundanzen in Entitätsmengen der 1. Normalform. Die Normalisierung beseitigt die am häufigsten auftretenden Redundanzen innerhalb einer einzelnen Entitätsmenge. Die Normalisierung findet auf der konzeptionellen Ebene statt. Beim Bilden des internen Modells wird Denormalisiert. Dabei wird die allenfalls ungünstige Datenstruktur des konzeptionellen Modells überarbeitet. Entitätsmengen mit weniger Redundanzen erleiden weniger häufig Speicheranomalien. Die Normalisierung betrachtet immer nur einzelne Entitätsmengen, kann daher über mehrere Entitätsmengen verteilte Redundanzen gar nicht erkennen. 15. Lösungen zu den Aufgaben 3. + 163 Aus einem Geburtsdatum lässt sich eindeutig das Sternzeichen herleiten. Mittels der AHV-Nummer kann mit Hilfe von Registern eindeutig der Name des Inhabers bestimmt werden. Dass aus der AHV-Nummer selbst der Name nicht hergeleitet werden kann ist dabei irrelevant. Entscheidend ist, dass mittels irgendeiner Methode der Name ermittelt werden kann. Allein aus dem Namen kann der Vorname nicht eindeutig bestimmt werden. Ist die Wagennummer bekannt, so kann unter Zuhilfenahme der Eintragungen ermittelt werden, welcher Wagen und damit auch welcher Wagentyp diese Nummer trägt. Anhang 164 15. Lösungen zu den Aufgaben 15.6. Bearbeitungsaufgaben: 5. Normalisierung von Entitätsmengen im konzeptionellen Modell 15.6.1. Projektverwaltung 1. Normalform: Es existieren nur einfache Attributswerte. Projektverwaltung Mitarbeiter# Name Projekt# 1 2 2 3 3 Müller Meier Meier Sieber Sieber 1 2 3 1 2 Projektbezeichnung Staudamm S3 Brücke B134 Tunnel T25 Staudamm S3 Brücke B134 StatusCode A B B A B StatusBezeichnung aktiv offeriert offeriert aktiv offeriert Tabelle 40: Attributskatalog Projektverwaltung in 1. Normalform 2. Normalform: Jedes nicht zum Entitätsschlüssel gehörige Attribut ist voll von diesem abhängig. Mitarbeiter Mitarbeiter# 1 2 3 Name Müller Meier Sieber Projekte Projekt# 1 2 3 Projektbezeichnung Staudamm S3 Brücke B134 Tunnel T25 StatusCode A B B StatusBezeichnung aktiv offeriert offeriert Projektmitarbeit Mitarbeiter# 1 2 2 3 3 Projekt# 1 2 3 1 2 Tabellen 41: Attributskatalog Projektverwaltung in 2. Normalform 3. Normalform: Kein Attribut, das nicht zum Entitätsschlüssel gehört, ist transitiv von diesem abhängig. Projekte Projekt# 1 2 3 Projektstati Projektbezeichnung Staudamm S3 Brücke B134 Tunnel T25 StatusCode A B B StatusCode A B StatusBezeichnung aktiv offeriert Tabelle 42: Attributskatalog Projektverwaltung in 3. Normalform Anhang 15. Lösungen zu den Aufgaben 165 15.6.2. Buchhandelssystem 1. Normalform: Es existieren nur einfache Attributswerte. Bestellungen Bestell_Nr 1 1 2 3 4 4 Bestell_Datum 4. März 4. März 6. März 7. März 7. März 7. März Buch_Nr 232-41 343-21 534-45 231-55 232-41 232-41 Buch_Bez Mörder im Rosengarten Der Tod im Schulzimmer Vegetarier leben länger Sinue und Echnaton Mörder im Rosengarten Mörder im Rosengarten Besteller_Nr 1 1 2 1 3 4 Besteller Fritz Müller Fritz Müller Hans Meier Fritz Müller Urs Schmid Rita Gugolz Tabelle 43: Attributskatalog Buchhandelssystem in 1. Normalform 2. Normalform: Jedes nicht zum Entitätsschlüssel gehörige Attribut ist voll von diesem abhängig. Bestellungen Bestell_Nr 1 2 3 4 Bestell_Datum 4. März 6. März 7. März 7. März Besteller Bestellungen / Besteller Besteller_Nr 1 2 3 4 Besteller Fritz Müller Hans Meier Urs Schmid Rita Gugolz Bücher Buch_Nr 232-41 343-21 534-45 231-55 Besteller_Nr 1 2 1 3 4 Bestell_Nr 1 2 3 4 4 Bestellpositionen Buch_Bez Mörder im Rosengarten Der Tod im Schulzimmer Vegetarier leben länger Sinue und Echnaton Bestell_Nr 1 1 2 3 4 Buch_Nr 232-41 343-21 534-45 231-55 232-41 Tabellen 44: Attributskatalog Buchhandelssystem in 2. Normalform 3. Normalform: Kein Attribut, das nicht zum Entitätsschlüssel gehört, ist transitiv von diesem abhängig: Die Entitätsmengen sind bereits in 3. Normalform. Anhang 166 15. Lösungen zu den Aufgaben 15.6.3. Wagenvermietung 1. Normalform: Es existieren nur einfache Attributswerte. Wagen Wagen_Nr 1 1 1 2 2 3 3 4 Kennzeichen ZH 333 666 ZH 333 666 ZH 333 666 ZH 111 222 ZH 111 222 ZH 100 000 ZH 100 000 ZH 25 25 25 Wagentyp Mercedes 190 Mercedes 190 Mercedes 190 Toyota MR2 Toyota MR2 Suzuki Swift Suzuki Swift Mercedes 190 Fr/km 0.80 0.80 0.80 0.75 0.75 0.50 0.50 0.80 Mieter_Nr 3 64 19 5 3 19 5 <NULL> Datum 11.11 2.5 14.3 5.8 24.4 12.3 12.8 <NULL> Preis Total 160,00 160.00 400,00 560.00 200.00 760.00 82.50 82.50 150.00 232.50 200.00 200.00 50.00 250.00 <NULL> <NULL> Mieter Mieter_Nr 3 3 64 5 5 19 19 Name Maier Maier Meier Meyer Meyer Meyr Meyr Total 160.00 310.00 400.00 82.50 132.50 200.00 400.00 Zahl_Datum 1.12 26.4 2.6 3.9 3.9 28.3 28.3 Zahl_Betrag 160.00 150.00 400.00 82.50 50.00 200.00 200.00 Rech_Nr 1 2 3 4 5 6 7 Tabellen 45: Attributskatalog Wagenvermietung in 1. NF Bemerkungen: Der ursprüngliche Entitätsschlüssel beider Entitätsmengen ist nicht mehr eindeutig, so dass in beiden Entitätsmengen der Entitätsschlüssel um geeignete Attribute erweitert werden muss. In der Entitätsmenge 'Wagen' wird der Entitätsschlüssel mit den beiden Attributen 'Mieter_Nr' und 'Datum' ergänzt, alle drei Attribute sind notwendig. In der Entitätsmenge 'Mieter' gibt es kein geeignetes Attribut, so dass sogar ein neues Attribut eingefügt werden muss! Oben wurde das Attribut 'Rech_Nr' (numerisch fortlaufend) eingeführt, in der Meinung, dass pro Mietwagen eine Rechnung erstellt wird. Der Entitätsschlüssel der Entitätsmenge 'Wagen' enthält zum Teil NULL-Werte im Schlüssel, was gemäss Entitätsintegrität verboten ist! Wir wollen diesen Zustand hier vorübergehend erlauben, da dieser Umstand im folgenden Normalisierungsschritt wieder verschwindet. Der Inhalt der Felder 'Total' in der Entitätsmenge 'Wagen' und in der Entitätsmenge 'Mieter' ist schwierig zu interpretieren. Diese Felder sollen im folgenden Schritt eliminiert werden, da die in ihnen enthaltene Information mit Hilfe der restlichen Daten sowieso ermittelt werden kann und damit eher die Gefahr besteht, dass Widersprüche in den Daten entstehen. Die Normalisierung macht zu derartigen Situationen auf der konzeptionellen Ebene keine Aussagen. Auf der internen Ebene ist es durchaus denkbar, diese Felder aus Performance-Gründen bewusst in das Modell aufzunehmen. Möglich und eigentlich auch die bessere Lösung wäre es, in der Entitätsmenge 'Wagen' ebenfalls das Attribut 'Rech_Nr' einzuführen (was die Normalisierung nicht macht). Dann wäre 'Rech_Nr' der Entitätsschlüssel. Dies darum, weil durch die Felder 'Preis' und 'Zahl_Betrag' eigentlich eine weitere Beziehung zwischen den beiden Entitätsmengen hergestellt wird, die in den weiteren Schritten verloren geht. Sodass Anhang 15. Lösungen zu den Aufgaben 167 schlussendlich nicht mehr sicher festgestellt werden kann, welcher Wagen einer bestimmten Rechnung zugeordnet ist. Hier spürt man ganz deutlich, dass die Normalisierung kein Allheilmittel ist. Sie muss mit Bedacht angewendet werden. Wir wollen in den folgenden Schritten diese Überlegungen aber weglassen und mit den oben gezeigten Entitätsmengen weiterarbeiten. 2. Normalform: Jedes nicht zum Entitätsschlüssel gehörige Attribut ist voll von diesem abhängig. Wagen Wagen_Nr Kennzeichen Wagentyp 1 2 3 4 Mercedes 190 Toyota MR2 Suzuki Swift Mercedes 190 ZH 333 666 ZH 111 222 ZH 100 000 ZH 25 25 25 Fr/km 0.80 0.75 0.50 0.80 Preise Wagen_Nr Mieter_Nr Datum 1 1 1 2 2 3 3 11.11 2.5 14.3 5.8 24.4 12.3 12.8 3 64 19 5 3 19 5 Preis 160.00 400.00 200.00 82.50 150.00 200.00 50.00 Mieter Mieter_Nr 3 3 64 5 5 19 19 Name Maier Maier Meier Meyer Meyer Meyr Meyr Zahl_Datum 1.12 26.4 2.6 3.9 3.9 28.3 28.3 Zahl_Betrag 160.00 150.00 400.00 82.50 50.00 200.00 200.00 Rech_Nr 1 2 3 4 5 6 7 Tabellen 46: Attributskatalog Wagenvermietung in 2. NF Bemerkungen: Aus der Entitätsmenge 'Wagen' in erster Normalform könnten theoretisch 7 Entitätsmengen in 2. Normalform abgeleitet werden. Die Entitätsschlüssel dieser Entitätsmengen wären: 1. 2. 3. 4. Wagen_Nr Mieter_Nr Datum Wagen_Nr, Mieter_Nr 5. Wagen_Nr, Datum 6. Mieter_Nr, Datum 7. Wagen_Nr, Mieter_Nr, Datum Es ist allerdings nicht sinnvoll, jede dieser Entitätsmengen zu bilden. Welche Entitätsmengen sollen nun gebildet werden? Es müssen jene Entitätsmengen gebildet werden, deren Weglassen zu einem Informationsverlust führen würde. Oder umgekehrt: Aus den gebildeten Entitätsmengen muss sich die ursprüngliche Entitätsmenge in 1. Normalform wieder herleiten lassen. Dieser Entscheid ist nicht immer einfach und es treten in diesem Zusammenhang auch häufig Fragen über die abzubildende Realität auf. Anhang 168 15. Lösungen zu den Aufgaben Die Entitätsmenge Mieter kann die 2. Normalform nicht verletzen, da der Entitätsschlüssel aus nur einem Attribut besteht. 3. Normalform: Kein Attribut, das nicht zum Entitätsschlüssel gehört, ist transitiv von diesem abhängig. Wagen Wagen_Nr 1 2 3 4 Kennzeichen ZH 333 666 ZH 111 222 ZH 100 000 ZH 25 25 25 Wagentyp Mercedes 190 Toyota MR2 Suzuki Swift Mercedes 190 Wagenpreise Wagentyp Mercedes 190 Toyota MR2 Suzuki Swift Fr/km 0.80 0.75 0.50 Preise Wagen_Nr 1 1 1 2 2 3 3 Mieter_Nr 3 64 19 5 3 19 5 Mieter Mieter_Nr 3 64 5 19 Name Maier Meier Meyer Meyr Datum 11.11 2.5 14.3 5.8 24.4 12.3 12.8 Preis 160.00 400.00 200.00 82.50 150.00 200.00 50.00 Rechnung Mieter_Nr 3 3 64 5 5 19 19 Zahl_Datum 1.12 26.4 2.6 3.9 3.9 28.3 28.3 Zahl_Betrag 160.00 150.00 400.00 82.50 50.00 200.00 200.00 Rech_Nr 1 2 3 4 5 6 7 Tabellen 47: Attributskatalog Wagenvermietung in 3. NF Bemerkungen: Die Entitätsmenge Wagen und die Entitätsmenge Mieter weisen je eine transitive Abhängigkeit auf, diese wurden beseitigt (Wagen.WagentypWagen.Fr/km und Mieter.Mieter_NrMieter.Name). Anhang 15. Lösungen zu den Aufgaben 169 15.7. Checkfragen: 6. Verbundinstrumente des konzeptionellen Modells 15.7.1. Fragetyp A, Einfachauswahl 1. A) Es werden nicht zwei, sondern es wird nur eine Entitätsmenge verknüpft. B) Bei der Auflösung von mc:mc-Beziehungen entstehen keine rekursiven Verknüpfungen. C) Die dritte Normalform darf auf der konzeptionellen Ebene nicht verletzt werden, auch nicht durch rekursive Beziehungen. D) Die Antwort ist korrekt. E) Zur Erstellung von Beziehungen werden immer Fremdschlüssel benötigt. 2. A) Die Spezialisierung beschreibt einen Vorgang, der mehrere Entitätsmengen umfasst, nicht einen Vorgang, der sich innerhalb einer einzelnen Entitätsmenge abspielt. B) Korrekt. Die Superentitätsmenge enthält dabei alle den Entitätsmengen gemeinsamen Attribute. Die Subentitätsmengen erhalten die jeweils spezifischen Attribute. C) Selbstbezügliche Beziehungsmengen existieren nicht. D) Es entstehen ausschliesslich 1:c-Beziehungen. E) Bei der Hierarchie handelt es sich um 1:m-, bzw. 1:mc-Beziehungen, bei der Spezialisierung um 1:c-Beziehungen. 3. A) B) C) D) E) Falsch. Falsch. Falsch. Korrekt. Die Stückliste kann ausschliesslich mittels der Aggregation gebildet werden. Falsch. 15.7.2. Fragetyp E, kausale Verknüpfung 1. Jede Entität der untergeordneten Entitätsmenge ‘hat’ genau einen Vater in der übergeordneten Entitätsmenge. weil Die beiden Aussagen sind korrekt verknüpft. 2. + Zur Ermöglichung der Beziehung wird in der untergeordneten Entitätsmenge der Fremdschlüssel eingefügt. Da pro Fremdschlüssel aber genau eine Entität referenziert werden kann, kann eine Entität der untergeordneten Entitätsmenge nur genau eine Entität der übergeordneten Entitätsmenge referenzieren. 1. 1. + 1. + / 2. - Mittels einer Beziehungsstruktur können tatsächlich beliebig viele Entitätsmengen miteinander verknüpft werden. In der Praxis findet man sehr häufig den Fall, bei welchem zwei Entitätsmengen verknüpft werden. Die beiden Aussagen sind ohne Zusammenhang. Der Fremdschlüssel steckt immer in der untergeordneten Entitätsmenge. In dieser Entitätsmenge ist er aber sicher nicht Entitätsschlüssel, ansonsten könnten die beiden Entitätsmengen zusammengefasst werden. Der Fremdschlüssel kann aber ganz oder teilweise Teil des Entitätsschlüssels sein. 15.7.3. Fragetyp K, mehrfache Entscheidung 1. + 2. + Bei der Spezialisierung werden die Subentitätsmengen, bei der Generalisierung die Superentitätsmenge gebildet. Man kann die beiden Vorgänge daher tatsächlich als ‘umgekehrt’ bezeichnen. Es werden eine Super- oder mehrere Subentitätsmengen neu gebildet. Korrekt. Die zyklische Verknüpfung ist ohne Zusammenhang zur Spezialisierung/Generalisierung. Bei der Aggregation werden zwei Fremdschlüssel in die untergeordnete Entitätsmenge eingebettet. siehe Antwort oben.. Nicht nur die übergeordnete Entitätsmenge kann Attribute enthalten, auch die untergeordnete Entitätsmenge kann Attribute enthalten. Aggregation und Generalisierung haben nichts gemeinsam. Anhang 170 3. + Anhang 15. Lösungen zu den Aufgaben Korrekt. Die Referenzierung des Fremdschlüssels erfolgt immer mittels Entitätsschlüssels der referenzierten Entitätsmenge. Korrekt. Sämtliche Eigenschaften (z.B. Name in der Superentitätsmenge Partner) werden auf die Subentitätsmengen vererbt (z.B. auf die Subentitätsmenge Angestellte). Subentitäten ist immer genau eine Entität der Superentitätsmenge zugeordnet. 15. Lösungen zu den Aufgaben 171 15.8. Bearbeitungsaufgaben: 6. Verbundinstrumente des konzeptionellen Modells 15.8.1. Liversys Partner Mieter Eigentüm er Liegenschaften besitzen im Besitz von bestehen aus Eigentum sverhältnisse m ieten Häuser Mieterverträge m it Ortsverzeichnis um fassen Mietverhältnisse enthalten Strassenverzeichnis Mietobjekte lokalisiert an Adressen Figur 63: Erweitertes Relationenmodell von Liversys Partner Partner_Nr Name 6 14 18 35 Keller Ott Ruf Zürcher Vorname Hans Urs Urs Ralf Mieter Mieter_Nr 6 14 18 Verrechnungsweg LSV LSV Rechnung Eigentümer Eigentümer_Nr 6 35 Abrechnungsmodus monatlich quartalsweise Liegenschaften Liegenschafts_Nr 1 2 Bezeichnung Sonnenhof Römertor Wert 3'500'000 62'250'000 Anhang 172 15. Lösungen zu den Aufgaben Häuser HausId SonBlau SonRot Liegenschafts_Nr 1 1 Haus_Nr 4572 2134 Baujahr 93 95 Mietobjekte Mietobjekt_Nr 2352 2353 2354 HausId SonBlau SonBlau SonRot Mietvertrags_Nr 10021 10021 10022 Beschreibung 2-Zimmer Wohnung Garagenplatz 6½-Zimmer Wohnung Anz_Zimmer 2 <NULL> 6½ Eigentumsverhältnisse Eigentümer_Nr 6 35 35 Liegenschafts# 1 1 2 Mietverträge Mietvertrags_Nr 10021 10022 Gültig_Ab_Datum 1. Mai 1. September Mietzins 2'000,00 3'750,00 Mietverhältnisse Mietvertrags_Nr 10021 10021 10022 Mieter_Nr 6 14 18 Ortsverzeichnis PLZ CH-8000 CH-8405 CH-9000 Ort Zürich Winterthur St.Gallen Strassenverzeichnis StrassenId ZHBach WintiSunne WintiLerchen Strassenname Bächliweg Sunnewis Im Lerchenweg PLZ CH-8000 CH-8405 CH-8405 Adressen StrassenId ZHBach ZHBach SGLerchen Mietobjekt_Nr 2352 2353 2354 Strassen_Nr 23 23B 2 Adresstyp Postadresse Lage Postadresse Tabellen 48: Attributskatalog mit Beispieldaten zu Liversys Anhang 15. Lösungen zu den Aufgaben 173 In den Entitätsmengen Mieter und Eigentümer wurden für die Entitätsschlüssel die Namen Mieter_Nr und Eigentümer_Nr vergeben. Diese sind beide gleichzeitig auch Fremdschlüssel und referenzieren die Partner_Nr in der Entitätsmenge Partner. Es wäre auch denkbar, die beiden Fremdschlüssel ebenfalls Partner_Nr zu nennen, inhaltlich würde sich dadurch nichts ändern. Durch die Vergabe von neuen Namen ist allerdings in untergeordneten Entitätsmengen direkt ersichtlich, welche Entitätsmenge diese referenzieren. So lässt sich z.B. in der Entitätsmenge Mietverhältnis direkt ersehen, dass diese auf die Entitätsmenge Mieter und nicht die Entitätsmenge Partner verweist. Anstatt die Entitätsmengen Partner, Mieter und Eigentümer 'mengenmässig' darzustellen, können diese auch wie folgt dargestellt werden: Partner können sein können sein Mieter Eigentüm er Figur 64: Spezialisierung der Entitätsmenge Partner Partner Mieter Eigentüm er Hauswarte Liegenschaften besitzen im Besitz von unterhalten bestehen aus Eigentum sverhältnisse Häuser Mieterverträge m it Ortsverzeichnis um fassen enthalten unterhalten Mietverhältnisse Strassenverzeichnis Mietobjekte lokalisiert an Adressen Figur 65: Erweitertes Relationenmodell von Liversys ergänzt um Hauswarte In der obigen Lösung können Hauswarte je nach Bedarf Häusern und/oder Mietobjekten zugeordnet werden. Falls Hauswarte auch Liegenschaften zugeordnet werden können müssen, würde auch zwischen Hauswarten und Liegenschaften eine Beziehung erstellt. In dieser Lösung muss definiert werden, ob eine Beziehung zu einem Mietobjekt erlaubt ist, falls ein anderer Hauswart bereits mit dem übergeordneten Haus des Mietobjekts verknüpft wurde und gegebenenfalls eine entsprechende Integritätsregel erstellt werden. Anhang 174 15. Lösungen zu den Aufgaben Mieter Mietverträge m it m ieten Mieterverhältnisse um fassen Mietobjekte Figur 66: Externes Schema 'Mutation von Mietverträgen' Partner können sein Eigentüm er Figur 67: Externes Schema 'Mutation von Eigentümer' Anhang 15. Lösungen zu den Aufgaben 175 15.8.2. Transpo Dispozentrale Länder Ortsverzeichnis Partner Filialen aktueller Standort aktuell gelagert in im Besitz von Auftraggeber Fahrer Em pfänger Fahrzeugtypen Aufträge Transportwege Auftragspositionen Routen Fahrerqualifikationen Transportm ittel AuftragspositionenRouten Figur 68: Erweitertes Relationenmodell von Transpo Bemerkungen: Im Datenmodell wurde keine Entitätsmenge für die Artikel gebildet. Ein Artikelstamm ist dann sinnvoll, wenn durch die Transpo AG immer wieder die selben Artikel befördert werden. Dann könnten die interessierenden Eigenschaften (Attribute) der Artikel zentral verwaltet werden. Ein derartiger Entscheid kann in der Praxis nur in direkter Absprache mit dem Benutzer gefällt werden. Es wäre auch möglich, häufig transportierte Artikel im Stamm zu erfassen und Einzelfälle speziell zu behandeln. In den Subentitätsmengen der Superentitätsmenge Partner wurde für den Fremdschlüssel, welcher die Entitätsmenge Partner referenziert (und gleichzeitig Entitätsschlüssel ist), ein eigener Name vergeben (z.B. Auftraggeber_Nr). Dadurch ist in Entitätsmengen, welche die Subentitätsmengen referenzierten (z.B. in Aufträge) sofort ersichtlich, welche Subentitätsmenge referenziert wird. Allerdings ist in den Subentitätsmengen dadurch nicht mehr direkt ersichtlich, welches Attribut Fremdschlüssel ist und die Entitätsmenge Partner referenziert. Diese Information muss im Attributskatalog zum Datenmodell explizit festgehalten werden. Die Materialnummer in der Entitätsmenge Auftragspositionen wird durch die Transpo AG vergeben und wird nicht durch den Auftraggeber übermittelt. Anhang 176 15. Lösungen zu den Aufgaben Partner Partner_Nr 1 2 4 5 6 7 8 9 403 Name Rufi AG Flexi AG Velos & Mofas Filiale Russikon Filiale St.Gallen SVF Müller Filiale Zürich Donate Vorname <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> <NULL> Mario Strasse Langackerstr. 12 Bächliweg 8 Bächliweg 112 Tüfiwis 4 Zürcherstr. 2 Grüntalstr. 25 Langweg 2 Usterstr. 2 Seeweg 2 Land CH CH CH CH CH CH CH CH CH PLZ 8001 8001 8001 8332 9000 9303 9003 8050 8052 Tel_Nr 071 - 25 40 90 01 - 363 89 56 01 - 363 20 40 01 - 955 05 00 071 - 25 40 93 071 - 38 34 19 071 - 23 78 70 01 - 565 55 66 01 424 45 95 Auftraggeber Auftraggeber_Nr 1 Zahlungsstatus ok Empfänger Empfänger_Nr 2 4 Ansprechpartner Müller Meier Filialen Filial_Nr 5 6 9 Domizil RU SG ZU Fahrer Fahrer_Nr 8 403 Angestellt in_Filial_Nr 6 9 Ortsverzeichnis Land PLZ Ortsname CH CH CH CH CH CH CH 8001 8050 8052 8400 9000 9003 9303 Zürich Zürich Zürich Winterthur St. Gallen St. Gallen Wittenbach Länder Land CH Bezeichnung Schweiz Währung SFr Aufträge Auftrags_Nr Anhang Auftraggeber_Nr Auftragsd. Abhold. Rechnungs_Nr Rechungsd. Zahlungsstatus 15. Lösungen zu den Aufgaben 7721 1 12. Mai 2. Juni 4679 30. Juni 177 offen Anhang 178 15. Lösungen zu den Aufgaben Auftragspositionen Material _Nr Artikelbez. Auftrags _Nr Empf _Nr Lieferd. Anz. 23509 Schreibm . Fahrräder 7721 2 3 7732 12 14. Juni 14. Juni 23798 Gewicht/ Stück 0.4 12 8.3 Masse Info Kosten 30x20x15 Tel. 25.40 6 150x40x100 Post 23.60 6 Auftragspositionen-Routen Material_Nr 23509 23509 23509 23798 Transportweg_Nr Routen_Nr 1 4 5 6 7706 7707 7721 7721 Transportwege Transportweg_Nr Von Nach 1 2 3 4 5 6 1 5 7 6 9 9 6 6 6 9 2 4 Fahrzeugtyp_Code A A A Z C C Distanz Kosten/kg/km <NULL> 10.00 <NULL> 7.80 <NULL> <NULL> 8.0 <NULL> 8.5 <NULL> 14.5 7.4 Routen Routen_Nr 2341 Uhrzeit Datum 8:00 12. Juni Fahrer_Nr 3 Transportmittel_Nr 1 Fahrzeugtypen Fahrzeugtyp_Code A Bezeichnung Fahrzeugkategorie A Fahrzeugkategorie B Fahrzeugkategorie C Flugzeug Zug B C F Z Fahrerqualifikationen Fahrer_Nr Fahrzeugtyp_Code 3 3 8 A C A Transportmittel Transportmittel_Nr 1 2 3 Anhang Transportmittelbezeichnung LW 2-1, ZH 244 468 LW 2-1, ZH 295 4331 Zug D2709 Fahrzeugtyp_Code A A Z Standort_Filiale Besitzt_Filiale 6 6 9 5 6 5 Lagerort 15. Lösungen zu den Aufgaben 4 5 Flug SR 133 LK 233, SG 123 433 F B 9 5 179 9 9 Tabellen 49: Attributskatalog mit Beispieldaten zu Liversys Anhang 180 15. Lösungen zu den Aufgaben 15.9. Checkfragen: 8. Integrität im konzeptionellen Modell 15.9.1. Fragetyp A, Einfachauswahl 1. A) Die Anmeldung des Benutzers nennt sich Identifikation. B) Die Komprimierung hat keinen Zusammenhang mit der Authentisierung. C) Anhand der Identifikation und eines Kennwortes wird die Zugriffsberechtigung des Benutzers überprüft. D) Die Verdichtung hat keinen Zusammenhang mit der Authentisierung. E) Durch Verschlüsselung der Daten werden diese zwar vor unerwünschten Zugriffen geschützt, jedoch ist diese Verschlüsselung ohne Zusammenhang zur Authentisierung. 2. A) B) C) D) E) Datenkonsistenz ist Teil der Datenintegrität. Datensicherheit ist Teil der Datenintegrität. Datenschutz ist Teil der Datenintegrität. Referenzielle Integrität ist Teil der Datenkonsistenz. Entitätsintegrität ist Teil der Datenkonsistenz. 15.9.2. Fragetyp K, mehrfache Entscheidung 1. + Anhang Korrekt. Korrekt. Korrekt. Korrekt. 15. Lösungen zu den Aufgaben 181 15.10. Checkfragen: 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 15.10.1. Fragetyp A, Einfachauswahl 1. A) B) C) D) E) Hashing hat keinen Zusammenhang mit Netzwerk-Datenbankstrukturen. Hashing verwendet für den Zugriff den Entitäts- oder Fremdschlüssel. Mittels Hashing ist sequentielles Lesen nur sehr schwierig zu realisieren. Korrekt. Meistens wird das Divisionsrest-Verfahren zur Bestimmung der Ziel-Blockadresse aus dem Schlüsselwert verwendet. Die Antwort hat keinen Zusammenhang mit der Frage. 2. Mittels Before-Images werden Daten zurückgesetzt. Die Logdatei protokolliert sämtliche Änderungen fortlaufend und unmittelbar, ein Wiederherstellen der Logdatei ist damit überflüssig. C) Änderungen, welche vom Puffer noch nicht in den Externspeicher übertragen wurden, werden mittels After-Images nachträglich auf das Externspeichermedium geschrieben. D) Korrekte Antwort. Der Rollforward ist der Begriff für den unter C) beschriebenen Vorgang. C) ist die bessere Antwort. E) After-Images protokollieren nicht nur Änderungen an den Metadaten, sondern Änderungen an sämtlichen Daten. 3. A) Korrekte Antwort, beste Antwort siehe C). B) Korrekte Antwort, beste Antwort siehe C). C) Der Begriff Recovery umschreibt eine Vielzahl von Aktivitäten, um die Integrität der Daten im Fehlerfalle zu sichern. Die unter C) gegebene Definition ist sicherlich die umfassendste Definition. D) Korrekte Antwort, beste Antwort siehe C). E) Korrekte Antwort, beste Antwort siehe C). 4. A) Der Zugriffspfad hat tatsächlich mit der physischen Speicherung der Daten zu tun. Allerdings nicht mit der Speicherung der Daten selbst, sondern mit dem Zugriff auf die Daten. B) Der physische Zugriffspfad ist nicht Teil der konzeptionellen Modellierung. C) Die Beschreibung ist korrekt, der Zugriffspfad besteht vollständig aus redundanter Information. Dies mag im ersten Moment erstaunen, ist aber auf den zweiten Blick leicht einzusehen. D) Der Zugriffspfad hat direkt nichts mit dem Logging zu tun, wohl aber müssen Änderungen am Zugriffspfad mit dem Logging des DBMS abgestimmt werden. E) Der Zugriffspfad ist zur Beschleunigung des Zugriffs auf die Daten gedacht. Der Zugriffspfad kann den Zugriff auf die Daten um 10er-Potenzen beschleunigen. Intelligente Datenbanksysteme nutzen den Zugriffspfad auch, wenn Informationen gesucht werden, die vollständig im Zugriffspfad abgelegt sind (z.B. kann ausschliesslich mittels eines Zugriffspfades für Namen ermittelt werden, wie viele Kunden ‘Müller’ heissen). 5. A) Je kleiner der Sperrbereich, desto kleiner die Wahrscheinlichkeit, dass unterschiedliche Benutzer den selben Sperrbereich benötigen. Damit steigt die parallele Verarbeitung im System. B) Je kleiner der Sperrbereich, desto mehr Sperren fallen an (z.B. Sperren einer Relation oder Sperren von 20 Tupeln). Damit steigt der Verwaltungsaufwand für das DBMS. C) Je kleiner der Sperrbereich, desto kleiner die Wahrscheinlichkeit, dass unterschiedliche Benutzer den selben Sperrbereich benötigen. Damit sinkt tendenziell die Wahrscheinlichkeit eines Deadlocks. D) Die Anzahl Änderungen welche durch das Logging protokolliert werden müssen, ist unabhängig von der Grösse des Sperrbereichs. E) Aussage E) ist die entgegengesetzte Antwort zur Aussage B). 6. A) A) B) Falsch. Die Datenkonsistenz wäre nur sichergestellt, wenn für jede Lese-Operation ebenfalls ein Exclusiv-Lock gesetzt würde. Ohne Sperren können gelesene Daten zur Laufzeit der Transaktion geändert werden, so dass eine inkonsistente Sicht auf die Daten entsteht. B) Die Datenkonsistenz ist unabhängig vom Datenbanksystem immer wichtig. C) Nach Verletzungen der Konsistenz ist es oft schwierig, meist unmöglich, den korrekten Zustand allein aufgrund der Daten wieder herzustellen. D) Die Konsistenz kann nur dann garantiert werden, wenn alle gelesenen Daten vor dem eigentlichen Lese-Zugriff durch eine unnötige Änderungsoperation exklusiv gesperrt werden. E) Falsch, siehe D). Anhang 182 7. 15. Lösungen zu den Aufgaben A) Mittels Rollback können die Änderungsoperationen der Transaktion auf den Ausgangszustand zurückgesetzt werden. B) Die Änderungen der Transaktion werden in den Before- und After-Images protokolliert. C) Korrekte, beste Antwort. D) Während der Transaktion können bestimmte Konsistenzbedingungen verletzt sein (z.B. Ausgleich der Soll- und Haben-Buchungen). Am Ende der Transaktion müssen aber alle Konsistenzbedingungen wieder erfüllt sein. Können nicht alle Konsistenzbedingungen erfüllt werden, muss die Transaktion zurückgesetzt werden. E) Die Aussage ist korrekt, C) ist aber die bessere Antwort. 15.10.2. Fragetyp B, Zuordnung 1. A) B) C) D) E) E) Teil der Definition einer Konsistenzbedingung ist die Reaktionsregel. 2. A) B) C) D) Der Checkpoint unterteilt das Log-Band (Archiv-Protokolldatei) in Abschnitte. Mittels Checkpoint lässt sich sicherstellen, dass die Daten des Puffers in das externe Speichermedium übertragen wurden. Dadurch muss nach einem Systemabsturz der Rollforward nicht mit der ganzen Protokolldatei, sondern erst ab dem Checkpoint ausgeführt werden. 3. A) B) C) D) E) Das Recovery dient der Wiederherstellung eines konsistenten Datenbankzustandes. Mittels Rollback werden Änderungen fehlerhafter, konsistenzverletzender Transaktionen aus der Datenbasis entfernt. 4. A) B) C) D) E) Das Sperrprotokoll stellt mittels Sperren auf Daten sicher, das keiner der parallel arbeitenden Benutzer eine inkonsistente Sicht auf die Daten erhält. 5. A) B) C) D) E) Im Generationsprinzip werden mehrere Archivkopien zyklisch für die Datensicherung verwendet. Dadurch sind einerseits ältere Datenbestände rekonstruierbar. Andererseits kann bei einem Speicherfehler auf der aktuellsten Archivkopie wenigstens noch auf eine Vorgängerversion zurückgegriffen werden. 6. A) B) C) D) E) Einzig im pessimistischen Verfahren können Deadlocksituationen auftreten. 7. A) B) C) D) E) Im pessimistischen Verfahren kann garantiert werden, dass selbst bei höchster Last auf dem Datenbanksystem immer wieder Transaktionen erfolgreich abschliessen können. 8. A) B) C) D) E) Im Zeitstempelverfahren werden die Informationen über die Zugriffe bei den Daten selbst abgelegt und nicht zentral in einer Tabelle verwaltet. 9. A) B) C) D) E) B) C) D) E) Siehe Antwort 8. 10. A) Im pessimistischen Verfahren werden die Sperren zentral in einer Tabelle (Lock-Tabelle) verwaltet. 11. A) B) C) D) E) Das After-Image enthält die Informationen, wie die Daten nach der Änderung aussehen. 12. A) B) C) D) E) Mittels Checkpoint kann bei einem Systemabsturz der Recovery-Aufwand reduziert werden. Dank dem Checkpoint müssen nur jene Änderungen der Protokolldatei in die Datenbasis eingespiesen werden (Rollforward), welche nach dem Checkpoint ausgeführt wurden. 13. A) B) C) D) E) Die Transaktion bildet aus einzelnen Datenbankbefehlen eine atomare Operation. 14. A) B) C) D) E) Der Checkpoint veranlasst den Systempufferverwalter, sämtliche geänderten Pufferseiten in den Externspeicher zu schreiben. Anhang 15. Lösungen zu den Aufgaben 15. A) B) C) D) 183 E) Die Transaktion bzw. die Transaktionsgrenzen steuern, ab und bis wann Sperren gesetzt und freigegeben werden. 16. A) B) C) D) E) Die Entitätsmengenverwaltung übersetzt mengenorientierte Befehle in satzorientierte Befehle, die dem Entitätenverwalter übergeben werden. 17. A) B) C) D) E) Der Entitätsmengenverwalter hat die Aufgabe, die mengenorientierten Befehle in satzorientierte Befehle umzusetzen. Dabei muss er den geeigneten Zugriffsweg unter Berücksichtigung der bestehenden Zugriffspfade ermitteln. Diese Aufgabe nimmt der Optimizer, eine Komponente des Entitätsmengenverwalters, wahr. 18. A) B) C) D) E) D) E) D) E) Ein Synonym für den Entitätenverwalter ist Satzverwalter. 19. A) B) C) Der Systempufferverwalter verwaltet den Puffer. 20. A) B) C) Der Zugriffspfadverwalter ist für den B-Baum zuständig (der B-Baum ist ein Zugriffspfad). 15.10.3. Fragetyp E, kausale Verknüpfung 1. 1. + / 2. + Da die Adresse des Datensatzes direkt aus dem Schlüsselwert berechnet wird, genügt im günstigen Fall ein einziger Zugriff um den Datensatz zu finden. Schneller können Daten nicht gelesen werden. Die beiden Aussagen sind ohne Zusammenhang. Bei Kollisionen werden beim Hashing Überlaufbereiche mittels Adresszeigern angebunden. 2. 1. + / 2. - Baumstrukturierte Organisationsformen sind die Organisationsform für Datenbanksysteme. Die beiden Aussagen sind ohne Zusammenhang. Baumstrukturierte Organisationsformen bieten nicht für alle Zugriffe die beste Lösung. Sie sind aber im Schnitt für alle Zugriffsarten sehr gut. 3. 1. + Bei einem Systemabsturz müssen auch die Before-Images vorhanden sein, damit Änderungen unvollständig abgeschlossener Transaktionen zurückgesetzt werden können. Die Before-Images werden allerdings in der temporären Protokolldatei und nicht in der Archivprotokolldatei abgelegt. Die beiden Aussagen sind ohne Zusammenhang. In der Archivprotokolldatei dürfen nur After-Images von erfolgreich beendeten Transaktionen abgelegt werden. Und eine Transaktion gilt erst als abgeschlossen, wenn die After-Images in der Archivprotokolldatei abgelegt sind. / 2. - 4. 1. + Das Datenbanksystem muss das Synchronisationsverfahren im Kern implementiert haben. weil Die beiden Aussagen sind korrekt verknüpft. 2. + Die korrekte Programmierung von Synchronisationsverfahren ist für Anwendungsentwickler praktisch unmöglich. 5. 1. + Datenbanksysteme mit mengenorientierten Abfragen weisen meist einen Optimizer auf. weil Die beiden Aussagen sind ohne Zusammenhang. 2. + In mengenorientierten Abfragen sind Hinweise auf den Zugriffspfad grundsätzlich unerwünscht. Entscheidet das Datenbanksystem selbständig, welcher Zugriffspfad verwendet wird, so können die existierenden Zugriffspfade dynamisch den wechselnden Bedürfnissen angepasst werden (physische Datenunabhängigkeit). 6. 1. + / 2. - Transaktionen sind atomare Operationen und müssen daher immer vollständig oder gar nicht ausgeführt werden. Die beiden Aussagen sind ohne Zusammenhang. Konsistenzbedingungen stellen sicher, dass die Daten widerspruchsfrei gespeichert werden. Ein Datenverlust kann nicht durch Konsistenzbedingungen verursacht werden. Anhang 184 15. Lösungen zu den Aufgaben 15.10.4. Fragetyp K, mehrfache Entscheidung 1. + 2. + 3. + 4. + 5. + Anhang Die Metadaten des Data Dictionary werden in Analogie zu den Benutzerdaten gespeichert und verwaltet. Die Informationen des Data Dictionary eignen sich dazu, die Führung und Ausrichtung der Aktivitäten zu steuern. Data Dictionary-Systeme haben sich zusammen mit der Verbreitung von relationalen Datenbanksystemen durchgesetzt. Die Informationen im Data Dictionary können für die Revision und im Datenschutz verwendet werden. Hashing bedingt eine feine Abstimmung des Hashing-Algorithmus mit den vorhandenen bzw. zu erwartenden Datenbeständen. Bei stark dynamischen Datenbeständen ist Hashing daher eher ungeeignet. Im Idealfall ist es tatsächlich möglich, einen gesuchten Datensatz mit einem einzigen Datenbankzugriff zu lesen. Falls aber Überlaufbereiche angelegt werden, können auch beim Hashing mehrere Datenbankzugriffe nötig werden. Korrekt. Korrekt. Da weder beim optimistischen noch beim Zeitstempel-Verfahren die Transaktion bei einem Zugriffskonflikt auf die Freigabe des angeforderten Datensatzes wartet, ist bei diesen eine Deadlocksituation nicht möglich. Eine Deadlocksituation lässt sich durch Zurücksetzen einer einzelnen Transaktion auflösen. Erst beim Auftreten von mindestens zwei Exclusive-Locks kann eine Deadlock-Situation entstehen. Zur Entstehung eines Deadlocks genügt ein Datenobjekt. Haben zwei Transaktionen einen SharedLock auf das selbe Datenobjekt eingelöst und möchten beide Transaktionen diesen anschliessend in einen Exclusive-Lock umwandeln, kommt es zum Deadlock. Diese Marken enthalten den letzten Lese- bzw. Schreibzugriff. Korrekt. Die Transaktion darf nur Daten lesen, deren Schreibmarke einen früheren Zeitpunkt enthält als die Transaktionsmarke. Da die Verwaltung der Locktabelle in verteilten Datenbanken schwierig ist, bietet sich das Zeitstempelverfahren für verteilte Datenbanksysteme an. Korrekt. Falls keine andere Transaktion einen Shared-Lock auf dem Datenobjekt beansprucht, kann der Shared-Lock in einen Exclusive-Lock umgewandelt werden. Dies gilt auch für den Exclusive-Lock. Ein Shared-Lock kann auch auf logischen Objekten, wie Datensätze und Relationen, ausgeführt werden. 15. Lösungen zu den Aufgaben 185 15.11. Bearbeitungsaufgaben: 9. Datenbanktechnik, Softwarekomponenten eines Datenbanksystems 15.11.1. Zugriffspfade Index Anz. Zeiger Zeigerlisten mit Satznr. Keller 1 6 Meier 1 1 Mori 1 4 Müller 2 2 Sieber 1 3 Wurster 1 7 5 Figur 69: Index und Zeigerlisten für die invertierte Liste Segmentadresse Daten Adresszeiger Segmentadresse Überlaufbereich 0 7 37; Wurster; Zürich 1 64; Mori; Greifensee 8 2 2; Meier; Zürich 9 23; Müller; Russikon Adresszeiger 7 3 101; Keller; Zürich 10 4 5 166; Sieber; Waldkirch 6 132; Müller; Winterthur Tabelle 50: Segmente für Hashing Anhang 186 15. Lösungen zu den Aufgaben 37 23 132 2 64 101 166 Figur 70: B-Baum 15.11.2. Metadatenbank Applikationen Program m e Dom änen Datensichten Entitätsm engen DatensichtenVerwendungen Attribute Konsistenzbedingungen Entitätsschlüssel Sortierschl. Frem dschlüssel Frem dschlüsseldom äne Attributskom binationen Attributskom binationsstücke Datensichtenkom binationen Frem dschlüssel Figur 71: Grafisches Datenmodell zur Metadatenbank-Aufgabe Applikationen Applikations_Id Auftrag Anhang Beschreibung Auftragsverwaltungssystem Benutzer Zugriffsrechte 15. Lösungen zu den Aufgaben 187 Programme Programm_Id Kun_Mut Applikations_Id Auftrag Art_Mut Auftr_Mut Auftrag Auftrag Beschreibung Mutation der Kundendaten Mutation der Artikeldaten Mutation der Auftragsdaten Autor K. Meier R. Müller R. Müller Entitätsmengen Entitätsmengenname Kunden Artikel Aufträge Applikations_Id Entitätsschlüssel Auftrag Auftrag Auftrag Prim_Kunden Prim_Artikel Prim_Aufträge Datenmenge 1’394 29’343 392’099 Erzeuger K. Meier K. Meier K. Meier Attribute Attributsname Entitätsmengenname Domäne Obligatorisch Bezeichnung Kund_Id Name Strasse PLZ Ort Art_Id Bez Preis Kund_Id Art_Id Menge Datum Preis Kunden Kunden Kunden Kunden Kunden Artikel Artikel Artikel Aufträge Aufträge Aufträge Aufträge Aufträge Id_Numerisch Bezeichnung Bezeichnung Postleitzahl Bezeichnung Id_Numerisch Bezeichnung Betrag Id_Numerisch Id_Numerisch Menge Datum Betrag ja ja nein nein nein ja nein ja ja ja ja nein nein Identifikation des Kunden Name, Vorname des Kunden Strassenname, -nummer Postleitzahl Ortschaft Identifikation des Artikels Bezeichnung des Artikels Preis des Artikels Auftraggeber Artikel des Auftrages Menge der verkauften Artikel Auftragsdatum Preis des Artikels (redundante Information aus der Entitätsmenge Artikel) Domänen Domänen_Id Datentyp Grösse Dezimalen Id_Numerisch Bezeichnung Postleitzahl Betrag Menge Datum Numerisch Alphanumerisch Numerisch Numerisch Numerisch Datum 8 40 5 11 8 <NULL> 0 <NULL> 0 4 0 <NULL> Datensichten View Name Kunden Artikel Auftrag Erzeuger K. Meier R. Müller R. Müller Anhang 188 15. Lösungen zu den Aufgaben Datensichtenverwendung View Name Kunden Artikel Auftrag Kunden Artikel Programm_Id Kun_Mut Art_Mut Auftr_Mut Auftr_Mut Auftr_Mut letzter_Zugriff 1. März 1. März 20. Februar 20. Februar 20. Februar Benutzer Benutzer_Id MARE BRUNNER Geburtsdatum 4. April 23. Dezember Zugriffsrechte Benutzer_Id MARE BRUNNER BRUNNER BRUNNER View_Name Kunden Kunden Artikel Auftrag Konsistenzbedingungen Konsistenzbedingungs_Id Auftrags_Preis Entitätsmengenname Aufträge Auslöseregel Update, Insert Datensichtenkombinationen Attributsname Kund_Id Name Strasse PLZ Ort Art_Id Bez Preis Kund_Id Name Art_Id Bezeichnung Preis Menge Datum Preis Anhang Entitätsmengenname Kunden Kunden Kunden Kunden Kunden Artikel Artikel Artikel Aufträge Kunden Aufträge Artikel Artikel Aufträge Aufträge Aufträge View_Name Kunden Kunden Kunden Kunden Kunden Artikel Artikel Artikel Auftrag Auftrag Auftrag Auftrag Auftrag Auftrag Auftrag Auftrag Prädikat Reaktionsregel Aufträge.Preis = Reject Artikel.Preis * Aufträge.Menge 15. Lösungen zu den Aufgaben 189 Attributskombinationen Attributskombinations_Id Prim_Kunden Prim_Artikel Prim_Aufträge Ref_Aufträge_Kunden Ref_Aufträge_Artikel Sort_Kunden_Name Entitätsmengenname Kunden Artikel Aufträge Aufträge Aufträge Kunden Attributskombinationsstücke Attributskombinations_Id Prim_Kunden Prim_Artikel Prim_Aufträge Prim_Aufträge Ref_Aufträge_Kunden Ref_Aufträge_Artikel Sort_Kunden_Name Attributsname Kund_Id Art_Id Kund_Id Art_Id Kund_Id Art_Id Name Entitätsmengenname Kunden Artikel Aufträge Aufträge Aufträge Aufträge Kunden Fremdschlüssel Fremdschlüssel Ref_Aufträge_Kunden Ref_Aufträge_Artikel Fremdschlüsseldomäne Prim_Kunden Prim_Artikel Tabellen 51: Attributskatalog mit Beispieldaten zur Metadatenbank 15.11.3. Deadlock im pessimistischen Verfahren Ablaufplan Fet1 Fet4 Fet6 Fet2 Ope4 Fet5 Ope2 Fet7 Ope5 Fet3 Ope1 Fet8 Ope6 Upd1 Upd2 Transaktionen: Transaktion 1 BOT, Shared-Lock: a (ok) Transaktion 2 Transaktion 3 BOT, Shared-Lock: a (ok) BOT, Shared-Lock: e (ok) Shared-Lock: b (ok) Kein Lock Shared-Lock: b (ok) Kein Lock Shared-Lock: c (ok) Kein Lock Exclusive-Lock: a (Waiting) Shared-Lock: f (ok) Kein Lock Shared-Lock: a (ok) Kein Lock und EOT Exclusive-Lock: a (Waiting) Tabelle 52: Effektiver Ablaufplan der drei Transaktionen Anhang 190 15. Lösungen zu den Aufgaben Die Transaktion 3 kann vollständig ablaufen. Die Transaktionen 1 und 2 geraten in eine Deadlock-Situation, eine der Transaktionen muss zurückgesetzt werden. Daher ist der vorgeschlagene Ablaufplan nicht möglich. 15.11.4. Locking im pessimistischen Verfahren Transaktion 1 Transaktion 2 Transaktion 3 Ope1: BOT, Shared Lock: a (ok) Fetch a (1) Ope1: BOT, Shared Lock: a (ok) Fetch a (1) Ope1: BOT, Shared Lock: b (ok) Fetch b (2) Ope2: var1 := a * 2 (2) Ope2: Shared Lock: b (ok) Fetch b (2) Ope2: Shared Lock: a (ok) Fetch a (1) Ope3: Exclusive Lock: a (ok) (Waiting) Ope3: var3 := a - 1 (0) Ope3: Ope4: var5 := a - 2 (-1) var4 := b - 1 (1) Ope4: Exclusive Lock: a (Deadl.) (Rollback Transaktion 3) Ope5: Exclusive Lock a: (Deadl.) (Rollback Transaktion 2) Ope1: BOT, Shared Lock: b (ok) Fetch b (2) Ope3: Update a FROM var1 (2) EOT Ope1: BOT, Shared Lock: a (ok) Fetch a (2) Ope2: Shared Lock: a (ok) Fetch a (2) Ope2: Shared Lock: b (ok) Fetch b (2) Ope3: Ope3: var5 := a - 2 (0) var3 := a - 1 (1) Ope4: Exclusive Lock: a (ok) (Waiting) Ope4: var4 := b -1 (1) Ope5: Exclusive Lock: a (Deadl.) (Rollback Transaktion 2) Anhang 15. Lösungen zu den Aufgaben 191 Ope4: (0) Update a FROM var5 Ope5: var5 := b - 2 (0) Ope1: BOT, Shared Lock: a (ok) (Waiting) Ope6: Exclusive Lock: b (ok) Update b FROM var5 (0) EOT Ope1: Fetch a (0) Ope2: Shared Lock: b (ok) Fetch b (0) Ope3: var3 := a - 1 (-1) Ope4: var4 := b -1 (-1) Ope5: Exclusive Lock: a (ok) Update a FROM var3 (-1) Ope6: Excluxive Lock: b (ok) Update b FROM var4 (-1) EOT Tabelle 53: Ablauf der drei Transaktionen Anhang 192 15. Lösungen zu den Aufgaben 15.11.5. Ablaufplan a: TA1, TA2, TA3: 1 TA1, TA3, TA2: 2 TA2, TA1, TA3: 1 TA2, TA3, TA1: 2 TA3, TA1, TA2: 4 TA3, TA2, TA1: 3 b: Feti, Fetj, Fetk stehen für die Operationen Fet1, Fet2 und Fet3, wobei Fet i nicht Fet1 (u.s.w.) entsprechen muss, d.h. die Reihenfolge der Operationen ist beliebig. Desgleichen für Updi, Updj und Updk, welche die Operationen Upd1, Upd2 und Upd3 repräsentieren. Feti, Fetj, Fetk, Updi, Updj, Updk: 3*2*1*3*2*1 = 36 Möglichkeiten Feti, Fetj, Updi, Fetk, Updj, Updk: 3*2*2*1*2*1 = 24 Möglichkeiten Feti, Fetj, Updi, Updj, Fetk, Updk: 3*2*2*1*1*1 = 12 Möglichkeiten Feti, Updi, Fetj, Fetk, Updj, Updk: 3*1*2*1*2*1 = 12 Möglichkeiten Feti, Updi, Fetj, Updj, Fetk, Updk: 3*1*2*1*1*1 = 6 Möglichkeiten = 90 Möglichkeiten TOTAL c: Ja, z.B. produziert der Ablaufplan Fet1, Fet2, Fet3, Upd3, Upd2, Upd1 das selbe Resultat (1) wie zwei der sechs möglichen Reihenfolgen (siehe a) ) der Transaktionen. Es muss dabei aber klar hervorgehoben werden, dass dies purer Zufall ist und nur Dank dem Initialwert 0 von a möglich ist. Was würde passieren, wenn der Initialwert von a z.B. 10 wäre? Würden die Resultate dann abweichen, so ist der Ablaufplan nicht konsistenzerhaltend, serialisierbar. d: Ja, z.B. der Ablaufplan Fet1, Fet3, Upd1, Upd3, Fet2, Upd2 ist serialisierbar (er ist zu TA1, TA3, TA2 äquivalent), kann aber bei einem System mit zweiphasigem Locking nicht auftreten. In diesem Fall würde Fet1 und anschliessend Fet3 für a Shared-Lock verlangen. Mit Upd1 würde Transaktion 1 versuchen Exclusive-Lock auf a zu erhalten, muss aber warten, bis Transaktion 2 die Shared-Lock Anforderung auf a wieder freigibt. Mit Upd3 verlangt nun Transaktion 2 auch noch Exclusive-Lock, muss aber warten, bis Transaktion 1 abschliesst, es resultiert ein Deadlock! Anhang 15. Lösungen zu den Aufgaben 193 15.11.6. Transaktionslogik und Programme In beiden Programmen werden die Transaktionsgrenzen ganz am Anfang und ganz am Ende des Programmes gesetzt. Dadurch werden nach und nach immer mehr Objekte gesperrt und erst ganz am Ende des Programmes wieder freigegeben. Zielsetzung muss es aber sein, möglichst wenig Objekte möglichst kurz zu sperren. Es muss daher für beide Programme geprüft werden, ob die Transaktionsgrenzen nach innen verschoben werden können oder ob die Transaktion in mehrere Teiltransaktionen zerlegt werden kann, ohne dass... bei einem Fehler oder Absturz des Programmes Daten anderer Transaktionen verloren gehen oder Daten widersprüchlich gespeichert werden oder dass für parallel arbeitende Transaktionen inkonsistente Sichten auf die Daten entstehen. Im Umrechnungs-Programm kann allenfalls sogar ganz auf die Definition einer Transaktion verzichtet werden. Falls sichergestellt werden kann, dass bei einem Absturz des Programmes das Programm erneut gestartet wird, ist mit keinen Datenverlusten zu rechnen. Kann zusätzlich gewährleistet werden, dass keine anderen Programme die Daten gleichzeitig verwenden, dann besteht auch nicht die Gefahr der inkonsistenten Sicht. Beim Programm für den Kontoübertrag zeigt sich eine gänzlich andere Situation. Die Lese- und Schreibzugriffe auf die Datenbankobjekte dürfen nur als Ganzes ausgeführt werden. Die Eingaben des Benutzers können aber allenfalls ausserhalb der Transaktion platziert werden. Dadurch wird die Transaktion deutlich kürzer, denn die Eingaben durch den Benutzer, welche in der Regel lange dauern, liegen jetzt ausserhalb. * Dieses Programm liest die Währung, zwei Konti mit identischer Währung und * einen Betrag ein und überträgt diesen Betrag vom ersten zum zweiten Konto. DECLARE währung,konto_1,konto_2,bu_betrag INPUT währung,bu_betrag INPUT konto_1,konto_2; READ FIRST Währung FOR Währung.währ_bez = währung IF Währung.währ_bez = währung BEGIN TRANSACTION READ FIRST Konto FOR Konto.konto_nr = konto_1; IF Konto.konto_nr <> konto_1 OR Konto.betrag - bu_betrag < Konto.min_betrag Konto.währ_bez <> währung THEN ERROR 'Buchungen nicht ausgeführt'; ROLLBACK; ELSE UPDATE betrag TABLE Konto WITH Konto.betrag ENDIF; READ FIRST Konto FOR Konto.konto_nr = konto_2; IF Konto.konto_nr <> konto_2 OR Konto.betrag + bu_betrag < Konto.min_betrag Konto.währ_bez <> währung THEN ERROR 'Buchungen nicht ausgeführt'; ROLLBACK; ELSE UPDATE betrag TABLE Konto WITH Konto.betrag END TRANSACTION; ELSE ERROR 'Währung nicht gefunden'; ENDIF; OR - bu_betrag; OR + bu_betrag; Figur 72: Programm Kontoübertrag mit Fremdwährung Anhang 194 15. Lösungen zu den Aufgaben 15.12. Checkfragen: 10. Internes Datenmodell 15.12.1. Fragetyp K, mehrfache Entscheidung 1. + Die effiziente Ausführungsgeschwindigkeit ist eines der wichtigsten Kriterien beim Herleiten des internen Schemas. Zwar steht die Anforderung eines minimalen Speicherbedarfs im Gegensatz zur effizienten Ausführungsgeschwindigkeit die Kunst bei der Herleitung des internen Schemas ist, derartige widersprüchliche Zielsetzungen zu berücksichtigen. Die Zielsetzung von minimalem Speicherbedarf und wenig Redundanz gehen Hand in Hand. Im internen Schema werden explizit datenbankspezifische Eigenschaften berücksichtigt. + Korrekt. Korrekt. Korrekt. Korrekt. 2. Anhang 15. Lösungen zu den Aufgaben 195 15.13. Checkfragen: 11. Verteilung von Daten 15.13.1. Fragetyp K, mehrfache Entscheidung 1. + Korrekt. Ortstransparenz stellt sicher, dass der Benutzer/Entwickler von der effektiven Verteilung der Daten keine Kenntnis nimmt. Bei Fragmenten handelt es sich nicht um Kopien, sondern um Teile von Entitätsmengen, welche verteilt gespeichert werden. Diese Frage ergibt keinen Sinn. Siehe 2. und 3. Antwort. Anhang 196 15. Lösungen zu den Aufgaben 15.14. 12. Fallbeispiel TTW 15.14.1. Ist-Analyse: Datenmodell zur Anwendung TravelSys ermitteln (BottomUp) 15.14.1.1. Ermittlung des Datenmodells zur Anwendung TravelSys Kunden Reisen Buchungen Preise Rechnungen Figur 73: Datenmodell Ist-Zustand TTW Eine Rechnung kann mehrere Reisen eines Kunden umfassen, im Maximum sind allerdings nur 4 Reisen pro Rechnung möglich. Für jeden Fremdschlüssel MUSS genau eine Linie im grafischen Modell eingetragen werden. Daher werden zwischen Rechnungen und Buchungen 4 Beziehungen gezogen. Kunden Attributsname: Kunden# Name Adresse_1 Adresse_2 Land PLZ Ort Nationalität Rechnungs_Saldo Wertebereich: Numeric(10) Character(20) Character(20) Character(20) Character(3) Numeric(6) Character(20) Character(3) Numeric(12.2) Beschreibung: Künstliche Kunden-Nummer Name des Kunden Adresslinie 1 des Kunden Adresslinie 2 des Kunden Land (ISO) der Kundenadresse Eindeutige Postleitzahl der Kundenadresse Ortsbezeichnung der Kundenadresse Nationalität des Kunden Aktuell offener Rechnungssaldo des Kunden Wertebereich: Numeric(10) Character(30) Numeric(3) Character(50) Character(50) Character(50) Character(50) Character(50) Numeric(10.2) Numeric(10.2) Beschreibung: Künstliche Nummer der angebotenen Reise Bezeichnung der Reise, z.B. 'USA Western Ride' Dauer der Reise bei fixer Reisedauer Name des Hotels (bei einfachen Hotelbuchungen) Transportmittel des Kunden zum Reisestartort Startort der Reise Transportmittel des Kunden zur Heimreise ab Endeort Endeort der Reise Durchschnittliche Einnahmen/Kunde zu dieser Reise Durchschnittliche Ausgaben/Kunde zu dieser Reise Reisen Attributsname: Reise# Bezeichnung Dauer Hotel Reisemittel_Start Startort Reisemittel_Ende Endeort Einnahmen Ausgaben Anhang 15. Lösungen zu den Aufgaben 197 Buchungen Attributsname: Buchungs# Kunden# Reise_Datum Reise# Anzahl_Nächte Anzahl_Personen Zimmergrösse Verpflegung Preis_effektiv Wertebereich: Numeric(10) Numeric(10) Date Numeric(10) Numeric(3) Numeric(3) Numeric(2) Character(4) Numeric(10.2) Beschreibung: Künstliche Buchungs-Nummer Kunden.Kunden#, Kunde, der die Reise unternimmt Startdatum der Reise Reisen.Reise#, Nummer der gebuchten Reise Anzahl der gebuchten Nächte Anzahl der teilnehmenden Personen Gebuchte Zimmergrösse (z.B. Doppelzimmer) Gebuchte Verpflegung (z.B. 'VP' für Vollpension) Effektiv bezahlter Preis (d.h. bereits unter Berücksichtigung von Preisreduktionen) Attributsname: Wertebereich: Reise# Datum_Start_Fenster Anzahl_Nächte Zimmergrösse Verpflegung Preis Woche_Start_Fenster Numeric(10) Date Numeric(3) Numeric(2) Character(4) Numeric(10.2) Numeric(2) Beschreibung: Reisen.Reise#, Nummer der Reise Datum, ab welchem der Preis gilt Anzahl Nächte, für welcher der Preis gilt Zimmergrösse, für welche der Preis gilt Verpflegung, für welche der Preis gilt Standardpreis (für Vorschlag in der Buchung ) Wochen-Nummer, ab welcher der Preis gilt Preise Rechnungen Attributsname: Rechnungs# Rechnungsdatum Kunden# Rechnungsbetrag Rechnungscode Rechnungscode_Text Buchungs#[4] Wertebereich: Numeric(10) Date Numeric(10) Numeric(10.2) Character(2) Character(20) Numeric(10) Beschreibung: Künstliche Rechnungsnummer Datum der Rechnungsstellung Kunden.Kunden#, Kunde, der die Reise bezahlt Rechnungsbetrag (ev. Teil- bzw. Sammelrechnung) Hält den Status der Rechnung fest Text zum Rechnungscode Buchungen.Buchungs#, hält fest, für welche Buchungen die Rechnung erstellt wurde. Bei Sammelrechnungen werden mehrere Einträge vorgenommen (Wiederholungsgruppe), je verrechneter Buchung ein Eintrag Tabellen 54: Dateistruktur Ist-Zustand TTW Anhang 198 15. Lösungen zu den Aufgaben 15.14.1.2. Normalisierung des Datenmodells 1. Normalform Die Entitätsmenge Rechnungen enthält eine Wiederholungsgruppe. Diese wird eliminiert, indem die sie durch ein einzelnes Attribut ersetzt wird und je Eintrag in der Wiederholungsgruppe eine Entität in die Entitätsmenge eingetragen wird. Beachten Sie, dass der Entitätsschlüssel um das Attribut der Wiederholungsgruppe erweitert wird. Das mehrfache Einfügen des selben Attributs in die Entitätsmenge (z.B. Buchungs#1, Buchungs#2, ...) ist für die Erstellung der 1. Normalform i.d.R. nicht zulässig, da bei unbegrenzten Wiederholungsgruppen nicht unbegrenzt viele Attribute eingefügt werden können. Dieser Lösungsansatz ist ausserdem grundsätzlich zu vermeiden, da hierdurch die Anzahl der Wiederholungen fest vorgegeben würde, was eine unerwünschte und neue Einschränkung zur Folge hätte. Rechnungen Attributsname: Rechnungs# Rechnungsdatum Kunden# Rechnungsbetrag Rechnungscode Rechnungscode_Text Buchungs# Beschreibung: Kunden.Kunden# Buchungen.Buchungs# Tabelle 55: Entitätsmenge Rechnungen in 1. Normalform 2. Normalform Die Entitätsmenge Preise enthält ein Attribut, welches nicht voll funktional abhängig vom Entitätsschlüssel ist und verletzt daher die 2. Normalform. Dies ist das Attribut Woche_Start_Fenster, welches funktional abhängig vom Teilschlüssel Datum_Start_Fenster ist. Im Normalfall würde man dieses Attribut berechnen; der Normalisierung wegen normalisieren wir diese Entitätsmenge. Preise Attributsname: Reise# Datum_Start_Fenster Anzahl_Nächte Zimmergrösse Verpflegung Preis Beschreibung: Reisen.Reise# Wochennr.Datum Wochennr. Attributsname: Datum Wochennummer Beschreibung: Tabellen 56: Entitätsmenge Preise in 2. Normalform Die Entitätsmenge Rechnungen verletzt ebenfalls die 2. NF. Die Attribute Rechnungsdatum, Kunden#, Rechnungsbetrag, Rechnungscode und Rechnungscode_Text sind funktional abhängig vom Teilschlüssel Rechnungs#. Anhang 15. Lösungen zu den Aufgaben 199 Rechnungen Attributsname: Rechnungs# Rechnungsdatum Kunden# Rechnungsbetrag Rechnungscode Rechnungscode_Text Beschreibung: Kunden.Kunden# Rechnungen-Buchungen Attributsname: Rechnungs# Buchungs# Beschreibung: Rechnungen.Rechnungs# Buchungen.Buchungs# Tabellen 57: Entitätsmenge Rechnungen in 2. Normalform 3. Normalform Die Entitätsmenge Kunden verletzt die dritte Normalform. Das Attribut Ort ist transitiv abhängig von den Nichtschlüsselattributen Land und PLZ. Kunden Attributsname: Kunden# Name Adresse_1 Adresse_2 Land PLZ Nationalität Rechnungs_Saldo Beschreibung: Ortschaften.Land (zusammen mit der PLZ) Ortschaften.PLZ (zusammen mit dem Land) Ortschaften Attributsname: Land PLZ Ort Beschreibung: Tabellen 58: Entitätsmenge Kunden in 3. Normalform Die Entitätsmenge Rechnungen verletzt die 3. Normalform. Das Attribut Rechnungscode_Text ist transitiv abhängig vom Nichtschlüsselattribut Rechnungscode. Rechnungen Attributsname: Beschreibung: Rechnungs# Rechnungsdatum Kunden# Rechnungsbetrag Rechnungscode Kunden.Kunden# Rechnungscode.Rechnungscode Anhang 200 15. Lösungen zu den Aufgaben Rechnungscode Attributsname: Rechnungscode Rechnungscode_Text Beschreibung: Tabellen 59: Entitätsmenge Rechnung in 3. Normalform Ortschaften Kunden Rechnungscode Reisen Buchungen Rechnungen RechnungenBuchungen Figur 74: Datenmodell TTW in 3. Normalform Anhang Wochennr. Preise 15. Lösungen zu den Aufgaben 201 15.14.2. Soll-Konzept: Datenmodell mit neuen Anforderungen ergänzen (TopDown) 15.14.2.1. Strukturierung der Reisen, Aggregation (Part-Of-Struktur / Stückliste) Im Folgenden wird nur der für diese Teilaufgabe relevante Teilausschnitt angegeben. Die Gliederung der Reise in Unterreisen entspricht einer Stückliste bzw. Aggregation. Reisen übergeordnete Reise untergeordnete Reise Reisestruktur Figur 75: Reisestruktur mittels Aggregation Reisen Attributsname: Reise# Bezeichnung Dauer Hotel Reisemittel_Start Startort Reisemittel_Ende Endeort Einnahmen Ausgaben Beschreibung: Reisestruktur Attributsname: Reise_Struktur# Reisefolge# Überg._Reise Unterg._Reise Beschreibung: Reisen.Reise# Reisen.Reise# Tabellen 60: Entitätsmengen zum Festhalten der Reisestruktur mittels Aggregation Könnte eine Reise nur ein einziges Mal als Teilreise einer Reise auftreten, so ist auch folgender Ansatz mittels Rekursion möglich (was für TTW nicht gilt): Reisen übergeordnet e Reise Figur 76: Reisestruktur mittels Rekursion Anhang 202 15. Lösungen zu den Aufgaben Reisen Attributsname: Reise# Überg._Reise Bezeichnung Dauer Hotel Reisemittel_Start Startort Reisemittel_Ende Endeort Einnahmen Ausgaben Beschreibung: Reisen.Reise# Tabelle 61: Entitätsmengen zum Festhalten der Reisestruktur mittels Rekursion Falsche Lösung: Folgende Lösungsvariante ist hingegen unter keinen Umständen zulässig: Reisen Reisestruktur übergeordnet e Reise Figur 77: Falsche Lösung zur Reisestruktur Reisen Attributsname: Reise# Bezeichnung Dauer Hotel Reisemittel_Start Startort Reisemittel_Ende Endeort Einnahmen Ausgaben Beschreibung: Reisestruktur Attributsname: Reise# Teil_Reise# Reisefolge# Beschreibung: Reisen.Reise# Reisestruktur.Reise# Tabellen 62: Falsche Lösung zum Festhalten der Reisestruktur Das Fremdschlüsselattribut Reisestruktur.Teil_Reise# basiert auf dem Attribut Reisestruktur.Reise#; d.h. im Attribut Reisestruktur.Teil_Reise# sind nur Werte erlaubt, welche im Attribut Reisestruktur.Reise# auftreten. Im Attribut Reisestruktur.Reise# treten aber nur die Nummern jener Reisen auf, die untergeordnete Reisen haben. Damit würde in diesem Fall die referentielle Integrität (Fremdschlüssel) auf jeden Fall verletzt. Anhang 15. Lösungen zu den Aufgaben 203 Ausserdem muss der Fremdschlüssel den gesamten Entitätsschlüssel der referenzierten Entitätsmenge beinhalten. Im gegebenen Fall ist der Fremdschlüssel aber selbst Teil des Entitätsschlüssels! Er kann aber nie vollständig in sich selbst enthalten sein. Der Fremdschlüssel kann daher nicht korrekt gebildet werden. Für das weitere Vorgehen muss die erste Variante angewandt werden. Das ergänzte Datenmodell sieht wie folgt aus: Ortschaften Kunden Rechnungscode Reisen Buchungen Rechnungen Wochennr. Preise Reisestruktur RechnungenBuchungen Figur 78: Datenmodell mit Reisestrukturierung Anhang 204 15. Lösungen zu den Aufgaben 15.14.2.2. Zeitabhängige Daten und Varianten von Daten in Datenmodellen 1. Variante, betroffene Entitätsmengen mit Datumsattribut ergänzen: Die Entitätsmenge Reisen wird mit dem Attribut Reise_Datum (Teil des Entitätsschlüssels) erweitert. Der Entitätsschlüssel der Entitätsmenge Reisen setzt sich danach aus den Attributen Reise# und Reise_Datum zusammen. Ausserdem muss das Reise_Datum auch in sämtliche abhängigen Entitätsmengen der Reisen eingefügt werden, da diese Entitätsmengen den Entitätsschlüssel der Entitätsmenge Reisen als Fremdschlüssel enthalten. Für jedes Reisedatum wird in der Entitätsmenge Reisen ein Eintrag erstellt (inkl. Unterreisen). Die allg. Reisebeschreibung bleibt unverändert mit leerem Datumsfeld (allenfalls mit qualifizierendem Attribut ergänzen) als Rahmen für den Kopiervorgang bestehen. Diese veränderte Entitätsmenge Reisen verletzt die 2. Normalform, da sämtliche Nichtschlüsselattribute lediglich vom Teil-Entitätsschlüssel Reise# abhängig sind. Würde man die veränderte Entitätsmenge Reisen sowie sämtliche abhängigen Entitätsmengen normalisieren, so erhält man in diesem Fall (dies gilt nicht immer) etwa die selbe Lösung wie bei der 2. Variante! 2. Variante, betroffene Entitätsmengen kopieren und mit Datumsattribut ergänzen: Die Daten (mit Datum) werden nicht in den selben, sondern in separaten Entitätsmengen geführt. Dadurch müssen auch alle bestehenden Beziehungen zu den verdoppelten Entitätsmengen frisch überdacht werden. Die Lösung im Überblick: Ortschaften Grundreisen Kunden Rechnungscode Reisen Buchungen Rechnungen Wochennr. Preise Grundreisestruktur Reisestruktur RechnungenBuchungen Figur 79: Datenmodell mit Reisestrukturierung und Zeitvarianten Betrachtet man die Entitätsmengen Reisestruktur und Grundreise-Struktur im Detail (siehe unten), so fällt auf, dass diese, abgesehen von der unterschiedlichen Bezeichnung des Attributs Reise#, identisch sind. Würde man sicherstellen, dass in Reisen und Grundreisen nicht identische Nummern für die Reise# bzw. Grundreise# verwendet werden, könnten die Entitätsmengen Reisestruktur und Grundreise-Struktur zusammengelegt werden. In diesem Fall muss überlegt, werden welche Vor- und Nachteile beim Zusammenlegen der Entitätsmengen für die zu realisierende Anwendung, basierend auf einem bestimmten DBMS, entstehen (d.h., diese Überlegungen werden erst bei der Ableitung des physischen Schemas gemacht). Auf der konzeptionellen Ebene (auf welcher wir uns zur Zeit befinden) ist die gezeigte Lösung sicher die bessere Lösung, da diese einen höheren Erklärungswert hat. Folgende Entitätsmengen sind neu oder wurden verändert: Anhang 15. Lösungen zu den Aufgaben 205 Grundreisen Attributsname: Grundreise# Bezeichnung Dauer Hotel Reisemittel_Start Startort Reisemittel_Ende Endeort Einnahmen Ausgaben Beschreibung: Grundreisestruktur Attributsname: Grundreise_Struktur# Reisefolge# Überg._Reise Unterg._Reise Beschreibung: Grundreise.Grundreise# Grundreise.Grundreise# Reisen Attributsname: Reise# Grundreise# Reisedatum Beschreibung: Grundreise.Grundreise# Reisestruktur Attributsname: Reise_Struktur# Reisefolge# Überg._Reise Unterg._Reise Beschreibung: Reise.Reise# Reise.Reise# Preise Attributsname: Grundreise# Datum_Start_Fenster Anzahl_Nächte Zimmergrösse Verpflegung Preis Beschreibung: Grundreise.Grundreise# Wochennr.Datum Buchungen Attributsname: Buchungs# Kunden# Reise# Anzahl_Nächte Anzahl_Personen Zimmergrösse Verpflegung Preis_effektiv Beschreibung: (neu ohne Reisedatum) Kunde.Kunden# Reise.Reise# Tabellen 63: Entitätsmengen mit Reisestrukturierung und Zeitvarianten Anhang 206 15. Lösungen zu den Aufgaben Vor- und Nachteile der Variante 1 gegenüber Variante 2 (für die folgenden Aufgabenschritte gehen wir davon aus, dass die 2. Variante gewählt wurde): Verständlichkeit des Datenmodells Redundanzen, da Attribute in der Entitätsmenge Reisen mehrfach geführt werden (dies kann in anderen Situationen durchaus erwünscht sein. Geringere Anzahl Entitätsmengen Ev. einfachere Programmstrukturen . … Varianten von Reisen: Das Führen von individuellen Varianten von Reisen ist in beiden Modellen bereits ohne Änderung möglich. Es muss lediglich die applikatorische Möglichkeit geben, auch die Struktur von individuellen Reisen zu bearbeiten. Lassen sich Varianten nicht direkt im Datenmodell ablegen, so muss i.d.R. an der entsprechenden Stelle die Hierarchie um eine Stufe vergrössert werden und die Entitätsmenge Variante zwischengeschaltet werden. 15.14.2.3. Mitarbeiter-Stamm, Spezialisierung/Generalisierung In diesem Schritt werden die Entitätsmengen Mitarbeiter und Partner eingeführt. Es muss lediglich überlegt werden, wie festgehalten wird, welches mögliche und welches die effektiven Reiseleiter einer Reise sind. Bei den möglichen Reiseleitern muss eine weitere Entitätsmenge eingeführt werden, da es sich hier um eine m:m-Beziehung handelt. Der effektive Reiseleiter lässt sich direkt, ohne weitere Entitätsmenge festhalten. Anhang 15. Lösungen zu den Aufgaben 207 Ortschaften Partner Kunden Mitarbeiter Grundreisen m ögliche Reiseleiterzuteilungen Wochennr. Preise effektiver Reiseleiter Reisen Rechnungscode Buchungen Rechnungen Grundreisestruktur Reisestruktur RechnungenBuchungen Figur 80: Datenmodell mit Spezialisierung/Generalisierung Verbundinstrumente im Datenmodell: Hierarchie: Beziehungsmenge: Spezialisierung/Generalisierung: Aggregation: Rekursion: Wertetabelle: Partner - Kunden - Rechnungen Mitarbeiter - mögl. Reiseleiter - Grundreisen Kunden und Mitarbeiter generalisiert zu Partner Reisen - Reisestruktur kein Beispiel in der Lösung Rechnungscode 15.14.3. Vorgehensentscheid Dateiverwaltung oder DBMS Der Vorgehensentscheid wird aufgrund eines Kriterienkataloges, dessen Gewichtung und Bewertung gefällt. Um eine bessere Übersichtlichkeit der Kriterien zu erreichen, sollten diese hierarchisch gegliedert werden. Mögliche Kriterien sind (Auswahl): Aufwand Entwicklung und Wartung Verfügbare Rechnerleistung Flexibilität Anhang 208 15. Lösungen zu den Aufgaben EDV-technisches Know-How Integritätsanforderungen (insbesondere im Mehrbenutzerbetrieb) … 15.14.4. Ableiten des internen Schemas, Bestimmen der physischen Speicherorganisation 15.14.4.1. Internes Schema Mögliche Unterlagen für die Ableitung des internen Schemas (und damit der Denormalisierung des konzeptionellen Schemas) sind: Menge der Entitäten pro Entitätsmenge Menge der Elemente pro Beziehungsmenge Erwartete Zuwachsraten der Entitätsmengen Datensatzgrössen Zugriffshäufigkeit auf Attribute Häufigkeit der Anwendung von Zugriffswegen … Mögliche Einflüsse auf das konzeptionelle Datenmodell (grundsätzlich sollte versucht werden, möglichst nahe am voll normalisierten konzeptionellen Datenmodell zu bleiben): Erstellen von Zugriffspfaden für die häufigst verwendeten Zugriffswege Splitten von einzelnen Entitätsmengen Zusammenlegen von einzelnen Entitätsmengen (Attribute teilweise mit Leerwerten) Bestimmte Daten in mehreren Entitätsmengen redundant führen … Folgende Entscheide könnten in unserem Fall getroffen werden: Die Entitätsmenge Wochennr. wird fallen gelassen. Die Wochennr. wird bei Bedarf berechnet. Die Entitätsmenge Ortschaften wird eliminiert und beim Kunden geführt, die 3. NF wird hierfür bewusst verletzt. Die Entitätsmengen Partner, Mitarbeiter und Kunden werden aufgrund geringer Unterschiede zusammengefasst. Die Entitätsmengen Reisen und Grundreisen, Reisestruktur und Grundreise-Struktur werden zusammengelegt. Für sämtliche Entitäts- und Fremdschlüssel werden invertierte Listen angelegt. … Würden diese Entscheide durchgeführt, so verblieben dadurch von den ursprünglich 15 Entitätsmengen nur noch 9. Dafür würden je nach Sichtweise unterschiedliche Datensichten (Views) erstellt. 15.14.4.2. Physische Speicherorganisation Bäume eignen sich für dynamische, schlecht vorhersehbare Datenbestände. Das Hash-Verfahren eignet sich hingegen für statische, zu Beginn bekannte Datenbestände. Es werden daher die beiden Verfahren wie folgt eingesetzt: Anhang 15. Lösungen zu den Aufgaben Relation Ortschaften Partner Kunden Mitarbeiter Grundreisen mögl. Reiseleiter Wochennr. Reisen Preise Rechnungscode Buchungen Grundreise_Struktur Reisestruktur Rechnungen RechnungenBuchungen 209 Zugriffsverfahren Hash Baum Baum Baum Baum Baum Hash Baum Baum Hash Baum Baum Baum Baum Baum Tabelle 64: Relationen und Zugriffsverfahren 15.14.5. Meta-Entitätstypen, Data-Dictionary Unten ist eine mögliche Lösung für ein einfaches Data-Dictionary skizziert, welches ausschliesslich zu Dokumentationszwecken verwendet werden soll. Entitätsm engen Entitätsschlüsselrelation Attribute Frem dschlüsselrelation Entitäts-, Frem dschlüssel Attributskom binationen Figur 81: Datenmodell zum Data-Dictionary Entitätsmengen Attributsname: Entitätsmengen# Entitätsmengenname Dokumentation Wertebereich: Beschreibung: Numeric(10) Character(20) Memo Attribute Attributsname: Wertebereich: Beschreibung: Attribut# Numeric(10) EntitätsmenEntitätsmengen# Numeric(10) gen.Entitätsmengen# Attributsname Character(20) Dokumentation Memo Anhang 210 15. Lösungen zu den Aufgaben Entitäts-, Fremdschlüssel Attributsname: Schlüssel# Entitätsschlüsselrelation Fremdschlüsselrelation Rollenbezeichnung Dokumentation Wertebereich: Beschreibung: Numeric(10) EntitätsmenNumeric(10) gen.Entitätsmengen# EntitätsmenNumeric(10) gen.Entitätsmengen# Character(20) Memo Attributskombinationen Attributsname: Schlüssel# Attribut# Wertebereich: Beschreibung: Entitäts-Fremdschlüssel.Schlüssel# Numeric(10) Attribute.Attribut# Numeric(10) Tabellen 65: Attributskatalog zum Data-Dictionary Anhang 16. Literatur 211 16. Literatur [Boehm 96] Böhm, Fuchs, Pacher: Systementwicklung in der Wirtschaftsinformatik. Verlag der Fachvereine an den Schweizerischen Hochschulen und Techniken, Zürich, 1996. [Chen 80] Chen P.P. ed.: Entity-Relationship Approach to Systems Analysis and Design. North Holland, Amsterdam, 1980. [Codd 70] Codd, E.F.: A relational model of data for large shared data banks. Comm. ACM, 1970. [Codd 72] Codd, E.F.: Relational Completeness of data base sublanguages. In: Data Base Systems, Courant Computer Science Symposium 6, 1971, Prentice Hall, Englewood Cliffs (NJ), 1972. [Codd 91] Codd, E.F.: The Relational Modell for Database Management - Version 2. Addison-Wesley, 1991. [Date 00] Date, C.J.: An introduction to database systems. Addison-Wesley, 2000. [Date 97] Date, C.J.: A Guide to the SQL Standard. Addison-Wesley, 1997. [Härder 01] Härder, T., Rahm, E.: Datenbanksysteme, Konzepte und Techniken der Implementierung. Springer-Verlag Berlin, 2001. [Reuter 81] Reuter, A.: Fehlerbehandlung in Datenbanksystemen. Carl Hanser, 1981. [Lock 87] Lockemann, P.C. und Schmidt J.W.: Datenbank-Handbuch. Springer Verlag, 1987. [Schlag 83] Schlageter, G., Stucky, W.: Datenbanksysteme: Konzepte und Modelle. Teubner Studienbuch Informatik, 1983. [Senko 73] Senko, M. E., et al: Data structures and access in data base systems. IBM Syst. Journal 12, 1973. [Vetter 98] Vetter, M.: Aufbau betrieblicher Informationssysteme mittels pseudoobjektorientierter, konzeptioneller Datenmodellierung. Teubner Verlag, Stuttgart,1998. [Wirth 96] Wirth, N.: Algorithmen und Datenstrukturen mit Modula-2. Teubner Verlag, Stuttgart,1996. [Zehnder 89] Zehnder, C.A.: Informationssysteme und Datenbanken. dvf Hochschulverlag AG an der ETH und Teubner Stuttgart, 1989. [Zehnder 98] Zehnder, C.A.: Informationssysteme und Datenbanken. dvf Hochschulverlag AG an der ETH und Teubner Stuttgart, 1998. Anhang 212 17. Index 17. Index # # 141 3 3-Schema-Modell ................................. 17 A Abhängigkeit Funktionale ........................................ 43 Transitive ............................................ 47 Voll funktionale ................................. 46 Ablaufplan .......................................... 113 Adresszeiger .......................................... 11 Aggregation ......................................... 58 ANSI-SPARC ................................... 17, 141 Assoziation ............................................. 29 Assoziationstypen ................................. 29 Attribut ..................................... 12, 34, 140 Attributskatalog .................................... 35 Attributskombination ........................... 35 Aufzählungstyp ..................................... 32 Authentisierung .................................... 79 B B*-Baum ................................................. 86 Bäume ................................................... 86 B-Baum .................................................. 86 BCNF ................................................... 141 Begin Of Transaction ........................... 97 Beziehung .............................................. 26 Beziehungsattribut................................ 34 Beziehungsmenge ................. 25, 26, 140 Beziehungsstruktur ................................ 53 Beziehungstyp ....................................... 29 Blatt ........................................................ 87 Blockgrösse ........................................... 84 Boolean ................................................. 32 Boyce/Codd-Normalform ................... 46 C Candidate Key ..................................... 35 cascades ............................................ 31 Case-Tool .............................................. 91 Charakter .............................................. 32 Checkpoints ........................................ 102 Chiffrierung............................................ 85 Class ..................................................... 140 Clustering .............................................. 85 CODASYL .......................................... 141 CODASYL-DBTG-Modell....................... 11 Code-Tabelle ........................................ 62 Commit .................................................. 97 Compiler .............................................. 100 CREATE TABLE ...................................... 104 Currency-Konzept .............................. 102 Cursor ................................................... 102 Cursor-Verwalter................................. 102 D Data Control Language...................... 13 Data Definition Language .................. 13 Data Description Language ............... 13 Data Dictionary . Siehe Metadatenbank Data Manipulation Language ........... 13 Database Management System ....... 10 Date ....................................................... 32 Datei .................................................... 140 Dateiverwaltung................................. 140 Datenbankmanagementsystem ....... 10 Datenbanksystem ................................ 13 Anhang hierarchisches ............................10, 140 netzwerkartiges..........................11, 140 relationales .................................12, 140 verteiltes ............................................. 99 Datenbanktechnik ................................ 83 Datenbanktransaktion ...................17, 20 Datenflussdiagramm ............................ 10 Datenkonsistenz ............................77, 100 Datenmodell.......................................... 17 zugriffspfadbezogenes ..................... 90 zugriffspfadunabhängiges ............. 103 Datenmodellierung .............................. 20 Datensatz ............................................. 140 Datensatzzeiger .................................. 102 Datenschutz .............................77, 78, 102 Datensicherheit .............................77, 100 Datentyp ........................................32, 112 Datenunabhängigkeit.......................... 14 physische ..................................103, 124 DatenwörterbuchSiehe Metadatenbank DB ......................................................... 141 DBA ...................................................... 141 DBMS ...............................................10, 141 DBTG .................................................... 141 DCL .................................................13, 141 DD......................................................... 141 DDL ..........................................13, 103, 141 Deadlock ............................................... 97 Denormalisierung ..................42, 118, 121 Determinante ........................................ 47 Divisionsrestverfahren ........................... 90 DML .........................................13, 103, 141 Domäne ................................................. 32 E Effizienz ..................................................... 9 Elementarinstrument ............................. 25 End Of Transaction................................ 97 Entität..............................................25, 140 abhängige ......................................... 26 Definition............................................. 25 historische ........................................... 75 Sub- ..................................................... 59 Super- .................................................. 59 unabhängige ..................................... 26 Entitäten-Beziehungs-Modell ............... 25 Entitätenverwaltung ............................. 90 Entitätsattribut ....................................... 34 Entitätschlüssel ..................................... 140 Entitätsintegrität .................................... 36 Entitätsmenge ...............................25, 140 Definition............................................. 25 Entitätsschlüssel ...............................35, 85 Entity ...............................................25, 140 Entity Integrity ........................................ 36 Entity Key .............................................. 140 Entity Set .........................................25, 140 Entity-Relationship-Modell......17, 26, 140 ER .......................................................... 141 ERM ...................................................... 141 Ersetzungsstrategie ............................... 84 Exclusive Lock ........................................ 95 Externe Ebene ....................................... 17 Externspeicherverwaltung ................... 84 Funktion .................................................. 20 Funktionale Abhängigkeit ................... 43 G Generalisierung ..................................... 59 Geschäftsprozess .......................... 20, 119 H Hash ........................................................ 90 Hauptspeicher ....................................... 84 Hierarchie ............................................... 53 I Identifikation .......................................... 79 Identifikationsschlüssel .................... 35, 85 IMS................................................... 11, 141 Index ....................................................... 85 Instanz ................................................... 140 Instrument ........................................ 25, 53 Integer .................................................... 32 Integrität .......................13, 17, 77, 93, 100 Entitäts- ............................................... 36 Entitäts- ............................................... 77 referentielle .......................... 36, 77, 140 semantische ....................................... 77 Integritätsregel ...................................... 58 Integrity Referential ........................................ 140 Interne Ebene ........................................ 17 Invertierte Liste ....................................... 85 Item ....................................................... 140 K Klasse .................................................... 140 Knoten .................................................... 87 Komprimierung ...................................... 85 Konsistenz ............................................... 77 Konsistenzbedingung primäre ............................................... 78 schwache .......................................... 78 sekundäre .......................................... 78 Strenge ............................................... 78 Konsistenzregel ...................................... 78 Konzeptionelle Ebene .......................... 17 Kryptographie ..................................... 102 L Lesemarke.............................................. 99 Lesephase .............................................. 95 Lesesperre .............................................. 95 Liste Invertierte ........................................... 85 Lock ........................................................ 95 Locktabelle ............................................ 95 Log ........................................................ 101 Logging ................................................ 101 Logik 2-wertig ............................................... 33 3-wertig ............................................... 33 Logische Ebene..................................... 17 F M Feld ....................................................... 140 Feldlänge ............................................... 85 Field ....................................................... 140 File ......................................................... 140 Float ........................................................ 32 Fragment .............................................. 124 Fragmentierungstransparenz ............ 124 Fremdschlüssel .................................12, 36 Fremdschlüsselverhalten ...................... 31 m\:m-Beziehung ................................... 46 Mehrbenutzerbetrieb ........................... 93 Metadaten ............................................ 90 Metadatenbank ................................... 91 aktive .................................................. 92 integrierte ........................................... 92 passive ................................................ 92 Meta-Meta-Daten ................................ 92 Migration ................................................ 75 17. Index Migrationsregel ..................................... 75 Modell 3-Schema- ......................................... 17 Entity-Relationship ............................. 26 erweitertes Relationen- .................... 27 Relationales ....................................... 26 N Namensgebung ................................... 26 Navigation ............................................. 11 NF .................................................... 42, 141 Nichtschlüsselattribute ......................... 43 NIL ........................................................... 33 Normalform ........................................... 42 1. 43 2. 44 3. 46 Boyce/Codd ..................................... 46 Normalisierung .................. 30, 33, 42, 118 NULL ........................................................ 33 nullifies .................................................. 31 NULL-Wert ........................................ 33, 74 Numeric ................................................. 32 O Objektorientiert ................................... 140 Optimierer............................................ 103 Optimistisches Verfahren ..................... 95 Optimizer ..................................... 103, 121 Ortstransparenz ................................... 124 P Performance ............................... 9, 33, 42 Performanz .............................................. 9 Periodenstempel .................................. 73 Pessimistisches Verfahren .................... 95 Physische Ebene ................................... 17 Pointer .................................................... 11 Primärschlüssel ........................ 35, 85, 140 Primary Key .......................................... 140 Projekt .................................................... 20 Protokoll ............................................... 101 Protokollierungsverfahren .................. 101 R Read-Before-Update ........................... 98 Real ........................................................ 32 Record ................................................. 140 Record-Manager .................................. 84 Record-Typ .......................................... 140 Recordverwalter ................................... 84 Recovery ............................................. 100 Redefinition ........................................... 33 Redundanz ...................................... 10, 17 Referential Integrity .............................. 36 Referentielle Integrität ......................... 36 Rekursion ................................................ 56 Relation .......................................... 12, 140 relational minimal ............................................... 13 voll ....................................................... 13 Relationship Set............................. 26, 140 Replikat ................................................ 125 Replikationstransparenz ..................... 125 Repository .......... Siehe Metadatenbank Restricted ............................................ 31 Role......................................................... 27 Rollback ......................................... 97, 100 Rolle ...................................... 27, 28, 31, 34 Rollforward .......................................... 100 Row ....................................................... 140 Schlüsselattribut .................................... 35 Schlüsselkandidat ................................. 35 Schlüsseltransformation ....................... 90 Schnittstelle ........................................... 84 Schreibmarke ........................................ 99 Schreibphase ........................................ 95 Schreibsperre ........................................ 95 Segement .............................................. 84 Seite ........................................................ 84 SELECT .................................................. 105 Semantic Override ............................... 34 Semantik ................................................ 63 Serialisierbar .......................................... 94 Shared Lock .......................................... 95 Sonderzeichen .................................... 139 Sortierschlüssel ...................................... 85 Spaltenname ...................................... 140 Speicheranomalie ................................ 42 Sperrtabelle ........................................... 95 Sperrverfahren ...................................... 95 Spezialisierung ....................................... 59 SQL ............. 13, 78, 79, 102, 104, 141, 199 Standarddatenmodell ......................... 20 Standardwert ........................................ 33 Statische Tabelle .................................. 62 String....................................................... 32 Stückliste ................................................ 58 Subentität .............................................. 59 Superentität........................................... 59 Synonym .............................................. 140 Systemabsturz ..................................... 100 Systemfunktion .................................... 119 Systempufferverwaltung...................... 84 213 Zeile ...................................................... 140 Zeitstempel ...................................... 73, 74 Zeitstempel-Verfahren ......................... 99 Zugriffshilfen........................................... 84 Zugriffspfad ........................... 84, 118, 119 physischer .......................................... 85 sekundärer ......................................... 85 Zugriffspfadoptimierer ....................... 103 Zugriffspfadverwaltung ................. 84, 85 Zugriffsrechtsmatrix............................... 79 Zugriffsverfahren Baumstrukturiertes ............................ 86 Invertierte Liste .................................. 85 Schlüsseltransformation ................... 90 T Tabelle ................................................. 140 Table .................................................... 140 Time ........................................................ 32 Transaktion ............................................ 93 logische ............................................ 119 serialisierbar ....................................... 94 Transaktionsverwaltung ....................... 93 Transitive Abhängigkeit ....................... 47 Tupel ............................................... 12, 140 Two-Phase-Commit .............................. 99 Typenbindung ....................................... 33 Ü Übersteuerung, semantische .............. 34 U Undo ....................................................... 97 Unterbereich ......................................... 32 V Validierungsphase ................................ 95 Verbund, Varianter .............................. 33 Verbundinstrument .............................. 53 Verdichtung .......................................... 76 Verteilung ............................................ 124 heterogene ..................................... 124 homogene ....................................... 124 View ....................................................... 17 Voll funktionale Abhängigkeit ............ 46 W Wertebereich .................................. 32, 43 Wertetabelle ......................................... 62 Wiederholungsgruppe ................... 32, 43 Wurzel ..................................................... 87 S Z Satzverwaltung ..................................... 84 Schichtenmodell................................... 83 Zeiger ..................................................... 87 Zeigerliste ............................................... 85 Anhang