1 Relationale Datenbanken (DB): Das Relationenmodell
1 Relationale Datenbanken (DB): Das Relationenmodell
1 Relationale Datenbanken (DB): Das Relationenmodell
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
1 <strong>Relationale</strong> <strong>Datenbanken</strong> (<strong>DB</strong>): <strong>Das</strong> <strong>Relationenmodell</strong><br />
[eine Zusammenfassung von Christian Rausch nach Schicker: „<strong>Datenbanken</strong> und SQL“, 1999]<br />
Vereinfacht ausgedrückt bestehen relationale <strong>Datenbanken</strong> aus Tabellen, in denen Daten<br />
gespeichert sind. Üblicherweise stehen die Tabellen in Beziehungen zueinander, d. h. manche<br />
Einträge sind Verweise auf andere Einträge in anderen Tabellen.<br />
Wichtige Anforderungen an eine Datenbank:<br />
geringe Redundanz, gleiche Daten sind möglichst nicht an mehreren<br />
Stellen gleichzeitig abgelegt. Dadurch bleibt die <strong>DB</strong><br />
übersichtlicher, Updates der Daten werden<br />
gute Handhabbarkeit,<br />
einfache Zugriffe über möglichst wenige<br />
Tabellen<br />
erleichtert, Speicherplatz wird gespart.<br />
Daten sind übersichtlich abgelegt, Abfragen sind<br />
einfach.<br />
Sicherstellung von Konsistenz und Integrität Datenbeziehungen bleiben in sich logisch und<br />
stimmig. Keine Gefahr von Datenverlust z. B. bei<br />
Updates oder Löschungen.<br />
1.1 Beispiel zu relationalen <strong>Datenbanken</strong><br />
Negativbeispiel: Datenbanktabelle VerkaeferProdukt (Tab. 1):<br />
Tab. 1 VerkaeferProdukt<br />
Verk_Nr Verk_Name PLZ Verk_Adresse Produktname Umsatz<br />
V1 Meier 80075 München Waschmaschine 11000<br />
V1 Meier 80075 München Herd 5000<br />
V1 Meier 80075 München Kühlschrank 1000<br />
V2 Schneider 70038 Stuttgart Herd 4000<br />
V2 Schneider 70038 Stuttgart Kühlschrank 3000<br />
V3 Müller 10183 Berlin Staubsauger 1000<br />
Zu jedem Verkäufer ist<br />
dessen Nummer und Name (Verk_Nr und Verk_Name),<br />
PLZ und Stadt seiner Adresse (PLZ und Verk_Adresse),<br />
der Name der von ihm verkauften Produkte (Produktname)<br />
und der Umsatz angegeben.<br />
Nachteile obiger Tabelle:<br />
Redundanzen: Name, PLZ und die Adresse der Verkäufer kommen mehrfach vor.<br />
Unbequeme Handhabbarkeit: ändert ein beliebiger Verkäufer seine Adresse, so ist eine variable<br />
Anzahl von Adresseinträgen zu ändern. Falls nicht alle Adresseinträge geändert werden, so<br />
besteht die Gefahr von Inkonsistenzen.<br />
Redundanz ist immer eine Gefahrenquelle für Fehler und Inkonsistenzen.<br />
Falls die Firma den Artikel Staubsauger aus dem Programm nimmt, so können nicht einfach die<br />
1/13
Zeilen, die den Produktnamen Staubsauger enthalten, entfernt werden, da sonst auch alle<br />
Informationen zu Verkäufer Müller aus der Datenbank entfernt werden!<br />
E. F. Codd untersuchte ab 1970 den optimalen Aufbau von Tabellen und legte die Grundlage zu<br />
mathematisch-fundierten Theorien (relationale Algebra, Relationenkalül, Normalformenlehre).<br />
Es wurde theoretisch belegt, dass Tabellen so aufgebaut werden können, dass sowohl Redundanzen<br />
in den Daten vermieden als auch Einzeldaten isoliert gelöscht werden können.<br />
1.2 <strong>Relationale</strong> Datenstrukturen<br />
Übersicht<br />
Entsprechung der formalen relationalen Ausdrücke mit<br />
mehr informellen alltäglichen Ausdrücken:<br />
Tab. 2<br />
Formale relationale Ausdrücke Informelle Ausdrucksweise<br />
Relation Tabelle<br />
Tupel eine Zeile (Reihe) einer Tabelle<br />
Kardinalität Anzahl der Zeilen einer Tabelle<br />
Attribut eine Spalte (Feld) einer Tabelle<br />
Grad Anzahl der Spalten einer Tabelle<br />
Primärschlüssel eindeutiger Bezeichner einer Zeile (eines Tupels)<br />
Gebiet Menge aller möglichen Werte<br />
L# Lname Stadt PLZ Kopf(zeile)<br />
L1 Müller München 81724<br />
Relation L2 Schmidt Regensburg 93055 Rumpf<br />
L3 Maier Hamburg 20543 Tupel<br />
L4 Schwarz Köln 50087<br />
L5 Weiß Berlin 11168<br />
Attribute<br />
Grad<br />
Abb. 1 <strong>Relationale</strong> Begriffe am Beispiel: L1-L5 Primärschlüssel; die Kardinalität ist die Zeilenzahl<br />
(=Tupelzahl)<br />
Der Kopf besteht aus einer festen Anzahl von Attributen:<br />
{(A1; D1), (A2; D2), ... , (An; Dn)}, wobei jedes Attribut Ai genau mit einem Gebiet korrespondiert<br />
(1 i n)<br />
Der Rumpf besteht aus einer variablen Anzahl von Tupeln.<br />
2/13
Der Grad einer Relation R (d. h. die Spaltenzahl = Attributszahl) wird beim Erzeugen der Relation<br />
festgelegt (beim Hinzufügen einer Spalte (Attribut) handelt es sich genaugenommen um die<br />
Überführung der Relation in eine andere). Die Kardinalität ist beim Erzeugen der Relation gleich<br />
Null und erhöht sich mit jedem Einfügen eines neuen Tupels.<br />
Definition (Relation)<br />
Eine Relation ist eine Tabelle obiger Gestalt, bestehend aus einem Kopf und einem Rumpf, mit<br />
folgenden 4 Eigenschaften:<br />
Es gibt keine doppelten Tupel.<br />
Tupel sind nicht geordnet (etwa von oben nach unten).<br />
Attribute sind nicht geordnet (etwa von links nach rechts).<br />
Alle Attribute sind atomar, d. h. jedes Attribut („Tabellenelement“) enthält nur ein Element.<br />
(Handhabung wird vereinfacht, Speicherbedarf kann besser geplant werden.)<br />
Definition (<strong>Relationale</strong> Datenbank)<br />
= eine Ansammlung von normalisierten Relationen,<br />
die zeitlich variieren (können).<br />
die einen (geeigneten) Grad haben.<br />
die Relationen stehen zueinander in einer bestimmten Beziehung und<br />
werden von einem Verwaltungssystem gemeinsam verwaltet.<br />
Eine Datenbank, die ausschließlich mit SQL Befehlen verwaltet und auf die ausschließlich mit<br />
SQL Befehlen zugegriffen wird, ist bereits eine relationale Datenbank, da SQL nur Relationen<br />
kennt.<br />
Unterscheidung<br />
„eigentliche“ Relationen von „eigentl.“ Relationen abgeleitete Relationen<br />
Basisrelationen (am wichtigsten, da „eigentliche“ Relation)<br />
existieren tatsächlich (real) in der <strong>DB</strong>, haben Namen und sind dauerhaft gespeichert.<br />
Sichten (Views)<br />
virtuell und nicht real<br />
erscheinen dem Benutzer wie „normale“ Relationen<br />
aus Basisrelationen abgeleitet<br />
geeignet, um Benutzer mit eingeschränkten Rechten z.B. nur „Teilsicht“ auf eine best.<br />
Relation zu gewähren.<br />
Abfrageergebnisse (Query-Results)<br />
sind auch Relationen<br />
existieren nur temporär als Abfrageergebnisse auf Bildschirm oder Drucker<br />
Temporäre Relationen<br />
existieren wie Abfrageergebnisse nur temporär<br />
werden aber erst durch best. Aktionen z.B. Beenden einer Transaktion zerstört<br />
dienen v.a. zum Abspeichern von Zwischenergebnissen.<br />
3/13
In SQL:<br />
CREATE TABLE ...; Erzeugen einer Basisrelation<br />
CREATE VIEW ...; Erzeugen einer Sicht<br />
SELECT ...; Abfrage<br />
CREATE TEMPORARY TABLE ...; Erzeugen einer temporären Relation<br />
Definition (Primärschlüssel)<br />
der Primärschlüssel ist ein besonderes Attribut, durch das jeder Tupel eindeutig beschrieben wird.<br />
Primärschlüssel kann aus mehreren Einzelattributen zusammengesetzt sein.<br />
Wegen der Def. der Relation (einmaliges Auftauchen eines Tupels) besitzt jede Relation einen<br />
Primärschlüssel. Im ungünstigsten Fall erstreckt sich dieser über mehrere oder sogar alle Attribute!<br />
Bsp. Primärschlüssel Tab. 3<br />
Tab. 3 Relation Lagerbestand mit zusammengesetztem Primärschlüssel<br />
Produktname Produkttyp Bestand Preis<br />
Staubsauger T06 25 498<br />
Staubsauger T17 17 219<br />
... ... ... ...<br />
Herd T04 10 1598<br />
Herd T06 7 1998<br />
<br />
1.3 <strong>Relationale</strong> Integritätsregeln<br />
Physische Integrität<br />
Vollständigkeit der Zugriffspfade und der physischen Speicherstrukturen<br />
Vom Datenbankprogrammierer nicht beeinflussbar.<br />
Ablaufintegrität<br />
Korrektheit der ablaufenden Programme<br />
Keine Dateninkonsistenz im Mehrfachbenutzerbetrieb<br />
Verantwortung: Anwendungsprogrammierer und Datenbankdesigner<br />
Zugriffsberechtigung<br />
korrekte Vergabe der Zugriffsberechtigung<br />
Verantwortung: Datenbank-Administrator<br />
Semantische Integrität<br />
Übereinstimmung der Daten in der <strong>DB</strong> mit denen in der realen Welt<br />
Gefahr: z.B. aus Versehen könnten falsche Werte z.B. Mengenangaben eingegeben<br />
werden<br />
Abhilfe: Eingabe muss auf Korrektheit überprüft werden.<br />
Empfehlung: die Gebiete sind so klein wie möglich zu wählen.<br />
Verantwortung: Anwendungsprogrammierer, Datenbank-Administrator, <strong>DB</strong>-Hersteller<br />
4/13
1.3.1 Entitäts-Integritätsregel = 1. Integritäsregel<br />
Jeder Primärschlüssel identifiziert jedes Tupel eindeutig jedes Tupel hat einen Primärschlüssel.<br />
1. Integritätsregel (Entitäts-Integritätsregel)<br />
Keine Komponente des Primärschlüssels einer Basisrelation darf nichts enthalten.<br />
Definition (Schlüsselkandidat)<br />
Ein eventuell aus mehreren einzelnen Attributen zusammengesetztes Attribut heißt<br />
Schlüsselkandidat, falls es<br />
eindeutig jedes Tupel identifiziert und<br />
minimal ist, d.h. bei Weglassen eines einzelnen Attributs die Eindeutigkeit verloren geht.<br />
Definition (Primärschlüssel, alternativer Schlüssel)<br />
Besitzt eine Relation mehrere Schlüsselkandidaten, so wird davon einer als Primärschlüssel<br />
ausgewählt; alle anderen heißen alternative Schlüssel. Der Primärschlüssel soll minimal sein.<br />
Teilattribute des alternativen Schlüssels dürfen leer sein.<br />
Bsp. für Auftreten von Primärschlüssel und alternativen Schlüsseln in Tab. 4:<br />
Tab. 4 Tabelle der chemischen Elemente<br />
Protonen Atomgewicht Name Symbol<br />
1 1,0079 Wasserstoff H<br />
2 4,0026 Helium He<br />
3 6,9410 Lithium Li<br />
... ... ... ...<br />
NB: Protonenzahl, Namen und Symbol des Elements sind Schlüsselkandidaten.<br />
1.3.2 Referenz-Integritätsregel<br />
Diese regelt Verweise der Relationen untereinander. Allgemein gesprochen sind Relationen<br />
einzelne Objekte ohne zwingenden Bezug. Üblicherweise gibt es aber einen Bezug, da in<br />
<strong>Datenbanken</strong> „zusammengehörige“ Dinge verwaltet werden. Der Bezug zwischen zwei Relationen<br />
wird durch einen weiteren Schlüssel, den sog. Fremdschlüssel hergestellt. Fremdschlüssel sind der<br />
„Kitt“, der die einzelnen Relationen zu einem gemeinsamen Datenbestand zusammenfügt.<br />
Definition (Fremdschlüssel)<br />
Ein (möglicherweise zusammengesetztes) Attribut einer Basisrelation heißt Fremdschlüssel, falls<br />
das ganze Attribut entweder nichts oder einen definierten Inhalt enthält,<br />
eine Basisrelation mit einem Primärschlüssel existiert, so dass jeder definierte Wert des<br />
Fremdschlüssels zum Wert jenes Primärschlüssels identisch ist.<br />
Beispiel für die Relationen Personal, Kunde und Auftrag (Tab. 5) (nächste Seite)<br />
5/13
Tab. 5 Beispiel für die Relationen Personal, Kunde und Auftrag<br />
6/13
2. Integritätsregel (Referenz-Integritätsregel)<br />
Eine relationale Datenbank enthält keinen Fremdschlüssel (ungleich NULL), der auf einen nichtexistenten<br />
Primärschlüssel verweist.<br />
Problem: Falls ein Tupel mit Primärschlüssel gelöscht werden soll, auf den Fremdschlüssel<br />
verweisen, so kann dieses nicht einfach gelöscht werden, da sonst der Fremdschlüssel ins Leere<br />
verweist wodurch die 2. Integritätsregel verletzt wäre.<br />
Lösungsmöglichkeiten:<br />
Löschen bzw. Ändern nicht durchführen<br />
ON DELETE NO ACTION bzw. ON UPDATE NO ACTION<br />
Löschen bzw. Ändern rekursiv aller darauf verweisender Tupel<br />
ON DELETE CASCADE bzw. ON UPDTATE CASCADE<br />
Nullsetzen aller darauf verweisender Fremdschlüssel<br />
ON DELETE SET NULL bzw. ON UPDTATE SET NULL<br />
1.4 <strong>Relationale</strong> Algebra<br />
E. F. Codd definierte eine vollständige Syntax auf 8 Operatoren und schuf eine relationale Algebra.<br />
Er zeigte, dass damit alle denkbaren Zugriffe auf beliebige Relationen der Datenbank möglich sind.<br />
1.4.1 <strong>Relationale</strong> Operatoren<br />
Eine Relation R ist eine Menge (R ist Menge aller Relationen)<br />
Es gibt 8 Mengenoperatoren auf R x R (binäre Operatoren) und R (unäre Operatoren).<br />
<strong>Das</strong> Bildgebiet ist wieder eine Menge (Relation).<br />
Binäre Operatoren sind z.B. Addition und Multiplikation<br />
Unäre Operatoren sind z.B. das negative Vorzeichen.<br />
Vereinigung R1 UNION R2<br />
Alle Tupel, die wenigstens in einer der beiden Relationen vorkommen<br />
Schnitt R1 INTERSECT R2<br />
Enhält nur die in beiden Relationen vorkommenden Tupel.<br />
Differenz R1 MINUS R2<br />
Bezüglich der Tupel: R1 ohne R2 i.e. R1 \ R2<br />
Kartesisches Produkt R1 TIMES R2<br />
alle möglichen Kombinationen der Tupel aus R1 und R2<br />
Restriktion R WHERE Bedingung<br />
die sich ergebende Relation ist eine Teilmenge von R entsprechend der Bedingung<br />
Projektion R [Attributsauswahl]<br />
alle Tupel, aber nur mit einer Auswahl von Attributen werden angezeigt.<br />
7/13
(Natürliche) Verbindung R1 JOIN R2<br />
alle mögl. Kombinationen der Tupel aus R1 u. R2.<br />
„gemeinsame Attribute dienen als Verknüpfung“, Verknüpfung bei gemeinsamen Attributen ist<br />
über Fremdschlüssel -> Primärschlüssel gegeben.<br />
Division R1 DEVIDEBY R2<br />
R1 muss mindestens alle Att. von R2 enthalten (R2 ist Teilmenge von R1).<br />
Die neue Relation<br />
enthält nur die Attribute, die R1 zusätzlich zu R2 hat<br />
enthält nur die Tupel von R2 deren Attribute Att mit denen von R1 übereinstimmen.<br />
nur die „neuen“ Attribute werden gewählt (d.h. nur in R1 enthalten)<br />
nur die Tupel werden gewählt, wo für die Attribute gilt, die in R1 und R2 vorhanden sind:<br />
„die Attribute stimmen in ihren Werten überein“<br />
Graphische Verdeutlichung (Abb. 2):<br />
Abb 2.1: Natürliche Verbindung (JOIN) der Relationen Personal und Auftrag<br />
Abb 2.2: Graphische Verdeutlichung der 8 relationalen Operatoren<br />
8/13
2 Datenbankdesign<br />
2.1 Normalformenlehre<br />
Die Normalformenlehre betrachtet immer Relationen für sich.<br />
<strong>Das</strong> Entity-Relationship-Modell ist ein Gesamt-Design mit allen Beziehungen zwischen den<br />
Relationen.<br />
Die Normalformenlehre beschreibt, wie Relationen aufgebaut werden sollen, um Redundanzen zu<br />
vermeiden. Codd stellte 1970 3 Normalformen auf, heute gibt es insg. 5 Normalformen.<br />
Die 1. - 3. finden am meisten Anwendung.<br />
Die Normalformen bauen aufeinander auf, d.h. befindet sich eine Datenbank in der m.ten<br />
Normalform, so befindet sie sich auch in der n.ten (m n).<br />
Definition (erste Normalform)<br />
Eine Relation ist in der ersten Normalform, wenn alle zugrundeliegenden Gebiede nur atomatre<br />
Werte anthalten.<br />
Definition (funktionale Abhähngigkeit)<br />
Ein Attrbut Y einer Relation R heiß funktional abhängig vom Attirbut X derselben Relation, wenn<br />
zu jedem X-Wert höchsten ein Y-Wert möglich ist.<br />
Ist Y von X funktional abhängig so schreiben wir:<br />
X->Y<br />
Definition (volle funktionale Abhängigkeit)<br />
Ein Attribut Y einer Relation R heißt voll funktional abhängig vom Attribut X derselben Relation,<br />
wenn es funktional abhängig von X ist, nicht aber funktional abhängig von beliebigen Teilattributen<br />
von X.<br />
Ist Y von X voll funktional abhängig so schreiben wir:<br />
X=>Y<br />
Definition (zweite Normalform)<br />
Eine Relation ist in der zweiten Normalform, wenn sie in der ersten Normalform ist, und jedes<br />
Nichtschlüsselattribut voll funktional abhängig vom Primärschlüssel ist.<br />
(Ein Nichtschlüsselattribut ist jedes (auch zusammengesetzte) Attribut, das kein Schlüsselkandidat<br />
ist.)<br />
Bemerkung:<br />
Eine normalisierte Relation mit einem nicht zusammengesetzten Primärschlüssel befindet sich<br />
immer in der zweiten Normalform. Umgekehrt besitzt eine Relation, die sich nicht in der zweiten<br />
Normalform befindet, einen zusammengesetzten Primärschlüssel.<br />
Definition (Determinante)<br />
Eine Determinante ist ein (eventuell zusammengesetztes) Attribut, von dem ein anderes voll<br />
funktional abhängig ist.<br />
Diese Definition besagt nur, dass jedes Attribut, von dem ein Doppelpfeil ausgeht, als Determinante<br />
bezeichnet wird. In der zweiten Normalform sind also mindestens alle Schlüsselkandidaten<br />
Determinanten. Die dritte Normalform geht noch einen Schritt weiter:<br />
9/13
Definition (dritte Normalform nach Boyce/Codd)<br />
Eine normalisieret Relation ist in der dritten Normalform, wenn jede Determinante dieser Relation<br />
ein Schlüsselkandidat ist.<br />
Bemerkung<br />
Jede beliebige Relation kann durch Umformung (meist Zerlegung in mehrere Relaitonen) in die<br />
zweite und auch in die dritte Normalform überführt werden.<br />
Vierte und fünfte Normalform (Ausblick)<br />
Primärschlüssel und alternative Schlüssel sind möglichst so zu wählen, dass sie nur aus ein oder<br />
höchstens zwei Attributen bestehen. Dies sind Aussage und Inhalt der vierten und fünften<br />
Normalform.<br />
Besitzt eine Relation einen nicht zusammengesetzten Primärschlüssel, so fallen die Definitionen der<br />
dritten, vierten und fünften Normalform zusammen!<br />
2.2 Entity-Relationship-Modell<br />
Nachdem geklärt wurde, wie einzelne Relationen aufgebaut werden sollten, wird nun beschrieben,<br />
wie die Beziehungen zwischen den Relationen gestaltet werden sollen.<br />
2.2.1 Entitäten<br />
Tab. 5 Begriffe zu relationalen <strong>Datenbanken</strong><br />
Entiät ein unterscheidbares Objekt (im Sinne der betrachteten Objekte in der<br />
Datenbank), im mathematischen Sinne ein Element<br />
Eigenschaft ein Teil einer Entität, der die Entität beschreibt<br />
Beziehung eine Entität, die zwei oder mehr Entitäten miteinander verknüpft<br />
Subtyp eine Entität Y, die auch zu einer Entität X gehört<br />
Supertyp eine Entität, die Subtypen enthält<br />
Tab. 6 Beispiele zu den Begriffen zu relationalen <strong>Datenbanken</strong><br />
Begriff Beispiele<br />
Entität Person, Werkzeugteil, Produkt, Rechnung<br />
Eigenschaft Name, Vorname, PLZ, Ort, Adresse einer<br />
Person; Einzelteile, aus denen ein Werkzeug<br />
besteht; Rechnungsdatum<br />
Beziehung die Relation Verknuepfung verbindet die<br />
Relationen Verkaeufer und Produkt (siehe<br />
Tab.7)<br />
Subtyp die Entität Programmierer ist ein Subtyp zu<br />
Entität Person.<br />
Supertyp die Entität Person ist ein Supertyp der Entität<br />
Programmierer.<br />
10/13
Tab. 7 Relation Verkaeufer<br />
Verk_Nr Verk_Name PLZ Verk_Adresse<br />
V1 Meier 80075 München<br />
V2 Schneider 70038 Stuttgart<br />
V3 Müller 50083 Köln<br />
Tab. 8 Relation Produkt<br />
Prod_Nr Produktname<br />
P1 Waschmaschine<br />
P2 Herd<br />
P3 Kühlschrank<br />
P4 Staubsauger<br />
Tab. 9 Realtion Verknuepfung<br />
Verk_Nr Produkt_Nr Umsatz<br />
Abb. 3 Beispiel zu Entitäten und Eigenschaften<br />
V1 P1 11000<br />
V1 P2 5000<br />
V1 P3 1000<br />
V2 P2 4000<br />
V2 P3 3000<br />
V3 P4 1000<br />
11/13
Ein Beispiel zu Beziehungen zwischen Relationen (Abb. 4):<br />
Eine Entität Person hat eine Beziehung zu der Entität (Relation) Abteilung, in der Daten zu den<br />
Abteilungen abgespeichert sind. Diese Beziehung stellt selbst eine Entität dar, eine sog.<br />
Beziehungs-Entität (dargestellt als Raute).<br />
Abb. 4 Beispiel einer Beziehungsrelation<br />
Es wird zwischen schwachen und starken Entitäten unterschieden. Eine schwache Entität hängt von<br />
einer starken Entität ab. Wird die starke Entität entfernt, so verliert jede von ihr abhängige<br />
schwache Entität ihre <strong>Das</strong>einsberechtigung und kann auch entfernt werden.<br />
Ein Beispiel wären die Entitäten Produkt, Einzelteile und Fehler. Die Entitäten Einzelteile und<br />
Fehler hängen von Prokukt ab. Falls alle Fehler prokukt-spezifisch sind, so ist Fehler eine schwache<br />
Entiät, d. h. falls das Produkt aus der Prokuktion genommen wird, so sind die Fehlerdaten wertlos.<br />
Einzelteile können jedoch für verschiedene Produkte verwendet werden, diese Entität ist daher nicht<br />
schwach.<br />
2.2.2 Beziehungen: Primärschlüssel und Fremdschlüssel<br />
Eine Beziehungsentiät zwischen zwei Entitäten enthält zwei Fremdschlüssel, die auf die<br />
Primärschlüssel der beiden Entitäten verweisen. Es liegen also Beziehungen wie zwischen<br />
Verkaefer und Produkt, oder wie zwischen Teilelieferant und Teile vor. Es sind auch Beziehungen<br />
zwischen mehreren Entitäten möglich, die Beziehungs-Entitäten enthalten dann dementsprechend<br />
mehr Fremdschlüssel.<br />
Abb. 5 Beziehungsrelation zwischen Verkaeufer und Prokukt<br />
Die Relation Verknuepfung wird in SQL wie folgt erzeugt, wobei alle Schlüsselinformationen<br />
bereits mit angegeben sind:<br />
12/13
CREATE TABLE Verknuepfung<br />
( Verk_Nummer CHARACTER(4) REFERENCES Verkaeufer,<br />
Produkt_Nr CHARACTER(4) REFERENCES Produkt,<br />
Umsatz SMALLINT,<br />
PRIMARY KEY (Verk_Nummer, Produkt_Nr)<br />
);<br />
Einige Empfehlungen zum Erstellen einer Datenbank:<br />
Auswahl aller Eigenschaften, die in die Datenbank aufgenommen werden sollen (meist ein<br />
langwieriger und zeitraubender Prozess). Eine gute Auswahl schon in der Anfangsphase<br />
verhindert ein mehrmaliges und zeitraubendes Anpassen der Datenbank.<br />
Zusammenfassen der Eigenschaften zu Entitäten. Hier ist die Normalformenlehrre zu<br />
berücksichtigen. Bei guter Auswahl der Entitäten werden die Relationen meist automatisch in<br />
dritter oder höherer Normalform sein.<br />
Ermittlung der Beziehungen zwischen den einzelnen Entitäten<br />
Erzeugen der Relationen, Erzeugen der Beziehungsrelationen. Geeignete Wahl der<br />
Fremdschlüssel.<br />
Ermittlung der Eigenschaften der Fremdschlüssel. (Was soll mit ihnen geschehen falls der<br />
zugehörige Primärschlüssel eine „Lösch- oder Update-Anfrage“ bekommt.) Hier helfen auch<br />
Stichworte wie schwache Entität und Subtyp weiter.<br />
13/13