select distinct

Werbung
Vorlesung Informatik II
Universität Augsburg
Sommersemester 2010
Prof. Dr. Robert Lorenz
Lehrprofessur für Informatik
09. Exkurs: Datenbanken
20.05.2010
1
Motivation
Datenbanksysteme als Basis moderner Softwaresysteme
Web-basierte Systeme (eBay, Amazon, Expedia, OnlineBanking,
B …)
Unternehmens-Informationssysteme
U
(SAP R/3, …)
Grundlage vieler Informatik-Berufe
Administration, Planung/Entwurf, Entwicklung, Nutzung
20.05.2010
2
Motivation
Hohe Herausforderungen
Verwaltung
V
von Daten im Terabyte-Bereich (1 TB = 1000 GB)
Viele Nutzer, parallele Anfragen, hohe Verfügbarkeit, Sicherheit,
Konsistenz
Querbezüge zu anderen Informatikbereichen
Modellierung, Datenstrukturen, Sicherheit, Theorie,
Betriebssysteme, …
20.05.2010
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.
20.05.2010
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
20.05.2010
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
(
D
DD
(Data
Dictionary)
DB1
(Datenbank)
...
DBn
(Datenbank)
DBSD(Datenbanksystem)
20.05.2010
6
DBS
Datenbankmanagementsystem
D
(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
D
(DD)
Legt die Struktur der Daten fest (bzgl. eines Datenmodells).
20.05.2010
7
DBS
Eigenschaften
E
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
20.05.2010
8
DBS
Kriterien
K für den Einsatz eines 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
20.05.2010
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
20.05.2010
10
Relationales Datenmodell
Nach dem relationalen Datenmodell kan man sich eine Datenbank
als eine Menge von Tabellen vorstellen:
Veranstaltung
ID
00001
00002
00003
...
Name
Informatik 2
Java-Programmierkurs
Informatik 1
...
20.05.2010
Jahr
2009
2009
2010
...
Semester
SS
SS
WS
...
11
Relationales Datenmodell
Nach dem relationalen Datenmodell kan 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 Datenbank-Vorlesung)
20.05.2010
12
Relationales Datenmodell
Nach dem relationalen Datenmodell kan man sich eine Datenbank
als eine Menge von Tabellen vorstellen:
Daten werden zeilenweise abgespeichert
Mathematisch formal ist eine Tabelle eine Relation (also eine
Menge von Tupeln)
Spaltennamen heißen auch Attribute – sie repräsentieren
Wertemengen
Jede Zeile entspricht einem Tupel in dieser Relation
Beispiel: (0001,Informatik 2,2009,SS) ∈
Veranstaltung
20.05.2010
13
Relationales Datenmodell
Nach dem relationalen Datenmodell kan man sich eine Datenbank
als eine Menge von Tabellen vorstellen:
Attribute
Relationenname
Relationenschema
Relation
Tupel
20.05.2010
14
Modellierung
Zur Modellierung von relationalen Datendanken verwendet
man i.d.R.
)
sog Entity-Relationship-Modelle (ER-Modelle)
ER-Modelle sind nicht Teil von UML!
ER-Modelle haben konzepzuell eine gewisse Ähnlichkeit zu
Klassendiagrammen
K
(aber nicht grafisch!)
Wir werden ER-Modelle hier nicht besprechen (siehe DatenbankVorlesung)
V
20.05.2010
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 wir nebenbei etwas über Datenbankmodellierung)
(Details( siehe Datenbank-Vorlesung)
20.05.2010
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
20.05.2010
17
Objekt-Relationale Abbildung
Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle
abbilden
Student
matrikelnummer
:String
Student
matrikelnummer
name
1045678
Huber
name
:String
Objekte werden mit ihren Werten in Zeilen eingetragen
20.05.2010
18
Objekt-Relationale Abbildung
Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle
abbilden
Student
matrikelnummer
:String
Student
matrikelnummer
name
1045678
Huber
name
:String
Objekte werden mit ihren Werten in Zeilen eingetragen
In der Tabelle soll eine Spalte identifizierend sein (hier:
matrikelnummer)  Schlüsselattribut
20.05.2010
19
Objekt-Relationale Abbildung
Beispiel: Eine Klasse (einen strukturierten Datentyp) als Tabelle
abbilden
Vorlesung
name
jahr
Vorlesung
ID
name
jahr semester
00001
Info2
2009 SS
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.05.2010
20
Objekt-Relationale Abbildung
Beispiel: Mehrwertige Attribute als Tabelle abbilden
Student
Student
matrikelnummer
name
...
studiengang
:String [1..*]
Studiengang_Student
Schlüsselattribut
Für jeden Wert eine Zeile
matrikelnummer
1045678
1045678
1056904
20.05.2010
studiengang
Informatik
Physik
Mathematik
21
Objekt-Relationale Abbildung
Referenzattribut
Student
...
adresse
:Adresse [1]
<<datatype>>
Adresse
strasse
plz
...
20.05.2010
22
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
...
...
20.05.2010
23
Objekt-Relationale Abbildung
Beispiel: Assoziationen abbilden
?..* - ?..* - Assoziationen: Eigene Tabelle
Vorlesung
ID
0001
...
0..*
1..*
Student
...
Vorlesung
...
Vorlesung_Student
vorlesungID
matrikelnummer
00001
1045678
Student
matrikelnummer
...
1045678
20.05.2010
24
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 persnummer typ
20.05.2010
25
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
20.05.2010
26
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
20.05.2010
27
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
20.05.2010
28
SQL
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
20.05.2010
29
SQL
Definition einer Tabelle:
Tabellenname
create table Vorlesung
G
(
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
20.05.2010
30
SQL
Löschen Definition einer Tabelle:
drop table Vorlesung
20.05.2010
31
SQL
Elementare Datentypen
date
Kalenderdatum
float
Gleitkommazahl
decimal(n,m)
F
Festkommazahl (Vorkomma,Nachkomma)
boolean
Wahrheitswerte true, false
array
Feld (erst seit SQL-99-Standard)
20.05.2010
32
SQL
Einfügen von Tupeln:
insert into Vorlesung values
(1,‘Informatik 2‘,‘2009‘,‘SS‘,null);
Undefinierter Wert für Dozent
20.05.2010
33
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
20.05.2010
34
SQL
Löschen von Tupeln:
delete from Vorlesung
where semester = ‘SS‘;
Auswahl der Tupel (der Zeilen) nach einer Bedingung
20.05.2010
35
SQL
Abfrage von Tupeln: alle Tupel einer Tabelle
select * from Vorlesung;
Werte aller Spalten ausgeben
Die select-Anweisung gibt immer eine Tabelle zurück
20.05.2010
36
SQL
Abfrage von Tupeln: mit Auswahl von Tupeln
select * from Vorlesung
where dozentID is null;
Auswahl der Tupel (der Zeilen) nach einer Bedingung
20.05.2010
37
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)
20.05.2010
38
SQL
Zusammengehörige Daten sind über mehrere Tabellen verstreut?
 Natürlicher
N
Verbund von Tabellen (natural join)
select distinct Vorlesung.name,Professor.name
from Vorlesung,Professor
where vorlesung.dozentID = Professor.ID
and semester = ‘SS‘;
Auswahl von Spalten
verschiedener Tabellen
Verbundene Tabellen
Kombination
von AuswahlBedingungen
Identifizierung von Tupeln über
Bedingung
20.05.2010
39
Herunterladen