Objektorientierte Datenbanken Vorlesung 1 Sebastian Iwanowski FH Wedel
OODB 1 Slide 1
Organisatorisches Vorlesung Mittwochs, 09:30 – 10:45 Raum HS4
Übung Dienstags, 09:30 – 10:45 (erstmalig am 12.04.) 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 2
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 3
Vorlesungsaufbau Inhalte: Motivation und Überblick 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/SS2005/OODB.html
alte Vorlesung: www.fh-wedel.de/~iw/Lehrveranstaltungen/SS2004/OODB.html Literatur (in Folgenden genannt) OODB 1 Slide 4
Literatur für den allgemeinen Kontext Andreas Geppert: Objektrelationale und objektorientierte Datenbankkonzepte und -systeme, dpunkt.verlag 2002, ISBN 3-89864-124-4
Andreas Heuer: Objektorientierte Datenbanken Konzepte, Modelle, Standards und Systeme, Addison Wesley 1997 (2. Auflage), ISBN 3-89319-800-8
Alfons Kemper / Andre Eickler: Datenbanksysteme Eine Einführung, Oldenbourg 2004 (5. Auflage), ISBN 3-486-27392-2 In unserer Bibliothek: Oldenbourg 2001 (4. Auflage), ISBN 3-486-25706-4
Andreas Meier / Thomas Wüst: Objektorientierte und objektrelationale Datenbanken Ein Kompaß für die Praxis, dpunkt.verlag 2000, ISBN 3932588-68-1 OODB 1 Slide 5
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-647-4 David Jordan / Craig Russell: Java Data Objects, O'Reilly 2003, ISBN 0-596-00276-9 Robin Roos: Java Data Objects, Addison-Wesley 2002, ISBN 0-321-12380-8 Arno Schmidhauser: Skript JDO, Hochschule für Technik und Architektur (HTA) Bern
OODB 1 Slide 6
… und nun geht es los: erst einmal mit Datenbanken
OODB 1 Slide 7
Warum Datenbanken ? Ziele von 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 8
Wie sind Datenbanken aufgebaut ? konzeptionelle Sicht
Datenmodell
ER-Modell (ER=Entity Relationship)
logische Sicht
Relationales Datenmodell
physische Sicht
Konkrete Speicherplätze
(oder anderes Modell)
Datenmanipulationssprache (DML)
Zum Definieren, Abfragen und Ändern eines Datenbestandes für ein relationales Datenmodell
SQL
OODB 1 Slide 9
Konzeptionelle Sicht: Beispiel für ein ER-Modell MatrNr Name
Studenten
voraussetzen NachVorgänger folger hören Vorlesungen
SWS Titel
Semester Note
lesen
prüfen
PersNr Name
VorlNr
Rang Assistenten
arbeitenFür
Fachgebiet
Professoren PersNr
OODB 1 Slide 10
Name
Raum
Logische Sicht: Ausschnitt eines relationalen Modells Professoren
lesen 1
N
Professoren
Vorlesungen
Vorlesungen
PersNr
Name
Rang
Raum
VorlNr
Titel
2125
Sokrates
C4
226
5001
Grundzüge
4
2137
2126
Russel
C4
232
5041
Ethik
4
2125
2127
Kopernikus
C3
310
5043
Erkenntnistheorie
3
2126
2133
Popper
C3
52
5049
Mäeutik
2
2125
2134
Augustinus
C3
309
2136
Curie
C4
36
4052
Logik
4
2125
2137
Kant
C4
7
5052
Wissenschaftstheorie
3
2126
5216
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
OODB 1 Slide 11
SWS Gelesen Von
Anfragen an die Datenbank Anfragen können Informationen aus beliebigen Tabellen verknüpfen: PersNr 2125 2126
2137
Professoren Name Rang Sokrates C4 Russel C4
Kant
C4
Vorlesungen Titel SWS Grundzüge 4 Ethik 4
Raum 226 232
VorlNr 5001 5041
gelesen Von 2137 2125
7
5049
Mäeutik
2
2125
4630
Die 3 Kritiken
4
2137
Welcher Professor liest "Mäeutik"? select Name, Titel
SQL-Anfrage
from Professoren, Vorlesungen where PersNr = gelesenVon and Titel = 'Mäeutik';
Die Bearbeitung verknüpfter Anfragen kann zeitaufwändig sein ! OODB 1 Slide 12
PersNr 2125 2126
2137
Professoren Name Rang Sokrates C4 Russel C4
Kant
C4
JOIN
Vorlesungen Titel SWS Grundzüge 4 Ethik 4
Raum 226 232
VorlNr 5001 5041
gelesen Von 2137 2125
7
5049
Mäeutik
2
2125
4630
Die 3 Kritiken
4
2137
Verknüpfung: jeder mit jedem PersNr 2125
Name Sokrates
Rang C4
Raum 226
VorlNr 5001
Titel Grundzüge
SWS 4
gelesen Von 2137
1225
Sokrates
C4
226
5041
Ethik
4
2125
2125
Sokrates
C4
226
5049
Mäeutik
2
2125
2126 2126
Russel Russel
C4 C4
232 232
5001 5041
Grundzüge Ethik
4 4
2137 2125
2137
Kant
C4
7
4630
Die 3 Kritiken
4
2137
SELECTION PersNr 2125
Auswahl von Zeilen Name Sokrates
Rang C4
Raum 226
VorlNr 5049
Titel Mäeutik
SWS 2
Auswahl von Spalten
PROJECTION Name Sokrates
Titel Mäeutik
OODB 1 Slide 13
gelesen Von 2125
Achtung: Übertragung aus ER-Modell darf nicht beliebig sein ! lesen
Professoren
1 Z.B. NICHT so:
Vorlesungen
N Vorlesungen VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
Professoren PersNr
Name
Rang
Raum
liest
2125
Sokrates
C4
226
5041
5043
Erkenntnistheorie
3
2125
Sokrates
C4
226
5049
5049
Mäeutik
2
2125
Sokrates
C4
226
4052
4052
Logik
4
...
...
...
...
...
5052
Wissenschaftstheorie
3
5216
Bioethik
2
5259
Der Wiener Kreis
2
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
2134 2136
Augustinus Curie
C3 C4
309 36
5022 ??
OODB 1 Slide 14
Anomalien durch Verletzung von Normalformen Vorlesungen
Professoren PersNr
Name
Rang
Raum
liest
2125
Sokrates
C4
226
5041
2125
Sokrates
C4
226
5049
2125
Sokrates
C4
226
4052
VorlNr
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
5043
Erkenntnistheorie
3
5049
Mäeutik
2
4052
Logik
4
5052
Wissenschaftstheorie
3
5216
Bioethik
2
...
...
...
...
...
2134
Augustinus
C3
309
5022
5259
Der Wiener Kreis
2
2136
Curie
C4
36
??
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
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 15
So sollte es stattdessen gemacht werden: Studenten
Professoren
Vorlesungen
PersNr
Name
Rang
Raum
MatrNr
Name
Semester
2125
Sokrates
C4
226
24002
Xenokrates
18
2126
Russel
C4
232
25403
Jonas
12
2127
Kopernikus
C3
310
26120
Fichte
10
2133
Popper
C3
52
26830
Aristoxenos
8
2134
Augustinus
C3
309
27550
Schopenhauer
6
2136
Curie
C4
36
28106
Carnap
3
2137
Kant
C4
7
29120
Theophrastos
2
29555
Feuerbach
2
voraussetzen Vorgänger
Nachfolger
5001
5041
5001 5001
hören MatrNr
VorlNr
5043
26120
5001
5049
27550
5001
5216
27550
4052
5043
5052
28106
5041
5041
5052
28106
5052
5052
5259
28106
5216
28106
5259
29120
5001
5041
prüfen MatrNr
VorlNr
PersNr
Note
29120
5041
28106
5001
2126
1
29120
5049
25403
5041
2125
2
29555
5022
27550
4630
2137
2
25403
5022
VorlNr
Titel
SWS
gelesenVon
5001
Grundzüge
4
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mäeutik
2
2125
4052
Logik
4
2125
5052
Wissenschaftstheorie
3
2126
5216
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
Assistenten PerslNr
Name
Fachgebiet
Boss
3002
Platon
Ideenlehre
2125
3003
Aristoteles
Syllogistik
2125
3004
Wittgenstein
Sprachtheorie
2126
3005
Rhetikus
Planetenbewegung
2127
3006
Newton
Keplersche Gesetze
2127
3007
Spinoza
Gott und Natur
2126
effiziente Darstellung, aber unübersichtlich ! OODB 1 Slide 16
Daraus resultierender Nachteil: Navigierende Zugriffe sind umständlich Welche Vorlesungen müssen für „Der Wiener Kreis“ gehört worden sein ? Vorlesungen
voraussetzen Vorgänger
Nachfolger
5001
5041
5001
5043
5001
5049
5041
5216
5043
5052
5041
5052
5052
5259
VorlNr
Titel
SWS
gelesenVon
5001
Grundzüge
4
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mäeutik
2
2125
4052
Logik
4
2125
5052
Wissenschaftstheorie
3
2126
5216
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
select pred1.Titel, pred2.Titel, pred3.Titel from Vorlesungen this, Vorlesungen pred1, Vorlesungen pred2, Vorlesungen pred3, voraussetzen pred1pt, voraussetzen pred2pt, voraussetzen pred3pt where this.Titel = 'Der Wiener Kreis' and this.VorlNr = pred1pt.Nachfolger and pred1pt.Vorgänger = pred1.VorlNr and pred1pt.Vorgänger = pred2pt.Nachfolger and pred2pt.Vorgänger = pred2.VorlNr and pred2pt.Vorgänger = pred3pt.Nachfolger and pred3pt.Vorgänger = pred3.VorlNr;
SQL-Antwort: 'Wissenschaftstheorie',
'Erkenntnistheorie', 'Ethik', 'Grundzüge' OODB 1 Slide 17
SQL-Anfrage (nur bis zum 3. Vorgänger, allgemein nicht möglich!)
„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 18
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 19
Themenwechsel: Objektorientierte Programmierung
OODB 1 Slide 20
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
vereinfacht lokale Modellierung
•Vererbung
vereinfacht nachträgliche Veränderung
•Datenkapselung durch Methodenzugriff
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 21
Aufbau eines Objekts allgemein:
Realisierung in Java:
Klasse erweitert Superklasse
class Professoren extends Angestellte
Attribut wert1 Attribut wert2 . . Beziehung Objekt1 Beziehung Objekt2 . . Methode Funktion1 (...) Methode Funktion2 (...) . .
{ String rang; int raum;
In Java keine syntaktische Unterscheidung zwischen Attribut und Beziehung
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 22
Vererbung Uni-Mitglieder
Name
Generalisierung
Spezialisierung
is-a Studenten
Angestellte
PersNr
is-a
MatrNr
Rang Fachgebiet
Assistenten
Professoren Raum
OODB 1 Slide 23
Noch einmal das ER-Modell von vorhin MatrNr Name
Studenten
voraussetzen NachVorgänger folger hören Vorlesungen
SWS Titel
Semester Note
lesen
prüfen
PersNr Name
VorlNr
Rang Assistenten
arbeitenFür
Fachgebiet
Professoren PersNr
OODB 1 Slide 24
Name
Raum
ER-Modell plus Vererbung MatrNr Name
Studenten
voraussetzen NachVorgänger folger Vorlesungen hören
VorlNr SWS Titel
Semester Note
prüfen
lesen
Fachgebiet
Rang Assistenten
arbeitenFür is-a
PersNr Name
Angestellte OODB 1 Slide 25
Professoren
Raum
UML-Notation für Beziehungen
Komposition
OODB 1 Slide 26
Objektmodell in UML-Notation + H ö re r
+ M a tr N r : in t + N a m e : S tr in g + S e m e s te r : in t
+ N a c h fo lg e r
1 ..*
*
V o r le s u n g e n
h ö re n
+ N o te n s c h n itt( ) : flo a t + S u m m e W o c h e n s tu n d e n ( ) : s h o r t 1
v o r a u s s e tz e n
+ P r ü flin g
+ V o r lN r : in t + T ite l : S tr in g + S W S : in t
*
+ A n z H ö r e r ( ) : in t + D u r c h fa llQ u o te ( ) : flo a t
P rü fu n g e n
+ N o te : D e c im a l + D a tu m : D a te
*
*
1
*
*
+ P r ü fu n g s s to ff gelesenVon
S tu d e n te n
+ v e r s c h ie b e n ( ) *
1
+ P r ü fe r P ro fe s s o re n
A s s is t e n t e n
+Boss
+ F a c h g e b ie t : S tr in g
+ G e h a lt( ) : s h o r t
*
a r b e ite n F ü r
1
+ R a n g : S tr in g
+ N o te n s c h n itt( ) : flo a t + G e h a lt( ) : s h o r t + L e h r s tu n d e n z a h l( ) : s h o r t
A n g e s t e llt e
+ P e r s N r : in t + N a m e : S tr in g
+ G e h a lt( ) : s h o r t
OODB 1 Slide 27
1 +D ozent
Synthese: Wie bringen wir beides zusammen ?
OODB 1 Slide 28
Gemeinsamkeiten bei der Modellierung
Konzeptionelles Modell (ER-Modell)
Objektorientiertes Modell
Relationales Modell
OODB 1 Slide 29
Unterschiede bei der Modellierung A
B
Konzeptionelles Modell (ER-Modell)
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 30
Beispiel für ein ER-Modell A:
voraussetzen Nachfolger Vorgänger
MatrNr Name
Studenten
hören
Vorlesungen
SWS Titel
Semester
Note
lesen
prüfen
PersNr Name
VorlNr
Rang Assistenten
arbeitenFür
Fachgebiet
Professoren PersNr
OODB 1 Slide 31
Name
Raum
Konvertierung von A in ein relationales Modell C: Studenten
Professoren
Vorlesungen
PersNr
Name
Rang
Raum
MatrNr
Name
Semester
2125
Sokrates
C4
226
24002
Xenokrates
18
2126
Russel
C4
232
25403
Jonas
12
2127
Kopernikus
C3
310
26120
Fichte
10
2133
Popper
C3
52
26830
Aristoxenos
8
2134
Augustinus
C3
309
27550
Schopenhauer
6
2136
Curie
C4
36
28106
Carnap
3
2137
Kant
C4
7
29120
Theophrastos
2
29555
Feuerbach
2
voraussetzen Vorgänger
Nachfolger
5001
5041
5001 5001
hören MatrNr
VorlNr
5043
26120
5001
5049
27550
5001
5216
27550
4052
5043
5052
28106
5041
5041
5052
28106
5052
5052
5259
28106
5216
28106
5259
29120
5001
5041
prüfen MatrNr
VorlNr
PersNr
Note
29120
5041
28106
5001
2126
1
29120
5049
25403
5041
2125
2
29555
5022
27550
4630
2137
2
25403
5022
Nicht erkennbar aus Relationen:
VorlNr
Titel
SWS
gelesenVon
5001
Grundzüge
4
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mäeutik
2
2125
4052
Logik
4
2125
5052
Wissenschaftstheorie
3
2126
5216
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
Assistenten PerslNr
Name
Fachgebiet
Boss
3002
Platon
Ideenlehre
2125
3003
Aristoteles
Syllogistik
2125
3004
Wittgenstein
Sprachtheorie
2126
3005
Rhetikus
Planetenbewegung
2127
3006
Newton
Keplersche Gesetze
2127
3007
Spinoza
Gott und Natur
2126
Werden Studenten von Assistenten oder Professoren geprüft ? Was hat „voraussetzen“ mit „Vorlesungen“ zu tun ?
OODB 1 Slide 32
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 33
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 34
Noch offene Frage: Wie können wir objektorientiert modellieren und dennoch eine Datenbank benutzen ?
Wir nähern uns der Antwort beim nächsten Mal !
OODB 1 Slide 35