OODB 1 Slide 1 Objektorientierte Datenbanken Vorlesung 1 Sebastian Iwanowski FH Wedel
OODB 1 Slide Organisatorisches Vorlesung Mittwochs, 09:30 10:5 Raum HS Übung Dienstags, 09:30 10:5 (erstmalig am 1.0.) betreut von Christine Apfel, Julia Drowatzky, Jan-Oliver Steinbach Raum RZ1 Anmeldung über https://ssl.fh-wedel.de/uebanmeldung/anmeldung Praktische Aufgaben zum Vorlesungsstoff Beantworten von Fragen
OODB 1 Slide 3 Inhaltlicher Umfang dieser Vorlesung Inhaltliche Voraussetzungen: Datenbanken, Objektorientierte Programmierung (Java) Lernziele dieser Vorlesung: Grundprinzipien von OODBs Einsatz von OODBs für praktische Anwendungen Überblick über die gängigen Standards und Techniken Zusammenspiel objektorientierter Programmierung mit Datenbanken kein Lernziel dieser Vorlesung: Implementierung von OODBs
OODB 1 Slide Inhalte: Motivation und Überblick Vorlesungsaufbau Grundlegende Konzepte: Persistenz, Transaktionen, Anfragen ODMG-Standard JDO-Standard Anbindungsmöglichkeiten von relationalen Datenbanken an objektorientierte Programmierumgebungen Material zu dieser Vorlesung: www.fh-wedel.de/~iw/lehrveranstaltungen/ss005/oodb.html alte Vorlesung: www.fh-wedel.de/~iw/lehrveranstaltungen/ss00/oodb.html Literatur (in Folgenden genannt)
OODB 1 Slide 5 Literatur für den allgemeinen Kontext Andreas Geppert: Objektrelationale und objektorientierte Datenbankkonzepte und -systeme, dpunkt.verlag 00, ISBN 3-8986-1- Andreas Heuer: Objektorientierte Datenbanken Konzepte, Modelle, Standards und Systeme, Addison Wesley 1997 (. Auflage), ISBN 3-89319-800-8 Alfons Kemper / Andre Eickler: Datenbanksysteme Eine Einführung, Oldenbourg 00 (5. Auflage), ISBN 3-86-739- In unserer Bibliothek: Oldenbourg 001 (. Auflage), ISBN 3-86-5706- Andreas Meier / Thomas Wüst: Objektorientierte und objektrelationale Datenbanken Ein Kompaß für die Praxis, dpunkt.verlag 000, ISBN 3-93588-68-1
OODB 1 Slide 6 Literatur für die Schwerpunkte dieser Vorlesung Richard G.G. Cattell / Douglas K. Barry (Edts.): The Object Data Standard: ODMG 3.0, Morgan Kaufmann, ISBN 1-55860-67- David Jordan / Craig Russell: Java Data Objects, O'Reilly 003, ISBN 0-596-0076-9 Robin Roos: Java Data Objects, Addison-Wesley 00, ISBN 0-31-1380-8 Arno Schmidhauser: Skript JDO, Hochschule für Technik und Architektur (HTA) Bern
OODB 1 Slide 7 und nun geht es los: erst einmal mit Datenbanken
OODB 1 Slide 8 Ziele von Datenbanken: Warum Datenbanken? Permanente Sicherung von Daten zum Zweck der Wiederverwendung Vereinigung des Wissens mehrerer Benutzer und Programme Schutz vor unautorisiertem Zugriff auf Daten Exakt definierte Datenformate und Zugriffsmöglichkeiten Was kann beim Verfolgen dieser Ziele ohne Datenbanken passieren? Verlust von Daten Redundanz und Inkonsistenz Probleme beim Mehrbenutzerbetrieb Integritätsverletzung Sicherheitsprobleme hohe Entwicklungskosten für Anwendungsprogramme beschränkte Zugriffsmöglichkeiten
OODB 1 Slide 9 Wie sind Datenbanken aufgebaut? konzeptionelle Sicht ER-Modell (ER=Entity Relationship) Datenmodell logische Sicht Relationales Datenmodell (oder anderes Modell) physische Sicht Konkrete Speicherplätze Datenmanipulationssprache (DML) SQL Zum Definieren, Abfragen und Ändern eines Datenbestandes für ein relationales Datenmodell
OODB 1 Slide 10 Konzeptionelle Sicht: Beispiel für ein ER-Modell MatrNr Studenten voraussetzen Nachfolger Vorgänger hören Vorlesungen VorlNr SWS Semester Titel Note prüfen lesen PersNr Assistenten arbeitenfür Professoren Rang Raum Fachgebiet PersNr
OODB 1 Slide 11 Logische Sicht: Ausschnitt eines relationalen Modells Professoren 1 lesen N Vorlesungen Professoren Vorlesungen PersNr Rang Raum VorlNr Titel SWS Gelesen Von 15 Sokrates C 6 Grundzüge 137 16 Russel C 3 501 Ethik 15 17 Kopernikus C3 310 133 Popper C3 5 13 Augustinus C3 309 136 Curie C 36 137 Kant C 7 503 509 05 505 516 Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik 3 3 16 15 15 16 16 559 Der Wiener Kreis 133 50 Glaube und Wissen 13 630 Die 3 Kritiken 137
Anfragen an die Datenbank Anfragen können Informationen aus beliebigen Tabellen verknüpfen: Professoren Vorlesungen PersNr Rang Raum VorlNr Titel SWS gelesen Von 15 16 Sokrates Russel C C 6 3 501 Grundzüge Ethik 137 15 137 Kant C 7 509 Mäeutik 15 630 Die 3 Kritiken 137 Welcher Professor liest "Mäeutik"? select, Titel from Professoren, Vorlesungen where PersNr = gelesenvon and Titel = 'Mäeutik'; SQL-Anfrage Die Bearbeitung verknüpfter Anfragen kann zeitaufwändig sein! OODB 1 Slide 1
PersNr 15 16 Professoren Sokrates Russel Rang C C Raum 6 3 VorlNr 501 Vorlesungen Titel SWS Grundzüge Ethik gelesen Von 137 15 137 Kant C 7 509 Mäeutik 15 630 Die 3 Kritiken 137 JOIN Verknüpfung: jeder mit jedem PersNr 15 15 Sokrates Sokrates Rang C C Raum 6 6 VorlNr 501 Titel Grundzüge Ethik SWS gelesen Von 137 15 15 Sokrates C 6 509 Mäeutik 15 16 16 Russel Russel C C 3 3 501 Grundzüge Ethik 137 15 137 SELECTION Kant C 7 630 Die 3 Kritiken Auswahl von Zeilen 137 PersNr 15 PROJECTION Sokrates Rang C Raum 6 VorlNr Titel 509 Mäeutik Auswahl von Spalten SWS gelesen Von 15 Sokrates Titel Mäeutik OODB 1 Slide 13
OODB 1 Slide 1 Achtung: Übertragung aus ER-Modell darf nicht beliebig sein! lesen Professoren 1 N Z.B. NICHT so: Vorlesungen Vorlesungen Professoren PersNr Rang Raum liest VorlNr 501 Titel Grundzüge Ethik SWS 15 Sokrates C 6 501 503 Erkenntnistheorie 3 15 Sokrates C 6 509 509 Mäeutik 15 Sokrates C 6 05 05 Logik............... 505 Wissenschaftstheorie 3 13 Augustinus C3 309 50 516 559 Bioethik Der Wiener Kreis 136 Curie C 36?? 50 Glaube und Wissen 630 Die 3 Kritiken
OODB 1 Slide 15 Anomalien durch Verletzung von Normalformen Vorlesungen VorlNr Titel SWS Professoren Grundzüge PersNr Rang Raum liest 501 Ethik 15 Sokrates C 6 501 503 Erkenntnistheorie 3 15 Sokrates C 6 509 15 Sokrates C 6 05 509 05 505 Mäeutik Logik Wissenschaftstheorie 3............... 516 Bioethik 13 Augustinus C3 309 50 559 Der Wiener Kreis 136 Curie C 36?? 50 Glaube und Wissen 630 Die 3 Kritiken Aktualisierungs-Anomalie: Was passiert wenn Sokrates umzieht? Lösch-Anomalie: Was passiert wenn Glaube und Wissen wegfällt? Einfügeanomalie: Curie ist neu und liest noch keine Vorlesungen
OODB 1 Slide 16 So sollte es stattdessen gemacht werden: Professoren Studenten Vorlesungen PersNr Rang Raum MatrNr Semester VorlNr Titel SWS gelesenvon 15 Sokrates C 16 Russel C 17 Kopernikus C3 133 Popper C3 13 Augustinus C3 136 Curie C 137 Kant C voraussetzen Vorgänger Nachfolger 501 503 509 501 516 503 505 501 505 505 559 prüfen MatrNr VorlNr PersNr 8106 16 6 3 310 5 309 36 7 Note 1 00 Xenokrates 503 Jonas 610 Fichte 6830 Aristoxenos 7550 Schopenhauer 8106 Carnap 910 Theophrastos 9555 Feuerbach hören MatrNr VorlNr 610 7550 7550 05 8106 501 8106 505 8106 516 8106 559 910 910 501 910 509 18 1 10 8 6 3 501 503 509 05 505 516 559 50 630 PerslNr 300 3003 300 3005 3006 3007 Grundzüge Ethik Erkenntnistheorie 3 Mäeutik Logik Wissenschaftstheorie 3 Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken Assistenten Fachgebiet Platon Ideenlehre Aristoteles Syllogistik Wittgenstein Sprachtheorie Rhetikus Planetenbewegung Newton Keplersche Gesetze Spinoza Gott und Natur 137 15 16 15 15 16 16 133 13 137 Boss 15 15 16 17 17 16 503 501 15 9555 50 7550 630 137 503 50 effiziente Darstellung, aber unübersichtlich!
OODB 1 Slide 17 Daraus resultierender Nachteil: Navigierende Zugriffe sind umständlich Welche Vorlesungen müssen für Der Wiener Kreis gehört worden sein? voraussetzen Vorgänger Nachfolger VorlNr Vorlesungen Titel SWS gelesenvon 501 503 501 505 501 503 509 516 505 505 559 501 503 509 05 505 516 Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik 3 3 137 15 16 15 15 16 16 559 Der Wiener Kreis 133 50 Glaube und Wissen 13 630 Die 3 Kritiken 137 select pred1.titel, pred.titel, pred3.titel from Vorlesungen this, Vorlesungen pred1, Vorlesungen pred, Vorlesungen pred3, voraussetzen pred1pt, voraussetzen predpt, voraussetzen pred3pt where this.titel = 'Der Wiener Kreis' and this.vorlnr = pred1pt.nachfolger and pred1pt.vorgänger = pred1.vorlnr and pred1pt.vorgänger = predpt.nachfolger and predpt.vorgänger = pred.vorlnr and predpt.vorgänger = pred3pt.nachfolger and pred3pt.vorgänger = pred3.vorlnr; SQL-Antwort: 'Wissenschaftstheorie', 'Erkenntnistheorie', 'Ethik', 'Grundzüge' SQL-Anfrage (nur bis zum 3. Vorgänger, allgemein nicht möglich!)
OODB 1 Slide 18 Zersplitterung durch Beachtung der Normalformen: Pointierte Darstellung Die relationale Modellierung entspricht folgendem: Bevor ein Auto in der Garage abgestellt werden kann, muss es in seine tausend Einzelteile zerlegt und in den dafür vorgesehenen Fächern ablegt werden. Bevor es wieder benutzt werden kann, ist ein komplizierter Zusammenbau erforderlich.
OODB 1 Slide 19 Bewertung relationaler Datenbanken Vorteile: Viele komplexe Zusammenhänge können erfragt werden Aufbau, Pflege und Wartung erfordern keine Programmierkenntnisse Nachteile: Komplexe Anfragen kosten unverhältnismäßig viel Zeit ER-Modell kann nicht leicht in ein relationales Modell übertragen werden Fazit: RDBs eignen sich für seltene aber komplexe Anfragen Der Aufbau von RDBs erfordert wenig technisches aber viel logisches Denkvermögen
OODB 1 Slide 0 Themenwechsel: Objektorientierte Programmierung
OODB 1 Slide 1 Warum objektorientierte Programmierung? Ziele von objektorientierter Programmierung: Erstellen großer Programmsysteme mit komplexen Wechselwirkungen Vereinfachung einer nachträglichen Erweiterung der Software Allgemeingültige objektorientierte Konzepte: Datengetriebene Modellierung Vererbung Datenkapselung durch Methodenzugriff vereinfacht lokale Modellierung vereinfacht nachträgliche Veränderung schützt vor Seiteneffekten Was kann passieren, wenn diese Konzepte nicht beachtet werden? Unübersichtlicher und damit schwer verifizierbarer Programmcode Bei einer Erweiterung muss der gesamte Code verändert werden. Unerwünschte Seiteneffekte bei Datenmanipulation
OODB 1 Slide Aufbau eines Objekts allgemein: Klasse erweitert Superklasse Realisierung in Java: class Professoren extends Angestellte Attribut wert1 Attribut wert.. Beziehung Objekt1 Beziehung Objekt.. Methode Funktion1 (...) Methode Funktion (...).. In Java keine syntaktische Unterscheidung zwischen Attribut und Beziehung { } String rang; int raum; Collection liest; // Vorlesungen Collection beschaeftigt; // Assistenten Collection leitet; // Pruefungen int gehalt (); float notendurchschnitt (); int lehrstundenzahl (); void attachvorlesung (Vorlesungen vorlesung) Generalisierung Generalisierung Spezialisierung Spezialisierung
OODB 1 Slide 3 Vererbung Uni-Mitglieder is-a Generalisierung Spezialisierung Studenten Angestellte PersNr MatrNr Fachgebiet Assistenten is-a Professoren Rang Raum
OODB 1 Slide Noch einmal das ER-Modell von vorhin MatrNr Studenten voraussetzen Nachfolger Vorgänger hören Vorlesungen VorlNr SWS Semester Titel Note prüfen lesen PersNr Assistenten arbeitenfür Professoren Rang Raum Fachgebiet PersNr
OODB 1 Slide 5 ER-Modell plus Vererbung MatrNr Studenten Vorgänger voraussetzen hören Vorlesungen Semester Note prüfen lesen Nachfolger VorlNr SWS Titel Fachgebiet Assistenten arbeitenfür Professoren Rang Raum PersNr is-a Angestellte
OODB 1 Slide 6 UML-Notation für Beziehungen Komposition
OODB 1 Slide 7 Objektmodell in UML-Notation Studenten +M atrnr : int + : String +Semester : int +Notenschnitt() : float +SummeW ochenstunden() : short 1 +Prüfling +Hörer 1..* hören * +Nachfolger * Vorlesungen +VorlN r : int +Titel : String +SW S : int voraussetzen * * +AnzHörer() : int +DurchfallQuote() : float * Prüfungen +Note : Decimal +Datum : Date +verschieben() * * 1 1 +Prüfer +Prüfungsstoff gelesenvon Assistenten +Fachgebiet : String +Gehalt() : short * arbeitenfür +Boss 1 Professoren +Rang : String +Notenschnitt() : float +Gehalt() : short +Lehrstundenzahl() : short 1 +Dozent Angestellte +PersNr : int + : String +Gehalt() : short
OODB 1 Slide 8 Synthese: Wie bringen wir beides zusammen?
OODB 1 Slide 9 Gemeinsamkeiten bei der Modellierung Konzeptionelles Modell (ER-Modell) Relationales Modell Objektorientiertes Modell
OODB 1 Slide 30 Unterschiede bei der Modellierung A Konzeptionelles Modell (ER-Modell) B Objektorientiertes Modell Relationales Modell C Man kann aus einem ER-Modell A ein objektorientiertes Modell B derart gewinnen, dass A aus B eindeutig rekonstruiert werden kann. Man kann aus einem ER-Modell A kein relationales Modell C gewinnen, so dass A aus C eindeutig rekonstruiert werden kann im relationalen Modell geht Strukturinformation verloren!
OODB 1 Slide 31 Beispiel für ein ER-Modell A: voraussetzen Nachfolger MatrNr Vorgänger VorlNr Studenten hören Vorlesungen SWS Semester Titel Note prüfen lesen PersNr Rang Assistenten arbeitenfür Professoren Raum Fachgebiet PersNr
PersNr 15 16 17 133 13 136 137 MatrNr 8106 503 7550 Konvertierung von A in ein relationales Modell C: Vorgänger 501 503 501 505 Professoren Sokrates Russel Kopernikus Popper Augustinus Curie Kant voraussetzen VorlNr 501 630 prüfen Rang C C C3 C3 C3 C C Nachfolger 501 503 509 516 505 505 559 PersNr 16 15 137 Raum 6 3 310 5 309 36 7 Note MatrNr 00 503 610 6830 7550 8106 910 9555 MatrNr 610 7550 7550 8106 8106 8106 8106 910 910 910 9555 503 Studenten Xenokrates Jonas Fichte Aristoxenos Schopenhauer Carnap Theophrastos Feuerbach hören VorlNr 05 501 505 516 559 501 509 50 50 Nicht erkennbar aus Relationen: 1 Semester 18 1 10 8 6 3 OODB 1 Slide 3 PerslNr 300 3003 300 3005 3006 3007 VorlNr 501 503 509 05 505 516 559 50 630 Platon Aristoteles Wittgenstein Rhetikus Newton Spinoza Vorlesungen Titel Grundzüge Ethik Erkenntnistheorie Mäeutik Logik Wissenschaftstheorie Bioethik Der Wiener Kreis Glaube und Wissen Die 3 Kritiken Assistenten Fachgebiet Ideenlehre Syllogistik Sprachtheorie Gott und Natur SWS 3 3 Planetenbewegung Keplersche Gesetze gelesenvon 137 15 16 15 15 16 16 133 13 137 Boss 15 15 16 17 17 16 Werden Studenten von Assistenten oder Professoren geprüft? Was hat voraussetzen mit Vorlesungen zu tun?
OODB 1 Slide 33 Weiterer Unterschied: Impedance Mismatch Programmiersprachen allgemein: Geschaffen für die häufige Durchführung einfacher Operationen Datenbanken allgemein: Geschaffen für die seltene Durchführung komplexer Operationen
OODB 1 Slide 3 Zusammenfassung: Probleme relationaler Datenbanktechnologie Zwar methodisch saubere aber schwierig zu lernende manuelle Umsetzung des Entwurfsmodells (ERM) in das Implementierungsmodell Zersplitterung von zusammengehörigen Daten durch Normalisierung Joins bei navigierendem Zugriff sehr aufwendig Probleme bei Änderung des Datenmodells wegen fehlender Kapselung Impedance Mismatch
OODB 1 Slide 35 Noch offene Frage: Wie können wir objektorientiert modellieren und dennoch eine Datenbank benutzen? Wir nähern uns der Antwort beim nächsten Mal!