Objektrelationale Datenbanken (eBook) - Can Türker, Gunter Saake
Fotogalerie Fotogalerie Fotogalerie Fotogalerie Fotogalerie
Fotogalerie Fotogalerie Fotogalerie Fotogalerie Fotogalerie
Fotogalerie

Gunter Saake Can Türker 

Objektrelationale Datenbanken (eBook)

Ein Lehrbuch

eBook
 
Nicht lieferbar
Nicht lieferbar
Bewerten Empfehlen Merken Auf Lieblingsliste


Objektrelationale Datenbanken (eBook)

Objektrelationale Datenbanksysteme sind State-of-the-Art. Durch die Synthese relationaler und objektorientierter Datenbanktechnologien bieten sie eine flexible und mächtige Infrastruktur für moderne Informationssysteme. Für ihren effizienten Einsatz sind weit reichende Kenntnisse sowohl über Datenbankmodelle und -sprachen als auch über die Interna von Datenbanksystemen notwendig.

Dieses Lehrbuch richtet sich an alle Studierenden, Anwendungsentwickler, Datenbankdesigner und -administratoren, die sich fundiertes Wissen über objektrelationale Datenbanktechnologie aneignen möchten.

Nach einer kurzen Einführung in die Architektur von Datenbanksystemen und die Evolution von Datenmodellen konzentriert sich das Buch auf:

• objektrelationale Konzepte
• objektrelationales SQL
• objektrelationalen Datenbankentwurf
• Implementierung und relationale Umsetzung objektrelationaler Konzepte
• objektrelationale Datenbankanwendungsprogrammierung
• interne Strukturen, Tuning und Erweiterbarkeit
• XML-Unterstützung objektrelationaler Datenbanken

Bei der Vorstellung der objektrelationalen Datenmodellkonzepte wird gezeigt, wie sich diese Konzepte im aktuellen SQL-Standard wiederfinden. Bei »strittigen« Konzepten werden alternative Umsetzungen in den kommerziellen objektrelationalen SQL-Dialekten (Oracle, DB2, Informix, PostgreSQL) herangezogen.

Auf der Website des Buches ist weiteres Begleitmaterial zu finden wie Musterlösungen zu den Übungsaufgaben und Vorlesungsfolien.

Zielgruppe sind Studierende und Dozenten, Anwendungsentwickler sowie Datenbankdesigner und -administratoren

Die Autoren

Dr. Can Türker ist Leiter der Datenintegrationsgruppe am Functional Genomics Center Zürich. Seine Forschung beschäftigt sich mit der Integration, Dynamik und Mobilität von Informationssystemen. Er ist Koautor der Lehrbücher "Objektdatenbanken" und "Mobile Datenbanken und Informationssysteme". Zudem ist er der Verfasser des Buches "SQL:1999 & SQL:2003 - Objektrelationales SQL, SQLJ & SQL/XML", dem bislang einzigen umfassenden Werk zum aktuellen Datenbanksstandard SQL:2003.

Dr. Gunter Saake ist Professor für Datenbanken und Informationssysteme an der Universität Magdeburg und forscht unter anderem auf den Gebieten Datenbankintegration, digitale Bibliotheken, objektorientierte Informationssysteme und Informationsfusion. Er ist Koautor mehrerer Lehrbücher, etwa zu den Themen Datenbankkonzepte und -implementierungstechniken. Er ist weiter Hauptherausgeber der Zeitschrift "Datenbank-Spektrum - Zeitschrift für Datenbanktechnologie".


Produktinformation

  • Deutsch
  • ISBN-13: 9783898641906
  • ISBN-10: 3898641902
  • Best.Nr.: 25772230

Leseprobe zu "Objektrelationale Datenbanken (eBook)"

8 Objektrelationale Datenbankanwendungsprogrammierung (S. 317-318)

Die Programmierung von Anwendungen auf objektrelationalen Datenbanken kann im Prinzip über die für relationale Datenbanken verwendeten Datenbankzugriffsschnittstellen geschehen. Um jedoch die erweiterten Konstrukte objektrelationaler Datenbanken ausnutzen zu können, sind eine objektorientierte Anwendungsprogrammiersprache wie Java und entsprechende Datenbankzugriffsschnittstellen wie JDBC und SQLJ unerl¨asslich. Im besten Fall ermöglichen diese Schnittstellen eine »Eins-zu-eins«-Abbildung zwischen Anwendungs- und Datenbankobjekten und erlauben insbesondere die transparente Verwendung von Datenbankmethoden in der Anwendung.

Java ist in Verbindung mit einer objektrelationalen Datenbank vielseitig einsetzbar (siehe Abbildung 8.1). Auf der Clientseite kann sie genutzt werden, um Datenbankanwendungen und Benutzerschnittstellen in Java zu implementieren. Im Datenbankserver können benutzerdefinierte Routinen und Datentypen in Java implementiert werden (siehe auch Kapitel 10). In einer dreischichtigen Middleware-Architektur können wiederverwendbare Java-Komponenten (JavaBeans) auf dem Anwendungsserver programmiert werden.

Mit JDBC und SQLJ gibt es zwei Java-SQL-Schnittstellen, welche die Anbindung von Java-Programmen an SQL-Datenbanken unterst ützen. JDBC ist eine Entwicklung von Sun, die als Teil von Java frei verf ügbar ist. SQLJ ist Teil des SQL-Standards. Dieses Kapitel stellt diese beiden Schnittstellen vor und geht vor allem auf die Verwendung der objektrelationalen Erweiterungen in Java ein. Auf die Verwendung von SQLJ für die Erweiterung einer SQL-Datenbank mit Java-Methoden und Java-Klassen werden wir in Kapitel 10 eingehen.

8.1 JDBC: Dynamische SQL-Einbettung in Java

Die dynamische Einbettung von SQL-Anweisungen in Java-Programmen erfolgt mit Hilfe von JDBC, die eine Datenbankzugriffsschnittstelle bietet, über die SQL-Anweisungen als Zeichenketten mittels vordefinierter Funktionen an die Datenbank geschickt werden. Ein Java-Programm, das JDBC-Anweisungen direkt zum Zugriff auf die Datenbank nutzt, bezeichnen wir im Folgenden als JDBC-Programm.

Beispiel 8.1 skizziert die Struktur eines JDBC-Programms, das eine Datenbankverbindung aufbaut, Daten aus einer Datenbank liest und diese Daten auf dem Bildschirm ausgibt. Konkret werden die Kundennummern und Namen aller Kunden ausgegeben. Aus Gründen der Übersicht vernachlässigen wir hier die Ausnahmebehandlung.

Inhaltsangabe

1;Vorwort;6 2;Inhaltsverzeichnis;8 3;1 Einleitung und Motivation;14 3.1;1.1 Grundlegende Begriffe;14 3.2;1.2 Aufgaben eines Datenbanksystems;17 3.3;1.3 Akteure in Datenbanksystemen;18 3.4;1.4 Historie von Datenbanksystemen;19 3.5;1.5 Evolution von Datenmodellen;20 3.6;1.6 Anwendungen von Datenbanksystemen;22 3.7;1.7 Objektrelationale Datenbanksysteme;24 3.8;1.8 Objektrelationale Konzepte;24 3.9;1.9 Beispielanwendung;29 3.10;1.10 Gliederung des Buches;32 4;2 Architektur von Datenbanksystemen;36 4.1;2.1 Anforderungen;36 4.2;2.2 Schichtenarchitektur;40 4.3;2.3 Komponenten eines DBMS;42 4.4;2.4 Client/ServerArchitekturen;44 4.5;2.5 Erweiterbare Architekturen;48 4.6;2.6 Architekturen für Datenbankanwendungen;51 4.7;2.7 Schnittstellen zu DBMS;54 4.8;2.8 Literaturhinweise;55 4.9;2.9 Übungsaufgaben;55 5;3 Evolution von Datenmodellen;56 5.1;3.1 Grundkonzepte von Datenmodellen;58 5.1.1;3.1.1 Komplexe Werte;59 5.1.2;3.1.2 Objekte und Referenzen;65 5.2;3.2 Relationenmodell und Erweiterungen;68 5.2.1;3.2.1 Das Grundmodell;68 5.2.2;3.2.2 SQL-92-Datenmodell;70 5.2.3;3.2.3 NF2Modell;72 5.2.4;3.2.4 Komplex-Objekt-Modell;77 5.2.5;3.2.5 Erweitertes NF2-Modell;78 5.3;3.3 Objektmodelle;79 5.3.1;3.3.1 Basisobjektmodell;79 5.3.2;3.3.2 ODMGModell;86 5.3.3;3.3.3 UMLModell;91 5.4;3.4 Semistrukturierte Datenmodelle;99 5.4.1;3.4.1 Merkmale semistrukturierter Datenmodelle;100 5.4.2;3.4.2 Modelle für semistrukturierte Daten;100 5.4.3;3.4.3 XML-Datenmodell;102 5.5;3.5 Abschließende Bemerkungen;107 5.6;3.6 Literaturhinweise;110 5.7;3.7 Übungsaufgaben;110 6;4 Objektrelationale Konzepte;112 6.1;4.1 Objektrelationales Typsystem;112 6.1.1;4.1.1 Basisdatentypen;113 6.1.2;4.1.2 Typumwandlungen und benutzerdefinierte Casts;114 6.1.3;4.1.3 Typkonstruktoren;116 6.1.4;4.1.4 Benutzerdefinierte Datentypen;119 6.1.5;4.1.5 DistinctTypen;121 6.1.6;4.1.6 Strukturdatentypen;122 6.1.7;4.1.7 Typhierarchien;124 6.1.8;4.1.8 Methoden;127 6.1.9;4.1.9 Objektidentifikatoren und Referenzen;130 6.1.10;4.1.10 Benutzerdefinierte Ordnungen;133 6.2;4.2 Objektrelationale Tabellen;133 6.2.1;4.2.1 Tupeltabellen;135 6.2.2;4.2.2 Typisierte Tabellen;136 6.2.3;4.2.3 Tabellenhierarchien;139 6.3;4.3 Objektrelationale Sichten;142 6.3.1;4.3.1 Tupelsichten;143 6.3.2;4.3.2 Typisierte Sichten;144 6.3.3;4.3.3 Sichtenhierarchien;146 6.4;4.4 Weitere Konzepte;147 6.4.1;4.4.1 Benutzerdefinierte Prozeduren und Funktionen;147 6.4.2;4.4.2 Trigger;149 6.5;4.5 Abschließende Bemerkungen;149 6.6;4.6 Literaturhinweise;152 6.7;4.7 Übungsaufgaben;153 7;5 Objektrelationales SQL;154 7.1;5.1 Objektrelationales Typsystem;154 7.1.1;5.1.1 Basisdatentypen;155 7.1.2;5.1.2 Tupeltypkonstruktor;160 7.1.3;5.1.3 Arraytypkonstruktor;161 7.1.4;5.1.4 Multimengentypkonstruktor;162 7.1.5;5.1.5 Referenztypkonstruktor;164 7.2;5.2 Datendefinition;165 7.2.1;5.2.1 DistinctTypen;165 7.2.2;5.2.2 Strukturierte Typen und Typhierarchien;166 7.2.3;5.2.3 Tupeltabellen;171 7.2.4;5.2.4 Tupelsichten;173 7.2.5;5.2.5 Typisierte Tabellen und Tabellenhierarchien;173 7.2.6;5.2.6 Typisierte Sichten und Sichtenhierarchien;177 7.2.7;5.2.7 Benutzerdefinierte Routinen;181 7.2.8;5.2.8 Benutzerdefinierte Konstruktoren;186 7.2.9;5.2.9 Trigger;188 7.2.10;5.2.10 Benutzerdefinierte Casts;189 7.3;5.3 Anfragen;192 7.3.1;5.3.1 Anfragespezifikation;192 7.3.2;5.3.2 Verbundoperatoren;196 7.3.3;5.3.3 Mengenoperatoren;198 7.3.4;5.3.5 Navigierende Anfragen;200 7.3.5;5.3.7 Anfragen auf Kollektionen;201 7.3.6;5.3.8 Anfragen auf flachen Tabellenextensionen;202 7.3.7;5.3.10 Anfragen mit temporärer Typanpassung;203 7.3.8;5.3.11 Anfragen auf Tabellenfunktionen;204 7.3.9;5.3.12 Rekursive Anfragen;204 7.4;5.4 Datenmanipulation;205 7.4.1;5.4.1 Einfügen von Tabellenzeilen;206 7.4.2;5.4.2 Ändern von Tabellenspaltenwerten;207 7.4.3;5.4.3 Löschen von Tabellenzeilen;210 7.5;5.5 Schemamanipulation;211 7.6;5.6 Abschließende Bemerkungen;213 7.7;5.7 Literaturhinweise;217 7.8;5.8 Übungsaufgaben;218 8;6 Objektrelationaler Datenbankentwurf;222 8.1;6.1 Aspekte des Datenbankentwurfs;222 8.2;6.2 Anforderungsanalyse;224 8.3;6.3 Konzeptioneller Entwurf mit UML;225 8.3.1;6.3.1 Entwurf von Klassen;226 8.3.2;6.3.2 Entwurf von Assoziationen;229 8.3.3;6.3.3 Entwurf von Spezialisierungshierarchien;232 8.4;6.4 Logischer Entwurf mit objektrelationalem SQL;247 8.4.1;6.4.1 Abbildung von Klassen;247 8.4.2;6.4.2 Abbildung von Assoziationen;250 8.4.3;6.4.3 Abbildung von Spezialisierungshierarchien;254 8.5;6.5 Normalisierung;259 8.5.1;6.5.1 Anomalien;260 8.5.2;6.5.2 Funktionale Abhängigkeiten und Normalformen;261 8.6;6.6 Abschließende Bemerkungen;271 8.7;6.7 Literaturhinweise;272 8.8;6.8 Übungsaufgaben;272 9;7 Relationale Umsetzung objektrelationaler Konzepte;274 9.1;7.1 Umsetzung von Objektidentifikatoren und Referenzen;274 9.2;7.2 Umsetzung von Kollektionen;280 9.2.1;7.2.1 Kollektionstabellenansatz;280 9.2.2;7.2.2 Kollektionsspaltenansatz;288 9.3;7.3 Umsetzung von Spezialisierungshierarchien;293 9.3.1;7.3.1 Virtuelle Fragmentierung;294 9.3.2;7.3.2 Vertikale Fragmentierung;300 9.3.3;7.3.3 Horizontale Fragmentierung;305 9.3.4;7.3.4 Unterstützung von Anfragen;310 9.3.5;7.3.5 Unterstützung von Schemamanipulationen;318 9.3.6;7.3.6 Gegenüberstellung der Fragmentierungsarten;321 9.4;7.4 Umsetzung von Objektverhalten;323 9.5;7.5 Abschließende Bemerkungen;325 9.6;7.6 Literaturhinweise;327 9.7;7.7 Übungsaufgaben;328 10;8 Objektrelationale Datenbankanwendungsprogrammierung;330 10.1;8.1 JDBC: Dynamische SQLEinbettung in Java;331 10.1.1;8.1.1 Registrierung von JDBCTreibern;333 10.1.2;8.1.2 Aufbau einer Datenbankverbindung;333 10.1.3;8.1.3 Senden von SQLAnweisungen;334 10.1.4;8.1.4 Verarbeitung von Anfrageergebnissen;338 10.1.5;8.1.5 Fehlerbehandlung;342 10.1.6;8.1.6 Transaktionsanweisungen;343 10.1.7;8.1.7 Verarbeitung von SQLLOBs;344 10.1.8;8.1.8 Verarbeitung von SQLArrays;346 10.1.9;8.1.9 Verarbeitung von SQLReferenz;349 10.1.10;8.1.10 Verarbeitung von SQLTupeln;351 10.1.11;8.1.11 Verarbeitung von Instanzen benutzerdefinierter Typen;353 10.1.12;8.1.12 Benutzerdefinierte Typabbildung;354 10.2;8.2 SQLJ: Statische SQLEinbettung in Java;362 10.2.1;8.2.1 Architektur von SQLJ;364 10.2.2;8.2.2 SQLJ-Anweisungen;365 10.2.3;8.2.3 Hostvariablen und ausdrücke;367 10.2.4;8.2.4 Iteratoren;368 10.2.5;8.2.5 Verbindungskontexte;370 10.2.6;8.2.6 Ausführungskontexte;372 10.2.7;8.2.7 Interoperation zwischen JDBC und SQLJ;373 10.3;8.3 Abschließende Bemerkungen;375 10.4;8.4 Literaturhinweise;376 10.5;8.5 Übungsaufgaben;376 11;9 Interne Strukturen und Tuning;378 11.1;9.1 Speicherung;378 11.1.1;9.1.1 Grundlagen der Speicherung;378 11.1.2;9.1.2 Speicherung von LOBs;381 11.1.3;9.1.3 Speicherung von OIDs und Referenzen;384 11.1.4;9.1.4 Speicherung von Kollektionen;384 11.1.5;9.1.5 Speicherung von Spezialisierungshierarchien;386 11.2;9.2 Indexstrukturen;388 11.2.1;9.2.1 Klassische Indexstrukturen;389 11.2.2;9.2.2 Indexstrukturen für benutzerdefinierte Funktionen und Methoden;393 11.2.3;9.2.3 Indexstrukturen für Referenzen;395 11.2.4;9.2.4 Indexstrukturen für LOBs;400 11.2.5;9.2.5 Indexstrukturen für Kollektionen;401 11.2.6;9.2.6 Indexstrukturen für Spezialisierungshierarchien;403 11.2.7;9.2.7 Indexstrukturen für benutzerdefinierte Typen;405 11.3;9.3 Tuning der internen Strukturen;406 11.4;9.4 Optimierung von Anfragen;409 11.4.1;9.4.1 Motivation der Optimierung;409 11.4.2;9.4.2 Phasen der Anfragebearbeitung;410 11.4.3;9.4.3 Übersetzung und Sichtexpansion;411 11.4.4;9.4.4 Logische Optimierung;412 11.4.5;9.4.5 Effiziente Basisalgorithmen;416 11.4.6;9.4.6 Kosten von Pl anen;419 11.4.7;9.4.7 Kostenbasierte Auswahl;420 11.5;9.5 Abschließende Bemerkungen;422 11.6;9.6 Literaturhinweise;424 11.7;9.7 Übungsaufgaben;425 12;10 Erweiterbarkeit;426 12.1;10.1 Der Begriff der Erweiterbarkeit;426 12.2;10.2 Erweiterbarkeit in StandardSQL;427 12.2.1;10.2.1 JavaMethoden als externe Routinen;428 12.2.2;10.2.2 JavaKlassen als externe Datentypen;435 12.3;10.3 Erweiterbarkeit in kommerziellen ORDBMS;444 12.3.1;10.3.1 Informix DataBlades;444 12.3.2;10.3.2 Oracle Data Options;469 12.4;10.4 Abschließende Bemerkungen;476 12.5;10.5 Literaturhinweise;477 12.6;10.6 Übungsaufgaben;478 13;11 XML und objektrelationale Datenbanken;480 13.1;11.1 XML-Grundlagen;481 13.1.1;11.1.1 Struktur von XML-Dokumenten;481 13.1.2;11.1.2 Darstellung und Navigation in einem Dokumentbaum;484 13.1.3;11.1.3 Typisierung von XML-Dokumenten;488 13.2;11.2 Speicherung von XMLDokumenten;493 13.2.1;11.2.1 Textbasierte Speicherung von XML-Dokumenten;494 13.2.2;11.2.2 Modellbasierte Speicherung von XML-Dokumenten;495 13.2.3;11.2.3 Strukturbasierte Speicherung von XML-Dokumenten;499 13.3;11.3 XML-Support in Oracle;506 13.3.1;11.3.1 Abbildung von XML auf Oracle-Datenbanken;506 13.3.2;11.3.2 Behandlung von XML-Schemata;507 13.3.3;11.3.3 Anfragen und Änderungen;511 13.3.4;11.3.4 XML-Sichten;516 13.3.5;11.3.5 Generierung von XML-Dokumenten;517 13.3.6;11.3.6 Indexierung;519 13.4;11.4 XMLSupport in DB2;521 13.4.1;11.4.1 Abbildung von XML auf DB2-Datenbanken;521 13.4.2;11.4.2 Abbildung von DB2-Datenbanken auf XML;531 13.4.3;11.4.3 Anfragen und Änderungen;534 13.4.4;11.4.4 Indexierung;535 13.5;11.5 Abschließende Bemerkungen;536 13.6;11.6 Literaturhinweise;537 13.7;11.7 Übungsaufgaben;538 14;12 Resümee;540 15;Abkürzungsverzeichnis;542 16;Literaturverzeichnis;544 17;Index;552