Relationale Datenmodell

Werbung
Die Grundterminologie
Relationale Objekte
• Relation (Tabelle)
• Attribut (Spalte, Feld)
• Domain (Wertebereich)
• Degree(Ausdehnungsgrad der Tabelle)
• Tupel (Datensatz, Rekord)
• Cardinalität
• Key (Schlüsselfeld)
• Candidate – Key (eindeutiger Schlüssel)
• Primary – Key ( Hauptschlüssel)
• Alternate – Key (Zweitschlüssel)
• Foreign – Key (Fremdschlüssel)
1
Relationale Integritätsregeln
• Entity – Integrität
• Referentielle Integrität
Relationale Operationen
• Restriction (Zeilenselektion)
• Projection (Spaltenselektion)
• Union (Vereinigung)
• Intersection (Schnittmenge)
• Difference (Diferenz)
• Product (Kartesisches Produkt)
• Join (Verbindung)
• Division (Division)
2
Datenmodelle
In jedem System, in dem Daten verwaltet
werden, müssen diese eine bestimmte Struktur
haben. Diese Struktur heißt "SCHEMA" einer
Datenbank. Diese Struktur, zusammen mit den
assoziirten Operatoren wird als Datenmodell,
logisches Modell oder konzeptuelles Modell
bezeichnet.
Das bekannste und zugleich abstakteste Modell
stammt von 1970 und wird relationales
Datenbankmodell gennant.
Der verfasser heisst CODD.
3
Codd’s Principles
•
Jede Relation muss ein Identifikationsatributt haben
(falls dieser nicht existiert muss er hergestellt werden);
•
Jedes Attribut muss atomar (unzerteilbar) sein;
•
Jedes Tupel einer Relation muss für ein Attribut einen
einzige Wert enthalten;
•
Jedes Attribut mus direkt und vollständig vom
Identifikationsatributt abhängen;
•
Ein Attribut darf nur ein einziges Mal innerhalb einer
Relation auftreten.
Um Codds Prinzipien einzuhalten und um die
Redundanzheit innerhalb einer DB zu reduzieren,
muss man die "Normalisierung von Relationen" zu
benutzen.
4
Relationenalgebra
Um die Relationen zu manipulieren, d.h. in
einen vom Benutzer der Datenbank
gewünschten Zustand zu bringen, gibt es
eine Anzahl von Operatoren.
Diese Operatoren nehmen Relationen als
Input an und erzeugen Relationen.
5
Basisoperationen
Es gibt 5 Basisioperationen (genügend um
Algebra zu definieren und andere
Operationen damit auszudrücken):
• Vereinigung (Union) R  S
• Differenz (Set difference) R – S
• Kartesisches Produkt(Product) R x S
• Projektion (Projection) Ak... (R)
• Restriktion (Selection) F (R)
6
Es seien die Relationen R und S als
Basisirelationen gegeben:
R
A
a
d
c
B
b
a
b
C
c
f
d
S
D E F
b g a
d a f
7
Die Vereinigung R  S ist auch eine Relation (E)
und zwar die Menge aller Tupel, die in R oder S
oder in beiden Relationen sind.
Die Verknüpfung zweier Relationen mit UNION ist
nur erlaubt, wenn beide Relationen den gleichen
Degree besitzen und jedes Attribut der ersten
Relation kompatibel ist mit dem
korrespondierenden Attribut der zweiten
Relation (d.h. dass die Folge der Attribute die
selbe ist. Die Folge und nicht die Namen der
Attribute!).
Wenn diese Voraussetzung erfüllt ist, sind diese
zwei Relationen "UNION-kompatibel".
8
Differenz. Die Differenz R – S ist eine Relation E.
Diese Relation ist die Menge aller Tupel die in R
aber nicht in S enthalten sind.
Die Relationen R und S müssen denselben
Degree haben und die Folge der Attribute muß
dieselbe sein. (Die Folge und nicht die Namen
der Attributen!).
Auch bei der Differenz müssen die Relationen
UNION-kompatibel zueinander sein.
9
Kartesisches Produkt.
Seien R und S Relationen mit Degree D1
und D2.
Das kartesische Produkt R x S ist die Menge
aller (D1+D2) gradigen Tupel, deren erste
D1 Elemente ein Tupel in R und deren
letzte D2 Elemente ein Tupel aus S
darstellen.
10
Man bezeichnet:
E = PRODUCT(R,S) , wobei
E
A
a
a
d
d
c
c
B
b
b
a
a
b
b
C D
c b
c d
f b
f d
d b
d d
E
g
a
g
a
g
a
F
a
f
a
f
a
f
Die Ergebnisrelation (E) hat die Cardinalität C(E) = C(R) *
C(S) , wenn sie nicht Duplikate enthält!
Also, man bildet das kartesische Produkt aus zwei
Relationen, indem man jedes Tupel der ersten Relation
mit jedem Tupel der zweiten Relation kombiniert (es wird
also jede Kombinationsmöglichkeit der beiden
Relationen gebildet).
11
Projektion. Bei der Projektion werden einzelne
Spalten einer Relation auf eine neue Relation
abgebildet.
Die Projektion einer Relation ist gleichbedeutend
mit einer Ausschnittbildung der Relation in
vertikaler Richtung.
Sei R eine Relation mit Degre k.
Dann ist A1,A2,. . ., Am(R) die Abbildung von R auf
die Komponenten A1,A2, ..., Am.
Die entstehende Relation ist m-gradig.
12
Die formalen Beschreibungen sind:
E = A1,A2,. . ., Am(R)
E = R[A1,A2,...,Am]
E = PROJ(R,<A1,A2, . . ., Am>)
Der Algorithmus:
1. Man löscht aus der Relation R alle Attribute
welche nicht als Parametern der Projektion
erwähnt sind.
2. Man liest die Tupeln in der bestimmten
Reihenfolge.
3. In der Relation RP löscht man die Duplikate
(Tupeln !)
13
Beispiel.
R
A B C
a
c
a
c
b a
a b
c a
b b
C,A(R) C A
a
b
a
b
a
c
a
c
14
Restriktion. Manchmal auch Selektion
bezeichnet, diese Operation entwickelt
eine Relation, indem nur bestimmte Tupel
berücksichtig werden.
Die Auswahl der Tupel erfolgt dieses Mal
zusätzlich in horizontaler Art.
Die Auswahl der Tupel wird nach einem
bestimmten Kriterium gemacht.
15
Die Bedingung ist eine Formel.
Diese Formel enthält:
• Operanden (Konstante oder Komponente einer
Relation);
• Aritmethische Vergleichsoperatoren <, =, >, <>;
• Logische Operatoren AND, OR, NOT.
Sei F die Formel. Dann ist die Selektion
F(R) die Menge aller Tupel t in R, für die
die Formel F wahr ist.
16
Beispiel.
Es sei die Relation
R
A
B
C
a
d
c
b
a
b
c
f
d
und die Formel F: B = b.
Die Ergebnisrelation E ist
E
A
B
C
a
c
b
b
c
d
,
wobei
E = B=b (R)
17
Schnittmenge. Ermittelt gleiche Tupel aus zwei
Relationen.
Die Relationen müssen UNION-kompatibel
zueinander sein.
Das Ergebnisrelation ist die Menge der Tupel
welche sowohl R als auch S gehören.
Bemerkung.
R  S kann als R  S = R – (R-S)
ausgedrückt werden.
18
Es seien die Relationen R und S gegeben:
R A B C
a b c
d a f
c b d
S D E F
b g a
d a f
RS
=>
d a
f
19
JOIN (Verbund). Durch eine Verknüpfung
werden zwei Relationen zu einer Relation
verbunden, indem die Attribute vergleicht
werden und bei Übereinstimmung die
Tupel kombiniert werden.
Der Join verbindet zwei Relationen ähnlich
wie das kartesische Produkt.
20
Die Ergebnisrelation E kann wie folgt berechnet
werden:
• Man bildet das kartesische Produkt RxS.
• Für jedes Attribut, das sowohl in R als auch in S
erscheint, selektiert man die Tupel, für die die
Werte der gleichnamigen Attribute
übereinstimmen.
• Eine der gleichen Spalten wird ausprojektiert.
21
Die allgemeine Form des Join ist das Theta-Join,
geschrieben R  S wobei  eine Formel ist, die
Elemente der Spalten i und j vergleicht.
Der Vergleichsoperatoren sind
=, >, <, <>, >=, <=.
Die formale Beschreibung ist:
E = JOIN(R, R.Ak  S.Ak, S) wobei
E = PROJ(REST(PRODUCT(R,S), R.A1  S.A1),
<R.A1, . . ., R.An, S.A1, ..., S.Am>)
22
Beispiel
Relation R Relation S
A B
C D
a w
c y
b x
d z
c y
PRODUCT(R,S)
A B C D
a w c y
a w d z
b x c y
b x d z
c y c y
c y d z
JOIN(R, B<>D, S)
A B C D
A w c y
A w d z
B x c y
B x d z
C y d z
Der Operator Theta- Join
23
Ein Theta-Join mit dem Vergleich-operator
"=", wird Equi-Join gennant, wobei auch
hier wie bei allen Theta-Joins die
Ergebnis-relation beide Join Attribute
beinhaltet.
E = PROJ(REST(PRODUCT(R,S), R.A1 = S.A1),
<R.A1, . . ., R.An, S.A1, ..., S.Am>)
24
Beispiel
Relation R
A
a
b
c
B
w
x
y
Relation S
C D
c y
d z
PRODUCT(R,S)
A B
a w
a w
b x
b x
c y
c y
Der Operator
JOIN(R, B=D, S)
C D
A B C D
c y
c y c y
d z
c y
d z
c y
d z
Equi-Join
25
Natural-Join. Ein Equi-Join,dessen
Ergebnis relation die beiden gleichen
Attributwerte nur einmal beinhaltet, heißt
natürlicher Join.
E = PROJ(REST(PRODUCT(R,S), R.A1 = S.A1),
<R.A1, . . ., R.An, S.A2, ..., S.Am>)
26
Beispiel
Relation R
A B
a w
b x
c y
Relation S
C D
c y
d z
PRODUCT(R,S) JOIN(R, B=D, S)
A B C D
A B C
a w c y
c y c
a w d z
b x c y
b x d z
c y c y
c y d z
Der Operator Natural-Join
27
Folgende Regeln gelten für
Join’s:
•
Die Attribute, über die der Join ausgeführt wird
(Join-Attribute), müssen keine Keys sein.
•
Die Join-Attribute der beiden betroffenen
Relationen müssen nicht den gleichen Namen
haben.
•
Jede Relation kann mit jeder anderen gejoint
werden (auch mit sich selbst).
28
Auto-Join. Der Auto-Join, auch Self-Join
genannt, ist eine Verknüpfung einer
Relation mit sich selbst.
E = REST(PRODUCT(R,R), R.A1 = R.A2).
Inner-Join, Outer-Join. Der “normale” Join
erzeugt nur Tupel in der Ergebnisrelation,
wenn der Attributwert der ersten Relation
in der zweiten Relation vorkommt.
Dieser Join wird auch INNER-JOIN genannt.
29
Beispiel
Relation R Relation S
(Inner) JOIN(R, B=D, S)
A B
C D
A B C D
a w
c y
c y c y
b x
d z
c y
Der Operator Inner-Join
Im Gegensatz dazu erzeugt der Outer-Join in
der Ergebnisrelation zumindest alle Tupel
einer der beiden Relationen.
30
Beispiel
Relation R
A
a
b
c
B
w
x
y
Relation S
C
c
d
D
y
z
(linker Outer) JOIN(R, B*=D, S)
A
a
b
c
B
w
x
y
C
?
?
c
D
?
?
y
Der Operator Linker Outher-Join
Beispiel
Relation R
Relation S
A B
C D
a
w
c
y
b x
d z
c
y
Der Operator Rechter
(rechter Outer) JOIN(R, B=*D, S)
A
c
?
B
y
?
C
c
d
D
Y
Z
Outer-Join
31
Beispiel: Es seien die Relationen :
ARTIKEL
A_Nr
A_Bez
A_Art
Lief_Nr
1
ACER
Monitor
1
2
LG
Monitor
2
3
Herkules
Grafikkarte
1
4
Samsung
Monitor
3
5
Compaq
Monitor
2
6
HP
Druker
4
7
HP+
Druker
4
8
Cannon
Druker
4
32
Und die Relation
LIEFERANT
Lief_Nr
Lief_Name
1
Oktalgroup
2
Audio Master
3
Elnicron
4
Easyprint
5
Sharp
33
Erste Frage:
Welche Artikel (Artikelbezeichnung) werden
vom Lieferanten nr.4 geliefert ?
Die Lösung:
E= PROJ(REST(ARTIKEL, Lief_Nr=4),
A_Bez)
34
Zweite Frage:
Welche Lieferanten liefern einen Monitor?
Die Lösung:
E=PROJ(REST(JOIN(ARTIKEL,Lief_Nr=
Lief_Nr, LIEFERANTEN),
A_Art="Monitor"), Lief_Name)
oder
E1=JOIN(ARTIKEL,Lief_Nr=Lief_Nr, LIEFERANTEN)
E2 = REST(E1, A_Art=„Monitor“)
E = PROJ(E2, Lief_Name)
35
Oder
E1=REST(PRODUCT(ARTIKEL,LIEFERANTEN),
Lief_Nr=Lief_Nr)
E2=REST(E1, A_Art="Monitor)
E=PROJ(E2, Lief_Name)
36
Beispiel:
Es seien die Relationen:
PRODUKT (Code,Bennenung,
Maßeinheit,Preis)
KUNDE (KNr,Name,Adresse,Konto)
RECHNUNG (RNr,Datum,KNr,Code,
Liefermenge)
37
Problem 1
Die Bennenungen aller Produkte welche an
der Kunden GRIRO geliefert wurden.
Lösung
E1= REST(KUNDE, Name="GRIRO")
E2= JOIN(RECHNUNG,KNr=KNr, E1)
E3=PROJ(PRODUKT, Code, Bennenung)
E4=JOIN(E2,E3, E2.Code = E3.Code)
E = PROJ(E4, Bennenung)
38
Problem 2
Die Namen der Kunden an die, nach dem
01.01.2007, keine Produkte mehr geliefert
wurden.
Lösung
E1=REST(RECHNUNG,Datum >#01.01.2007#)
E2=PROJ(E1, KNr)
E3=PROJ(RECHNUNG, KNr)
E4=MINUS(E3,E2)
E5=JOIN(KUNDE,KNr=KNr, E4)
E=PROJ(E5, Name)
39
Problem 3
Die Rechnungen für die Produkte mit einem
höheren Preis als 100 Lei.
Lösung
E1 = REST(PRODUKT, Preis>100)
E2 = JOIN(E1, Code = Code, RECHNUNG)
E = PROJ(E2, RNr)
40
Herunterladen