Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 08. Exkurs: Datenbanken 1 Motivation Datenbanksysteme als Basis moderner Softwaresysteme Web-basierte Systeme (eBay, Amazon, Expedia, OnlineBanking) Unternehmensinformationssysteme(SAP R/3,...) Grundlage vieler Informatik-Berufe Administration, Planung/Entwurf, Entwicklung, Nutzung 2 Motivation Hohe Herausforderungen Verwaltung von Daten im Terabyte-Bereich (1 TB = 1000 GB) Viele Nutzer, parallele Anfragen, hohe Verfügbarkeit, Sicherheit, Ko Querbezüge zu anderen Informatikbereichen Modellierung, Datenstrukturen, Sicherheit, Theorie, Betriebssystem 3 Traditionelle Datenverwaltung Physische Datenabhängigkeit Änderungen an der Struktur der Daten führen zu Änderungen der Anwendungsprogramme. Anwendungsprogramme müssen Struktur der Daten kennen Datenredundanz/-inkonsistenz Anwendungsprogramme/Benutzer haben spezielle Erfordernisse bzgl. der Daten: Dieselben Daten werden in verschiedenen Versionen mehrfach abgespeichert. Änderungen der Daten können zu Inkonsistenzen zwischen verschiedenen Versionen führen. 4 Traditionelle Datenverwaltung Einbenutzerbetrieb Auf eine Datei kann nur ein Anwendungsprogramm auf einmal zugreifen. Folgerungen: hohe Kosten für die Anpassung von Anwendungsprogrammen Unsicherheit bzgl. der Korrektheit der Daten Effizienzverlust bei Speicherung und Zugriff auf Daten 5 Datenbanksysteme (DBS) Löse Aufgaben der Beschreibung, des Abspeicherns und des Zugriffs auf Daten aus den Anwendungsprogrammen heraus. Programme Benutzergruppen DBMS (Datenbankmanagementsystem): Verarbeitung von Anfragen, Zugriff auf gespeicherte Daten DD (Data Dictionary) DB (Daten bank) .. . DB (Daten bank) DBS (Datenbanksystem) 6 DBS Datenbankmanagementsystem (DBMS) Softwaresystem, das die Definition, Konstruktion (Speichern) und Manipulation (Anfragen, Änderungen, Berichte) von Daten unterstützt. Datenbank Menge der von einem DBMS verwalteten Daten. Sie beschreibt einen wohldefinierten Ausschnitt der realen Welt (Miniwelt). Data Dictionary/Datenbankschema (DD) Legt die Struktur der Daten fest (bzgl. eines Datenmodells). 7 DBS Eigenschaften Redundanz- und Konsistenzkontrolle Datenunabhängigkeit: einheitliche Zugriffs-Schnittstelle auf Daten Schnelle Verarbeitung von DB-Operationen Integrierte Datenspeicherung für verschiedene Anwendungen: Unterstützung von Sichten/Views Mehrbenutzerbetrieb: Unterstützung von Transaktionen und Nebenläufigkeitskontrolle Datensicherheit: Zugriffsverwaltung Datenunversehrtheit: Datenwiederherstellung/Recovery 8 DBS Kriterien für den Einsatz von DBS Anwendungen und Datenstrukturen sind Änderungen unterworfen Mehrere Benutzer/Anwendungen greifen parallel auf die Daten zu Es handelt sich um sehr große Datenmengen Datenverlust (nach technischen Fehlern) soll ausgeschlossen werden Zugriffsverwaltung ist notwendig 9 Relationales Datenmodell Jedem DBS liegt ein Datenmodell zugrunde: Eigenschaften der Datenelemente Struktur der Datenelemente Konsistenzbedingungen Operationen zum Speichern, Suchen, Ändern Löschen Das am meisten verwendete Datenmodell ist das relationale Datenmodell Jetzt: Informale Einführung in dieses Datenmodell anhand von Beispielen 10 Relationales Datenmodell Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen: Veranstaltung ID 00001 00002 00003 ... Name Informatik 2 Java-Programmierkurs Informatik 1 ... Jahr 2009 2009 2010 ... Semester SS SS WS ... 11 Relationales Datenmodell Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen: Student Matrikelnummer 1045067 ... Nachname Huber ... Vorname Markus ... ... ... ... Das ist die Sicht des Benutzers Mit der physischen Datenhaltung auf der Festplatte hat das nichts zu tun! (siehe Datenbak-Vorlesung) 12 Relationales Datenmodell Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen: Daten werden zeilenweise abgespeichert Mathematisch formal ist eine Tabelle eine Relation (also eine Menge Spaltennamen heißen auch Attribute – sie repräsentieren Wertemen Jede Zeile entspricht einem Tupel in dieser Relation Beispiel: (0001,Informatik 2,2009,SS) Veranstaltung 13 Relationales Datenmodell Nach dem relationalen Datenmodell kann man sich eine Datenbank als eine Menge von Tabellen vorstellen: Attribute Relationenname Relationenschema Relation Tupel 14 Modellierung Zur Modellierung von relationalen Datendanken verwendet man i.d.R. Sog. Entity-Relationsship-Modell (ER-Modelle) ER-Modelle sind nicht Teil von UML! ER-Modelle haben konzepzuell eine gewisse Ähnlichkeit zu Klassendiagrammen (aber nicht grafisch!) Wir werden ER-Modelle hier nicht besprechen (siehe DatenbankVorlesung 15 Objekt-Relationale Abbildung Objekte einer Java-Anwendung lassen sich nicht direkt in einer relationalen Datenbank abspeichern Wir werden im Folgenden andeuten, wie man durch Objekte verwaltete Daten in Tabellen abspeichern kann (Objektrelationale Abbildung) Dabei lernen Sie nebenbei etwas über Datenbank-Modellierung Details siehe Datenbank-Vorlesung 16 Objekt-Relationale Abbildung Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Student matrikelnummer :String Student matrikelnummer name name :String Einwertige Attribute werden Spalten der Tabelle 17 Objekt-Relationale Abbildung Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Student matrikelnummer :String Student matrikelnummer 1045678 name Huber name :String Objekte werden mit ihren Werten in Zeilen eingetragen 18 Objekt-Relationale Abbildung Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Student matrikelnummer :String Student matrikelnummer 1045678 name Huber name :String In der Tabelle soll eine Spalte identifizierend sein (hier: matrikelnummer) Schlüsselattribut 19 Objekt-Relationale Abbildung Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle abbilden Vorlesung name Vorlesung ID name jahr semester 00001 Info2 2009 SS jahr semester Falls eine Klasse kein Schlüsselattribut besitzt, wird ein solches hinzugefügt Künstliches Schlüsselattribut (hier: ID) Werte erhält man durch Durchnummerieren. 20 Objekt-Relationale Abbildung Beispiel: Beliebig mehrwertige Attribute als Tabelle abbilden Student Student matrikelnummer name ... studiengang :String [1..*] StudiengangStudent Schlüsselattribut Für jeden Wert eine Zeile matrikelnummer studiengang 1045678 Informatik 1045678 Physik 1056904 Mathematik 21 Objekt-Relationale Abbildung Beispiel: Endlich mehrwertige Attribute als Spalten abbilden Student ... studiengang :String [1..2] ... Student Studium1 Studium2 Informatik Physik Informatik null 22 Objekt-Relationale Abbildung Referenzattribut Student ... adresse :Adresse [1] <<datatype>> Adresse strasse plz ... 23 Objekt-Relationale Abbildung Beispiel: Assoziationen abbilden ?..1 - ?..? – Assoziationen: Referenzattribut Referenzattribut Vorlesung ... ID 0001 Vorlesung ... dozentID 0013 1..* 1..1 dozent Professor Professor ID 0013 name ... ... 24 Objekt-Relationale Abbildung Beispiel: Assoziationen abbilden ?..* - ?..* - Assoziationen: Eigene Tabelle Vorlesung ... 0..* 1..* Student ... ID 0001 Vorlesung ... Vorlesung_Student vorlesungID matrikelnummer 00001 1045678 Student matrikelnummer ... 1045678 25 Objekt-Relationale Abbildung Beispiel: Generalisierungen abbilden Möglichkeit 1: Alle Attribute in eine einzige Tabelle unbesetzte Zellen, eine gemeinsame ID, neues Attribut typ <<abstract> > Person name Student Mitarbeiter matnummer persnummer Person ID name matnummer persnummertyp 26 Objekt-Relationale Abbildung Beispiel: Generalisierungen abbilden Möglichkeit 2: Eigene Tabelle für jede konkrete Klasse eigene ID für jede Klasse Übernahme der Attribute abstrakter Oberklassen Möglichkeit 3: Eigene Tabelle für jede Klasse gemeinsame ID Zuordnung Oberklasse - Unterklasse über diese ID 27 Objekt-Relationale Abbildung Beispiel: Alle Klassenattribute in eigene Tabelle abbilden Klassenattribute klassenname attributname attributwert Beispiel: Containerklassen zur Objektverwaltung werden nicht abbgebildet, denn die verwalten ja keine eigenen fachlichen Daten 28 SQL Structured Query Language (SQL): Deklarative Datenbanksprache zur Definition, Manipulation und Abfrage von Daten kann interaktiv als auch eingebettet (in eine Programmiersprache) verwendet werden Einheitliche Schnittstelle für Zugriff auf Datenbanken Jetzt: kurze Einführung mit einfachen Anweisungen am Beispiel 29 SQL Es existieren mehrere SQL-Standards, an die sich existierende DBS nicht 100-prozentig halten → Syntax variiert von DBS zu DBS Wichtige Schlüsselwörter: table record, row field, column Relation Tupel Attribut Datentypen ähnlich wie in Programmiersprachen, abhängig vom betrachteten SQL-Standard bzw. DBS 30 SQL Definition einer Tabelle: Tabellenname create table Vorlesung ( ID integer not name varchar(30) not jahr char(4) not semester char(2) not dozent integer ); Attribute Datentypen Ganze Zahl (4 Byte) null, null, null, null, Variabler String der Länge <=30 String der Länge 2 not null muss Wert eingetragen sein 31 SQL Löschen Definition einer Tabelle: drop table Vorlesung 32 SQL Elementare Datentypen date Kalenderdatum float Gleitkommazahl decimal(n,m) Festkommazahl boolean Wahrheitswerte true, false array Feld (erst seit SQL-99-Standard) 33 SQL Einfügen von Tupeln: insert into Vorlesung values (1,‘Informatik 2‘,‘2009‘,‘SS‘,null); Undefinierter Wert für Dozent 34 SQL Ändern von Tupeln: update Vorlesung set dozentID = 13 where ID = 1; Neuer Wert in einer Spalte Auswahl der Tupel (der Zeilen) nach einer Bedingung (Mehrere set-Anweisungen durch Komma trennen) 35 SQL Löschen von Tupeln: delete from Vorlesung where semester = ‘SS‘; Auswahl der Tupel (der Zeilen) nach einer Bedingung 36 SQL Abfrage von Tupeln: alle Tupel einer Tabelle select * from Vorlesung; Werte aller Spalten ausgeben (Die select-Anweisung gibt immer eine Tabelle zurück) 37 SQL Abfrage von Tupeln: mit Auswahl von Tupeln select * from Vorlesung where dozentID is null; Auswahl der Tupel (der Zeilen) nach einer Bedingung 38 SQL Abfrage von Tupeln: mit Auswahl von Spalten select distinct name,semester from Vorlesung; Keine Duplikate ausgeben Auswahl von Spalten (Kombination mit Tupelauswahl möglich) 39 SQL Zusammengehörige Daten sind über mehrere Tabellen verstreut? Natürlicher Verbund von Tabellen (natural join) select distinct Vorlesung.name,Professor.name from Vorlesung,Professor where vorlesung.dozentID = Professor.ID and semester = ‘SS‘; Verbundene Tabellen Auswahl von Spalten verschiedener Tabellen Kombination von Auswahl-Bedingungen Identifizierung von Tupeln über Bedingung 40