40
1 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 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

Embed Size (px)

Citation preview

Page 1: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

1

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)

Page 2: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

2

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)

Page 3: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

3

DatenmodelleDatenmodelleIn 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.

Page 4: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

4

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.

Page 5: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

5

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.

Page 6: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

6

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)

Page 7: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

7

Es seien die Relationen R und S als Basisirelationen gegeben:

R A B C S D E F

a b c b g a

d a f d a f

c b d

Page 8: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

8

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".

Page 9: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

9

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.

Page 10: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

10

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.

Page 11: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

11

Man bezeichnet:E = PRODUCT(R,S) , wobei E A B C D E F a b c b g a a b c d a f d a f b g a d a f d a f c b d b g a c b d d 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).

Page 12: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

12

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.

Page 13: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

13

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 !)

Page 14: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

14

Beispiel.

R A B C C,A(R) C A a b a a a c a b b c a c a a a c b b b c

Page 15: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

15

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.

Page 16: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

16

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.

Page 17: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

17

Beispiel. Es sei die Relation R A B C a b c d a f c b d und die Formel F: B = b. Die Ergebnisrelation E ist

E A B C , wobei E = B=b (R) a b c c b d

Page 18: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

18

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.

Page 19: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

19

Es seien die Relationen R und S gegeben: R A B C S D E F R S a b c b g a => d a f d a f d a f c b d

Page 20: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

20

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.

Page 21: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

21

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.

Page 22: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

22

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) wobeiE = PROJ(REST(PRODUCT(R,S), R.A1 S.A1),

<R.A1, . . ., R.An, S.A1, ..., S.Am>)

Page 23: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

23

Beispiel Relation R Relation S PRODUCT(R,S) JOIN(R, B<>D, S)

A B C D A B C D A B C D a w c y a w c y A w c y b x d z a w d z A w d z c y b x c y B x c y b x d z B x d z c y c y C y d z c y d z

Der Operator Theta- Join

Page 24: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

24

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>)

Page 25: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

25

Beispiel Relation R Relation S PRODUCT(R,S) JOIN(R, B=D, S)

A B C D A B C D A B C D a w c y a w c y c y c y b x d z a w d z c y b x c y b x d z c y c y c y d z

Der Operator Equi-Join

Page 26: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

26

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>)

Page 27: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

27

Beispiel Relation R Relation S PRODUCT(R,S) JOIN(R, B=D, S)

A B C D A B C D A B C a w c y a w c y c y c b x d z a w d z c y b x c y b x d z c y c y c y d z

Der Operator Natural-Join

Page 28: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

28

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).

Page 29: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

29

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.

Page 30: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

30

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.

Page 31: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

31

Beispiel Relation R Relation S (linker Outer) JOIN(R, B*=D, S)

A B C D A B C D a w c y a w ? ? b x d z b x ? ? c y c y c y

Der Operator Linker Outher-Join Beispiel Relation R Relation S (rechter Outer) 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 ? ? d Z c y

Der Operator Rechter Outer-Join

Page 32: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

32

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

Page 33: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

33

Und die Relation LIEFERANT

Lief_Nr Lief_Name

1 Oktalgroup

2 Audio Master

3 Elnicron

4 Easyprint

5 Sharp

Page 34: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

34

Erste Frage:

Welche Artikel (Artikelbezeichnung) werden vom Lieferanten nr.4 geliefert ?

Die Lösung:

E= PROJ(REST(ARTIKEL, Lief_Nr=4),

A_Bez)

Page 35: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

35

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)

Page 36: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

36

Oder

E1=REST(PRODUCT(ARTIKEL,LIEFERANTEN), Lief_Nr=Lief_Nr)

E2=REST(E1, A_Art="Monitor)

E=PROJ(E2, Lief_Name)

Page 37: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

37

Beispiel:

Es seien die Relationen:

PRODUKT (Code,Bennenung,

Maßeinheit,Preis)

KUNDE (KNr,Name,Adresse,Konto)

RECHNUNG (RNr,Datum,KNr,Code,

Liefermenge)

Page 38: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

38

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)

Page 39: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

39

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)

Page 40: 1 Die Grundterminologie Relationale Objekte Relation (Tabelle) Attribut (Spalte, Feld) Domain (Wertebereich) Degree(Ausdehnungsgrad der Tabelle) Tupel

40

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)