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: Durchführung: Christine Apfel, Katrin Fitz 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 ... Sicht1 Sicht 2 Sicht 3 Logische Ebene Physische Ebene Datenunabhängigkeit: physische Unabhängigkeit logische Datenunabhängigkeit
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 PersNr Studenten Professoren Name Name hören lesen VorlNr Vorlesungen Titel
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;
Architekturübersicht 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 Anwendungs- Programmierer Datenbank- administratoren Hintergrundspeicher
Datenbankentwurf Abstraktionsebenen des Datenbankentwurfs Konzeptuelle Ebene Implementationsebene Physische Ebene
Entity/Relationship-Modellierung MatrNr Name Semester Entity (Gegenstandstyp) Relationship (Beziehungstyp) Attribut (Eigenschaft) Schlüssel (Identifikation) Rolle Studenten Hörer hören Lehrveranstaltung Vorlesungen VorlNr Titel SWS
Universitätsschema voraussetzen Nach- folger VorlNr MatrNr Vorgänger Studenten Assistenten MatrNr PersNr Semester Name Fachgebiet Note hören prüfen arbeitenFür Professoren Vorlesungen lesen voraussetzen SWS VorlNr Titel Raum Rang Nach- folger Vorgänger Universitätsschema
Funktionalitäten E1 E2 R ... R E1 x E2 E1 E2 1:N 1:1 N:1 N:M
Funktionalitäten bei n-stelligen Beziehungen P N M R En E2 1 Ek R : E1 x ... x Ek-1 x Ek+1 x ... x En Ek
Beispiel-Beziehung: betreuen 1 Professoren N betreuen Studenten 1 Seminarthemen Note betreuen : Professoren x Studenten Seminarthemen betreuen : Seminarthemen x Studenten Professoren
Dadurch erzwungene Konsistenzbedingungen Studenten dürfen bei demselben Professor bzw. derselben Professorin nur ein Seminarthema "ableisten" (damit ein breites Spektrum abgedeckt wird). 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 N M N M N N M 1 1 N 1 voraussetzen Nach- folger Studenten Assistenten MatrNr PersNr Semester Name Fachgebiet Note hören prüfen arbeitenFür Professoren Vorlesungen lesen voraussetzen SWS VorlNr Titel Raum Rang Nach- folger Vorgänger Funktionalitäten N M N M N N M 1 1 N 1
(Min, Max)-Notation E1 (min1 max1) (minn, maxn) (min2, max2) R En (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 PolyID Beispiel- Polyeder 1 Hülle N Flächen FlächenID N Begrenzung M Kanten KantenID N StartEnde X M Y Punkte Z
Komplex-strukturierte Entities Polyeder PolyID Beispiel- Polyeder 1 (4, ) (1,1) (3, ) (2, 2) Hülle N Flächen FlächenID N Begrenzung M Kanten KantenID N StartEnde X M Y Punkte Z
Schwache, existenzabhängige Entities Höhe GebNr RaumNr Größe N 1 Gebäude 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 Note 1 N Studenten ablegen Prüfungen PrüfTeil N N MatrNr umfassen abhalten PersNr VorlNr M M Vorlesungen Professoren Mehrere Prüfer in einer Prüfung Mehrere Vorlesungen werden in einer Prüfung abgefragt
Generalisierung Uni-Mitglieder Name is-a Studenten Angestellte PersNr MatrNr is-a Rang Assistenten Professoren Fachgebiet Raum
Universitätsschema voraussetzen (0,*) (0,*) VorlNr MatrNr Nach- folger Vorgänger hören Vorlesungen SWS Studenten Name (0,*) (3,*) (1,1) Titel (0,*) (0,*) Semester prüfen Note lesen (0,*) (0,*) Fachgebiet Rang (0,*) (1,1) arbeitenFür Professoren Assistenten Raum is-a PersNr Angestellte Name
Aggregation Fahrräder Teil-von Teil-von Rahmen Räder Teil-von Teil-von Rohre Lenker Felgen Speichen ... ... ... ...
... Aggregation und Generalisierung Fahrzeuge is-a Unmot.-Fahrzeuge Segler Fahrräder Motorräder Automobile Teil-von Teil-von Rahmen Räder Teil-von Teil-von Teil-von Teil-von Rohre Lenker Felgen Speichen ... ... ... ...
Drei Sichten einer Universitäts-Datenbank erstellen Titel Studenten Diplomarbeiten betreuen Assistenten Dissertationen verfassen Titel bewerten Professoren Sicht 1: Erstellung von Dokumenten als Prüfungsleistung
Sicht 2: Bibliotheksverwaltung Drei Sichten einer Universitäts-Datenbank Fakultät Bibliotheken besitzen Signatur Dokumente leiten Autoren entleihen Titel UniMitglieder Jahr Datum Sicht 2: Bibliotheksverwaltung
Sicht 3: Buchempfehlungen für Vorlesungen Drei Sichten einer Universitäts-Datenbank Vorlesungen Bücher Autoren empfehlen Titel Jahr Dozenten Verlag Sicht 3: Buchempfehlungen für Vorlesungen
Uni-Schema N M N M N N M 1 1 N 1 voraussetzen Nach- folger VorlNr MatrNr Vorgänger N M hören SWS Name Vorlesungen Studenten N M N N Titel Semester M lesen prüfen Note PersNr 1 1 Rang arbeitenFür Name Assistenten Professoren Raum N 1 Fachgebiet PersNr Name
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 ... AR1 R ... A21 E2 En ... An1 ... ... 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 MatrNr VorlNr 26120 5001 27550 4052 28106 5041 5052 5216 5259 29120 5049 29555 5022 25403 Vorlesungen VorlNr ... 5001 4052 Studenten MatrNr ... 26120 27550 VorlNr MatrNr N M Studenten Vorlesungen hören
Verfeinerung des relationalen Schemas lesen Vorlesungen Professoren N 1 1:N-Beziehung Initial-Entwurf Vorlesungen : {[VorlNr, Titel, SWS]} Professoren : {[PersNr, Name, Rang, Raum]} lesen: {[VorlNr, PersNr]}
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]} Regel Relationen mit gleichem Schlüssel kann man zusammenfassen aber nur diese und keine anderen!
Ausprägung von Professoren und Vorlesung Vorlesungen VorlNr Titel SWS Gelesen Von 5001 Grundzüge 4 2137 5041 Ethik 2125 5043 Erkenntnistheorie 3 2126 5049 Mäeutik 2 4052 Logik 5052 Wissenschaftstheorie 5216 Bioethik 5259 Der Wiener Kreis 2133 5022 Glaube und Wissen 2134 4630 Die 3 Kritiken Professoren PersNr Name Rang Raum 2125 Sokrates C4 226 2126 Russel 232 2127 Kopernikus C3 310 2133 Popper 52 2134 Augustinus 309 2136 Curie 36 2137 Kant 7 lesen Vorlesungen Professoren N 1
Vorsicht: So geht es NICHT Vorlesungen VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 5052 Wissenschaftstheorie 5216 Bioethik 5259 Der Wiener Kreis 5022 Glaube und Wissen 4630 Die 3 Kritiken Professoren PersNr Name Rang Raum liest 2125 Sokrates C4 226 5041 5049 4052 ... 2134 Augustinus C3 309 5022 2136 Curie 36 ?? lesen Vorlesungen Professoren N 1
Wissenschaftstheorie Anomalien Vorlesungen VorlNr Titel SWS 5001 Grundzüge 4 5041 Ethik 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 5052 Wissenschaftstheorie 5216 Bioethik 5259 Der Wiener Kreis 5022 Glaube und Wissen 4630 Die 3 Kritiken Professoren PersNr Name Rang Raum liest 2125 Sokrates C4 226 5041 5049 4052 ... 2134 Augustinus C3 309 5022 2136 Curie 36 ?? 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 Angestellte Professoren PersNr Name Raum 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