\select@language {german} \contentsline {section}{\numberline {1}Informationssysteme und Datenbanksysteme}{7} \contentsline {subsection}{\numberline {1.1}Charakteristika von Informationssystemen}{7} \contentsline {subsection}{\numberline {1.2}Dienstgest"utzte Realisierung von Informationssystemen}{9} \contentsline {subsection}{\numberline {1.3}Anforderungen an Datenbankmodelle und Datenbanksprachen}{11} \contentsline {subsubsection}{\numberline {1.3.1}Unterst"utzung der Persistenz}{12} \contentsline {subsubsection}{\numberline {1.3.2}Unterst"utzung der Quantit"at}{14} \contentsline {subsubsection}{\numberline {1.3.3}Unterst"utzung der Reaktivit"at}{15} \contentsline {subsubsection}{\numberline {1.3.4}Unterst"utzung der Integrit"at}{16} \contentsline {subsection}{\numberline {1.4}Datenbankdienste f"ur moderne Informationssysteme}{19} \contentsline {subsection}{\numberline {1.5}Vorteile der Nutzung standardisierter Datenbankdienste}{19} \contentsline {subsection}{\numberline {1.6}Beispiel: Ein Firmeninformationssystem}{21} \contentsline {subsubsection}{\numberline {1.6.1}Dienstschnittstellen}{21} \contentsline {subsubsection}{\numberline {1.6.2}Informationsstrukturen}{21} \contentsline {subsubsection}{\numberline {1.6.3}Informationsverarbeitende Aktivit"aten }{22} \contentsline {section}{\numberline {2}Grundlagen der Datenbankmodellierung}{24} \contentsline {subsection}{\numberline {2.1}Abstraktionsmechanismen zur Datenstrukturierung}{24} \contentsline {subsubsection}{\numberline {2.1.1}Klassifikation und Instanziierung}{26} \contentsline {subsubsection}{\numberline {2.1.2}Aggregation und Dekomposition}{27} \contentsline {subsubsection}{\numberline {2.1.3}Generalisierung und Spezialisierung}{27} \contentsline {subsubsection}{\numberline {2.1.4}Assoziation und Identifikation}{28} \contentsline {subsubsection}{\numberline {2.1.5}Identifikation und Schl"ussel}{29} \contentsline {subsection}{\numberline {2.2}Persistenzabstraktion}{30} \contentsline {subsection}{\numberline {2.3}Datenunabh"angigkeit durch Schemaarchitekturen}{32} \contentsline {subsection}{\numberline {2.4}Grobklassifikation von Datenmodellen}{33} \contentsline {subsection}{\numberline {2.5}Benutzergruppen und Modalit"aten}{34} \contentsline {subsection}{\numberline {2.6}Datenbanksysteme und ihre Modelle: Ein historischer Abri"s}{35} \contentsline {subsubsection}{\numberline {2.6.1}Dateisysteme}{35} \contentsline {subsubsection}{\numberline {2.6.2}Fr"uhe Datenbanksysteme}{35} \contentsline {subsubsection}{\numberline {2.6.3}Relationale Datenbanksysteme}{36} \contentsline {subsubsection}{\numberline {2.6.4}Objektorientierte Datenbanksysteme}{39} \contentsline {subsubsection}{\numberline {2.6.5}Datenbanken in offenen Systemen}{39} \contentsline {section}{\numberline {3}Die etablierten Datenbankmodelle im "Uberblick}{40} \contentsline {subsection}{\numberline {3.1}Eine datenmodellunabh"angige Metanotation}{40} \contentsline {subsection}{\numberline {3.2}Das relationale Datenmodell}{42} \contentsline {subsubsection}{\numberline {3.2.1}"Uberblick "uber die Konzepte}{42} \contentsline {subsubsection}{\numberline {3.2.2}Tabellen und Schl"ussel}{43} \contentsline {subsubsection}{\numberline {3.2.3}Assoziationen im relationalen Modell}{45} \contentsline {subsubsection}{\numberline {3.2.4}Dom"anen und referentielle Integrit"at}{46} \contentsline {subsubsection}{\numberline {3.2.5}Normalisierung}{47} \contentsline {subsubsection}{\numberline {3.2.6}Datendefinition im relationalen Modell}{48} \contentsline {subsubsection}{\numberline {3.2.7}Die Anfragesprache SQL}{48} \contentsline {subsubsection}{\numberline {3.2.8}Aktualisierungsoperationen in SQL}{49} \contentsline {subsubsection}{\numberline {3.2.9}Zusammenfassung}{50} \contentsline {subsection}{\numberline {3.3}Objektorientierte Datenmodelle}{50} \contentsline {subsubsection}{\numberline {3.3.1}Anforderungen und Konzepte objektorientierter Datenmodelle}{51} \contentsline {subsubsection}{\numberline {3.3.2}"Uberblick "uber die Konzepte des ODMG-Objektmodells}{55} \contentsline {subsubsection}{\numberline {3.3.3}ODMG-Objekttypen}{56} \contentsline {subsubsection}{\numberline {3.3.4}Assoziationen im ODMG-Objektmodell}{57} \contentsline {subsubsection}{\numberline {3.3.5}Datendefinition im ODMG-Objektmodell}{59} \contentsline {subsubsection}{\numberline {3.3.6}Die Anfragesprache OQL}{59} \contentsline {subsubsection}{\numberline {3.3.7}Aktualisierungsoperationen im ODMG-Objektmodell}{60} \contentsline {subsection}{\numberline {3.4}"Uberblick "uber die pr"arelationale "Ara}{61} \contentsline {subsubsection}{\numberline {3.4.1}"Uberblick "uber die Konzepte des Netzwerkdatenmodells}{62} \contentsline {subsubsection}{\numberline {3.4.2}DBTG-Mengen}{63} \contentsline {subsubsection}{\numberline {3.4.3}Assoziationen im Netzwerkdatenmodell}{65} \contentsline {subsubsection}{\numberline {3.4.4}Datendefinition im Netzwerkdatenmodell}{66} \contentsline {subsubsection}{\numberline {3.4.5}DBTG-Anfrageoperationen}{68} \contentsline {subsubsection}{\numberline {3.4.6}Aktualisierungsoperationen im Netzwerkmodell}{71} \contentsline {subsubsection}{\numberline {3.4.7}Das Hierarchische Datenmodell}{72} \contentsline {subsection}{\numberline {3.5}Vergleich der Modelle}{77} \contentsline {section}{\numberline {4}Die relationale Datenbanksprache SQL}{78} \contentsline {subsection}{\numberline {4.1}Lexikalische und syntaktische Regeln}{78} \contentsline {subsection}{\numberline {4.2}Datendefinition in SQL}{81} \contentsline {subsubsection}{\numberline {4.2.1}Dynamische DDL Anweisungen}{81} \contentsline {subsubsection}{\numberline {4.2.2}Schemata und Kataloge}{82} \contentsline {subsubsection}{\numberline {4.2.3}Basisdatentypen und Typkompatibilit"at}{84} \contentsline {subsubsection}{\numberline {4.2.4}Nullwerte und Wahrheitswerte}{85} \contentsline {subsubsection}{\numberline {4.2.5}Tabellendefinitionen}{88} \contentsline {subsubsection}{\numberline {4.2.6}Lebensdauer, Sichtbarkeit und gemeinsame Nutzung von Tabellen}{89} \contentsline {subsubsection}{\numberline {4.2.7}Standardwerte f"ur Spalten}{90} \contentsline {subsection}{\numberline {4.3}Anfragen in SQL}{91} \contentsline {subsubsection}{\numberline {4.3.1}Monorelationale Select From Where-Anfragen}{92} \contentsline {subsubsection}{\numberline {4.3.2}Duplikatelimination und Sortierordnung}{93} \contentsline {subsubsection}{\numberline {4.3.3}Multirelationale Select From Where-Anfragen}{95} \contentsline {subsubsection}{\numberline {4.3.4}Sichtbarkeitsregeln und Spaltennamenkonflikte}{97} \contentsline {subsubsection}{\numberline {4.3.5}Einfache und quantifizierte Pr"adikate}{98} \contentsline {subsubsection}{\numberline {4.3.6}Algebraische Tabellenoperationen}{101} \contentsline {subsubsection}{\numberline {4.3.7}Join-Operationen}{102} \contentsline {subsubsection}{\numberline {4.3.8}Aggregatfunktionen}{104} \contentsline {subsubsection}{\numberline {4.3.9}Gruppierung}{106} \contentsline {subsection}{\numberline {4.4}"Anderungsoperationen in SQL}{106} \contentsline {subsubsection}{\numberline {4.4.1}update-Anweisung}{107} \contentsline {subsubsection}{\numberline {4.4.2}insert-Anweisung}{107} \contentsline {subsubsection}{\numberline {4.4.3}delete-Anweisung}{108} \contentsline {subsection}{\numberline {4.5}Integrit"atssicherung in SQL}{109} \contentsline {subsubsection}{\numberline {4.5.1}Spaltenwertintegrit"at und Dom"anendeklarationen}{110} \contentsline {subsubsection}{\numberline {4.5.2}Reihenintegrit"at}{111} \contentsline {subsubsection}{\numberline {4.5.3}Tabellenintegrit"at}{111} \contentsline {subsubsection}{\numberline {4.5.4}Referentielle Integrit"at}{112} \contentsline {subsubsection}{\numberline {4.5.5}Behandlung von Integrit"atsverletzungen}{114} \contentsline {subsubsection}{\numberline {4.5.6}Zeitpunkt der Integrit"ats"uberpr"ufung}{115} \contentsline {subsection}{\numberline {4.6}Sichten in SQL}{116} \contentsline {subsubsection}{\numberline {4.6.1}Sichten auf eine Tabelle}{116} \contentsline {subsubsection}{\numberline {4.6.2}Sichten auf mehrere Tabellen}{116} \contentsline {subsection}{\numberline {4.7}Transaktionale Datenbankprogrammierung}{116} \contentsline {section}{\numberline {5}Objektorientierte Datenbanksprachen}{117} \contentsline {subsection}{\numberline {5.1}Charakteristische Eigenschaften objektorientierter Datenbanken}{117} \contentsline {subsection}{\numberline {5.2}Zur Nutzung objektorientierter Datenbanksprachen}{117} \contentsline {subsection}{\numberline {5.3}"Uberblick "uber den ODMG-93 Standard}{119} \contentsline {subsection}{\numberline {5.4}Vergleich des ODMG-93 und des OMG Objektmodells}{121} \contentsline {subsection}{\numberline {5.5}Datendefinition in ODL}{122} \contentsline {subsubsection}{\numberline {5.5.1}"Uberblick "uber die vordefinierte ODMG-Typhierarchie}{122} \contentsline {subsubsection}{\numberline {5.5.2}Literale und Objekte}{123} \contentsline {subsubsection}{\numberline {5.5.3}Kollektionen und Iteratoren}{124} \contentsline {subsubsection}{\numberline {5.5.4}Strukturen}{125} \contentsline {subsubsection}{\numberline {5.5.5}Signaturen f"ur Eigenschaften und Operationen}{126} \contentsline {subsubsection}{\numberline {5.5.6}Subtypdefinitionen}{129} \contentsline {subsubsection}{\numberline {5.5.7}Beziehungen zwischen Typen}{130} \contentsline {subsubsection}{\numberline {5.5.8}Klassen als Implementierungen von Typen}{133} \contentsline {subsubsection}{\numberline {5.5.9}Sp"ate Bindung}{133} \contentsline {subsubsection}{\numberline {5.5.10}Sichtbarkeits- und Lebensdauerregeln}{135} \contentsline {subsubsection}{\numberline {5.5.11}Zugriff auf Metadaten "uber Objekte des Typs \glqq Type\grqq }{136} \contentsline {subsection}{\numberline {5.6}Anfragen in OQL}{137} \contentsline {subsubsection}{\numberline {5.6.1}Sprachorthogonalit"at}{138} \contentsline {subsubsection}{\numberline {5.6.2}Benannte Anfragen}{139} \contentsline {subsubsection}{\numberline {5.6.3}Elementare Anfragen}{140} \contentsline {subsubsection}{\numberline {5.6.4}Konstruktoren f"ur Objekte und Werte}{140} \contentsline {subsubsection}{\numberline {5.6.5}Funktionale Anfragen}{141} \contentsline {subsubsection}{\numberline {5.6.6}Quantifizierte Mengenanfragen}{143} \contentsline {subsubsection}{\numberline {5.6.7}Anfragen auf geordnete Kollektionen}{146} \contentsline {section}{\numberline {6}Modellierungs- und Sprachvarianten}{147} \contentsline {section}{\numberline {7}Modalit"aten des Datenbankzugriffs und ihre Sprachschnittstellen}{148} \contentsline {subsection}{\numberline {7.1}Werkzeuge zum interaktiven Datenbankzugriff}{148} \contentsline {subsection}{\numberline {7.2}Statischer Datenbankzugriff aus monomorphen Programmiersprachen}{148} \contentsline {subsubsection}{\numberline {7.2.1}Anfrage- und Cursordefinition in Embedded SQL}{148} \contentsline {subsubsection}{\numberline {7.2.2}Typisierung und Parametrisierung in Embedded SQL}{148} \contentsline {subsubsection}{\numberline {7.2.3}Programmierte SQL Fehlerbehandlung}{148} \contentsline {subsection}{\numberline {7.3}Statischer Datenbankzugriff aus polymorphen Programmiersprachen}{148} \contentsline {subsubsection}{\numberline {7.3.1}"Uberblick "uber die ODMG-93 C++ Sprachanbindung}{148} \contentsline {subsubsection}{\numberline {7.3.2}Korrespondenz zwischen ODMG Datenmodell und C++-Typsystem}{149} \contentsline {subsubsection}{\numberline {7.3.3}Objektmanipulation in C++ Syntax}{149} \contentsline {subsubsection}{\numberline {7.3.4}Lose Einbettung von OQL-Anfragen in C++}{149} \contentsline {subsection}{\numberline {7.4}Verbesserte Datenbankanbindung durch sprachliche Erweiterbarkeit}{149} \contentsline {subsection}{\numberline {7.5}Dynamischer Datenbankzugriff aus Programmiersprachen}{149} \contentsline {section}{\numberline {8}Integrierte Datenbanksprachen}{150} \contentsline {subsection}{\numberline {8.1}Sprachen der Vierten Generation}{150} \contentsline {subsection}{\numberline {8.2}Datenbankprogrammiersprachen}{150} \contentsline {subsection}{\numberline {8.3}Persistente Programmiersprachen}{150} \contentsline {section}{\numberline {9}Transaktionen und ihre Realisierung}{151} \contentsline {subsection}{\numberline {9.1}Atomarit"at}{152} \contentsline {subsection}{\numberline {9.2}Konsistenz}{153} \contentsline {subsection}{\numberline {9.3}Isolation}{153} \contentsline {subsection}{\numberline {9.4}Dauerhaftigkeit und Fehlererholung}{154} \contentsline {subsection}{\numberline {9.5}Transaktionen}{154} \contentsline {subsection}{\numberline {9.6}Transaktionsvereinfachung}{156} \contentsline {subsection}{\numberline {9.7}Zweiphasige und wohlgeformte Transaktionen}{157} \contentsline {subsection}{\numberline {9.8}Abh"angigkeitsgraphen}{159} \contentsline {subsection}{\numberline {9.9}Abh"angigkeitszyklen}{160} \contentsline {subsection}{\numberline {9.10}Niedrige Grade der Isolation}{161} \contentsline {subsection}{\numberline {9.11}Grade der Isolation in SQL}{162} \contentsline {subsection}{\numberline {9.12}Cursor stability}{163}