Literatur Literatur: Kemper, Eickler: Datenbanksysteme: Eine Einführung. Oldenbourg Verlag, 9. Auflage, 203. Informatik II Vorlesung am D-BAUG der ETH Zürich Dr. Felix Friedrich und Dr. Hermann Lehner Vorlesung 2, 208 Datenbanksysteme: Das Entity Relationship (ER) Modell, das Relationale Modell und SQL. Demo: Java & SQL: Eine GUI Applikation fuer die VBZ Daten Quellen: Basismaterial wurde von Prof. Donald Kossmann & Martin Kaufmann freundlicherweise zur Verfügung gestellt. Weitere Quelle: Folien zu Datenbanksysteme: Eine Einführung, Lehrstuhl III Datenbansysteme, Prof. Kemper, TU München 2 Ziele utzen von Datenbanksystemen verstehen, Modellierungskenntnisse ER Modell (Modellierung der Weltsicht) Relationales Modell (Modellierung für die DB) Datenbanksystem anwenden Java + SQL Datenbankverwaltungssysteme Ein Datenbankverwaltungssystem (DBMS) ist ein Werkzeug zur Erstellung und Ausführung datenintensiver Anwendungen grosse Datenmengen grosse Datenströme 3 4
Typische Anwendungen Bank z.b. Konten / Geldtransfer Bibliothek z.b. Bücher / Ausleihen Facebook, Twitter, z.b. Freunde, Sende Tweet Geoinformationssysteme z.b. Topographische Information, "Erzeuge Karte" "Alles, was Sie mit einer Tabelle machen wollen, mit Excel nicht erledigen können und nicht selbst programmieren möchten". Wozu Datenbanksysteme? Vermeide Redundanz und Inkonsistenz Deklarativer Zugriff auf die Daten und Unabhängigkeit von der Implementation (physische Datenunabhängigkeit) Synchronisiere gleichzeitigen Datenzugriff Sicherheit, Vertraulichkeit Minimiere Kosten und Aufwand Ähnliche Funktionalität selbst zu implementieren würde Jahre in Anspruch nehmen 5 6 Datenmodellierung Auschnitt der realen Miniwelt. Teil heutige Vorlesung: Modellierung (ER-Modell) reale Welt: Universität XML konzeptuelles Schema (ER-Schema) relationales Schema intellektuelle Modellierung objektorientiertes Schema halbautomatische Transformation 7 Matrr konzeptuelle Modellierung Persr geben Titel 8
2. Teil heutige Vorlesung: Relationales Datenmodell Legi 2620 25403 Fichte Jonas Legi 25403 2620 5022 500 select from,, where.legi=.legi and.=. and.titel = `Grundzüge ; 500 5022 Titel Grundzüge Glaube und Wissen Entity Relationship Modell update set Title = `Grundzüge der Logik where = 500; 9 0 Entity/Relationship (ER) Modell Modell einer Universität vorraussetzen Legi Semester Legi Vorgänger achfolger Entity = Gegenstandstyp Relationship = Beziehungstyp Schlüssel (Identifikation) Hörer Kurs Attribut / Eigenschaft Rolle Semester Persr ote prüfen lesen KP Titel Rang r Titel KP Assistent arbeitenfür Raum Fachgebiet Persr 2
in natürlicher Sprache haben Legir, und Semester. Die Legir identifziert einen eindeutig. haben eine, Kreditpunkte und einen Titel. identifiziert eine Vorlesung eindeutig. haben Persr,, Rang und Raum. Persr identifiziert einen Professor eindeutig. Assistenten haben Persr, und Fachgebiet. Persr. identifiziert einen Assistenten eindeutig. können Voraussetzung für andere sein. lesen. Assistenten arbeiten für werden von über geprüft. erhalten oten als Teil dieser Prüfungen. Ist das die einzig mögliche Interpretation? ein: zu einem ER-Model gehört immer noch Dokumentation und/oder gesunder Menschenverstand Warum ER? Vorteile ER Diagramme sind einfach zu erstellen und editieren ER Diagramme sind aufgrund der grafischen Darstellung einfach zu verstehen (vom Laien) ER Diagramme beschreiben alle Informationsanforderungen Allgemeines Viele Tools verfügbar Kontroverse, ob ER/UML in der Praxis von utzen ist Keine Kontroverse, dass jeder ER/UML lernen sollte 3 4 Funktionalitätsangaben E E R 2 Beispiel: Seminar Um das zu verstehen, denken Sie am besten in Abbildungen (Funktionen): eine Abbildung f(x,y) hat pro Parameter x,y nur einen Wert. : E E 2 R Í E x E 2 : betreuen Seminarthemen ote : :M betreuen: x Seminarthemen betreuen: Seminarthemen x 5 6
Konsistenzbedingungen des Seminar Einschränkungen. dürfen bei einem Professor nur ein Seminarthema bearbeiten 2. können dasselbe Seminarthema nur einmal bearbeiten Universität mit Funktionalitäten Legi Semester vorraussetzen Vorgänger achfolger M M M KP Titel Möglichkeiten. können das Seminarthema für andere wiederverwenden 2. Dasselbe Thema kann von verschiedenen verwendet werden 7 Persr Fachgebiet ote Assistent prüfen arbeitenfür lesen Persr Rang Raum 8 Daumenregeln Wann Attribut, wann Entität? Entität, wenn das Konzept mehr als eine Beziehung hat Attribut, wenn das Konzept nur eine : Beziehung hat Partitionierung von ER-Modellen Realistische Modelle sind grösser als eine Seite ach Bereichen / Organisationseinheiten partitionieren Kein gutes automatisches Graphenpartitionierungstool bekannt Tipps Keine Redundanz modellieren Je weniger Entitäten desto besser ER Modellierung: Zusammenfassung ER beschreibt eine Miniwelt Das "was" und die Regeln ER ist statisch. Es beschreibt keine Übergänge ützlich zum Erstellen von Software zur Beantwortung von (An)fragen über die Miniwelt es folgt nun: ER-Modell à relationales Modell Ähnliche Modellierungsmöglichkeiten bietet UML (mehr auf OOP zugeschnitten) Auch andere graphische Darstellungen des ER Modells gebräuchlich, z.b. "Krähenfussnotation" optisch näher bei UML 9 20
Relationales Modell, Formalismus Relation R R Í D x x D n Relationales Modell Die Welt in Tabellen D, D 2,, D n sind Domänen Beispiel: Telefonbuch Í string x string x integer Tupel: t Î R Beispiel: t = ( Mickey Mouse, Main Street, 47) Relationenschemata werden wie folgt beschrieben Telefonbuch: {[: string, Strasse: string, Telefon#:integer]} 2 {[]} deuten an, dass ein Schema eine Menge von Tupeln [] ist des Attributes Typ des Attributes 22 Relationales Modell Ausprägung: Zustand der Datenbank Telefonbuch Strasse Telefon# Mickey Mouse Main Street 47 Minnie Mouse Broadway 94725 Donald Duck Broadway 95672 Schlüssel: minimale Menge von Attributen, welche ein Tupel eindeutig identifizieren z.b. {Telefon#} oder {, Geburtstag} Regel #: Darstellung von Entities : {[Legi:integer, :string, Semester: integer]} : {[:integer, Titel: string, KP: integer]} : {[Persr:integer, : string, Rang: string,raum: integer]} Assistenten: {[Persr:integer, : string, Fachgebiet: string]} Primärschlüssel (durch Unterstreichung hervorgehoben): Ausgewählter Schlüssel, welcher üblicherweise zur Identifikation eines Tupels in einer Relation verwendet wird. 23 24
Regel #2: Darstellung von Beziehungen! )"! "" E! "#$ E 2 R E n! )#*! " % %! #&! '"! '#( R:{[ ]} R R A,., A k, A2,, A2,,,,,,, k A 2 n Ank A A n kr $!#!" $!#!" $!#!" $!#!" Schlüssel E Schlüssel E 2 Schlüssel E n Attribute von R 25 Darstellung von Beziehungen : {[Legi: integer, : integer]} lesen : {[Persr: integer, : integer]} arbeitenfür : {[AssiPersr: integer, ProfPersr: integer]} voraussetzen: {[Vorgänger: integer, achfolger: integer]} prüfen : {[Legi: integer, : integer, Persr: integer, ote: decimal]} Fremdschlüssel, identifizieren Tupel aus anderen Entitäten 26 Ausprägung von Zur Regel #2: Bennenung der Attribute? Legi 2620 27550 Legi Legi 2620 500 27550 500 27550 4052 2806 504 2806 5052 2806 526 2806 5259 2920 500 2920 504 2920 5049 29555 5022 25403 5022 29555 500 500 4052 M 27 Spezifiziert das ER-Modell Rollen, dann nimm den n der jeweiligen Rolle voraussetzen:{[vorgänger:string, achfolger:string]} andernfalls benutze die n der Schlüsselattribute der Entitäten bei Mehrdeutigkeit erfinde aussagekräftigen n borders_on: {[Code: string, eighbour: string]} Country Code borders_on M vorraussetzen Vorgänger achfolger eighbour Country Code 28
Regel #3: Zusammenfassung von Relationen Ausprägung von und : : lesen: Zusammenfassen: : : {[, Title, CP]} {[Persr,, Level, Room]} {[, Persr]} Fasse (nur) Relationen mit gleichem Schlüssel zusammen (also auch nur (:), (:) oder (:) Beziehungen) {[, Title, CP, gelesenvon]} {[Persr,, Level, Room]} Persr Rang Raum 225 Sokrates FP 226 226 Russel FP 232 227 Kopernikus AP 30 233 Popper AP 52 234 Augustinus AP 309 236 Curie FP 36 237 Kant FP 7 Titel KP gelesenvon 500 Grundzüge 4 237 504 Ethik 4 225 5043 Erkenntnistheorie 3 226 5049 Mäeutik 2 225 4052 Logik 4 225 5052 Wissenschaftstheorie 3 226 526 Bioethik 2 226 5259 Der Wiener Kreis 2 233 5022 Glaube und Wissen 2 234 4630 Die 3 Kritiken 4 237 lesen 29 lesen 30 Das funktioniert ICHT Relationales Modell der Uni-DB Persr Rang Raum liest 225 Sokrates FP 226 504 225 Sokrates FP 226 5049 225 Sokrates FP 226 4052 234 Augustinus AP 309 5022 236 Curie FP 36?? Problem: Redundanz und Anomalien Persr ist kein gültiger Schlüssel für mehr Titel KP 500 Grundzüge 4 504 Ethik 4 5043 Erkenntnistheorie 3 5049 Mäeutik 2 4052 Logik 4 5052 Wissenschaftstheorie 3 526 Bioethik 2 5259 Der Wiener Kreis 2 5022 Glaube und Wissen 2 4630 Die 3 Kritiken 4 lesen 3 Persr Rang Raum Legi Semester Titel KP gelesenvon 225 Sokrates FP 226 24002 Xenokrates 8 500 Grundzüge 4 237 226 Russel FP 232 25403 Jonas 2 504 Ethik 4 225 227 Kopernikus AP 30 2620 Fichte 0 5043 Erkenntnistheorie 3 226 233 Popper AP 52 26830 Aristoxenos 8 5049 Mäeutik 2 225 234 Augustinus AP 309 27550 Schopenhauer 6 4052 Logik 4 225 236 Curie FP 36 2806 Carnap 3 5052 Wissenschaftstheorie 3 226 237 Kant FP 7 2920 Theophrastos 2 526 Bioethik 2 226 29555 Feuerbach 2 5259 Der Wiener Kreis 2 233 5022 Glaube und Wissen 2 234 Assistenten voraussetzen 4630 Die 3 Kritiken 4 237 Perslr Fachgebiet Boss Vorgänger achfolger 3002 Platon Ideenlehre 225 500 504 prüfen 3003 Aristoteles Syllogistik 225 500 5043 Legi r Persr ote 3004 Wittgenstein Sprachtheorie 226 500 5049 2806 500 226 3005 Rhetikus Planetenbewegung 227 504 526 25403 504 225 2 3006 ewton Keplersche Gesetze 227 5043 5052 27550 4630 237 2 3007 Spinoza Gott und atur 226 504 5052 5052 5259 Legi 2620 500 27550 500 27550 4052 2806 504 2806 5052 2806 526 2806 5259 2920 500 2920 504 2920 5049 29555 5022 32
HADS-O: ZUGRIFF AUF SQL DATEBAKE AUS EIER JAVA APPLIKATIO AHAG: WELT-DATEBAK 33 34 [Ein Modell der Welt] [Modell der Welt mit Funktionalitäten] Code Population neighbour Country is_in capital_of City ID Population Code Population borders_on M Country is_in capital_of City ID Population Percentage spoken_in Percentage spoken_in isofficial isofficial M countrylanguage countrylanguage 35 36
[Die Welt in Tabellen] (borders_on nicht modelliert) 37