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