Document

Werbung
Kapitel 6
Das relationale Modell
1
Das Relationale Modell
Wertebereiche (Domänen):
Relation:
Wertebereich von Attribut A:
Relation
Element von R:
Schema der Relation:
aktuelle Ausprägung:
D1, D2 ,, ... , Dn
R  D1  D2  ...  Dn
dom(A)
R  dom (A1)  dom (A2)  ...  dom (An)
Tupel
sch(R) = A1, A2 ,, ... , An
R
bei Datenbanksystemen zusätzlich zum Wertebereich noch Bezeichner:
Telefonbuch : { [Name : string, Adresse: string, TelefonNr : integer] }
Telefonbuch : { [Name, Adresse, TelefonNr ] }
2
Konzeptuelles Schema der Universität
voraussetzen
Vorgänger
N
MatrNr
Name
N
Studenten
Sem
VorlNr
M
hören
Vorlesungen
M
N
N
prüfen
Note
N
Fachgebiet
Titel
1
Rang
1
arbeitenFür
SWS
lesen
1
Assistenten
Nachfolger
M
Professoren
Raum
is-a
PersNr
Angestellte
Name
3
Initial-Entwurf für Entity-Typen
Pro Entity-Typ eine Relation (Schlüssel unterstrichen):
Studenten
Vorlesungen
Professoren
Assistenten
: {[ MatrNr : integer, Name : string, Semester : integer] }
: {[ VorlNr : integer, Titel : string, SWS : integer] }
: {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
: {[ PersNr : integer, Name : string, Fachgebiet : string] }
4
Initial-Entwurf für Relationship-Typen
Pro Relationship-Typ eine Relation:
hören
lesen
arbeitenFür
voraussetzen
prüfen
:
:
:
:
:
{[ MatrNr : integer, VorlNr : integer] }
{[ PersNr : integer, VorlNr : integer] }
{[ AssiPersNr : integer, ProfPersNr : integer] }
{[ Vorgänger : integer, Nachfolger : integer] }
{[ MatrNr : integer, VorlNr : integer, PersNr : integer, Note : decimal] }
Fremdschlüssel := Schlüsselattribut für referierte Entity-Typen
1:N-Beziehung entspricht einer Abbildung:
lesen : Vorlesungen  Professoren
prüfen : Studenten  Vorlesungen  Professoren
5
Elimination bei gleichen Schlüsseln
Vorlesungen
Professoren
lesen
: {[ VorlNr : integer, Titel : string, SWS : integer] }
: {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
: {[ PersNr : integer, VorlNr : integer] }
Relationen mit gleichem Schlüssel können zusammengefaßt werden
(ggf. Umbenennung erforderlich):
Vorlesungen
Professoren
: {[ VorlNr : integer,Titel : string, SWS : integer, gelesenVon : integer] }
: {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
6
Elimination bei ungleichen Schlüsseln
Vorlesungen : {[ VorlNr : integer, Titel : string, SWS : integer] }
Professoren : {[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
Relationen mit ungleichem Schlüssel sollten nicht
zusammengefaßt werden:
Professoren'
: {[ PersNr, liestVorl, Name, Rang, Raum ] }
PersNr liestVorl
Name
Rang
Raum
2125
2125
2125
Sokrates
Sokrates
Sokrates
C4
C4
C4
226
226
226
5041
5049
4052
7
Elimination bei 1:1-Beziehung
1
Professoren
PersNr
1
Dienstzimmer
...
Räume
...
RaumNr
...
Professoren
: {[ PersNr, Name, Rang ] }
Räume
: {[ RaumNr, Größe, Lage ] }
Dienstzimmer : {[ PersNr, RaumNr ] }
Professoren
Räume
: {[ PersNr, Name, Rang, Raum] }
: {[ RaumNr, Größe, Lage ] }
Professoren
Räume
: {[ PersNr, Name, Rang] }
: {[ RaumNr, Größe, Lage, ProfPersNr ] }
Obacht: Nullwerte !
8
Generalisierung
Professoren
Assistenten
: {[ PersNr, Name, Rang, Raum] }
: {[ PersNr, Name, Fachgebiet] }
Obertyp mit Gemeinsamkeiten:
Angestellte : {[ PersNr, Name] }
Aber: Die Information zu
[2125, Sokrates, C4, 226]
ist jetzt verteilt auf
[2125, Sokrates]
[2125, C4, 226]
9
Schwacher Entity-Typ
GebNr
RaumNr
Größe
Höhe
Räume
N
liegt_in
1
Gebäude
Die Beziehung liegt_in wird verlagert in den Entity-Typ Räume:
Räume
: {[ GebNr, RaumNr, Größe] }
Die Beziehung
bewohnt : Professoren  Räume
erfordert drei Attribute
bewohnt : {[ PersNr, GebNr, RaumNr] }
Alternative (bei geringer Gebäudeinformation):
Professoren: {[PersNr, Name, Rang, Raum]}
10
Relationenschema
Studenten
Vorlesungen
Professoren
Assistenten
hören
voraussetzen
prüfen
:
:
:
:
:
:
:
{[ MatrNr : integer, Name : string, Semester : integer] }
{[ VorlNr : integer, Titel : string, SWS : integer, gelesenVon : integer] }
{[ PersNr : integer, Name : string, Rang : string, Raum : integer] }
{[ PersNr : integer, Name : string, Fachgebiet : string, Boss : integer] }
{[ MatNr : integer, VorlNr : integer] }
{[ Vorgänger : integer, Nachfolger : integer] }
{[ MatrNr : integer, VorlNr : integer, PersNr : integer, Note :decimal] }
11
Ausprägung Professoren, Assistenten
Professoren
Assistenten
PersNr
Name
Rang
Raum
2125
2126
2127
2133
2134
2136
2137
Sokrates
Russel
Kopernikus
Popper
Augustinus
Curie
Kant
C4
C4
C3
C3
C3
C4
C4
226
232
310
52
309
36
7
PersNr
Name
3002
3003
3004
3005
3006
3007
Platon
Aristoteles
Wittgenstein
Rhetikus
Newton
Spinoza
Fachgebiet
Boss
Ideenlehre
2125
Syllogistik
2125
Sprachtheorie
2126
Planetenbewegung 2127
Keplersche Gesetze 2127
Gott und Natur
2134
12
Ausprägung Vorlesungen, Studenten
Vorlesungen
Studenten
VorlNr
Titel
SWS
5001
5041
5043
5049
4052
5052
5216
5259
5022
4630
Grundzüge
4
Ethik
4
Erkenntnistheorie
3
Mäeutik
2
Logik
4
Wissenschaftstheorie 3
Bioethik
2
Der Wiener Kreis
2
Glaube und Wissen 2
Die 3 Kritiken
4
MatrNr
Name
Semester
24002
25403
26120
26830
27550
28106
29120
29555
Xenokrates
Jonas
Fichte
Aristoxenos
Schopenhauer
Carnap
Theophrastos
Feuerbach
18
12
10
8
6
3
2
2
gelesenVon
2137
2125
2126
2125
2125
2126
2126
2133
2134
2137
13
Ausprägung hören, voraussetzen, prüfen
voraussetzen
hören
MatrNr
VorlNr
26120
27550
27550
27550
28106
28106
28106
27550
29120
29120
29555
25403
29555
5001
5001
4052
5041
4052
5216
5259
4630
5041
5049
5022
5022
5001
Vorgänger
Nachfolger
5001
5001
5001
5041
5043
5041
5052
5041
5043
5049
5216
5052
5052
5259
prüfen
MatrNr
VorlNr
PersNr
Note
28106
25403
27550
5001
5041
4630
2126
2125
2137
1.0
2.0
2.0
14
Abfragesprachen
• Relationenalgebra (prozedural):
konstruktive Verknüpfung durch Operatoren wie , , ... .
• Relationenkalkül (deklarativ):
Beschreibung des gewünschten Ergebnisses
mit Formel der Prädikatenlogik 1. Stufe unter Verwendung von , , , , 
• SQL (kommerziell):
umgangssprachliche Mischung aus Relationenalgebra und Relationenkalkül
• Query by Example (für Analphabeten):
Ausfüllen eines Gerüstes mit Beispiel-Einträgen
15
Relationenalgebra
Operanden = Relationen
Operatoren:
•Selektion
•Projektion
•Vereinigung
•Mengendifferenz
•Kartesisisches Produkt
•Umbenennung
abgeleitete Operatoren:
• Verbund
• Durchschnitt
• Division
16
Selektion
Semester >10(Studenten)
MatNr
Name
Semester
24002
25403
Xenokrates
Jonas
18
12
Selektionsprädikat durch Formel mit
• Attributnamen oder Konstanten als Operanden
• arithmetische Vergleichsoperatoren      
• logische Operatoren:   
17
Projektion
Rang (Professoren)
Rang
C4
C3
per definitionem keine Duplikate !
18
Vereinigung
PersNr, Name(Assistenten)  PersNr, Name(Professoren)
PersNr Name
2125
3002
Sokrates
Platon
.
.
.
19
Mengendifferenz
MatrNr (Studenten) – MatrNr (prüfen)
MatrNr
24002
26120
26830
.
.
.
20
Kartesisches Produkt
Professoren  hören
PersNr
Name
Rang
Raum
MatrNr
VorlNr
2125
···
2125
···
2137
Sokrates
···
Sokrates
···
Kant
C4
···
C4
···
C4
226
···
226
···
7
26120
···
29555
···
29555
5001
···
5001
···
5001
sch(R  S) := sch(R)  sch(S).
Ggf. durch Voranstellung des Relationennamens identifizieren: R.A
21
Umbenennung von Relationen und Attributen
Dozenten(Professoren)
Zimmer  Raum(Professoren)
finde Vorgänger vom Vorgänger von Vorlesung 5216:
 V1.Vorgänger(V1.Nachfolger = V2.Vorgänger
 V2.Nachfolger=5216
(V1(voraussetzen)  V2(voraussetzen)))
V1
V2
Vorgänger
Nachfolger
Vorgänger
Nachfolger
5001
···
5001
···
5052
5041
···
5041
···
5259
5001
···
5041
···
5052
5041
···
5216
···
5259
22
Relationenalgebra
Operanden = Relationen
Operatoren:
• Selektion
• Projektion
• Vereinigung
• Mengendifferenz
• Kartesisisches Produkt
• Umbenennung
abgeleitete Operatoren:
• Verbund
• Durchschnitt
• Division
23
Natürlicher Verbund (Join)
R habe m+k Attribute A1, A2 ,, ... , Am , B1, B2 ,, ... , Bk
S habe n+k Attribute B1, B2 ,, ... , Bk , C1, C2 ,, ... , Cn
R  S :=  A1,..., Am, R.B1,..., R.Bk, C1,...,Cn(R.B1=S.B1  ...  R.Bk=S.Bk(R  S))
(Studenten  hören)  Vorlesungen
Studenten  (hören  Vorlesungen)
Studenten  hören  Vorlesungen
MatrNr
Name Semester VorlNr Titel
26120
25403
28106
...
Fichte
Jonas
Carnap
...
10
12
3
...
5001
5022
4052
...
Grundzüge
Glaube und Wissen
Wissenschaftstheorie
...
SWS
4
2
3
...
gelesenVon
2137
2137
2126
...
24
Natürlicher Verbund mit Umbenennung
Vorlesungen der C4-Professoren:
Namen der C4-Professoren mit ihren Vorlesungstiteln:
 Name, Titel (Professoren  PersNr  gelesenVon(Vorlesungen))
Name
Titel
Sokrates
Sokrates
Sokrates
Kant
Kant
...
Logik
Ethik
Mäeutik
Die 3 Kritiken
Grundzüge
...
25
Theta-Join
Statt Gleichheit bei Attributen jetzt Prädikat :
R  A1 < B1  A2=B2  A3 < B5 S
gleichwertig zu
R   S :=  (R  S)
Erweitere Professoren und Assistenten um ein Attribut Gehalt.
Verbinde Professoren mit höherverdienenden Assistenten:
Professoren  Professoren.Gehalt < Assistenten.Gehalt  Boss =Professoren.PersNr Assistenten
26
Outer Join
Bisher: Inner Join (Tupel ohne Partner gehen verloren)
Jetzt:
Outer Join (rette partnerlose Tupel):
• left outer join: Tupel der linken Argumentrelation bleiben erhalten
• right outer join: Tupel der rechten Argumentrelation bleiben erhalten
• full outer join: Tupel beider Argumentrelationen bleiben erhalten
27
Outer Joins
L
R
inner Join
A
B
C
C
D
E
A
B
C
D
E
a1
a2
b1
b2
c1
c2
c1
c3
d1
d2
e1
e2
a1
b1
c1
d1
e1
left outer Join
outer Join
right outer Join
A
B
C
D
E
A
B
C
D
E
A
B
C
D
E
a1
a2
b1
b2
c1
c2
d1
-
e1
-
a1
-
b1
-
c1
c3
d1
d2
e1
e2
a1
a2
-
b1
b2
-
c1
c2
c3
d1
d2
e1
e2
28
Mengendurchschnitt
Personalnummer der C4-Professoren,
die mindestens eine Vorlesung halten:
PersNr (PersNr  gelesenVon(Vorlesungen)) 
PersNr (Rang=C4(Professoren))
Äquivalenz:
R  S = R \ (R \ S)
R
S
29
Division
R sei r-stellig, S sei s-stellig, sch(S)  sch(R)
R  S := { t = t1, t2, ..., tr-s   u  S : tu  R}
Anfangsstücke von R, zu denen sämtliche Verlängerungen
mit Tupeln aus S in R liegen
R
M
V
m1
m1
m1
m2
m2
v1
v2
v3
v2
v3

S
RS
V
M
v1
v2
=
m1
Namen der Studenten, die alle 4-stündigen Vorlesungen hören:
Name (Studenten  ( Hören  VorlNr (SWS=4(Vorlesungen))))
30
Ableitung der Division
(Projektion über Index statt Namen)
T := 1, ..., r-s (R)
TS
(T  S) \ R
V := 1, ..., r - s ((T  S) \ R)
T\V
alle Anfangsstücke
kombiniert mit allen Verlängerungen aus S
davon nur solche, die nicht in R sind
davon die Anfangsstücke
davon das Komplement
31
Operatorbaum-Darstellung
Name


Studenten
Hören
VorlNr
SWS=4
Vorlesungen
32
Relationenkalkül
Bisher: Relationenalgebra (konstruktiv)
Jetzt:
Relationenkalkül (deklarativ)
• Der relationale Tupelkalkül
(binde freie Variable an Tupel)
• Der relationale Domänenkalkül
(binde freie Variable an Domäne)
33
Der relationale Tupelkalkül
Sei t eine Tupelvariable (repräsentiert ein Tupel einer Relation)
sei P ein Prädikat unter Verwendung von      
Ein Ausdruck im relationalen Tupelkalkül hat die Form
{ t  P(t) }
t ist eine freie Variable, die unter Berücksichtigung des Prädikats
sukzessive an die Tupel einer Relation gebunden wird
34
Der relationale Tupelkalkül
Alle C4-Professoren:
{ p  p  Professoren  p.Rang = 'C4' }
Alle Professoren mit den Personalnummern íhrer Assistenten:
{ [ p.Name, a.PersNr ]  p  Professoren 
a  Assistenten  p.PersNr = a.Boss }
Alle Studenten, die sämtliche 4-stündigen Vorlesungen hören:
{ s  s  Studenten   v  Vorlesungen ( v.SWS=4 
h  hören (h.VorlNr = v.VorlNr  h.MatrNr = s. MatrNr)) }
35
Tupelkalkül versus Relationenalgebra
Sicherer Ausdruck: Ergebnis ist wieder Teilmenge der Domäne.
Z.B. nicht sicher: { n   (n  Professoren) }
Bei Beschränkung auf sichere Ausdrücke sind
Tupelkalkül und Relationenalgebra gleichmächtig.
36
Der relationale Domänenkalkül
Seien v1, v2, ..., vn Domänenvariable (repräsentieren Attributwerte)
Sei P ein Prädikat unter Verwendung von      
Ein Ausdruck im relationalen Domänenkalkül hat die Form
{ [v1, v2, ..., vn]  P (v1, v2, ..., vn ) }
v1, v2, ..., vn sind freie Domänenvariable, die sukzessive unter
Berücksichtigung des Prädikats an Wertebereiche der Attribute
gebunden werden.
37
Der relationale Domänenkalkül (Beispiel)
Alle Professorennamen mit den Personalnummern ihrer Assistenten:
{ [n,a]   p, r, t ( [p, n, r, t ]  Professoren 
 v, w ( [a, v, w, p ]  Assistenten )) }
Bei Beschränkung auf sichere Ausdrücke sind
die Relationenalgebra und der relationale Domänenkalkül
gleichmächtig.
38
QBE
Fordere Tabellenskelett an und fülle es exemplarisch:
Vorlesungen
VorlNr Titel
p._t
SWS
>3
gelesenVon
Grundzüge
Ethik
Logik
Die 3 Kritiken
Im Domänenkalkül:
{ [t] | v, s, r ( [v, t, s, r]  Vorlesungen  s > 3) }
39
QBE Join
Liste alle Professoren, die Logik lesen:
Vorlesungen
VorlNr
Titel SWS
Logik
Professoren
PersNr Name Rang
p._n
_otto
gelesenVon
_otto
Raum
Sokrates
40
QBE Condition Box
Liste alle Studenten, die in einem höheren Semester sind als Feuerbach:
Studenten
MatrNr
Name
p._s
Feuerbach
Semester
_a
_b
conditions
_a > _b
41
QBE Gruppierung
Gruppierung:
Aggregatfunktionen:
2125
2126
2127
2133
2134
2136
2137
Sokrates
Russel
Kopernikus
Popper
Augustinus
Curie
Kant
C4
C4
C3
C3
C3
C4
C4
226
232
310
52
309
36
7
g.
sum. avg. min. max. all.
Liste für jede Gehaltsgruppe den Namen des Professors mit
der größten Personalnummer:
Professoren
PersNr
p.min._x
2137
2133
Name
p._x
Kant
Popper
Rang Raum
p.g.
C4
C3
42
QBE Gruppierung
5001
5041
5043
5049
4052
5052
5216
5259
5022
4630
Grundzüge
Ethik
Erkenntnistheorie
Mäeutik
Logik
Wissenschaftstheorie
Bioethik
Der Wiener Kreis
Glaube und Wissen
Die 3 Kritiken
4
4
3
2
4
3
2
2
2
4
2137
2125
2126
2125
2125
2126
2126
2133
2134
2137
Liste für jeden Professor die Summe seiner Vorlesungsstunden:
Vorlesungen
VorlNr Titel
SWS
p.sum.all._x
10
8
2
2
8
gelesenVon
p.g.
2125
2126
2133
2134
2137
43
QBE Einfügen
Füge neuen Studenten ein:
Studenten
i.
MatrNr
4711
Name
Wacker
Semester
5
44
QBE Ändern
Setze Semesterzahl von Feuerbach auf 3:
Studenten
MatrNr
Name
Feuerbach
Semester
u.3
45
QBE Löschen
Entferne Sokrates und seine Vorlesungen:
Professoren
d.
PersNr Name
_x
Sokrates
Vorlesungen
d.
VorlNr
_y
hören
d.
Titel
VorlNr
_y
Rang
SWS
Raum
gelesenVon
_x
MatrNr
46
Herunterladen