Professoren

Werbung
Diskussion: Personal (1)
( )
ER Diagramm:
ER-Diagramm:
Abteilung
[0, n]
ist beschäftigt in
[0, 1]
Person
Umsetzung ins Relationenmodell?
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Diskussion: Personal (2)
( )
Zusätzliche Regel:
In jeder Abteilung (Person) muss mindestens eine
beschäftigt sein ([1
([1, N])
Umsetzung
g ins Relationenmodell?
Zusätzliche Regel:
Jeder Angestellte (Person) muss in einer Abteilung
beschäftigt sein ([1
([1, 1])
Umsetzung ins Relationenmodell?
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Die relationale Algebra
 Selektion
 Pojektion
x Kreuzprodukt
K
d kt
Join (Verbund)
 Umbenennung
Semi-Join (linker)
Semi-Join (rechter)
li k ä
linker
äußerer
ß
J i
Join
rechter äußerer Join
Allg. Mengenoperationen
Allg
Mengenoperationen:
 Differenz
 Division
g g
 Vereinigung
 Durchschnitt
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Beispiel Mengendurchschnitt
Finde die PersNr aller C4
C4-Professoren,
Professoren die mindestens
eine Vorlesung halten.
PersNr(PersNrgelesenVon(Vorlesungen)) 
PersNr(Rang=C4(Professoren))
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Relationaler Tupelkalkül
Eine Anfrage im Relationenkalkül hat die Form
{{t  P(t)}
( )}
mit t Tupelvariable und P Prädikat
einfaches
i f h Beispiel:
B i i l
C4-Professoren
{p  p  Professoren  p
p.Rang
g = 'C4'}}
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Relationenkalkül: Beispiel
Studenten
S
d
miti mindestens
i d
einer
i
V
Vorlesung
l
von
Curie
{{s s  Studenten
 h  hören(s.MatrNr=h.MatrNr
 v  Vorlesungen(h.VorlNr
Vorlesungen(h VorlNr=v
v.VorlNr
VorlNr
 p  Professoren(p. PersNr=v.gelesenVon
 p.Name
p Name = 'Curie')))}
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Dieselbe Anfrage in SQL …
… belegt die Verwandtschaft
select s.
s*
from Studenten s
where exists (
select h.*
from hören h
where h.MatrNr = s.MatrNr and exists (
select *
from Vorlesungen v
where v.VorlNr = h.VorlNr and exists (
select *
from Professoren p
where p.Name =‚Curie' and
p.PersNr=
P N v.gelesenVon
l
V )))
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Relationaler Domänenkalkül
Anfrage
g im Domänenkalkül hat die Form:
{[v1, v2, . . . , vn] | P(v1, . . . , vn)}
mit v1
v1, . . . , v2 Domänenvariablen und P Prädikat
Beispiel:
MatrNr und Namen der Prüflinge von Sokrates
{[m, n] |  ([m, n, s]  Studenten
  p,
p vv, g ([m
([m, p
p, v,
v g]  prüfen
  a, r, b ([p, a, r, b]  Professoren
 a = ‘Sokrates’)))}
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Ausdruckskraft
Die drei Sprachen
• relationale Algebra
• relationaler
l ti
l Tupelkalkül,
T
lk lkül eingeschränkt
i
h ä kt auff sichere
i h
Ausdrücke
• relationaler
l ti
l D
Domänenkalkül,
ä
k lkül eingeschränkt
i
h ä kt auff
sichere Ausdrücke
sind
i d gleich
l i h mächtig
ä hti
{n | ¬(n  Professoren)} z.B. ist nicht sicher, da das
Ergebnis unendlich ist
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Fertigungsdatenbank
e t gu gsdate ba
ANR
ABTEILUNG (ANR,
(ANR ANAME,
ANAME AMNR)
ABTEILUNG
[0,1]
[1,n]
HAT
HATMANAGER
SETZTSETZT
EIN
ABT-PERS
MASCHINEN (MANR, MFABRIKAT, MTYP, ANR)
[0,1]
[1,1]
[0,1]
PERSONAL (PNR, PNAME, PBERUF, ANR)
[0,n]
PNR
MANR
PERSONAL
[0,n]
TNR
MASCHINEN
[0,m]
TEILE
[0,n]
[0,m]
ISTGEEIGNETFÜR-DIE-HERSTELLUNG
STELLUNGVON
KANNBEDIENEN
TEILE (TNR
(TNR, TBEZ,
TBEZ TGEWICHT)
KANN-BEDIENEN (PNR, MANR)
GEEIGNET-FÜR-DIE-HERSTELLUNG-VON
(MANR, TNR)
[0,n]
[0,m]
PRODUKTION
(DATUM)
[0,p]
PRODUKTION (PNR, MANR, TNR, DATUM,
MENGE)
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
SQL - DRL
Webschnittstellen für SQL:
• www-db
www-db.in.tum.de/
in tum de/~muehe/sql/:
muehe/sql/:
Universitätsdatenbank, Handelsdatenbank
Tabellen anlegen möglich
werden automatisch über Nacht gelöscht
eigenes Löschen nicht möglich
• http://hyper-db
http://hyper db.de/interface.html
de/interface html
Universitätsdatenbank, TPC-H Schema
Query-Ausführungspläne
Query
Ausführungspläne
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Handelsdatenbank
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Gerüst SQL-Anfrage
select
<Attributliste>
5
from
<Relationenliste>
1
[where
<Prädikatsliste>
2
group
g
p by
y
<Attributliste>
3
having
<Prädikatsliste>
4
order
d by
b
<Attributliste>
A ib li
6
fetch first
<Anzahl Ergebnistupel>
]
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
7
18.11.2013
Einfaches Beispiel
Anfrage:
"Gib mir die gesamte Information über alle Professoren„
P f
Professoren
select *
from Professoren
PersNr
Name
Rang
2136
2137
2126
2125
2134
2127
2133
Curie
Kant
Russel
Sokrates
Augustinus
Kopernikus
Popper
C4
C4
C4
C4
C3
C3
C3
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Ergebnis
PersNr
Name
Rang
2136
2137
2126
2125
2134
2127
2133
Curie
Kant
R
Russel
l
Sokrates
A
Augustinus
ti
Kopernikus
P
Popper
C4
C4
C4
C4
C3
C3
C3
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Attribute selektieren
Anfrage:
"Gib mir die PersNr und den Namen aller Professoren„
select PersNr, Name
f
from
P f
Professoren
PersNr
2136
2137
2126
2125
2134
2127
2133
Professoren
Name
Rang
Curie
Kant
Russel
Sokrates
Augustinus
g
Kopernikus
pp
Popper
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
C4
C4
C4
C4
C3
C3
C3
18.11.2013
Ergebnis
PersNr
Name
2136
2137
2126
2125
2134
2127
2133
Curie
Kant
R
Russel
l
Sokrates
A
Augustinus
ti
Kopernikus
P
Popper
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Duplikateliminierung
• Im Gegensatz zur relationalen Algebra (Mengen!) eliminert
SQL keine Duplikate
• Falls Duplikateliminierung erwünscht,
erwünscht muss das
Schlüsselwort distinct benutzt werden
• Beispiel:
Anfrage: „Welche Ränge haben Professoren?„
select distinct Rang
from
Professoren
Ergebnis:
Rang
C3
C4
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Where Klausel:
Tupel selektieren
Anfrage:
g
"Gib mir die PersNr und den Namen aller Professoren, die
den Rang C4 haben„
select
PersNr Name
PersNr,
from
Professoren
where Rang= ´C4´;
E b i
Ergebnis:
PersNr
2125
2126
Name
Sokrates
Russel
2136
2137
Curie
K t
Kant
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Where Klausel: Prädikate
• Prädikate in der where-Klausel können logisch kombiniert
werden mit:
AND OR
AND,
OR, NOT
• Als Vergleichsoperatoren können verwendet werden:
=, <,<=, >,>=, between, like
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Beispiel für between
Anfrage:
g
"Gib mir die Namen aller Studenten, die zwischen 1987-01-01
und 1989-01-01 geboren wurden„
select Name
from Student
where Geburtstag between 1987-01-01 and 1989-01-01;
Anfrage äquivalent zu:
select
l t Name
N
from Student
where Geburtstag >= 1987-01-01
and Geburtstag <= 1989-01-01;
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
String Vergleiche
String-Vergleiche
• Stringkonstanten müssen in einfachen Anführungszeichen
eingeschlossen sein
Anfrage:
Gib mir alle Informationen über den Professor
"Gib
mit dem Namen Kant„
select *
from Professoren
where Name = ’Kant’;
Kant ;
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Suche mit Jokern (Wildcards)
Anfrage:
"Gib mir alle Informationen über Professoren,
deren Namen mit einem K anfängt“
anfängt
select *
from Professoren
where Name like ’K%’;
Mögliche Joker:
• _ steht für ein beliebiges Zeichen
• % steht für eine beliebige Zeichenkette (auch der Länge 0)
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Nullwerte
• In SQL gibt es einen speziellen Wert NULL
• Dieser Wert existiert für alle verschiedenen Datentypen und
repräsentiert Werte, die
• unbekannt oder
• nicht verfügbar oder
• nicht anwendbar sind.
• Nullwerte können auch im Zuge der Anfrageauswertung
entstehen
• Auf NULL wird mit is NULL geprüft:
Beispiel:
select *
o
Professoren
o esso e
from
where Raum is NULL;
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Nullwerte cont.
• Nullwerte werden in arithmetischen Ausdrücken durchgereicht:
mindestens ein Operand NULL  Ergebnis ebenfalls NULL
• manchmal sehr überraschende Anfrageergebnisse, wenn
Nullwerte vorkommen, z.B.:
select count (*)
f
from
St d t
Studenten
where Semester < 13 or Semester > = 13
• Wenn es Studenten gibt, deren Semester-Attribut den Wert
NULL hat, werden diese nicht mitgezählt
• Der Grund liegt in dreiwertiger Logik unter Einbeziehung von
NULL-Werten:
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Auswertung bei Null-Werten
• SQL: dreiwertige Logik, mit den Werten
t
true,
f l und
false
d unknown
k
• unknown liefern Vergleichsoperationen zurück, wenn
mindestens
i d t
eines
i
ih
ihrer A
Argumente
t NULL iist.
t
• In einer where-Bedingung werden nur Tupel weitergereicht, für
di di
die
die B
Bedingung
di
t
true
i t Insbesondere
ist.
I b
d
werden
d Tupel,
T
l für
fü di
die
die Bedingung zu unknown auswertet, nicht ins Ergebnis
aufgenommen.
g
• Bei einer Gruppierung wird NULL als ein eigenständiger Wert
aufgefasst
g
und in eine eigene
g
Gruppe
pp eingeordnet.
g
• Logische Ausdrücke werden nach den folgenden Tabellen
berechnet:
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Dreiwertige Logik-Tabellen
Logik Tabellen
and
true
unknown
false
true
true
unknown
false
unknown
unknown
unknown
false
false
false
false
false
or
true
unknown
false
true
true
true
true
unknown
true
unknown
unknown
false
true
unknown
false
not
true
false
unknown unknown
false
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
true
18.11.2013
Professoren
Vorlesungen
Studenten
Rang Raum MatrNr
Name
Semester VorlNr
PersNr
Name
2125
Sokrates
C4
226
24002
Xenokrates
18
2126
Russel
C4
232
25403
Jonas
12
2127 Kopernikus
C3
310
26120
Fichte
10
2133
C3
52
26830
Aristoxenos
8
2134 Augustinus
C3
309
27550 Schopenhauer
6
2136
Curie
C4
36
28106
3
2137
Kant
C4
7
29120 Theophrastos
2
29555
2
Popper
voraussetzen
Carnap
Feuerbach
hören
Vorgänger Nachfolger
Titel
SWS gelesen
Von
5001
00
G d
Grundzüge
4
2 3
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mä tik
Mäeutik
2
2125
4052
Logik
4
2125
5052 Wissenschaftstheorie
3
2126
5216
Bi thik
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Di 3 Kritiken
Die
K itik
4
2137
MatrNr
VorlNr
26120
5001
27550
5001
27550
4052
28106
5041
28106
5052
PerslNr
Name
Fachgebiet
Boss
28106
5216
3002
Platon
Ideenlehre
2125
28106
5259
3003
Aristoteles
Syllogistik
2125
prüfen
29120
5001
3004
Wittgenstein
Sprachtheorie
2126
MatrNr VorlNr PersNr Note
29120
5041
3005
Rhetikus
Planetenbewegung
2127
5001
5041
5001
5043
5001
5049
5041
5216
5043
5052
5041
5052
5052
5259
Assistenten
28106
5001
2126
1
29120
5049
3006
Newton
Keplersche Gesetze
2127
25403
5041
2125
2
29555
5022
3007
Spinoza
Gott und Natur
2126
27550
4630
2137
2
25403
5022
Anfragen über mehrere
R l ti
Relationen:
Kreuzprodukt
K
d kt
• Falls mehrere Relationen in der from
from-Klausel
Klausel auftauchen
auftauchen,
werden sie mit einem Kreuzprodukt verbunden
• Beispiel:
Anfrage: "Gib alle Professoren und Vorlesungen aus„
select *
from Vorlesung, Professor;
Ergebnis???
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Anfragen über mehrere
R l ti
Relationen:
J i
Joins
• Kreuzprodukte machen meistens keinen Sinn
Sinn,
interessanter sind Joins
• Joinprädikate
J i ädik t werden
d iin d
der where-Klausel
h
Kl
l
angegeben:
select *
from Vorlesung, Professor
where
h
gelesenVon
l
V = PersNr;
P N
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Anfragen über mehrere
R l ti
Relationen:
J i cont.
Joins
t
Welcher Professor liest "Mäeutik"?
select Name, Titel
from Professoren,
Professoren Vorlesungen
where PersNr = gelesenVon
and
d Titel
Tit l = ‘Mä
‘Mäeutik‘;
tik‘
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Beispiel
Professoren
VorlNr
PersNr Name
Rang Raum 5001
2125 Sokrates C4
226 5041
2126
Russel
C4
232
5049
2137
Kant
C4
Vorlesungen
Titel
SWS gelesen Von
Grundzüge
g
4
2137
Ethik
4
2125
Mäeutik
2
2125
4
2137
7
4630 Die 3 Kritiken
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
PersN
r
2125
Name
Sokrates
Rang
C4
Raum
226
VorlNr
5001
Titel
Grundzüge
g
SWS gelesen Von
4
2137
1225
Sokrates
C4
226
5041
Ethik
4
2125
2125
Sokrates
C4
226
5049
Mäeutik
2
2125
2126
2126
Russel
Russel
C4
C4
232
232
5001
5041
Grundzüge
Ethik
4
4
2137
2125
2137
Kant
C4
7
4630
Die 3 Kritiken
4
2137
gelesen
Von
2125
Auswahl
PersN
r
2125
Name
Rang
Raum
VorlNr
Titel
SWS
Sokrates
C4
226
5049
Mäeutik
2
Projektion
Name
Sokrates
Titel
Mäeutik
Namenskollision
• gleichnamige Attribute in verschiedenen
Relationen müssen aufgelöst werden
Beispiel:
Welche Studenten hören welche
Vorlesungen?
select Name, Titel
from Studenten,
Studenten hören
hören, Vorlesungen
where Studenten.MatrNr = hören.MatrNr and
hören.VorlNr
ö
= Vorlesungen.VorlNr;
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Namenskollision cont.
cont
Welche Studenten hören welche
Vorlesungen?
Alternativ:
select s.Name,, v.Titel
from Studenten s, hören h, Vorlesungen v
where s.
s MatrNr = h.
h MatrNr and
h.VorlNr = v.VorlNr
Datenbanksysteme für Hörer anderer Fachrichtungen WS 2013/2014
18.11.2013
Professoren
Vorlesungen
Studenten
Rang Raum MatrNr
Name
Semester VorlNr
PersNr
Name
2125
Sokrates
C4
226
24002
Xenokrates
18
2126
Russel
C4
232
25403
Jonas
12
2127 Kopernikus
C3
310
26120
Fichte
10
2133
C3
52
26830
Aristoxenos
8
2134 Augustinus
C3
309
27550 Schopenhauer
6
2136
Curie
C4
36
28106
3
2137
Kant
C4
7
29120 Theophrastos
2
29555
2
Popper
voraussetzen
Carnap
Feuerbach
hören
Vorgänger Nachfolger
Titel
SWS gelesen
Von
5001
00
G d
Grundzüge
4
2 3
2137
5041
Ethik
4
2125
5043
Erkenntnistheorie
3
2126
5049
Mä tik
Mäeutik
2
2125
4052
Logik
4
2125
5052 Wissenschaftstheorie
3
2126
5216
Bi thik
Bioethik
2
2126
5259
Der Wiener Kreis
2
2133
5022
Glaube und Wissen
2
2134
4630
Di 3 Kritiken
Die
K itik
4
2137
MatrNr
VorlNr
26120
5001
27550
5001
27550
4052
28106
5041
28106
5052
PerslNr
Name
Fachgebiet
Boss
28106
5216
3002
Platon
Ideenlehre
2125
28106
5259
3003
Aristoteles
Syllogistik
2125
prüfen
29120
5001
3004
Wittgenstein
Sprachtheorie
2126
MatrNr VorlNr PersNr Note
29120
5041
3005
Rhetikus
Planetenbewegung
2127
5001
5041
5001
5043
5001
5049
5041
5216
5043
5052
5041
5052
5052
5259
Assistenten
28106
5001
2126
1
29120
5049
3006
Newton
Keplersche Gesetze
2127
25403
5041
2125
2
29555
5022
3007
Spinoza
Gott und Natur
2126
27550
4630
2137
2
25403
5022
Herunterladen