HUDU

Objektrelationale Datenbanken


€ 39,00
 
kartoniert
Sofort lieferbar
November 2005

Beschreibung

Beschreibung

Objektrelationale Datenbanksysteme sind State-of-the-Art. Durch die Synthese relationaler und objektorientierter Datenbanktechnologien bieten sie eine flexible und m¿tige 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.

Inhaltsverzeichnis

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 Benutzerdefinie
rte 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 A
nforderungsanalyse;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 Abschl
ieß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


Leseprobe

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 unerlasslich. 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.
EAN: 9783898641906
ISBN: 3898641902
Untertitel: Ein Lehrbuch.
Verlag: Dpunkt.Verlag GmbH
Erscheinungsdatum: November 2005
Seitenanzahl: XII
Format: kartoniert
Es gibt zu diesem Artikel noch keine Bewertungen.Kundenbewertung schreiben