08_ExkursDatenbanken_05312011

Werbung
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
Herunterladen