Objektorientierte Datenbanken
Voraussetzungen:
Datenbanken, Programmiersprachen
Lernziele allgemein:
Fundamente und Grundprinzipien von OODBen
Systematische Entwicklung von Programmen
Organisation:
Vorlesung
Übung
Ralf Möller, FH-Wedel
Übung
Ziel:
Vertiefung des Vorlesungsstoffes ...
... durch Lösen von Aufgaben
... durch Beantwortung von Fragen
Durchführung: Christine Apfel, Katrin Fitz
Termin: Mi, 8.00 Uhr
Ort: RZ?
Beginn: 16.4.03
Literatur, Details und Zusatzinformationen
Präsentationen: http://www.fh-wedel.de/~mo/lectures/oodb-sose -03.html
Literatur:
Weitere Literatur wird noch bekanntgegeben...
Weitere Literatur und Danksagung
A. Kemper, A. Eickler,
Datenbanksysteme: Eine Einführung
Diese Vorlesung basiert auf
Präsentations- material zu
diesem Buch
Überblick über die Vorlesung
Grundlagen relationaler Datenbanken
ER-Modellierung, Relationales Datenmodell, SQL
Transaktionen, Integrität, Probleme relationaler Datenbanktechnologie
Objektorientierte Modellierung (Entwurf)
Statische Aspekte: Objektidentiät, Typen, Klassen, Persistenzmodelle
Dynamische Aspekte: Nachrichten, Methoden
Java Data Objects - JDO (Implementierung)
Erzeugen persistenter Objekte, Transaktionen
Methodenimplementierungen in Java, Anfragen in JDOQL
Sicherung von Integritätsbedingungen, Schema-Evolution
Überblick über die Vorlesung (2)
ODMG-Standard
Object Definition Language
Object Query Language, Sprachanbindung (Java)
Aspekte objektorientierter Datenmodelle in anderen Datenmodellen
PL/SQL
RDF/DAML+OIL
Motivation für Datenbank-Verwaltungssysteme
Typische Probleme bei Informationsverarbeitung ohne DBMS
Redundanz und Inkonsistenz
Beschränkte Zugriffsmöglichkeiten
Probleme beim Mehrbenutzerbetrieb
Verlust von Daten
Integritätsverletzung
Sicherheitsprobleme
hohe Entwicklungskosten für Anwendungsprogramme
Die Abstraktionsebenen eines Datenbanksystems
Datenunabhängigkeit:
• physische Unabhängigkeit
• logische Datenunabhängigkeit
Physische Ebene Logische Ebene
Sicht1 Sicht 2 ... Sicht 3
Datenmodellierung
Relationales
Schema Objektorientiertes
Schema Konzeptuelles Schema
(ER-Schema)
Manuelle/intellektuelle Modellierung
Halbautomatische Transformation
Ausschnitt der Realen Miniwelt
...
Modellierung einer kleinen Beispielanwendung
Studenten
Vorlesungen Professoren Reale Welt: Universität
PersNr MatrNr
Name Studenten Professoren Name
hören lesen
Vorlesungen Titel VorlNr Konzeptuelle Modellierung
Logische Datenmodelle
Relationales Datenmodell
Objektorientiertes Datenmodell
Deduktives Datenmodell
...
Das relationale Datenmodell
Studenten MatrNr Name
26120 25403
...
Fichte Jonas
...
hören
MatrNr VorlNr 25403
26120 ...
5022 5001
...
Vorlesungen
VorlNr Titel
5001 5022
...
Grundzüge
Glaube und Wissen ...
Select Name
From Studenten, hören, Vorlesungen
Where Studenten.MatrNr = hören.MatrNr and hören.VorlNr = Vorlesungen.VorlNr and Vorlesungen.Titel = `Grundzüge´;
update Vorlesungen
set Titel = `Grundzüge der Logik´
where VorlNr = 5001;
Logdateien Indexe Datenbasis Datenwörterbuch Dateiverwaltung
Mehrbenutzersynchr.
Fehlerbehandlung
Datenbankmanager Schemaverwaltung Anfragebearbeitung DBMS
DML-Compiler DDL-Compiler
Anwendung Interaktive Anfrage
Verwaltungs- werkzeug Präcompiler
„Naive“
Benutzer
Fortgeschrittene Benutzer
Anwendungs- Programmierer
Datenbank- administratoren
Hintergrundspeicher
Architekturübersicht
Datenbankentwurf
Abstraktionsebenen des Datenbankentwurfs 1. Konzeptuelle Ebene
2. Implementationsebene
3. Physische Ebene
Entity/Relationship-Modellierung
Entity (Gegenstandstyp)
Relationship (Beziehungstyp)
Attribut (Eigenschaft)
Schlüssel (Identifikation)
Rolle
Studenten
Vorlesungen
hören
VorlNr Titel SWS
MatrNr Name Semester
Hörer
Lehrveranstaltung
Studenten
Assistenten MatrNr
PersNr Semester
Name
Name Fachgebiet
Note
hören
prüfen
arbeitenFür Professoren Vorlesungen
lesen voraussetzen
SWS VorlNr
Titel
Raum Rang
PersNr
Nach- folger Vorgänger
Name
Universitätsschema
Funktionalitäten
E1 ... R ... E2
R E
1x E
21:N
N:M
E1 E2
1:1
N:1
Funktionalitäten bei n - stelligen Beziehungen
E1
En E2
Ek R
P
M N
1
R : E1 x ... x Ek-1 x Ek+1 x ... x En Ek
Beispiel-Beziehung: betreuen
Studenten betreuen
Note
Seminarthemen Professoren 1
1 N
betreuen : Professoren x Studenten Seminarthemen
betreuen : Seminarthemen x Studenten Professoren
Dadurch erzwungene Konsistenzbedingungen
1. Studenten dürfen bei demselben Professor bzw. derselben
Professorin nur ein Seminarthema "ableisten" (damit ein breites Spektrum abgedeckt wird).
1. Studenten dürfen dasselbe Seminarthema nur einmal bearbeiten – sie dürfen also nicht bei anderen Professoren ein schon einmal
erteiltes Seminarthema nochmals bearbeiten.
Folgende Datenbankzustände nach wie vor möglich:
Professoren können dasselbe Seminarthema „wiederverwenden“ – also dasselbe Thema auch mehreren Studenten erteilen.
Ein Thema kann von mehreren Professoren vergeben werden – aber an unterschiedliche Studenten.
Studenten
Assistenten MatrNr
PersNr Semester
Name
Name Fachgebiet
Note
hören
prüfen
arbeitenFür Professoren Vorlesungen
lesen voraussetzen
SWS VorlNr
Titel
Raum Rang
PersNr
Nach- folger Vorgänger
Name
Funktionalitäten
1 N
1 1
N N
N
M
M M
N
(Min, Max)-Notation
E2
R E1 x ... x Ei x ... x En E1
En
Ek R
(min1 max1)
(min2, max2)
(mini, maxi) (minn, maxn)
Für jedes ei Ei gibt es
•Mindestens mini Tupel der Art (..., ei, ...) und
•Höchstens maxi viele Tupel der Art (..., ei, ...) R
Komplex-strukturierte Entities
Polyeder Hülle Flächen
Begrenzung
Kanten
StartEnde
Punkte
PolyID
FlächenID
KantenID X
Y Z 1
N N
M N M
Beispiel- Polyeder
Komplex-strukturierte Entities
Polyeder Hülle Flächen
Begrenzung
Kanten
StartEnde
Punkte
PolyID
FlächenID
KantenID X
Y Z 1
N N
M N M
(4, ) (1,1)
(3, ) (2, 2) (2, 2) (3, )
Beispiel- Polyeder
Schwache, existenzabhängige Entities
Gebäude liegt_in Räume
Höhe GebNr
Größe RaumNr
1 N
Beziehung zwischen "starken" und schwachem Typ ist immer 1:N (oder 1:1 in seltenen Fällen)
Warum kann das keine N:M-Beziehung sein?
RaumNr ist nur innerhalb eines Gebäudes eindeutig
Schlüssel ist: GebNr und RaumNr
Prüfungen als schwacher Entitytyp
Studenten 1 ablegen N Prüfungen Note PrüfTeil MatrNr
Vorlesungen umfassen VorlNr
abhalten
Professoren
PersNr
N N
M M
Mehrere Prüfer in einer Prüfung
Mehrere Vorlesungen werden in einer Prüfung abgefragt
Generalisierung
MatrNr
Uni-Mitglieder is-a
Studenten
Assistenten
is-a
Professoren Fachgebiet
Name
Angestellte PersNr
Raum Rang
Studenten MatrNr
Semester
Name hören Vorlesungen
voraussetzen
SWS VorlNr
Titel Nach-
folger Vorgänger
Note prüfen lesen
Name Fachgebiet
Assistenten arbeitenFür Professoren
Raum Rang
is-a
Angestellte PersNr
(0,*) (3,*)
(0,*) (0,*)
(0,*) (0,*) (1,1)
(1,1)
(0,*) (0,*)
(0,*)
Universitätsschema
Aggregation
Fahrräder
Teil-von Teil-von
Rahmen Räder
Teil-von Teil-von Teil-von Teil-von
Rohre Lenker Felgen Speichen
... ... ... ...
...
Rohre
... ... ...
Fahrräder
Teil-von Teil-von
Rahmen Räder
Teil-von Teil-von Teil-von Teil-von
Lenker Felgen Speichen
Segler Motorräder Automobile
is-a is-a
Unmot.-Fahrzeuge mot.-Fahrzeuge
is-a Fahrzeuge
Aggregation und
Generalisierung
Drei Sichten einer Universitäts-Datenbank
Studenten
Assistenten
Professoren
erstellen
verfassen
bewerten
betreuen
Diplomarbeiten
Dissertationen Titel
Titel
Sicht 1: Erstellung von Dokumenten als Prüfungsleistung
Signatur Bibliotheken
UniMitglieder
besitzen
Dokumente
Autoren Titel
Jahr entleihen
leiten
Datum Fakultät
Sicht 2: Bibliotheksverwaltung
Drei Sichten einer Universitäts-Datenbank
Vorlesungen
Dozenten
Bücher
Titel Jahr
Verlag empfehlen
Autoren
Sicht 3: Buchempfehlungen für Vorlesungen
Drei Sichten einer Universitäts-Datenbank
Studenten
Assistenten MatrNr
PersNr Semester
Name
Name Fachgebiet
Note
hören
prüfen
arbeitenFür Professoren Vorlesungen
lesen voraussetzen
SWS VorlNr
Titel
Raum Rang
PersNr
Nach- folger Vorgänger
Name
Uni-Schema
1 N
1 1
N N
N
M
M M
N
Relationale Darstellung von Entitytypen
Studenten: {[MatrNr:integer, Name: string, Semester: integer]}
Vorlesungen: {[VorlNr:integer, Titel: string, SWS: integer]}
Professoren: {[PersNr:integer, Name: string, Rang: string, Raum: integer]}
Assistenten: {[PersNr:integer, Name: string, Fachgebiet: string]}
Relationale Darstellung von Beziehungen
A11 E1
R
... AR1
En
E2 An1
A21
... ...
...
...
1k1 A
R kR A
nkn 2 A
2k A
43 42
1 43
42 1
43 42
43 1 42
1
R von Attribute
1 E
von Schlüssel
1 E
von Schlüssel
2 21
E von Schlüssel
1
11
,...., , ,..., ,..., ,..., , ,...,
2 n 2 1
1
R k R
nk n
k
k
A A A A
nA A
RA
R:{[ A ]}
Beziehungen unseres Beispiel-Schemas
hören : {[MatrNr: integer, VorlNr: integer]}
lesen : {[PersNr: integer, VorlNr: integer]}
arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr:
integer]}
voraussetzen : {[Vorgänger: integer, Nachfolger: integer]}
prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Schlüssel der Relationen
hören : {[MatrNr: integer, VorlNr: integer]}
lesen : {[PersNr: integer, VorlNr: integer]}
arbeitenFür : {[AssistentenPersNr: integer, ProfPersNr:
integer]}
voraussetzen : {[Vorgänger: integer, Nachfolger: integer]}
prüfen : {[MatrNr: integer, VorlNr: integer, PersNr: integer, Note: decimal]}
Ausprägung der Beziehung hören
Studenten MatrNr ...
26120 ...
27550 ...
... ...
hören
MatrNr VorlNr 26120 5001
27550 5001
27550 4052
28106 5041
28106 5052
28106 5216
28106 5259
29120 5001 29120 5041
29120 5049
29555 5022
25403 5022
29555 5001
Vorlesungen VorlNr ...
5001 ...
4052 ...
... ...
Studenten
hören
M
VorlesungenN
MatrNr VorlNr
Verfeinerung des relationalen Schemas
1:N-Beziehung
Initial-Entwurf
Vorlesungen : {[VorlNr, Titel, SWS]}
Professoren : {[PersNr, Name, Rang, Raum]}
lesen: {[VorlNr, PersNr]}
Professoren lesen Vorlesungen
1 N
Verfeinerung des relationalen Schemas
1:N-Beziehung
Initial-Entwurf
Vorlesungen : {[VorlNr, Titel, SWS]}
Professoren : {[PersNr, Name, Rang, Raum]}
lesen: {[VorlNr, PersNr]}
Verfeinerung durch Zusammenfassung
Vorlesungen : {[VorlNr, Titel, SWS, gelesenVon]}
Professoren : {[PersNr, Name, Rang, Raum]}
Regel
Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen!
Ausprägung von Professoren und Vorlesung
Professoren
PersNr Name Rang Raum 2125 Sokrates C4 226 2126 Russel C4 232 2127 Kopernikus C3 310 2133 Popper C3 52 2134 Augustinus C3 309
2136 Curie C4 36
2137 Kant C4 7
Vorlesungen
VorlNr Titel SWS Gelesen Von
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
Professoren lesen Vorlesungen
1 N
Vorsicht: So geht es NICHT
Professoren
PersNr Name Rang Raum liest 2125 Sokrates C4 226 5041 2125 Sokrates C4 226 5049 2125 Sokrates C4 226 4052
... ... ... ... ...
2134 Augustinus C3 309 5022
2136 Curie C4 36 ??
Vorlesungen
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
5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2
4630 Die 3 Kritiken 4
Professoren lesen Vorlesungen
1 N
Anomalien
Update-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
Professoren
PersNr Name Rang Raum liest
2125 Sokrates C4 226 5041
2125 Sokrates C4 226 5049
2125 Sokrates C4 226 4052
... ... ... ... ...
2134 Augustinus C3 309 5022
2136 Curie C4 36 ??
Vorlesungen
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
5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2
4630 Die 3 Kritiken 4
Relationale Modellierung der Generalisierung
Fachgebiet Assistenten
Professoren
Raum Rang
is_a Angestellte
PersNr Name
Angestellte: {[PersNr, Name]}
Professoren: {[PersNr, Rang, Raum]}
Assistenten: {[PersNr, Fachgebiet]}
Zusammenfassung, Kernpunkte
Grundlagen von Datenbanksystemen
Aufgaben eines Datenbank-Management-Systems
Benutzergruppen eines Datenbanksystems
Architektur eines Datenbanksystems
Grundlagen relationaler Datenbanksysteme
Entwurfsebene: Entity-Relationship-Modell
Implementierungsebene: Das relationale Datenmodell