hauptseminar: relationales modell, normalisierungstheorie

Werbung
HAUPTSEMINAR:
RELATIONALES MODELL, NORMALISIERUNGSTHEORIE
WINTERSEMESTER 2001/2002
BETREUER :
VERFASSER:
WOLFGANG WOHNER
ABDELKARIM HARBAOUI
VORTRAGSTERMIN: 06.11.2001
- Dr. Edgar F. Codd (Turing Award 1981) -
1
INHALTSVERZEICHNIS
1. Einleitung.................................................................................................................3
1.1.
History................................................................................................................3
1.2.
Dr. Edgar F. Codd .....................................................................................3
1.3.
Motivation für den Einsatz eines DBMS ....................................4
1.3.1.
1.3.2.
1.3.3.
Redundanz und Inkonsistenz ......................................................................4
Probleme des Mehrbenutzerbetriebs .........................................................4
Verlust von Daten ..........................................................................................4
2. Das relationale Modell und die Normalform....................4
2.1. Definition des relationalen Modells.....................................................5
2.1.1. Mathematischer Formalismus .........................................................................5
2.1.2. Schema und Ausprägung einer Relation ......................................................6
2.2. Normalform (nach Codd) ...........................................................................8
2.2.1. Die Prozedur ........................................................................................................9
2.2.2. Funktionale Abhängigkeit .........................................................................10
2.2.3. Normalisierung heute ......................................................................................11
2.3.
Sprachliche Aspekte..............................................................................11
3.1. Operatoren der Relationenalgebra ...................................................12
3.1.1. Permutation ........................................................................................................13
3.1.2. Projektion ...........................................................................................................14
3.1.3. Der relationale Verbund (Join) .....................................................................14
3.1.4. Andere Verbunde .............................................................................................15
3.1.5. Link (Tie) ...........................................................................................................16
3.1.6. Komposition ......................................................................................................16
3.1.6. Restriktion ..........................................................................................................18
3.2. Redundanz.........................................................................................................19
3.2.1. Starke Redundanz ...........................................................................................19
3.2.2. Schwache Redundanz ....................................................................................20
3.3. Konsistenz..........................................................................................................20
4. Zusammenfassung .....................................................................................20
5. Literatur ...................................................................................................................21
2
1. Einleitung
Die Datenbank ist eine Bezeichnung für gespeicherten Daten. Sie enthält
Informationseinheiten, die zur Kontrolle und Steuerung eines Aufgabenbereichs
notwendig sind.
Für den Zugriff auf die Datenbasis, zur Kontrolle der Konsistenz und zur Modifikation
der Daten sind klare Konzepte notwendig. Diese Programme nennt man
Datenbankverwaltungssysteme.
1.1. History
Datenbanksysteme, die nach dem hierarchischen Datenbankmodell entwickelt
wurden, waren in den 60er Jahren weit verbreitet [Chen, 1976]. Der Benutzer musste
die Speicherstruktur jedoch selbst verwalten. Außerdem war die Manipulation
größerer Mengen von Daten sehr aufwendig.
Aufgrund dieser und weiterer Mängel entwickelte Dr. Edgar F. Codd (1970 ) das
relationale Modell.
Die Anforderungen an ein Datenbanksystem hatten sich verändert - ein neues
Datenbankkonzept wurde benötigt. Da komplexe Objekte, wie sie in Designsystemen (z.B. CAD) häufig vorhanden sind, unter relationalen Datenbanksystemen
nur mit hohem Aufwand realisiert werden können, wurde mit Hilfe des
objektorientierten Datenbankmodells Ende der 80er Jahre unsere Datenbankwelt
erweitert.
Systeme wie MS Access und Oracle, die auf dem relationalen Datenbankmodell
aufbauen, sind noch bis heute am weitesten verbreitet, da dieses Modell eine gute
Basis zur Kontrolle der Redundanz, Konsistenz und für die Ableitbarkeit von
Relationen besitzt (wird später in Punkt 3.2. erklärt).
1.2. Dr. Edgar F. Codd
Er wurde 1923 in Portland, UK geboren und erwarb seinen Titel als Ph.D an der
Universität von Michigan. Die in seiner Zeit zum Archivieren und Verwalten von
Daten entwickelten Systeme wiesen viele Schwachstellen auf und führten meistens
zu Fehlern. So galt sein erstes Papier „A relational model of data for large shared
data banks“ (Communications of the ACM, Juni 1970) über das relationale Modell
dem Versuch, ein besseres System zu entwickeln. Dort legt der Erfinder und
Mitentwickler des relationalen Modells die Gundlagen der Relationenalgebra sowie
die erste, zweite und dritte Normalform ([k,E 2001] Seite 174) dar. Auch die BCNormalform und der relationale Tupelkalkül wurden von Codd erfunden und
anschließend nachgereicht ([Rustin 1972] R. Rustin, Data Base Systems, PrenticeHall, Englewood Cliffs, NJ (1972)).
Für diese Arbeiten und seine zahlreichen weiteren Veröffentlichungen hat Codd 1981
den Turing-Preis, die höchste Auszeichnung für Informatiker, erhalten.
3
1.3. Motivation für den Einsatz eines DBMS
Der Einsatz
eines Datenbankverwaltungssystemes ist die beste Alternative,
voneinander abhängige Daten effizient zu modellieren und effektiv zu verwalten.
Ohne ein solches System, indem man z.B. Informationen in isolierten Dateien
speichert, ergeben sich gravierende Probleme, die im Folgenden dargestellt werden:
1.3.1.
Redundanz und Inkonsistenz
Redundanz bedeutet das mehrfache Speichern einer einzelnen Information.
Falls viele Kopien einer Information nötig sind, kommt es vor, dass Änderungen nicht
in allen Kopien realisiert werden, d.h. Inkonsistenz.
Beispiel (ohne DBMS): Wenn ein Angestellter zum Abteilungsleiter befördert wird
und bei der Registrierung in der Abteilungsleiterliste der alte Eintrag als normale
Angestellter nicht gelöscht wird (d.h. die Daten dieser Mitatbeiter sind dopplt
gespeichert), entstehen redundante Daten. Redundanz verursacht meistens die
Inkonsistenz, also wenn z.B. als erstes der Alte Eintrag geändert wird und die neue
Eintragung nicht, spricht man von Inkonsistenz.
1.3.2.
Probleme des Mehrbenutzerbetriebs
Wird eine Datei von zwei oder mehreren Personen bearbeitet, kann es passieren,
dass die Änderungen des einen Benutzers von dem anderen, der die Datei zuletzt
zurücklegt, überschrieben werden. Das nennt man „Lost Update“. Ein DBMS
verhindert so ein Problem.
1.3.3.
Verlust von Daten
Ohne ein DBMS ist die Wiederherstellung eines konsistenten Zustands der
Gesamtdateneinheit im Fehlerfall sehr schwierig oder sogar unmöglich. Geht die
Datenbank von einem Zustand zum nächsten über, verhindert das DBMS Fehler
während der Transaktion. Im Fehlerfall kann das System den vorherigen Zustand
wiederherstellen.
Nachdem die wichtigsten Probleme, die im Allgemeinen beim Erstellen eines
Datenbanksystems zu untersuchen sind, aufgelistet wurden, sollen nun die Inhalte
des ersten Papiers Codds „A relational model of data for large shared data banks“
diskutiert werden.
2. Das relationale Modell und die Normalform
Im Gegensatz zu den bis zu den 70er Jahren vorherrschenden satzorientierten
Datenmodellen (das Netzwerkmodell und das hierarchische Modell), besteht die
Besonderheit dieses Datenmodells in der mengenorientierten Verarbeitung der
Informationen. Das relationale Modell ist im Vergleich zu den satzorientierten
Modellen sehr einfach strukturiert. Eine Relation ist eine flache Tabelle, in welcher
die Zeilen den Datenobjekten entsprechen. Diese Einfachheit zählt zu den Vorteilen
dieses Modells. Das relationale Modell bietet eine maximale Unabhängigkeit der
4
Daten, d.h. Änderungen in der physischen (oder logischen) Ebene – wie das
nachträgliche Anlegen eines Indexes - dürfen nicht die Sichten- bzw. BenutzerEbene beeinflussen, außer effizienzmäßig.
•
•
•
In der physischen Ebene werden die Speicherstrukturen festgelegt.
In der logischen Ebene wird in dem Datenbankschema (wird noch im Punkt
2.1.2 erklärt) festgelegt, welche Daten gespeichert sind.
Während das Datenbankschema der logischen Ebene die gesamte
Informationsmenge darstellt, werden in der sichten Ebene nur Teilmengen der
Daten bereitgestellt.
Sichten Ebene
Logische Ebene
2.1. Definition des relationalen Modells
Eine Relation ist eine Menge von Tupeln (Zeilen), wie oben bereits erwähnt. Man
kann die Relation als Tabelle illustrieren, wobei in die Zeilen die Datensätze (Tupel)
eingetragen werden. Die Spalten enthalten die aktiven Domänenwerten bzw.
Attributelemente (dies wird im Folgenden noch genauer erklärt).
2.1.1. Mathematischer Formalismus
Domänen (Bereiche von Aktivitäten, Beschreibungen eines physischen oder
logischen Gegenstandes oder Interessen, die kontrollierbar sind) sind
Wertebereiche, die nicht notwendigerweise unterschiedlich sein müssen: D1, D2, D3
..., Dn; und Di = Dj ist zugelassen für i ≠ j mit {n, i, j} ∈ IN. Der Inhalt dieser Domänen
kann nicht strukturiert werden und hat nur atomare Werte (die erste Normalform).
Mögliche Domänen sind z.B. Zahlen, Zeichenketten etc. Eine Relation ist eine
Teilmenge des kartesischen Produkts der n Domänen:
R ⊆ D1Χ ..... ΧDn
5
2.1.2. Schema und Ausprägung einer Relation
Hier muss man zwischen dem Schema einer Relation, das durch die n Domänen
gegeben ist, und der aktuellen Ausprägung (Instanz), die durch die Relation
dargestellt wird, unterscheiden. Ein Element der Menge R wird als Tupel bezeichnet;
seine Stelligkeit ergibt sich aus dem Relationenschema. In diesem abstrakten
Beispiel ist die Stelligkeit n. Im Folgenden soll nun der Unterschied deutlich gemacht
werden.
Beispiel: Supply ⊆ String Χ String Χ integer Χ String
In diesem Schema ist der Name des Suppliers durch den ersten String-Wert
repräsentiert, Part durch den zweiten, der Integer-Wert steht für den Project und das
Attribut Quantity wird durch den letzten String-Wert dargestellt . Supply ist eine 4stellige Relation.
Schema: Supply: = {Supplier, Part, Project, Quantity t}
Ausprägung: Hier wird die Relation als Tabelle bezeichnet, weil man sich die
Ausprägung einer Relation wie folgt als flache Tabelle veranschaulichen kann.
Supplier
………
Part
……………
Supply
Project
……………
Quantity
………………..
Abb. 1. Eine Ausprägung der Relation Supply
Sei R eine n-stellige Relation, R = { A1, A2, ......, An }. R hat die folgenden
Eigenschaften:
(1) Jede Zeile ist ein n-Tupel von R.
(2) Die Ordnung der Zeilen ist irrelevant. Das erklärt die Mengenorientierung des
relationalen Modells.
(3) Die Zeilen sind deutlich verschieden, d.h. Keine Tupelduplikaten sind zulässig.
(4) Die Ordnung der Spalten ist signifikant (außer wenn die Domänennamen
verschieden sind).
(5) Jede Spalte bekommt den Namen der korrespondierenden Domäne.
Das Beispiel in Abb. 2 illustriert die 4-stellige Relation Supply. In dieser beschreibt
man folgendes: Welcher Teil (Part) wird geliefert, welcher Lieferant (Supplier) liefert
den Teil, zu welchem Projekt (Project) gehört der Teil sowie die Zahl der gelieferten
Teile (Quantity).
6
Supplier
1
1
2
2
4
Part
2
3
3
7
1
Supply
Project
5
5
7
5
1
Quantity
17
23
9
4
12
Abb. 2. Relation mit Grad 4
Im Abb. 3 stellt man eine 3-stellige Relation dar, um die Bedeutsamkeit der Ordnung
der Spalten zu zeigen.
Part
1
2
3
2
3
4
6
Component
Part
5
5
5
6
6
7
7
Quantity
9
7
2
12
3
1
1
Abb. 3. Relation mit zwei gleichen Domänen
Die Relation component: = {part, part, quantity} ≡ {x, y, z} hat zwei identische
Attribute bzw. Domänennamen, wobei das erste Attribut eine Teilmenge von dem
zweiten (x ⊂ y) ist. z steht für die Zahl der x-Teile, die man benöigt, um ein y-Einheit
zu bauen. X und y unterscheiden sich semantisch , also eine andere Permutation der
Attribute liefert eine neue Ausprägung, die nicht die gleiche Information wie
component hat.
Um so ein Problem zu vermeiden, muss man die gleichbenannten Attribute z.B.
entsprechend ihrer Funktionen benennen, im Beispiel: x → sub.part und y →
super.part. Der Punkt ist nur ein Namensbestandteil, und darf nicht mit dem
Komponentoperator - z.B. in SQL - verwechselt werden.
Die Informationen in einer Datenbank sind eine Menge von Relationen, die i. a.
verschiedene Stelligkeiten (degrees) haben. Eine n-stellige Relation ist
zeitvariierend, d.h. man kann in jeder Zeit neue n-Tupel einfügen, existierende Zeilen
löschen oder Komponenten aller möglichen n-Tupel ändern.
Eine der Möglichkeiten,wie man das relational Modell für eine Datenbank errichten
kann, ist die Normalform. Für diesen Zweck müssen jedoch erst einige Konzepte
(active domain, primary key, foreign key, and nonsimple domain) definiert werden.
Hier wird nicht zwischen Gegenständen und Beziehungen unterschieden.
7
a) Aktive Domäne (Active domain)
In der Relation part: = {pNumber, pName, pColor, pWeight, quantityOnHand,
quantityInOrder} ist jedes Attribut bzw. jede Domäne eine Menge von Werten.
Während es vorstellbar ist, dass z.B. alle möglichen Farben eines Teils in mancher
Ausprägung dargestellt werden, ist es unwahrscheinlich, dass die restlichen
Domänen-Werte auch alle in einer Instanz vorzukommen (Unterschied zwischen
endlichen und unendlichen Mengen). Die Menge der Werte, die zu einem
bestimmten Zeitpunkt in der Tablle repräsentiert sind, nennt man „active domain“.
b) Primärschlüssel (Primary key)
Ein primary key ist eine nicht redundante Domäne (oder eine Domänenmenge) einer
Relation, deren Werte den Inhalt der Tabelle (Tupel) eindeutig identifizieren können.
Im Beispiel part ist der Primärschlüssel pNumber. Gibt es mehrere nicht redundante
Kandidatenschlüssel, dann kann man ohne Einschränkung einen als Primärschlüssel
davon auswählen.
c) Fremdschlüssel (Foreign key)
Ein Attribut (oder Attributmenge) ist ein Fremdschlüssel in einer Relation R, wenn er
kein Primärschlüssel ist und weist auf einen Primärschlüssel in einer anderen
Relation S hin (R und S können identisch sein). Das kommt vor, wenn es sich um
eine Beziehung darstellende Tabelle handelt oder wenn die Relation durch
Kreuzprodukt oder Verbund (siehe Punkt 3.1.3.) von anderen Relationen entstanden
ist. In der Relation supply ist die Kombination {supplier, part, project} ein
Primärschlüssel, während jedes dieser drei Attribute ein Fremdschlüssel ist.
d) Nichteinfache Domäne (Nonsimple domain)
Als solche bezeichnet man strukturierbare Domänen. Eine Domäne ist nicht einfach,
wenn sie wiederum eine Relation darstellt. In der Relation employee in Abb. 4 ist
jobhistory eine Relation, mit jobdate, title und salaryhistorie als Attribute. Jobhistory
ist ein nicht elementarer Wertebereich, dies nennt man nonsimple domain.
2.2. Normalform (nach Codd)
Wenn eine Relation eine oder mehrere nicht atomare Domänen beinhaltet, kann sie
nicht als eine flache Tabelle veranschaulicht werden, d.h. man kann sie nicht zwei–
dimensional mit homogenen Spalten darstellen. Normalisierung ist die Bezeichnung
der Prozedur, mit welcher man alle nonsimple domains eliminieren kann, so dass die
Relationen die Normalform annehmen.
Im Abb. 4(a) sind Relationen mit nicht einfachen Domänen dargestellt. Jobhistory
und children sind nonsimple domains der Relation employee. Salaryhistory ist ein
strukturiertes Attribut der Relation jobhistory.
Die Merkmale einer nicht normalisierten Kollektion von Relationen sind:
(1) Der Graph von nonsimple domains, die in Beziehung stehen, ist eine
Kollektion von Bäumen.
8
(2) Der Primärschlüssel besteht aus einer oder mehreren elementaren Domänen.
Employee
Jobhistory
Salary history
Children
Employee: = {man#, name, birthdate, jobhistory, children}
Jobhistory: = {jobdate, title, salaryhistory}
Salaryhistory: = {salarydate, salary}
Children: = {childname, birthyear}
Abb. 4 (a) nicht in normal Form Relationen
2.2.1. Die Prozedur
Sowohl im Abb. 4(a) als auch im Abb. 4(b) sind Primärschlüssel unterstrichen und
kursiv geschrieben. Im Abb 4(b) ist die Kollektion der Relationen durch die folgenden
Schritte in Normalform erzwungen worden.
(1) Der Primärschlüssel der Wurzel-Relation wird in jeden der Knoten-Relationen
eingefügt. Im Beispiel employee ist man# gemeint.
(2) Der Primärschlüssel einer Kind-Relation ist zum einen Teil aus dem alten
eigenen Primärschlüssel zusammengesetzt und zum anderen Teil aus dem
von der Vater-Relation übernommenen. In der Relation Jobhistory’ ist der
neue Primärschlüssel „man#, jobdate“.
(3) Alle nicht einfachen Domänen in der Vater-Relation eliminieren, wie jobhistory
und children in Employee.
(4) Die Wurzel-Relation merken und diese Operationen beim rechten und linken
Teilbaum wiederholen.
9
Durch die Anwendung dieser Prozedur erhält man folgende Relationen:
Employee’: = {man#, name, birthdate}
Jobhistory’: = {man#, jobdate, title}
Salaryhistory’: = {man#, jobdate, salarydate, salary}
Children’: = {man#, childname, birthyear}
Abb. 4 (b) in normal Form Relationen
2.2.2. Funktionale Abhängigkeit
Die funktionale Abhängigkeiten sind Grundlagen der Entwurfs- und
Modellierungstechnik eines Datenbanksystems. Im ersten Papier [Codd 1970] ist
dieses Thema nicht behandelt worden sondern erst ab [Codd 1972]. Das hier
Erklärte wird danach für die detaillierte Definition der Normalform benötigt.
a. Definition
Sei R eine Menge von Attributen, R= {a1, a2, ....., an} , so dass (a1, a2, ....., an) aus
dem Domänenvektorprodukt (D1xD2x.....xDn), Di = Dj ist für i ≠ j zugelassen, d.h.
verschiedene Attribute dürfen gleiche Domänen haben. Ist a1 funktional abhängig von
a2, dann existiert eine Funktion F mit:
F(R.a1) = R.a2
Eine funktionale Abhängigkeit - oft abgekürzt als FD (engl. functional dependency) wird wie folgt dargestellt:
tß
Hierbei repräsentieren die Buchstaben t und ß jeweils Mengen von Attributen. Ist die
FD t ß auf dem Relationenschema R definiert, d.h. t und ß bilden Teilmengen von
R, dann sind nur solche R- Instanzen erlaubt, wo für alle Paare von Tupeln a, b aus
R mit a.t = a.ß muß auch gelten b.t = b.ß.
b. Volle funktionale Abhängigkeit
Neben der funktionalen Abhängigkeit muss die FD linksreduziert (t ist minimal) sein,
formal ein Attribut a ist in R voll funktional abhängig von {a1, a2, ..., an}, g.d.w. a nicht
von einer echten Teilmenge ( {a1, a2, ...., ak} | k ≤ n ) funktional abhängig ist.
Hinweis: Ist der Primärschlüßel zusammengesetzt, so ist jedes Attribut von ihm funk.
abhängig, aber nicht unbedingt voll funktional abhängig.
10
c. Transitive Abhängigkeit
(F+ ist die Menge der linksreduzierten funktionalen Abhängigkeiten in R).
Gegeben sei eine Menge funktionaler Abhängigkeiten F, ein Relationenschema R,
eine Attributsmenge X und ein Attribut A aus R. A ist transitiv abhängig von X, wenn
es eine Attributmenge Y aus R gibt, so dass (X Y) von F+ und (Y A ) von F+
sind und (Y X) gehört F+, A nicht von der Form XY gilt.
XYA
2.2.3. Normalisierung heute
Hier werden nur die erste, die zweite und die dritte Normalform besprochen. Im [K, E
2001], Seite 174 wird behauptet, dass diese Normalformen equivalent zur der obigen
Normalform-Prozedur (2.2.1.) sind. Das kann höchstens gelten, wenn in jeder
Relation alle Attribute nur den Gegenstand beschreiben, der von der Relation
dargestellt wird, d.h. die Attribute sind voll abhängig vom Primärschlüssel.
In der ersten Normalform wird die Atomarität der Attribute gefordert, d.h. die Attribute
dürfen nicht strukturiert (komplexe Werte) sein.
Ein Relationenschema ist in zweiter Normalform, wenn es in erster NF ist und wenn
jedes Nicht-Schlüssel-Attribut von jedem Schlüssel der Relation voll abhängig ist.
Eine Relation nimmt die dritte Normalform an, wenn es in zweiter NF ist und kein
nichtprimes (∉ {Kandidatenschlüsselattribut}) Attribut von einem Schlüssel in R
transitiv abhängig ist.
Erste NF
Zweite NF
Dritte NF
D.h. die dritte NF setzt die zweite voraus, diese wiederum die erste.
2.3. Sprachliche Aspekte
Man benötigt neben der Strukturbeschreibung eine Sprache, mit welcher die
Informationen in der Datenbank definiert und manipuliert werden können. In diesem
Zusammenhang werden zwei Hauptsprachen vorgestellt:
Sublanguage (die Datendefinition und die Datenmanipulation, wie SQL) und die
Hostlanguage ( Programmiersprache wie C, Java, COBOLD, in welcher man eine
DSL einbetten kann ). Die DSL (Sublanguage) erlaubt die Deklaration der Relationen
und ihre Domänen. Bei der Deklaration wird der Primärschlüssel der entsprechenden
11
Relation identifiziert. Die Sublanguage ermöglicht genaue Angaben über Ergebnisse
der lesenden Anfragen und besitzt Sicherheitsbeschränkungen, so dass nur
authorisierte Benutzer auf bestimmte Bereiche in der Datenbank Aktionen ausführen
könen. Die Besonderheit dieser Sprache liegt in ihrer Datenbeschreibungsfähigkeit
(und nicht in der Rechenfähigkeit) [C, J 1995].
3. Redundanz und Inkonsistenz
Eine Information ist redundant, wenn sie ohne Informationsverlust weggelassen
werden kann; Konsistenz ist die „Richtigkeit" von Daten im Zusammenhang mit
anderen Daten. Ist eine Datenbank inkonsistent, so können Daten aus der gleichen
oder anderen Quellen nicht miteinander kombiniert werden, ohne zu falschen
Ergebnissen zu führen.
Vor einer detaillierteren Erklärung werden die Gundlagen der Relationenalgebra
eingeführt.
Supply2
Supplier
Part#
partColor
partweight
project
S1
S1
S3
S4
1
1
5
2
We
We
Ro
Bl
5
5
7
1
10
20
30
40
Die Eigenschaften des Teils 1 sind redundant gespeichert. Falls das Projekt 40
gelöscht wird, werden Informationen über Supplier S4 verloren gehen (Inkonsistenz).
3.1. Operatoren der Relationenalgebra
Die relationale Algebra ist prozedural orientiert, d.h. ein relationenalgebraischer
Ausdruck enthält implizit einen Bearbeitungsplan, wie die Anfrage auszuwerten ist.
Sie spielt die grössere Rolle bei der Realisierung von Datenbanksystemen. Stehen
die Relationen in einer Kollektion, dann kann man im Allgemeinen alle möglichen
Mengenoperationen anwenden.
Zunächst werden einige Operatoren der Relationenalgebra kurz erwähnt, dann
werden die Operatoren, die Codd in seinem ersten Papier beschrieben hat,
eingeführt. Einige dieser Operatoren werden heute nicht mehr verwendet und fast
alle hatten damals andere Symbole.
12
•
Selektion (σ): Die Tupel (die Zeilen), die das Selektionsprädikat erfüllen,
werden bei dieser Operator selektiert.
•
Projektion (Π): Die Spalten der Tabelle, die als Projektionsprädikat im
Ausdruck dargestellt sind, werden hier als Ergebnis ausgegeben.
•
Vereinigung (U): Nur zwei Relationen, deren Schemata gleich sind, sind,
vereinbar.
•
Mengendifferenz (-): Falls zwei Relationen R1, R2 gleiche Domänen und
Attributnamen haben, kann man durch (R1 – R2 ) die Tupel, die in R1 und nicht
in R2 vorkommen, definieren.
•
Kreuzprodukt (X): Man bildet durch das kartesische Produkt zweier
Relationen (R1 X R2) alle möglichen Tupel-Paare aus R1 und R2. Das Schema
der Ergebnisrelation (sch(R1XR2)) ist eine Vereinigung aus sch(R1) und
sch(R2).
•
Umbenennung von Relationen und Attributen (ρ):
ρ v (Relation): V ist der neue Name der Relation.
ρ v Attribut (Relation): Das Attribut wird zu V umbenannt.
•
•
) : (R1 ⋈ R2) := Π A1,....,An, R1.B1,..., R1.Bk, C1,..,Cm (σ
R1.b1=R2.B1,...,R1.Bk=R2.Bk (R1 X R2)), mit R1 = { A1, A2, .., B1, ..., Bk, ..An } und R2 = {
C1, C2, ..., B1, ..., Bk, Cn }.
Der Verbund (
⋈
Allgemeine/Theta Join ( ⋈θ ): (R1 ⋈θ R2) := σθ (R1 X R2).
Man selektiert aus den n∗m Tupeln nur die Zeilen, die eine beliebige
Bedingung bzw. ein beliebiges Prädikat θ erfüllen.
•
Mengenduchschnitt (∩): R1∩R2 := R1 – (R1 – R2).
•
Die relationale Division (÷): Für die Durchführung der Division (R1 ÷ R2) muss
gelten, dass R2 eine Teilmenge von R1 ist. Dann ist das Ergebnisschema als
Mengendifferenz zu definieren, also nur die Attribute, die in R1 und nicht in R2
enthalten sind, werden ausgegeben.
Zunächst werden die Operatoren aus dem Papier [Codd 1970] eingeführt.
3.1.1. Permutation
Eine binäre Relation hat eine Array-Repräsentation mit zwei Spalten. Vertauscht man
die Spalten, so bekommt man eine Spiegelung der Relation. I. a. erhält eine nstellige Relation n! = n(n-1)(n-2)....*2*1 Instanzen, wenn man ihre Attribute
permutiert, (die Identität und die Spiegelung sind eingeschlossen). Das Beispiel
supply in Bild 2. hat 4! = 24 Permutationen. Weil das relationale Modell keine
sortierten Listen enthält, ist der Gebrauch von diesem Operator nicht mehr nötig. In
seltenen Fällen kann die Permutation durch die Projektion und ein passendes
Prädikat als Subskript ausgedrückt werden. Indem man Relationen ohne ihre
Permutationen speichert, gewinnt man an Speicherkapazität. Dies zählt zu den
Vorteilen des relationalen Modells.
13
3.1.2. Projektion
Die Spalten der Tabelle werden hier als Ergebnis ausgegeben. Die Projektion ist
durch das griechische Π bezeichnet und hat als Projektionsprädikat nur die Menge
der Attribute, die projiziert sein sollen. I. a. verzichtet man auf die Mengenklammern.
ΠPrädikat (Relation),
Πproject, supplier (supply)
Beispiel: Allgemein
Konkret
Π project, supplier (supply)
Project
5
5
1
7
Supplier
1
2
4
2
Abb.5 permutierte Projektion
Im konkreten Beispiel wurde gleichzeitig permutiert und projeziert.
3.1.3. Der relationale Verbund (Join)
Der Verbund ( Join ) zweier Argumentrelationen R1 und R2, (R1 * R2) hat insgesamt
n + m + k Attribute, wenn R1 und R2 n + k bzw. m + k Attribute haben, und k der Zahl
der in beiden Relationen gleichbenannten Attribute. Man kann sich das
Ergebnisschema wie folgt veranschaulichen:
R1 * R2: = Π
A1
σ R1.B1 = R2.B1,...,R1.Bk = R2.Bk (R1 × R2))
A1,...An, R1.B1,..., R1.Bk, C1,…, Cm (
R1 – R2
A2 .............
An
B1
B2
R1 * R2
R1 ∩ R2
...................
Bk
C1
R2 – R1
C2 ..............
Beispiel:
R1:= {supplier, part}
Supplier
Part
1
1
2
1
2
2
R2: = {part, project}
Part
Project
1
1
1
2
2
1
Abb. 6. zwei verbindbare Relationen
14
Cm
Supplier
1
1
2
2
2
R1 * R2
Part
1
1
1
1
2
Project
1
2
1
2
1
Abb. 7. Der natürliche Verbund zwischen R1 und R2
R1 und R2 (in Abb. 6) sind verlustfrei verbindbar, d.h. R1 * R2 := {(s, p, j) | R1:= (s, p) ∧
R2:= (p, j)}. Man kann im Abb.7 sehen, wie die gleichbenannten Attribute nur einmal
vorkommen, und dass
Π s, p (R1 * R2) = R1 und Π p, j (R1 * R2) = R2.
3.1.4. Andere Verbunde
Wenn Π p, s (R1) oder R2 eine Funktion (n1 oder 11 Relationen) ist, dann kann
es keine Ambiguität geben, deshalb ist auch nur ein natürlicher Join möglich. Die
Mehrdeutigkeit, welche in der Abb 6. durch jedes Element der Domäne Part erzeugt
wird, erklärt die Pluralität der Verbunde. Die Ambiguität in der Verbindung (R1 * R2)
kann manchmal mit Hilfe einer dritten Relation T(j, s) gelöst werden. Diese Relation
sollte die folgenden Eigenschaften mitbringen:
(1)
Π 1 (T) = Π 2 (R2),
(2)
Π 2 (T) = Π 1 (R1),
(3) T (j, s) → ∃p (R1 (s, p) ∧ R2 (p, j)),
(4) R1 (s, p) → ∃J (R2(p, j) ∧ T (j, s)),
(5) R2 (p, j) → ∃s (T (j, s) ∧ R1 (s, p)).
Nimmt man an, U = R1 * R2 * T, die sogenannte cyclic 3-Join dann folgt:
Π 12 (U) = R1, Π 23 (U) = R2, und Π 31 (U) = T.
Sei γ (R) = { (a1, a2, ..., an-1) : R (a1, a2, ……an-1, an) ∧ a1 = an}, dann kann man den
natürlichen cyclic 3-Join mit γ(R1 * R2 * T) beschreiben.
Um zwischen cyclic 3-Join und linear 3-Join unterscheiden zu können, definiert man
eine 4-stellige Relation V, so dass: Π 12 (V) = R1, Π 23 (V) = R2, und
Der natürliche linear 3-Join von R1, R2, und T ist wie folgt zu definieren:
Π 34 (V) = T
R1 * R2 * T = { (a, b, c, d) : R1(a, b) ∧ R2(b, c) ∧ T(c, d) }.
15
Bemerkung: Der natürliche 2-Join ist assoziativ.
Beispiel:
R1: = {supplier, part}
Supplier
Part
1
a
2
b
2
a
T: = {project, supplier}
Project
Supplier
d
1
d
2
e
2
e
2
R2: = {part, project}
Part
Project
a
d
a
e
b
d
b
e
Abb. 8. Relationen mit mehreren cyclic 3-Joins
U: = {supplier, part, project}
S
P
j
1
A
d
2
a
e
2
b
d
2
b
e
Abb. 9. Eine cyclic 3-Join der Relationen in Abbildung 8.
3.1.5. Link (Tie)
Sei eine Relation R = { A1, A2, ......, An }. R wird verknüpft (tied), wenn alle Tupel mit
R.A1 ≠ R.An eliminiert werden, d.h. die Restriktion (moderne Bedeutung) von R auf
R’ (R’ ⊆ R), mit R’.A1 = R’.An. Der Operator Tie wird mit
γ betzeichnet.
Beispiel:
R
supplier
1
2
2
part
1
1
2
supplier
1
2
γR
part
1
2
3.1.6. Komposition
R1{ X,Y } und R2{ Y, Z } sind zwei verbindbare Relationen und U = R1 * R2 ist eine
Verbundrelation von R1 und R2. T ist eine Komposition aus R1 und R2 g.d.w. T = Π
X, Z (U). Im Spezialfall, dass R1 und R2 binäre Relationen sind, ist T = Π 1, 3 (U). Die
Pluralität der Verbindungen liefert keine Information über die Zahl der
16
Kompositionen. Während man den Join-Operator durch einen Stern (*) visualisiert,
steht der Punkt (·) für die Komposition . Im Beisp. R1 · R2 = Π 13 (R1 * R2).
Weil ein natürlicher Verbund immer möglich ist, gibt es auch immer eine natürliche
Komposition.
Beispiel:
R1 · R2
Supplier
Project
1
1
1
2
2
1
2
2
Abb. 10 natürliche Komposition von R1 und R2.
T
Supplier
2
1
Project
1
2
Abb. 11 beliebige Komposition T von R1 und R2.
Die Kompositionen zweier oder mehrerer Relationen sind höchstens so viele wie die
Verbindungen. In Abb.12 ist c als Quelle der Mehrdeutigkeit durch die erste
Komposition eliminiert worden. Während so viele Joins möglich sind, kann hier nur
eine Komposition generiert werden.
R2
R1
Supplier
1
1
1
2
2
2
Part
a
b
c
c
d
e
Part
a
b
c
c
d
e
Project
g
f
f
g
g
f
R1·R2
Supplier
1
1
2
2
Project
g
f
g
f
Abb.12 mehrere Verbunde und nur eine Komposition
17
Das lässt sich auch auf nicht binäre Relationenpaare (auch mit verschiedenen
Stelligkeiten) verallgemeinern, in dem man dem oberen Muster folgt und die
Relationen paaweise verbindet.
Eine schlechte Anwendung der Komposition führt zu Fehlern. Im Beispiel supply
möchte man herausfinden, welche Projekte von welchem Lieferant stammen, und
setzt dabei voraus, dass supplier’s Elemente auf parts verweisen, und part’s
Elemente wiederum auf die Projekte zeigen. Nur eine natürliche Komposition
zwischen project und supplier kann diese Anfrage korrekt beantworten.
3.1.6. Restriktion
y
F (x)
x
-∞
0
+∞
F ist definiert in dem Bereich ]-∞, +∞[ , man kann sie aber schlecht beschreiben. Hier
bietet sich die Restriction als gute Lösung an. Während F in der Domäne ] -∞, 0] die
Form einer Gerade hat (F ( x ≤ o ) = ax + b), steigt F im positiven Bereich
exponentiell ( F (x > 0) = exp(x)) an. F ( x ≤ o ), F (x > 0) sind Funktionen.
Analog; ein Relationsteil ist wiederum eine Relation. R1 ist über R2 in R1’ reduziert
(restricted), d.h. Π L (R1’) = Π M (R2) mit |L| = |M| ≤ |R1|, |R2| und R1’ ⊆ R1 (R1’ ist
maximal). Man bezeichnet die Restriction mit“ R1L|MR2 “.
Bemerkung: Der SQL-Operator SELECT wird auch mit RESTRICT bezeichnet.
18
Beispiel: R1’ = R1 23|12 R2
s
1
2
2
2
2
R1
P
A
a
a
b
b
R2
J
A
A
B
A
B
P
a
c
b
J
A
B
B
s
1
2
2
R1’
p
a
a
b
j
A
A
B
Abb. 13 Restriktion
3.2. Redundanz
Während Redundanz im physikalischen Bereich das Mehrfachspeichern einer
einzigen Information bedeutet, kann dieses Problem in der Benutzerebene anders
verstanden werden. Um dies besser zu erklären, muss man die Bedeutung der
Ableitbarkeit von Relationen verdeutlichen.
Ein algebraischer Ausdruck besteht aus einer sequentiellen Folge von Operatoren Θ
angewandt auf Argumentrelationen A = {A1, A2,.....}, und liefert eine Ergebnisrelation
E. Also gilt, E ist Θ -ableitbar aus der Relationenmenge A.
3.2.1. Starke Redundanz
Eine Kollektion von Relationen heißt stark redundant, wenn die Projektion von
mindestens einer Relation auch aus anderen Relationsprojektionen in jeder Zeit
ableitbar ist.
Beispiel: Die Kollektion ist einelementig, also besteht sie aus nur einer Relation.
Employee: = {serial#, name, manager#, managername}
∆t (manager#) ⊂ ∆t (serial#), ∆t (managername) ⊂ ∆t (name)
Der Primärschlüssel ist serial#, manager# , bezeichnet den Fremdschlüssel und ∆t
steht für die aktive Domäne. Die Relation ist redundant, weil das Attribut
managername nicht nötig ist, da es auch unter dem Attribut name eingetragen ist .
Das die Redundanz stark ist, wird durch die nächste Gleichung bewiesen:
Π34 (employee) = Π12 (employee) 1|1 Π3(employee)
19
3.2.2. Schwache Redundanz
Wenn es in einer Relationenmenge mindestens ein Mitglied gibt, welches eine
Projektion besitzt, die man aus Relationenverbunde (nicht Projektionen wie oben) der
gleichen Menge jederzeit ableiten kann, spricht man von schwacher Redundanz.
Beispiel:
P(s#, d#, ...), Q(s#, j#, …), R(d#, j#. ...).
Π12(P), Π12(Q), Π12(R) sind drei komplexe (Konverse ist keine Funktion)
Relationen. Man kann Π12(P) ableiten aus einer Π12(Q)- Π21(R)-Komposition.
3.3. Konsistenz
Eine Relationen - Zusammenstellung ist konsistant, wenn alle logischen funktionalen
Abhängigkeiten über die Zeit erhalten bleiben. Für das obige Beispiel:
Π12(P) = Π12(Q).Π21(R) ≡ L = M . N
Es muss immer gelten:
Π1(L) = Π1(M), Π2(P) = Π2(N) und
(a, c) ∈ L ⇔ ∃ b | (a, b) ∈ M & (c, b) ∈ N
Bei bestimmten Eingriffen - wie Einfügen, Löschen oder Einträge ändern - sollte das
Datenbanksystem nach Inkonsistanz prüfen, und wenn möglich, diese verhindern,
damit die Daten konsistant bleiben.
4. Zusammenfassung
Der erste Teil der Ausarbeitung beschäftigt sich mit der Enstehungsgeschichte des
relationalen Modells und einer Motivation für den Einsatz eines DBMS. Anschließend
wurden das R-Modell und die Normalform eingeführt und die Konsistenz sowie
Redundanz erklärt. Gleichzeitig führte man aber auch einige Operatoren der
Relationalalgebra ein.
Das relationale Modell ist im Laufe der Jahre weiter entwickelt worden. Codd hat
beispielsweise in seinen weiteren Publikationen noch Normalformen definiert und
führte den Relationentupelkalkül ein. Die Definitionen, die hier aufgeführt sind,
entsprechen dem Wissen Codds und anderer Informatiker bei der Geburt dieses
Modells. Da es sich um eine Theorie handelt, besitzt das R-Modell seine eigene
Terminologie (Normalform, Relationalalgebra, Referentielle Integretät, ........), die sich
ebenfalls im Laufe der Zeit verändert. Dies ist z.B. bei den eingeführten Operatoren
zu beobachten.
Zuletzt arbeiteten die Hersteller der RDBMS daran, die Konzepte des
objektorientierten Datenbankverwaltungssystems zu übernehmen, um eine
20
Mischform zu konstruieren, z.B. SQL3 [M, J 1995]. Das Ziel ist, die relationale und
objektorientierte Konzepte in SQL zu integrieren und neue Datentypen zu definieren,
die das DBMS verwalten kann. Mit SQL3 wird die Modellierungsmächtichkeit erhöht.
5. Literatur
•
[Codd 1970] E. F. Codd, “A Relational Model of Data for large Shared
Databanks”, Communications of the ACM , Volume 13, Number 6 (June
1970), pages 377-387.
•
[K, E 2001] A. Kemper, A. Eickler, „Datenbanksysteme“, Oldenbourg Verlag,
ISBN: 3-486-25706-4, pages 15-16 und 72.
•
[Rustin 1972] R. Rustin, “Data Base Systems, Prentice-Hall”, Englewood
Cliffs, NJ (1972)
•
[C, J 1995] Chris J. Date „An introduction to Database Systems “.
•
[M, J 1995] Melton, Jim. „Accomodating SQL3 and ODMG“.
•
[Chen,
1976]
P.
Chen.
„the
www.csc.lsu.edu/~chen/papers.html
Entity
Relationship
Model“,
21
Herunterladen