04.12.2012 Aufrufe

1 Relationale Datenbanken (DB): Das Relationenmodell

1 Relationale Datenbanken (DB): Das Relationenmodell

1 Relationale Datenbanken (DB): Das Relationenmodell

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!