08.10.2013 Aufrufe

3. Grundlagen des Relationalen Datenmodells Lernziele

3. Grundlagen des Relationalen Datenmodells Lernziele

3. Grundlagen des Relationalen Datenmodells Lernziele

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>3.</strong> <strong>Grundlagen</strong> <strong>des</strong> <strong>Relationalen</strong> <strong>Datenmodells</strong><br />

Grundkonzepte<br />

Relationale Invarianten<br />

– Primärschlüsselbedingung<br />

– Fremdschlüsselbedingung (referentielle Integrität)<br />

– Wartung der referentiellen Integrität<br />

Abbildung ERM → RM<br />

Nachbildung der Generalisierung und Aggregation im RM<br />

Relationenalgebra<br />

– Mengenoperationen<br />

– relationale Operatoren: Selektion, Projektion, Join<br />

Kapitel 4: Die Standard-Anfragesprache SQL<br />

Kapitel 5: Logischer DB-Entwurf (Normalformenlehre)<br />

Kapitel 6: Datendefinition und -kontrolle<br />

DB-Anwendungsprogrammierung: in DBS2<br />

© Prof. E. Rahm 3 - 1<br />

<strong>Lernziele</strong><br />

Grundbegriffe <strong>des</strong> Relationenmodells<br />

Relationale Invarianten, insbesondere Vorkehrungen zur Wahrung<br />

der referentiellen Integrität<br />

Abbildung von ER-Diagrammen in Relationenschema (und<br />

umgekehrt)<br />

Operationen der Relationenalgebra: Definition und praktische<br />

Anwendung<br />

© Prof. E. Rahm 3 - 2<br />

DBS 1<br />

DBS 1


Relationenmodell - Übersicht<br />

Entwicklungsetappen<br />

– Vorschlag von E.F. Codd (Communications of the ACM 1970)<br />

– 1975: Prototypen: System R (IBM Research), Ingres (Berkeley Univ.)<br />

– seit 1980: kommerzielle relationale DBS<br />

Datenstruktur: Relation (Tabelle)<br />

– einzige Datenstruktur<br />

(neben atomaren Werten)<br />

– alle Informationen ausschließlich<br />

durch Werte dargestellt<br />

– Integritätsbedingungen auf/zwischen Relationen: relationale Invarianten<br />

Operatoren auf (mehreren) Relationen<br />

– Vereinigung, Differenz<br />

– Kartesisches Produkt<br />

– Projektion<br />

– Selektion<br />

– zusätzlich: Änderungsoperationen (Einfügen, Löschen, Ändern)<br />

© Prof. E. Rahm 3 - 3<br />

Relationenmodell - Grundkonzepte<br />

Attribut<br />

Definitionsbereich<br />

Primärschlüssel<br />

} wie<br />

normalisierte Relation<br />

im ERM<br />

– Relation = Untermenge <strong>des</strong> kartesischen Produktes der Attributwertebereiche<br />

– nur einfache Attibute (atomare Werte) !<br />

Darstellungsmöglichkeit für R:<br />

n-spaltige Tabelle (Grad der Relation: n)<br />

Relation ist eine Menge: Garantie der Eindeutigkeit der<br />

Zeilen/Tupel über Primärschlüssel (ggf. mehrere Schlüsselkandidaten)<br />

© Prof. E. Rahm 3 - 4<br />

Entitymenge<br />

Relationshipmenge<br />

Relation<br />

R (A 1 , A 2 , ..., A n ) ⊆ W (A 1 ) × W (A 2 ) × ... × W (A n )<br />

D i D j D k<br />

DBS 1<br />

DBS 1


Normalisierte Relationen in Tabellendarstellung<br />

FAK<br />

FNR<br />

WI<br />

MI<br />

Wirtschaftswiss.<br />

Math./Informatik<br />

Grundregeln:<br />

– Jede Zeile (Tupel) ist eindeutig und beschreibt ein Objekt (Entity) der Miniwelt<br />

– Die Ordnung der Zeilen ist ohne Bedeutung<br />

– Die Ordnung der Spalten ist ohne Bedeutung, da sie eindeutigen Namen (Attributnamen)<br />

tragen<br />

– Jeder Datenwert innerhalb einer Relation ist ein atomares Datenelement<br />

– Alle für Benutzer relevanten Informationen sind ausschließlich durch Datenwerte ausgedrückt<br />

Darstellung von Beziehungen durch Fremdschlüssel (foreign key)<br />

– Attribut, das in Bezug auf den Primärschlüssel einer anderen (oder derselben) Relation<br />

definiert ist (gleicher Definitionsbereich)<br />

© Prof. E. Rahm 3 - 5<br />

ER-Diagramm<br />

gehört-zu<br />

FNAME<br />

Relationales Schema<br />

PROF<br />

n<br />

Prof<br />

© Prof. E. Rahm 3 - 6<br />

...<br />

...<br />

...<br />

STUDENT<br />

MATNR<br />

123 766<br />

654 711<br />

196 481<br />

226 302<br />

SNAME<br />

Coy<br />

Abel<br />

Maier<br />

Schulz<br />

Anwendungsbeispiel<br />

1<br />

Dekan<br />

1<br />

n<br />

Fakultät<br />

1<br />

Prüfung<br />

FNR FNAME DEKAN<br />

isteingeschr.in<br />

FNR<br />

MI<br />

WI<br />

MI<br />

MI<br />

Student<br />

PNR PNAME FNR FACHGEB MATNR SNAME FNR W-Ort<br />

PRÜFUNG<br />

FAK<br />

PNR MATNR FACH DATUM NOTE<br />

1<br />

m<br />

n<br />

W-ORT<br />

Halle<br />

Leipzig<br />

Delitzsch<br />

Leipzig<br />

STUDENT<br />

DBS 1<br />

DBS 1


© Prof. E. Rahm 3 - 7<br />

Relationale Invarianten<br />

inhärente Integritätsbedingungen <strong>des</strong> Relationenmodells<br />

(Modellbedingungen)<br />

1. Primärschlüsselbedingung (Entity-Integrität)<br />

– Eindeutigkeit <strong>des</strong> Primärschlüssels<br />

– keine Nullwerte!<br />

2. Fremdschlüsselbedingung (referentielle Integrität):<br />

– zugehöriger Primärschlüssel muss existieren<br />

– d.h. zu jedem Wert (ungleich Null) eines Fremdschlüsselattributs einer Relation R2<br />

muss ein gleicher Wert <strong>des</strong> Primärschlüssels in irgendeinem Tupel von Relation R1<br />

vorhanden sein<br />

Graphische Notation:<br />

STUDENT<br />

referenzierende<br />

Relation<br />

FNR<br />

FAK<br />

referenzierte<br />

Relation<br />

Relationale Invarianten (2)<br />

Fremdschlüssel und zugehöriger Primärschlüssel tragen wichtige<br />

interrelationale (manchmal auch intrarelationale) Informationen<br />

– sie sind auf dem gleichen Wertebereich definiert<br />

– sie gestatten die Verknüpfung von Relationen mit Hilfe von Relationenoperationen<br />

Fremdschlüssel<br />

– können Nullwerte aufweisen, wenn sie nicht Teil eines Primärschlüssels sind.<br />

– ein Fremdschlüssel ist zusammengesetzt, wenn der zugehörige Primärschlüssel<br />

zusammengesetzt ist. (FS-Wert = „Null“ bedeutet dann, dass alle Komponenten auf „Null“<br />

gesetzt sind)<br />

eine Relation kann mehrere Fremdschlüssel besitzen, die die<br />

gleiche oder verschiedene Relationen referenzieren<br />

Zyklen sind möglich (geschlossener referentieller Pfad)<br />

eine Relation kann zugleich referenzierende und referenzierte<br />

Relation sein („self-referencing table“).<br />

© Prof. E. Rahm 3 - 8<br />

DBS 1<br />

DBS 1


Relationale Invarianten (3)<br />

DDL-Spezifikation in SQL bei CREATE TABLE:<br />

CREATE TABLE STUDENT<br />

(MATNR INT,<br />

SNAME VARCHAR (50) NOT NULL,<br />

FNR INT,<br />

PRIMARY KEY (MATNR),<br />

FOREIGN KEY (FNR) REFERENCES FAK )<br />

CREATE TABLE FAK<br />

(FNR INT PRIMARY KEY,<br />

FNAME VARCHAR (50) NOT NULL<br />

DEKAN INT REFERENCES PROF ...<br />

)<br />

© Prof. E. Rahm 3 - 9<br />

Wartung der referentiellen Integrität<br />

Gefährdung bei INSERT, UPDATE, DELETE<br />

R1 (FAK)<br />

R2 (STUDENT)<br />

Fall 0: INSERT auf R1, DELETE auf R2<br />

Fall 1: INSERT bzw. UPDATE auf FS der referenzierenden (abhängigen)<br />

Relation R2: Ablehnung falls kein zugehöriger PS-Wert in referenzierter<br />

Relation R1 besteht<br />

Fall 2: DELETE auf referenzierter Relation R1 bzw. UPDATE auf PS von<br />

R1. Unterschiedliche Folgeaktionen auf referenzierender Relation R2<br />

möglich, um referentielle Integrität zu wahren<br />

© Prof. E. Rahm 3 - 10<br />

FNR<br />

DBS 1<br />

DBS 1


Wartung der referentiellen Integrität (2)<br />

SQL-Standard erlaubt Spezifikation der referentiellen Aktionen<br />

für jeden Fremdschlüssel<br />

Sind Nullwerte verboten?<br />

– NOT NULL<br />

Löschregel für Zielrelation (referenzierte Relation R1):<br />

ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT }<br />

Änderungsregel für Ziel-Primärschlüssel (Primärschlüssel oder<br />

Schlüsselkandidat):<br />

ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT}<br />

Dabei bedeuten:<br />

– NO ACTION: Operation wird nur zugelassen, wenn keine zugehörigen Sätze<br />

(Fremdschlüsselwerte) vorhanden sind. Es sind folglich keine referentiellen Aktionen<br />

auszuführen<br />

– CASCADE: Operation „kaskadiert“ zu allen zugehörigen Sätzen<br />

– SET NULL: Fremdschlüssel wird in zugehörigen Sätzen zu “Null” gesetzt<br />

– SET DEFAULT: Fremdschlüssel wird auf einen benutzerdefinierten Default-Wert gesetzt<br />

© Prof. E. Rahm 3 - 11<br />

© Prof. E. Rahm 3 - 12<br />

Anwendungsbeispiel<br />

CREATE TABLE TEIL ( TNR INT PRIMARY KEY,<br />

BEZEICHNUNG . . . )<br />

CREATE TABLE LIEFERANT (LNR INT PRIMARY KEY,<br />

LNAME . . . )<br />

CREATE TABLE LIEFERUNG (TNR INT, LNR INT, DATUM ...<br />

PRIMARY KEY (TNR, LNR),<br />

FOREIGN KEY (TNR) REFERENCES TEIL, NOT NULL,<br />

ON DELETE OF TEIL NO ACTION<br />

ON UPDATE OF TEIL.TNR CASCADE,<br />

FOREIGN KEY (LNR) REFERENCES LIEFERANT, NOT NULL,<br />

ON DELETE OF LIEFERANT NO ACTION,<br />

ON UPDATE OF LIEFERANT.LNR CASCADE )<br />

TEIL LIEFERANT<br />

LIEFERUNG<br />

DBS 1<br />

DBS 1


Abbildung ERM -> RM<br />

Kriterien<br />

– Informationserhaltung<br />

– Minimierung der Redundanz<br />

– Minimierung <strong>des</strong> Verknüpfungsaufwan<strong>des</strong><br />

aber auch:<br />

– Natürlichkeit der Abbildung<br />

– keine Vermischung von Objekten<br />

– Verständlichkeit<br />

Regeln:<br />

– Jeder Entity-Typ muss als eigenständige Relation (Tabelle) mit einem eindeutigen<br />

Primärschlüssel definiert werden.<br />

– Relationship-Typen können als eigene Relationen definiert werden, wobei die Primärschlüssel<br />

der zugehörigen Entity-Typen als Fremdschlüssel zu verwenden sind.<br />

© Prof. E. Rahm 3 - 13<br />

© Prof. E. Rahm 3 - 14<br />

E1<br />

R<br />

Relation 1 Relation 2 ?<br />

Relation 3<br />

2 Entitymengen mit n:1 - Verknüpfung<br />

1 n<br />

ABT ABT-ZUGEH<br />

PERS<br />

[0,*] [0,1]<br />

1.) Verwendung von drei Relationen<br />

ABT (ANR, ANAME, ...)<br />

PERS (PNR, PNAME, ...)<br />

ABT-ZUGEH (PNR, ANR, )<br />

2.) Besser: Verwendung von zwei Relationen<br />

ABT (ANR, ANAME, ...)<br />

PERS (PNR, PNAME, ..., ANR)<br />

Regel: n:1-Beziehungen lassen sich ohne eigene Relation darstellen.<br />

– Hierzu wird in der Relation, der pro Tupel maximal 1 Tupel der anderen Relation<br />

zugeordnet ist, der Primärschlüssel der referenzierten Relation als Fremdschlüssel<br />

verwendet<br />

E2<br />

DBS 1<br />

DBS 1


1 Entitymenge mit 1:1 Verknüpfung<br />

1 Ehemann<br />

PERS EHE<br />

1 Ehefrau<br />

1.) Verwendung von zwei Relationen<br />

PERS (PNR, PNAME, ...)<br />

EHE ( PNR , GATTE, ...)<br />

2.) Verwendung von einer Relation<br />

PERS (PNR, PNAME, ..., GATTE)<br />

Unterscheidung zu n:1 ?<br />

© Prof. E. Rahm 3 - 15<br />

1 Entitymenge mit m:n-Verknüpfung<br />

Stückliste<br />

Darstellungsmöglichkeit im RM:<br />

TEIL Struktur<br />

Regel: Ein n:m-Relationship-Typ muss durch eine eigene Relation dargestellt<br />

werden. Die Primärschlüssel der zugehörigen Entitymengen treten als<br />

Fremdschlüssel auf.<br />

© Prof. E. Rahm 3 - 16<br />

n<br />

m<br />

TEIL (TNR, BEZ, MAT, BESTAND)<br />

STRUKTUR (OTNR, UTNR, ANZAHL)<br />

2<br />

G<br />

Gozinto-Graph<br />

B<br />

1<br />

A<br />

4 4<br />

D<br />

8<br />

5<br />

C<br />

2<br />

E<br />

Teil<br />

TNR BEZ MAT BESTAND<br />

A Getriebe -<br />

10<br />

B Gehäuse Alu 0<br />

C Welle Stahl 100<br />

D Schraube Stahl 200<br />

E Kugellager Stahl 50<br />

F Scheibe Blei 0<br />

G Schraube Chrom 100<br />

Struktur<br />

OTNR UTNR<br />

A B<br />

A C<br />

A D<br />

B D<br />

B G<br />

C D<br />

C E<br />

Anzahl<br />

1<br />

5<br />

8<br />

4<br />

2<br />

4<br />

2<br />

DBS 1<br />

DBS 1


3 Entitymengen mit m:n-Verknüpfung<br />

LIEFERANT (LNR, LNAME, LORT, ...)<br />

PROJEKT (PRONR, PRONAME,PORT, ...)<br />

TEIL (TNR, TBEZ, GEWICHT, ... )<br />

LIEFERUNG (<br />

© Prof. E. Rahm 3 - 17<br />

Entitymenge<br />

© Prof. E. Rahm 3 - 18<br />

Lieferant<br />

n<br />

m<br />

Teil Lieferung<br />

Projekt<br />

p<br />

Datum Anzahl<br />

Abbildung mehrwertiger Attribute<br />

bzw. schwacher Entitymengen<br />

PERS (PNR, NAME, {Lieblingsessen}, {Kinder (Vorname, Alter)})<br />

P1, Müller, {Schnitzel, Rollmops}, -<br />

P2, Schulz, {Pizza}, {(Nadine, 5), (Philip, 2)}<br />

Darstellungsmöglichkeit im RM<br />

PERS (PNR, NAME ...)<br />

DBS 1<br />

DBS 1


Abbildungen von Generalisierung und<br />

Aggregation im RM<br />

RM sieht keine Unterstützung der Abstraktionskonzepte vor<br />

– keine Maßnahmen zur Vererbung (von Struktur, Integritätsbedingungen, Operationen)<br />

– „Simulation“ der Generalisierung und Aggregation eingeschränkt möglich<br />

Generalisierungsbeispiel:<br />

UNI-ANGEH<br />

TECHNIKER<br />

Erfahrung: String<br />

ANGESTELLTE<br />

BAT: String<br />

© Prof. E. Rahm 3 - 19<br />

© Prof. E. Rahm 3 - 20<br />

ID: int<br />

Name: String<br />

WISS-MA<br />

Diplom: String<br />

Spezial-Gebiet: String<br />

Beamte<br />

Generalisierung – relationale Sicht<br />

pro Klasse 1 Tabelle<br />

Lösungsmöglichkeit 1: vertikale Partitionierung<br />

– jede Instanz wird entsprechend der Klassenattribute in der IS-A-Hierarchie zerlegt und in<br />

Teilen in den zugehörigen Klassen (Relationen) gespeichert.<br />

– nur das ID-Attribut wird dupliziert<br />

UNI-ANGEH ANGESTELLTE WISS-MA TECHNIKER<br />

ID Name ID BAT ID Diplom SPEZ-GEB ID Erfahrung<br />

007<br />

123<br />

333<br />

765<br />

111<br />

Garfield<br />

Donald<br />

Daisy<br />

Grouch<br />

Ernie<br />

007<br />

123<br />

333<br />

765<br />

Ib<br />

IVa<br />

VII<br />

IIa<br />

007<br />

765<br />

Informatik<br />

Mathe<br />

Eigenschaften<br />

– geringfügig erhöhte Speicherungskosten, aber hohe Aufsuch- und Aktualisierungkosten<br />

– Integritätsbedingungen: TECHNIKER.ID ⊆ ANGESTELLTE.ID, usw.<br />

– Instanzenzugriff erfordert implizite oder explizite Verbundoperationen<br />

– Beispiel: Finde alle TECHNIKER-Daten<br />

ERM<br />

OO<br />

123<br />

Sun<br />

DBS 1<br />

DBS 1


Generalisierung – relationale Sicht (2)<br />

Lösungsmöglichkeit 2: horizontale Partitionierung<br />

– jede Instanz ist genau einmal und vollständig in ihrer „Hausklasse“ gespeichert.<br />

– keinerlei Redundanz<br />

UNI-ANGEH<br />

ANGESTELLTE<br />

ID<br />

333<br />

ID<br />

111<br />

Name<br />

Ernie<br />

Name<br />

Daisy<br />

BAT<br />

VII<br />

WISS-MA<br />

Eigenschaften<br />

– niedrige Speicherungskosten und keine Änderungsanomalien<br />

– Eindeutigkeit von ID zwischen Relationen aufwendiger zu überwachen<br />

– Retrieval kann rekursives Suchen in Unterklassen erfordern.<br />

– explizite Rekonstruktion durch Relationenoperationen (π, ∪)<br />

=> Beispiel: Finde alle ANGESTELLTE<br />

© Prof. E. Rahm 3 - 21<br />

ID<br />

007<br />

765<br />

TECHNIKER<br />

Diplom<br />

Informatik<br />

Mathe<br />

ID<br />

123<br />

SPEZ-GEB<br />

ERM<br />

OO<br />

Name<br />

Garfield<br />

Grouch<br />

BAT<br />

Ib<br />

IIa<br />

Erfahrung Name BAT<br />

SUN Donald IVa<br />

Generalisierung – relationale Sicht (3)<br />

Lösungsmöglichkeit 3: volle Redundanz<br />

– eine Instanz wird wiederholt in jeder Klasse, zu der sie gehört, gespeichert.<br />

– sie besitzt dabei die Werte der Attribute, die sie geerbt hat, zusammen mit den Werten der<br />

Attribute der Klasse<br />

UNI-ANGEH ANGESTELLTE WISS-MA<br />

ID<br />

007<br />

123<br />

333<br />

765<br />

111<br />

Name<br />

Garfield<br />

Donald<br />

Daisy<br />

Grouch<br />

Ernie<br />

ID<br />

007<br />

123<br />

333<br />

765<br />

Name<br />

Garfield<br />

Donald<br />

Daisy<br />

Grouch<br />

BAT<br />

IVa<br />

VII<br />

IIa<br />

Eigenschaften<br />

– hoher Speicherplatzbedarf und Auftreten von Änderungsanomalien.<br />

– einfaches Retrieval, da nur die Zielklasse (z. B. ANGESTELLTE) aufgesucht werden muss<br />

© Prof. E. Rahm 3 - 22<br />

Ib<br />

ID<br />

007<br />

765<br />

Name<br />

Garfield<br />

Grouch<br />

TECHNIKER<br />

ID<br />

123<br />

Name<br />

Donald<br />

BAT<br />

Ib<br />

IIa<br />

BAT<br />

IVa<br />

Diplom<br />

Informatik<br />

Mathe<br />

Erfahrung<br />

Sun<br />

SPEZ-GEB<br />

ERM<br />

OO<br />

DBS 1<br />

DBS 1


Generalisierung: Verfahrensvergleich<br />

Änderungen<br />

Lesen<br />

© Prof. E. Rahm 3 - 23<br />

Universität<br />

ID<br />

UL<br />

TUD<br />

Fakultät<br />

FID<br />

123<br />

132<br />

UNIVERSITÄT<br />

Name: String<br />

Gründung: int<br />

#Fak: int<br />

Name<br />

Univ. Leipzig<br />

TU Dresden<br />

Uni<br />

UL<br />

UL<br />

Vertikale<br />

Partitionierung<br />

© Prof. E. Rahm 3 - 24<br />

Horizontale<br />

Partitionierung<br />

Aggregation – relationale Sicht<br />

Name<br />

Theologie<br />

1<br />

Gründung<br />

1409<br />

1828<br />

Mathe/Informatik<br />

1<br />

Fakultät<br />

Name: String<br />

#Profs: int<br />

Rechenzentrum<br />

Leiter: String<br />

#PC: int<br />

#Fak<br />

14<br />

14<br />

#Profs<br />

14<br />

28<br />

Institut<br />

Volle Redundanz<br />

Institut<br />

Komplexe Objekte erfordern Zerlegung über mehrere Tabellen<br />

ID<br />

1234<br />

1235<br />

1236<br />

1322<br />

FID<br />

123<br />

123<br />

123<br />

132<br />

Name<br />

Neutestamentliche<br />

Wissenschaft<br />

Alttestamentliche<br />

Wissenschaft<br />

Praktische Theologie<br />

Informatik<br />

DBS 1<br />

DBS 1


Sprachen für das Relationenmodell<br />

Datenmodell = Datenobjekte + Operatoren<br />

im RM wird vereinheitlichte Sprache angestrebt für:<br />

– Anfragen (Queries) im ’Stand-Alone’-Modus<br />

– Datenmanipulation und Anfragen eingebettet in eine Wirtssprache<br />

– Datendefinition<br />

– Zugriffs- und Integritätskontrolle<br />

– Unterstützung verschiedener Benutzerklassen:<br />

Anwendungsprogrammierer, DBA, gelegentliche Benutzer<br />

Verschiedene Grundtypen von Sprachen<br />

– Formale Ansätze: Relationenalgebra und Relationenkalkül<br />

– Abbildungsorientierte Sprachen (z. B. SQL)<br />

– Graphik-orientierte Sprachen (z. B. Query-by-Example)<br />

© Prof. E. Rahm 3 - 25<br />

© Prof. E. Rahm 3 - 26<br />

Relationenalgebra<br />

Algebra: ein System, das aus einer nichtleeren Menge und einer<br />

Familie von Operationen besteht<br />

– Relationen sind Mengen<br />

– Operationen auf Relationen arbeiten auf einer oder mehreren Relationen als Eingabe und<br />

erzeugen eine Relation als Ausgabe (Abgeschlossenheitseigenschaft)<br />

=> mengenorientierte Operationen<br />

Operationen:<br />

Klassische Mengenoperationen:<br />

- Vereinigung<br />

- Differenz<br />

- kartesisches Produkt<br />

- Durchschnitt (ableitbar)<br />

Relationenoperationen:<br />

- Restriktion (Selektion)<br />

- Projektion<br />

- Verbund (Join) (ableitbar)<br />

- Division (ableitbar)<br />

DBS 1<br />

DBS 1


© Prof. E. Rahm 3 - 27<br />

Selektion (Restriktion)<br />

Auswahl von Zeilen einer Relation über Prädikate, abgekürzt σ P<br />

P = log. Formel (ohne Quantoren !) zusammengestellt aus:<br />

– Operanden: Attributnamen oder Konstanten<br />

– Vergleichsoperatoren θ ∈ {< , = , > , ≤ , ≠, ≥ }<br />

– logische Operatoren: ∨ , ∧ , ¬<br />

Beispiele:<br />

σ GEHALT < PROVISION (PERS)<br />

σ BERUF=’Programmierer’ ∧ ALTER < 50 (PERS)<br />

Eigenschaften<br />

– grad (σ P(R)) = grad (R)<br />

– card (σ P(R)) = k)<br />

π A1, A2, . . . , Ak (R) = { p | ∃ t ∈ R : p = < t [ A 1 ] , . . . , t [ A k ] >}<br />

Beispiel:<br />

π NAME, GEHALT (PERS)<br />

Eigenschaften:<br />

– Wichtig: Duplikate werden entfernt ! (Mengeneigenschaft)<br />

– grad (π A (R))


ANR<br />

K51<br />

K53<br />

K55<br />

ABT<br />

Relationenalgebra: Beispiel-DB<br />

ANAME<br />

Planung<br />

Einkauf<br />

Vertrieb<br />

ORT<br />

Leipzig<br />

Frankfurt<br />

Frankfurt<br />

Finde alle Angestellten aus Abteilung K55, die mehr als 40.000 verdienen<br />

Finde alle Abteilungsorte<br />

PNR<br />

406<br />

123<br />

829<br />

574<br />

PERS<br />

Finde den Abteilungsnamen von Abteilung K53<br />

Finde alle Angestellten (PNR, ALTER, ANAME), die in einer Abteilung in<br />

Frankfurt arbeiten und älter als 30 sind.<br />

© Prof. E. Rahm 3 - 29<br />

Name<br />

Abel<br />

Schulz<br />

Müller<br />

Schmid<br />

Alter<br />

47<br />

32<br />

36<br />

28<br />

Gehalt<br />

50700<br />

43500<br />

40200<br />

36000<br />

ANR<br />

K55<br />

K51<br />

K53<br />

K55<br />

MNR<br />

Klassische Mengenoperationen<br />

Voraussetzung: Vereinigungsverträglichkeit der beteiligten<br />

Relationen:<br />

Gleicher Grad - Gleiche Bereiche: => W(A i ) = W(B i ) : i = 1, n<br />

(A 1 , A 2 , ... A n ) (B 1 , B 2 , ..., B n )<br />

D D i j ...<br />

Dk Vereinigung: R ∪ S = { t | t ∈ R ∨ t ∈ S }<br />

– card (R ∪ S)


(Erweitertes) Kartesisches Produkt<br />

R (Grad r) und S (Grad s) beliebig<br />

R × S = { k | ∃ × ∈ R, y ∈ S : k = x | y }<br />

Beachte: k = x | y = < x 1 , . . . , x r , y 1 , . . . , y s ><br />

nicht wie übliches kart. Produkt<br />

– grad (R × S) = grad (R) + grad (S); card (R × S) = card (R) ∗ card (S)<br />

Beispiel<br />

R S<br />

A<br />

a<br />

d<br />

b<br />

B<br />

γ<br />

α<br />

β<br />

C<br />

1<br />

2<br />

3<br />

© Prof. E. Rahm 3 - 31<br />

D<br />

b<br />

d<br />

E F<br />

γ<br />

α<br />

3<br />

2<br />

R × S<br />

© Prof. E. Rahm 3 - 32<br />

Verbund (Join, Θ-Join)<br />

grob:<br />

– Kartesisches Produkt zwischen zwei Relationen R (Grad r) und S (Grad s).<br />

– eingeschränkt durch Θ -Bedingungen zwischen Attribut A von R und Attribut B von S.<br />

Θ-Verbund zwischen R und S:<br />

R S σ<br />

AΘB<br />

( R× S)<br />

=<br />

AΘB<br />

mit arithm. Vergleichsoperator Θ∈{, ≤, ≠, ≥}<br />

Bemerkungen:<br />

– Gleichverbund (Equijoin): Θ = ’=’ :<br />

– Ein Gleichverbund zwischen R und S heißt verlustfrei, wenn alle Tupel von R und S<br />

am Verbund teilnehmen. Die inverse Operation Projektion erzeugt dann wieder R<br />

und S (lossless join).<br />

DBS 1<br />

DBS 1


Natürlicher Verbund (Natural Join)<br />

grob: Gleichverbund über alle gleichen Attribute und Projektion<br />

über die verschiedenen Attribute<br />

Natürlicher Verbund zwischen R und S:<br />

gegeben: R (A 1 , A 2 , . . . , A r-j+1 , . . . , A r ), S (B 1 , B 2 , . . ., B j , . . . , B s )<br />

o.B.d.A.:(sonst. Umsortierung: B 1 = A r-j+1<br />

B 2 = A r-j+2<br />

...<br />

B j = A r<br />

R S = πA1,…, A<br />

r<br />

, B<br />

j+1<br />

,…, B σ<br />

s<br />

( R.A<br />

r-j + 1<br />

= S.B )<br />

1<br />

( R.A<br />

r<br />

= S.B<br />

j<br />

)<br />

Zeichen für Natural Join ⇒ Θ = ’=’<br />

Bemerkung: Attribute sind durch Übereinstimmungsbedingung<br />

gegeben<br />

© Prof. E. Rahm 3 - 33<br />

∧...∧ (R × S)<br />

Äußerer Verbund (Outer Join)<br />

Ziel: Verlustfreier Verbund soll erzwungen werden<br />

Bisher: R S T liefert nur „vollständige Objekte“<br />

– Es sollen aber auch Teilobjekte als Ergebnis geliefert werden (z. B. komplexe Objekte)<br />

R<br />

S<br />

– Trick: Einfügen einer speziellen Leerzeile zur künstlichen Erzeugung von Verbundpartnern<br />

Def.: Seien A die Verbundattribute, {≡} der undefinierte Wert und<br />

R’ := R ∪ ((π A(S) - π A(R)) × {≡} × ... × {≡})<br />

S’ := S ∪ ((π A(R) - π A(S)) × {≡} × ... × {≡})<br />

Äußerer Gleichverbund<br />

R S :=<br />

R.A = S.A<br />

R’ S’<br />

R’.A = S’.A<br />

© Prof. E. Rahm 3 - 34<br />

Äußerer natürlicher Verbund<br />

R S := R’ S’<br />

DBS 1<br />

DBS 1


Outer Join (2)<br />

Linker äußerer Gleichverbund<br />

– Bei bei dieser Operation bleibt die linke Argumentrelation verlustfrei, d.h. bei Bedarf wird ein<br />

Tupel durch Nullwerte “nach rechts” aufgefüllt.<br />

Rechter äußerer Gleichverbund<br />

– Dabei bleibt analog die rechte Argumentrelation verlustfrei; fehlende Partnertupel werden<br />

durch Auffüllen mit Nullwerten “nach links” ergänzt<br />

Verallgemeinerung auf 2 (oder mehr) Joins<br />

– Äußerer Gleichverbund liefert die maximale Information bezüglich einer Folge von Joins,<br />

z.B. R S T Selbst isolierte Tupel werden zu einem Pfad expandiert.<br />

– Gleichverbund mit R S T bringt das Minimum an Information;<br />

nur vollständig definierte Pfade werden ins Ergebnis übernommen.<br />

– Mit dem linken (rechten) äußeren Gleichverbund werden nur Pfade zurückgeliefert, die am<br />

“linken (rechten) Rand” definiert sind.<br />

© Prof. E. Rahm 3 - 35<br />

PERS<br />

PNR<br />

ABT<br />

P1<br />

P2<br />

P3<br />

P4<br />

P5<br />

ANR<br />

A1<br />

A2<br />

A3<br />

Linker äußerer Gleichverbund:<br />

Rechter äußerer Gleichverbund:<br />

ANR ...<br />

A1<br />

A1<br />

A2<br />

-<br />

-<br />

ANAME ...<br />

A<br />

B<br />

C<br />

© Prof. E. Rahm 3 - 36<br />

R S :=<br />

R.A = S.A<br />

R S :=<br />

R.A = S.A<br />

Outer Join - Beispiel<br />

[0,1]<br />

[0,*]<br />

PERS ABT<br />

PERS ABT<br />

PNR<br />

PERS ABT<br />

PNR<br />

ANR<br />

ANR<br />

ANAME ...<br />

ANAME ...<br />

PERS ABT<br />

PERS ABT<br />

PNR<br />

PNR<br />

R S’<br />

R.A=S’.A<br />

R’<br />

S<br />

R’.A = S.A<br />

ANR<br />

ANR<br />

ANAME ...<br />

ANAME ...<br />

DBS 1<br />

DBS 1


© Prof. E. Rahm 3 - 37<br />

Division<br />

Beantwortung von Fragen, bei denen eine „ganze Relation“ zur<br />

Qualifikation herangezogen wird<br />

Simulation <strong>des</strong> Allquantors => ein Tupel aus R steht mit allen<br />

Tupeln aus S in einer bestimmten Beziehung<br />

Definition<br />

Voraussetzung: S-Attribute ⊂ R-Attribute<br />

Sei R vom Grad r und S vom Grad s, r > s<br />

t sei (r-s)-Tupel, u sei s-Tupel;<br />

Dann gilt: R ÷ S = { t | ∀ u ∈ S : t u ∈ R }<br />

Beispiel<br />

LNR<br />

L1<br />

L1<br />

L2<br />

L2<br />

L2<br />

LPT<br />

PNR<br />

P1<br />

P2<br />

P1<br />

P1<br />

P2<br />

TNR<br />

T1<br />

T1<br />

T1<br />

T2<br />

T1<br />

– Welche Lieferanten beliefern alle Projekte?<br />

© Prof. E. Rahm 3 - 38<br />

Division (2)<br />

÷<br />

– Welche Lieferanten liefern alle Teile?<br />

PNR<br />

P1<br />

P1<br />

P2<br />

TNR<br />

Zusammenhang zwischen Division und kartesischem Produkt:<br />

( R × S ) ÷ S = R<br />

PT<br />

T1<br />

T2<br />

T1<br />

DBS 1<br />

DBS 1


DRAMA<br />

1<br />

n<br />

ROLLE<br />

n<br />

Darsteller<br />

m<br />

SCHAU-<br />

SPIELER<br />

© Prof. E. Rahm 3 - 39<br />

Beispiel-DB: Bühne<br />

SCHAUSPIELER<br />

PNR W-ORT NAME<br />

© Prof. E. Rahm 3 - 40<br />

DRAMA<br />

TITEL U-ORT U-JAHR AUTOR<br />

Beispielanfragen<br />

ROLLE<br />

FIGUR TITEL R-Typ<br />

DARSTELLER<br />

PNR FIGUR A-JAHR A-ORT THEATER<br />

Welche Darsteller (PNR) haben im Schauspielhaus gespielt?<br />

Finde alle Schauspieler (NAME, W-ORT), die einmal im ’Faust’ mitgespielt<br />

haben.<br />

Finde alle Schauspieler (NAME), die bei in Weimar uraufgeführten Dramen<br />

an ihrem Wohnort als ’Held’ mitgespielt haben<br />

Finde die Schauspieler (PNR), die nie gespielt haben<br />

Finde alle Schauspieler (NAME), die alle Rollen gespielt haben.<br />

DBS 1<br />

DBS 1


Zusammenfassung Relationenalgebra<br />

saubere mathematische Definition<br />

mengenorientierte Opertationen<br />

keine Änderungsoperationen!<br />

für Laien nicht leicht verständlich<br />

Restriktion Projektion<br />

a<br />

1<br />

a<br />

2<br />

a<br />

3<br />

b<br />

1<br />

b<br />

1<br />

b<br />

2<br />

(Nat.) Verbund (Join)<br />

b<br />

1<br />

b<br />

2<br />

b<br />

3<br />

c<br />

1<br />

c<br />

2<br />

c<br />

3<br />

© Prof. E. Rahm 3 - 41<br />

a<br />

1<br />

a<br />

2<br />

a<br />

3<br />

b<br />

1<br />

b<br />

1<br />

b<br />

2<br />

c<br />

1<br />

c<br />

1<br />

c<br />

2<br />

a<br />

b<br />

c<br />

Produkt<br />

x<br />

y<br />

a<br />

a<br />

b<br />

b<br />

c<br />

c<br />

Vereinigung<br />

Durchschnitt<br />

Differenz<br />

x<br />

y<br />

x<br />

y<br />

x<br />

y<br />

a<br />

a<br />

a<br />

b<br />

c<br />

x<br />

y<br />

z<br />

x<br />

y<br />

Division<br />

x<br />

z<br />

a<br />

DBS 1

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!