Fundamente und Grundprinzipien von OODBen

Werbung
Objektorientierte Datenbanken
Ralf Möller, FH-Wedel
Voraussetzungen:
Datenbanken, Programmiersprachen
Lernziele allgemein:
Fundamente und Grundprinzipien von OODBen
Systematische Entwicklung von Programmen
Organisation:
Vorlesung
Übung
Ü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äsentationsmaterial 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
Sicht1
Sicht 2
...
Logische Ebene
Datenunabhängigkeit:
• physische Unabhängigkeit
• logische Datenunabhängigkeit
Physische Ebene
Sicht 3
Datenmodellierung
Ausschnitt der
Realen Miniwelt
Manuelle/intellektuelle
Modellierung
Konzeptuelles Schema
(ER-Schema)
Halbautomatische
Transformation
Relationales
Schema
...
Objektorientiertes
Schema
Modellierung einer kleinen Beispielanwendung
Studenten
Professoren
Vorlesungen
Reale Welt: Universität
Konzeptuelle Modellierung
MatrNr
Studenten
PersNr
Professoren
Name
Name
hören
lesen
VorlNr
Vorlesungen
Titel
Logische Datenmodelle
Relationales Datenmodell
Objektorientiertes Datenmodell
Deduktives Datenmodell
...
Das relationale Datenmodell
Studenten
hören
Vorlesungen
MatrNr
Name
MatrNr
VorlNr
VorlNr
26120
25403
...
Fichte
Jonas
...
25403
26120
...
5022
5001
...
5001
5022
...
Titel
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;
Architekturübersicht
„Naive“
Benutzer
Anwendung
Fortgeschrittene
Benutzer
AnwendungsProgrammierer
Datenbankadministratoren
Interaktive
Anfrage
Präcompiler
Verwaltungswerkzeug
DML-Compiler
DDL-Compiler
Anfragebearbeitung
Mehrbenutzersynchr.
Fehlerbehandlung
Datenbankmanager
DBMS
Schemaverwaltung
Dateiverwaltung
Logdateien
Indexe
Datenbasis
Hintergrundspeicher
Datenwörterbuch
Datenbankentwurf
Abstraktionsebenen des Datenbankentwurfs
1. Konzeptuelle Ebene
2. Implementationsebene
3. Physische Ebene
Entity/Relationship-Modellierung
 Entity (Gegenstandstyp)
MatrNr
Name
Semester
Studenten
 Relationship (Beziehungstyp)
Hörer
 Attribut (Eigenschaft)
hören
 Schlüssel (Identifikation)
Lehrveranstaltung
 Rolle
Vorlesungen
VorlNr
Titel
SWS
Universitätsschema
voraussetzen
NachVorgänger
folger
MatrNr
Name
Studenten
hören
Vorlesungen
Note
lesen
prüfen
PersNr
Fachgebiet
SWS
Titel
Semester
Name
VorlNr
Rang
Assistenten
arbeitenFür
Professoren
PersNr
Name
Raum
Funktionalitäten
...
...
R
E1
R  E1 x E2
1:1
N:1
E1
E2
1:N
N:M
E2
Funktionalitäten bei n-stelligen Beziehungen
E1
P
En
N
M
R
E2
1
Ek
R : E1 x ... x Ek-1 x Ek+1 x ... x En  Ek
Beispiel-Beziehung: betreuen
1
Studenten
N
betreuen
1
Professoren
Seminarthemen
Note
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.
Funktionalitäten
voraussetzen
Nachfolger
Vorgänger
MatrNr
N
Name
Semester
Studenten
N
hören
M
Vorlesungen
N
M
Note
1
Fachgebiet
Assistenten
N
arbeitenFür
N
SWS
Titel
lesen
prüfen
PersNr
Name
M
VorlNr
1
1
Rang
Professoren
PersNr
Name
Raum
(Min, Max)-Notation
E1
(min1 max1)
En
R
E2
(mini, maxi)
Ek
R  E1 x ... x Ei x ... x En
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
1
Hülle
N
Flächen
N
PolyID
BeispielPolyeder
FlächenID
Begrenzung
M
Kanten
N
KantenID
StartEnde
X
M
Punkte
Y
Z
Komplex-strukturierte Entities
Polyeder
1 (4, )
Hülle
N (1,1)
Flächen
(3, )
N
PolyID
BeispielPolyeder
FlächenID
Begrenzung
M (2, 2)
Kanten
(2, 2)
N
StartEnde
M (3, )
Punkte
KantenID
X
Y
Z
Schwache, existenzabhängige Entities
Höhe
GebNr
Gebäude
RaumNr
Größe
N
1
liegt_in
Räume
 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
Note
Prüfungen
PrüfTeil
N
MatrNr
umfassen
VorlNr
M
Vorlesungen
N
abhalten
M
PersNr
Professoren
Mehrere Prüfer in einer Prüfung
Mehrere Vorlesungen werden in einer Prüfung abgefragt
Generalisierung
Name
Uni-Mitglieder
is-a
Studenten
Angestellte
PersNr
is-a
MatrNr
Rang
Fachgebiet
Assistenten
Professoren
Raum
Universitätsschema
voraussetzen
(0,*)
(0,*)
MatrNr
Name
Studenten
(0,*)
hören
(0,*)
Semester
Note
(3,*)
Vorlesungen
(0,*)
Assistenten
(1,1)
Titel
(0,*)
(0,*)
Professoren
arbeitenFür
is-a
PersNr
Name
SWS
lesen
prüfen
(0,*)
Fachgebiet
(1,1)
VorlNr
Angestellte
Rang
Raum
Aggregation
Fahrräder
Teil-von
Teil-von
Rahmen
Räder
Teil-von
Teil-von
Teil-von
Teil-von
Rohre
Lenker
Felgen
Speichen
...
...
...
...
Aggregation und
Generalisierung
Fahrzeuge
is-a
mot.-Fahrzeuge
Unmot.-Fahrzeuge
is-a
is-a
Fahrräder
Segler
Teil-von
Motorräder
Teil-von
Rahmen
Teil-von
Rohre
...
Automobile
Räder
Teil-von
Teil-von
Teil-von
Lenker
Felgen
Speichen
...
...
...
Drei Sichten einer Universitäts-Datenbank
erstellen
Studenten
Titel
Diplomarbeiten
betreuen
Assistenten
verfassen
Dissertationen
Titel
Professoren
bewerten
Sicht 1: Erstellung von Dokumenten als Prüfungsleistung
Drei Sichten einer Universitäts-Datenbank
Fakultät
Bibliotheken
besitzen
Signatur
Dokumente
leiten
Autoren
entleihen
UniMitglieder
Titel
Jahr
Datum
Sicht 2: Bibliotheksverwaltung
Drei Sichten einer Universitäts-Datenbank
Vorlesungen
Bücher
Autoren
Titel
empfehlen
Jahr
Dozenten
Verlag
Sicht 3: Buchempfehlungen für Vorlesungen
Uni-Schema
voraussetzen
NachVorgänger
folger
MatrNr
N
Name
Semester
Studenten
N
hören
M
M
Note
Name
Fachgebiet
1
Assistenten
N
arbeitenFür
N
SWS
Titel
lesen
prüfen
PersNr
M
Vorlesungen
N
VorlNr
1
1
Professoren
PersNr
Name
Rang
Raum
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
A1k
1
...
AR1
R
R
A
kR
A21
E2
A2k
2
...
...
En
An1
...
Ank
n
R
R
A
,....,
A
,
A
,...,
A
,...,
A
,...,
A
,
A
,...,
A
R:{[11
1k1
21
2 k2
n1
nkn
1
k R ]}
  
Schlüsselvon E1
Schlüsselvon E 2
Schlüsselvon E n
Attributevon R
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
hören
Studenten
MatrNr
...
26120
...
27550
...
...
...
MatrNr
Studenten
Vorlesungen
MatrNr
26120
VorlNr
5001
VorlNr
...
27550
27550
5001
4052
5001
...
28106
5041
4052
...
28106
5052
...
...
28106
5216
28106
5259
29120
5001
29120
5041
29120
5049
29555
5022
25403
5022
29555
5001
N
VorlNr
M
hören
Vorlesungen
Verfeinerung des relationalen Schemas
Professoren
1
lesen
N
1:N-Beziehung
 Initial-Entwurf
Vorlesungen : {[VorlNr, Titel, SWS]}
Professoren : {[PersNr, Name, Rang, Raum]}
lesen: {[VorlNr, PersNr]}
Vorlesungen
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
Vorlesungen
Professoren
Titel
SWS
Gelesen Von
5001
Grundzüge
4
2137
5041
Ethik
4
2125
PersNr
Name
2125
Sokrates
C4
226
5043
Erkenntnistheorie
3
2126
2126
Russel
C4
232
5049
Mäeutik
2
2125
2127
Kopernikus
C3
310
4052
Logik
4
2125
2133
Popper
C3
52
5052
Wissenschaftstheorie
3
2126
2134
Augustinus
C3
309
5216
Bioethik
2
2126
2136
Curie
C4
36
5259
Der Wiener Kreis
2
2133
2137
Kant
C4
7
5022
Glaube und Wissen
2
2134
4630
Die 3 Kritiken
4
2137
Professoren
Rang Raum
VorlNr
1
lesen
N
Vorlesungen
Vorsicht: So geht es NICHT
Vorlesungen
Professoren
Titel
SWS
5001
Grundzüge
4
5041
Ethik
4
PersNr
Name
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
2134
Augustinus
C3
309
5022
5216
Bioethik
2
2136
Curie
C4
36
??
5259
Der Wiener Kreis
2
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
Professoren
Rang Raum liest
VorlNr
1
lesen
N
Vorlesungen
Anomalien
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
??
VorlNr
5001
Vorlesungen
Titel
Grundzüge
SWS
4
5041
5043
5049
4052
5052
5216
Ethik
Erkenntnistheorie
Mäeutik
Logik
Wissenschaftstheorie
Bioethik
4
3
2
4
3
2
5259
Der Wiener Kreis
2
5022
Glaube und Wissen
2
4630
Die 3 Kritiken
4
 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
Relationale Modellierung der Generalisierung
Fachgebiet
Assistenten
is_a
Professoren
Raum
Angestellte
PersNr
Name
Rang
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
Was kommt beim nächsten Mal?
Anfragesprachen: SQL
Mehrbenutzerbetrieb und Sperren
Transaktionen
Anbindung an Programmiersprachen
Probleme der relationalen Datenbanktechnologie
Herunterladen