Beziehungen in Datenbanken: Unterschied zwischen den Versionen

Aus IV1
K Textersetzung - „mussswiki.idv.edu“ durch „mussswiki.idb.edu“
 
(21 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<!--<yambe:breadcrumb>Datenbanken|Datenbanken</yambe:breadcrumb>-->
<div class='noprint'><yambe:breadcrumb>Datenbanken|Datenbanken</yambe:breadcrumb></div>
{{Kurzform|In diesem Lernschritt werden die Beziehungen zwischen Tabellen einer relationalen Datenbank erläutert. Dabei darf nicht außer Acht gelassen werden, dass sowohl der Aufbau der Tabellen, als auch die Art der Beziehung zwischen den Tabellen von den Aufgaben, die der Datenbank zu Grunde liegen, abhängen.}}
{{Kurzform|In diesem Lernschritt werden die Beziehungen zwischen Tabellen einer relationalen Datenbank erläutert. Dabei darf nicht außer Acht gelassen werden, dass sowohl der Aufbau der Tabellen, als auch die Art der Beziehung zwischen den Tabellen von den Aufgaben, die der Datenbank zu Grunde liegen, abhängen.}}


Zeile 7: Zeile 7:
==Beziehungen zwischen Tabellen==
==Beziehungen zwischen Tabellen==


Nachdem verschiedene Tabellen zu den einzelnen Themen angelegt wurden (siehe [[Tabellen in Datenbanken]]), muss festgelegt werden, wie diese Informationen wieder zusammengeführt werden können. Der erste Schritt in diesem Prozess besteht darin, Beziehungen zwischen den Tabellen zu definieren. Anschließend können Abfragen, Formulare und Berichte erstellt werden, um die Informationen aus verschiedenen Tabellen gleichzeitig anzuzeigen.  
Unterschiedliche Datenbank-Modelle zielen auf unterschiedliche Nutzungsaspekte ab. Datenbanken von Suchmaschinen z.B. arbeiten zwar auch mit Tabellen (Listen), die jedoch womöglich schnell Ergebnisse in kürzester Zeit, bei gleichzeitig hoher Anzahl von Anfragen liefern müssen. Redundanzen schaden in diesem Fall wenig und auch Vollständigkeit des Ergebnisses ist nicht gefragt und auch kaum nachvollziehbar.
 
Relationale Datenbanken müssen Nachteile bei der Verarbeitung von Massendaten in kürzester Zeit hinnehmen, erheben aber Anspruch auf Vollständigkeit der Wiedergabe abgebildeter Entitäten, sind von unterschiedlichen Anwendungen gleichzeitig nutzbar und zielen vor allem auf Reduktion von Redundanzen ab. Die Regeln zur Bildung derart redundanzarmer Tabellensysteme sind in den [[Normalformen]] festgeschrieben.
 
Die von Redundanzen befreiten Tabellen einer relationalen Datenbank werden über ihre Schlüsselfelder verbunden, indem identifizierende Schlüssel (Primärschlüssel) einer Tabelle auf nicht identifizierende Schlüssel (Fremdschlüssel) anderer Tabellen verweisen. Dadurch entsteht eine Netz von Beziehungen zwischen den Tabellen einer Datenbank.


==Funktionsweise von Schlüsseln==
==Funktionsweise von Schlüsseln==


Aus gleichartigen Objekten und deren Attributen werden '''Objektklassen''' (Objekttypen, Entityklassen) gebildet. Eine '''Datei''' bildet eine Objektklasse ab; sie besteht aus einem oder mehreren Datensätzen. Jenes Feld oder jene Felder, mit denen Objekte einer Objektklasse identifiziert werden können, werden '''Schlüssel''' (Schlüsselfeld/er) genannt. Sind Schlüssel aus mehreren Feldern zusammengesetzt, werden sie als '''Kombinationsschlüssel''' bezeichnet.  
Aus gleichartigen Objekten und deren Attributen werden '''Objektklassen''' (Objekttypen, Entityklassen) gebildet. Eine '''Datei''' bildet eine Objektklasse ab; sie besteht aus einem oder mehreren Datensätzen. Jenes Feld oder jene Felder, mit denen Objekte einer Objektklasse eindeutig identifiziert werden können, werden '''Schlüssel''' (Schlüsselfeld/er) genannt. Sind Schlüssel aus mehreren Feldern zusammengesetzt, werden sie als '''Kombinationsschlüssel''' bezeichnet.  


[[Bild:Attribute_und_schluessel.gif]]
[[Bild:Attribute_und_schluessel.gif]]


Ein '''Primärschlüssel''' vermag genau einen und nur einen Datensatz zu identifizieren. In unserem Beispiel ist dies die pro Buch vergebene Buchnummer ''Nr''. Bisweilen werden auch '''Sekundärschlüssel''' definiert, die allerdings dadurch charakterisiert sind, dass sie sich nicht zur Identifizierung genau eines Satzes eignen, sondern Datensätze mit gleichen Teil-Eigenschaften in eine Klasse zusammenfassen. Im vorliegenden Beispiel ist das Feld ''Verlag'' ein Sekundärschlüssel, der bei Anwendung alle Bücher eines bestimmten Verlages zu einer Klasse zusammenfasst.
Ein '''Primärschlüssel''' vermag genau einen und nur einen Datensatz zu identifizieren. In unserem Beispiel ist dies die pro Buch vergebene, fortlaufende Buchnummer ''Nr''. Manchmal werden auch '''Sekundärschlüssel''' definiert, die allerdings dadurch charakterisiert sind, dass sie sich nicht zur Identifizierung genau eines Objektes (hier: Buches) eignen, sondern Datensätze mit gleichen Eigenschaften in eine Klasse zusammenfassen. Im vorliegenden Beispiel ist das Feld ''Verlag'' ein Sekundärschlüssel, der wenn er zur Anwendung kommt, alle Bücher eines bestimmten Verlages zu einer Klasse zusammenfasst.


Welche Objektklassen im konkreten Fall zu bilden sind, welche Eigenschaften und deren Datentypen in den Feldern (Spalten) gewählt werden, hängt ausschließlich von den Erfordernissen der gestellten Aufgaben ab.
Welche Objektklassen im konkreten Fall zu bilden sind, welche Eigenschaften und deren Datentypen in den Feldern (Spalten) gewählt werden, hängt ausschließlich von den Erfordernissen der gestellten Aufgaben an die Datenbank ab.


==Funktionsweise von Beziehungen==
==Funktionsweise von Beziehungen==


Angenommen, es müssen Felder aus fünf Tabellen so koordiniert werden, dass Informationen zu ein und derselben Bestellung angezeigt werden - diese Koordination wird durch Beziehungen zwischen den Tabellen erreicht. Eine Beziehung funktioniert durch übereinstimmende Daten in Schlüsselfeldern; normalerweise ein Feld, das in beiden Tabellen denselben Namen besitzt.
Damit eine relationale Datenbank ausreichend Daten zur Erfüllung gestellter Aufgaben liefern kann, ist im Regelfall die Auswertung mehrerer Tabellen notwendig. Um eine Rechnung im vorliegenden Übungsbeispiel zu erstellen, sind Daten aus den Tabellen (bzw. entsprechenden Entitäten) Kunde, Auftrag, Auftragsposition und Buch erforderlich. Da die genannten Tabellen jeweils Daten über alle Kunden, alle Aufträge, usw. enthalten, gilt es jene '''Menge an Daten zu selektieren''', die den Erfordernissen einer Rechnung über einen bestimmten Auftrag eines bestimmten Kunden entsprechen. Die Selektion der entsprechenden Teilmenge an Daten wird durch Verbindung der relevanten Tabellen über die Schlüsselfelder, in Kombination mit Einschränkungen auf die gesuchten Entitäten, realisiert.


In den meisten Fällen stellen diese übereinstimmenden Felder den Primärschlüssel in der einen Tabelle dar, der einen eindeutigen Bezeichner für jeden Datensatz angibt, und einen Fremdschlüssel in der anderen Tabelle.
Eine Beziehung zwischen den Tabellen wird durch übereinstimmende Daten in den Schlüsselfeldern (jeweils der Primärschlüssel einer Tabelle mit Fremdschlüsseln in anderen Tabellen) definiert. Im Nachfolgenden Beispiel werden die Tabellen "Kunde" und "Auftrag" über das Primär- und Fremdschlüsselfeld mit der Bezeichnung "Kundennummer" verbunden.


Einzelnen Kunden können z. B. Aufträge zugeordnet werden, indem eine Beziehung zwischen den Tabellen ''Kunde'' und ''Auftrag'' über das in beiden Tabellen vorhandene Feld ''Kundennummer'' hergestellt wird. So geht aus dem Beispiel unten hervor, dass Frau Elisabeth Erlach mit der Kundennummer 37 am 21.12.2002 den Auftrag mit der Nr. 1223445 ausgelöst hat.


{| border="1"
{| border="1"
Zeile 60: Zeile 63:
| 1010
| 1010
|}
|}


{| border="1"
{| border="1"
Zeile 68: Zeile 72:
! Auftragsnummer
! Auftragsnummer
|-
|-
| 21.12.2002
| 30.03.2000
| 37
| 38
| 1223445
| 254
|-
|-
| 29.12.2002
| 02.05.2000
| 40
| 38
| 23847
| 345
|-
|-
| 13.01.2003
| 13.01.2003
Zeile 85: Zeile 89:
|}
|}


Es gibt drei Grundtypen von Beziehungen, mit denen wir arbeiten werden: die 1:1-, 1:n- und n:m-Beziehung.
Es gibt drei Typen von Beziehungen, die 1:1-, 1:n- und n:m-Beziehung.


==1:1-Beziehung==
==1:1-Beziehung==


In einer 1:1-Beziehung ist '''jedem Datensatz''' in Tabelle ''A'' nur '''ein passender Datensatz''' in Tabelle ''B'' zugeordnet und umgekehrt. Diese Art von Beziehung ist '''nicht sehr häufig''', weil die meisten Informationen, die auf diese Weise in Beziehung stehen, sich in einer Tabelle befinden. Man kann eine 1:1-Beziehung z. B. verwenden, um eine Tabelle mit vielen Feldern zu teilen, um einen Teil der Tabelle aus Gründen der Zugriffsrechte abzutrennen oder um Informationen zu speichern, die sich nur auf eine Untergruppe der Haupttabelle beziehen.
In einer 1:1-Beziehung ist '''jedem Datensatz''' in Tabelle ''A'' nur '''ein passender Datensatz''' in Tabelle ''B'' zugeordnet. Diese Art von Beziehung hat eine untergeordnete Bedeutung, denn den Regeln der Normalformen entsprechend müssten alle Attribute, die eine Entität beschreiben, in einer Tabelle versammelt sein.
 
1:1-Beziehung werden z. B. dennoch verwenden, um eine Tabelle mit sehr vielen Feldern zu teilen, oder um einen Teil der Tabelle aus Gründen dezentraler Speicherung oder unterschiedlicher Zugriffsrechte wegen, abzutrennen.


==1:n-Beziehung==
==1:n-Beziehung==


Eine 1:n-Beziehung ist der '''häufigste Beziehungstyp'''. In einer 1:n-Beziehung können '''einem Datensatz''' in Tabelle ''A'' '''mehrere passende Datensätze''' in Tabelle ''B'' zugeordnet sein, aber einem Datensatz in Tabelle ''B'' ist nie mehr als ein Datensatz in Tabelle ''A'' zugeordnet. Beispiel: Ein Kunde kann mehrere Aufträge erteilen, jedoch kann auf einem Auftrag nur ein Kunde stehen.
Die 1:n-Beziehung ist der häufigste Beziehungstyp und damit auch der Standardfall. In der 1:n-Beziehung werden '''einem Datensatz''' in Tabelle ''A'' '''mehrere Datensätze''' in Tabelle ''B'' zugeordnet. Aber einem Datensatz in Tabelle ''B'' ist nie mehr als ein Datensatz in Tabelle ''A'' zugeordnet. Beispiel: Ein Kunde kann mehrere Aufträge erteilen, jedoch kann ein Auftrag nur von einem Kunde stammen.


==m:n-Beziehung==
==m:n-Beziehung==


In einer m:n-Beziehung können '''jedem Datensatz''' in Tabelle ''A'' '''mehrere passende Datensätze''' in Tabelle ''B'' zugeordnet sein '''und umgekehrt'''. Dies ist nur möglich, indem eine dritte Tabelle definiert wird (die als Verbindungstabelle bezeichnet wird), deren Primärschlüssel aus zwei Feldern besteht: den Fremdschlüsseln aus den Tabellen ''A'' und ''B''. Eine m:n-Beziehung besteht eigentlich aus zwei 1:n-Beziehungen mit einer dritten Tabelle, deren Primärschlüssel aus zwei Feldern besteht und zwar den Fremdschlüsseln aus den beiden anderen Tabellen.
In einer m:n-Beziehung können '''jedem Datensatz''' in Tabelle ''A'' '''mehrere Datensätze''' in Tabelle ''B'' zugeordnet sein '''und umgekehrt'''. Dieses Phänomen stammt aus der Natur der Sache.
 
Einer konstruierten Vorstellung entsprechend, ist das Verhältnis zwischen Aufträgen und Büchern eine n:m Beziehung. Viele (n) Aufträge enthalten ebenfalls viele (m) Bücher. Eine direkte Zuordnung zwischen Aufträgen und Büchern ist formal nur möglich, wenn die Entität "Auftragspositionen" dazwischen installiert wird. Die Beziehungslogik lautet dann:
 
Ein Auftrag enthält (hoffentlich) viele (n) Bücher (1:n)
Jedes Buch ist (hoffentlich) in vielen (n) Aufträgen enthalten (1:n)
 
Die Entitäten (m) Aufträge und (n) Bücher werden über die zusätzlich eingeführte Entität "Auftragspositionen" mittels zwei 1:n-Beziehungen verbunden. Derart installierte Tabellen (geschaffene Entitäten) haben ein unverkennbares Merkmal: ihr Primärschlüssel besteht aus zwei geerbten Fremdschlüsseln aus den jeweils umgebenden Tabellen.
 
Nachfolgende Darstellung zeigt die Struktur der Tabellen: Auftrag, Auftragsposition und Buch sowie deren 1:n-Beziehungen, dargestellt mittels einfach (1) bzw. doppelt (n) gerichteten Kanten.


[[Datei:Datenmodell_4.gif]]
[[Datei:Datenmodell_4.gif]]


Beispiel: Ein Auftrag kann über mehrere Bücher gehen, jedes Buch kann auch in verschiedenen Aufträgen stehen.
Diese Maßnahme führt alle Beziehungen zwischen Tabellen in relationalen Datenbanken auf 1:n-Beziehungen zurück.


==Grafische Darstellung von Beziehungen==
==Grafische Darstellung von Beziehungen==
Zeile 107: Zeile 122:
Den vorliegenden Ausführungen liegt eine Beispieldatenbank zugrunde, die einerseits als Modell für Beispiele zu den behandelten Themen dient, andererseits als interaktive Trainingsdatenbank dort eingesetzt wird, wo SQL-Anweisungen nicht nur erklärt, sondern auch zur praktischen Übung angeboten werden.
Den vorliegenden Ausführungen liegt eine Beispieldatenbank zugrunde, die einerseits als Modell für Beispiele zu den behandelten Themen dient, andererseits als interaktive Trainingsdatenbank dort eingesetzt wird, wo SQL-Anweisungen nicht nur erklärt, sondern auch zur praktischen Übung angeboten werden.


Zur Darstellung von Tabellen in einer relationalen Datenbank und deren Beziehungen untereinander gibt es zahlreiche praktizierte Formen. Manche wurden im Laufe der Zeit standardisiert, manche frei erfunden. Bei der nachfolgenden Darstellung handelt es sich um eine frei erfundene, vereinfachte Form, die zum Ziel hat, Beziehungen zwischen Tabellen in allgemein verständlicher Form zu visualisieren. Die Namen der Tabellen sind durch Fettschrift hervorgehoben, die Attribute (Felder) der Tabellen sind eingerückt unter der Bezeichnung der Tabelle angeführt. Primärschlüsselfelder sind unterstrichen. Die einfache Pfeilspitze an den Kanten zwischen den Tabellen deuten auf die "1" von "1:n"-Beziehungen hin, die doppelten Pfeilspitzen auf das "n".
Bei der nachfolgenden Darstellung handelt es sich um eine frei erfundene, vereinfachte Form, die zum Ziel hat, Beziehungen zwischen Tabellen in allgemein verständlicher Form zu visualisieren. Die Namen der Tabellen sind durch Fettschrift hervorgehoben, die Attribute (Felder) der Tabellen sind eingerückt unter der Bezeichnung der Tabelle angeführt. Primärschlüsselfelder sind unterstrichen. Die einfache Pfeilspitze an den Kanten zwischen den Tabellen deuten auf die "1" von "1:n"-Beziehungen hin, die doppelten Pfeilspitzen auf das "n".
 
Das Zustandekommen der dargestellten Tabellen und ihrer Beziehungen ist Gegenstand des Datenbank-Entwurfsprozesses, der an dieser Stelle nicht zum Gegenstand gemacht wird. Wie diesem Beispiel zu entnehmen ist, werden alle Tabellen nach erfolgtem Entwurfsprozess mit 1:n-Beziehungen verbunden.


Das Zustandekommen der dargestellten Tabellen und ihrer Beziehungen ist Gegenstand des Datenbank-Entwurfsprozesses, der an dieser Stelle nicht zum Gegenstand gemacht wird. Wie diesem Beispiel zu entnehmen ist, werden Tabellen nach erfolgtem Entwurfsprozess in der Regel mit 1:n-Beziehungen verbunden.
Das Arbeiten, insbesondere das Formulieren von Datenbank-Abfragen an eine konkrete Datenbank erfordert die genaue Kenntnis des Aufbaues aller Tabellen und deren Beziehungen untereinander.


[[Bild:Datenmodell_beispieldatenbank.gif]]
[[Bild:Datenmodell_beispieldatenbank.gif]]


== Zitiervorschlag ==
== Zitiervorschlag ==
''Mittendorfer'' in ''Pils'', Informationsverarbeitung I (27. 2. 2012), Beziehungen in Datenbanken (mussswiki.idv.edu/iv1)
''Mittendorfer'' in ''Höller'', Informationsverarbeitung I, Beziehungen in Datenbanken (mussswiki.idb.edu/iv1)

Aktuelle Version vom 1. Oktober 2018, 13:58 Uhr

<yambe:breadcrumb>Datenbanken|Datenbanken</yambe:breadcrumb>
In diesem Lernschritt werden die Beziehungen zwischen Tabellen einer relationalen Datenbank erläutert. Dabei darf nicht außer Acht gelassen werden, dass sowohl der Aufbau der Tabellen, als auch die Art der Beziehung zwischen den Tabellen von den Aufgaben, die der Datenbank zu Grunde liegen, abhängen.


Beziehungen zwischen Tabellen

Unterschiedliche Datenbank-Modelle zielen auf unterschiedliche Nutzungsaspekte ab. Datenbanken von Suchmaschinen z.B. arbeiten zwar auch mit Tabellen (Listen), die jedoch womöglich schnell Ergebnisse in kürzester Zeit, bei gleichzeitig hoher Anzahl von Anfragen liefern müssen. Redundanzen schaden in diesem Fall wenig und auch Vollständigkeit des Ergebnisses ist nicht gefragt und auch kaum nachvollziehbar.

Relationale Datenbanken müssen Nachteile bei der Verarbeitung von Massendaten in kürzester Zeit hinnehmen, erheben aber Anspruch auf Vollständigkeit der Wiedergabe abgebildeter Entitäten, sind von unterschiedlichen Anwendungen gleichzeitig nutzbar und zielen vor allem auf Reduktion von Redundanzen ab. Die Regeln zur Bildung derart redundanzarmer Tabellensysteme sind in den Normalformen festgeschrieben.

Die von Redundanzen befreiten Tabellen einer relationalen Datenbank werden über ihre Schlüsselfelder verbunden, indem identifizierende Schlüssel (Primärschlüssel) einer Tabelle auf nicht identifizierende Schlüssel (Fremdschlüssel) anderer Tabellen verweisen. Dadurch entsteht eine Netz von Beziehungen zwischen den Tabellen einer Datenbank.

Funktionsweise von Schlüsseln

Aus gleichartigen Objekten und deren Attributen werden Objektklassen (Objekttypen, Entityklassen) gebildet. Eine Datei bildet eine Objektklasse ab; sie besteht aus einem oder mehreren Datensätzen. Jenes Feld oder jene Felder, mit denen Objekte einer Objektklasse eindeutig identifiziert werden können, werden Schlüssel (Schlüsselfeld/er) genannt. Sind Schlüssel aus mehreren Feldern zusammengesetzt, werden sie als Kombinationsschlüssel bezeichnet.

Ein Primärschlüssel vermag genau einen und nur einen Datensatz zu identifizieren. In unserem Beispiel ist dies die pro Buch vergebene, fortlaufende Buchnummer Nr. Manchmal werden auch Sekundärschlüssel definiert, die allerdings dadurch charakterisiert sind, dass sie sich nicht zur Identifizierung genau eines Objektes (hier: Buches) eignen, sondern Datensätze mit gleichen Eigenschaften in eine Klasse zusammenfassen. Im vorliegenden Beispiel ist das Feld Verlag ein Sekundärschlüssel, der wenn er zur Anwendung kommt, alle Bücher eines bestimmten Verlages zu einer Klasse zusammenfasst.

Welche Objektklassen im konkreten Fall zu bilden sind, welche Eigenschaften und deren Datentypen in den Feldern (Spalten) gewählt werden, hängt ausschließlich von den Erfordernissen der gestellten Aufgaben an die Datenbank ab.

Funktionsweise von Beziehungen

Damit eine relationale Datenbank ausreichend Daten zur Erfüllung gestellter Aufgaben liefern kann, ist im Regelfall die Auswertung mehrerer Tabellen notwendig. Um eine Rechnung im vorliegenden Übungsbeispiel zu erstellen, sind Daten aus den Tabellen (bzw. entsprechenden Entitäten) Kunde, Auftrag, Auftragsposition und Buch erforderlich. Da die genannten Tabellen jeweils Daten über alle Kunden, alle Aufträge, usw. enthalten, gilt es jene Menge an Daten zu selektieren, die den Erfordernissen einer Rechnung über einen bestimmten Auftrag eines bestimmten Kunden entsprechen. Die Selektion der entsprechenden Teilmenge an Daten wird durch Verbindung der relevanten Tabellen über die Schlüsselfelder, in Kombination mit Einschränkungen auf die gesuchten Entitäten, realisiert.

Eine Beziehung zwischen den Tabellen wird durch übereinstimmende Daten in den Schlüsselfeldern (jeweils der Primärschlüssel einer Tabelle mit Fremdschlüsseln in anderen Tabellen) definiert. Im Nachfolgenden Beispiel werden die Tabellen "Kunde" und "Auftrag" über das Primär- und Fremdschlüsselfeld mit der Bezeichnung "Kundennummer" verbunden.


Auszug aus der Tabelle Kunde
Kundennummer Vorname Nachname Straße PLZ
37 Elisabeth Erlach Glimpflinger Str. 13 5020
38 Hans Hinterholzer Franziskanerweg 9 1040
39 Hans-Peter Wesp Wüstenrotstraße 23 5201
40 Konrad Gampe Berggasse 25 1010


Auszug aus der Tabelle Auftrag
Auftragsdatum Kundennummer Auftragsnummer
30.03.2000 38 254
02.05.2000 38 345
13.01.2003 34 12743
15.02.2003 20 3612873

Es gibt drei Typen von Beziehungen, die 1:1-, 1:n- und n:m-Beziehung.

1:1-Beziehung

In einer 1:1-Beziehung ist jedem Datensatz in Tabelle A nur ein passender Datensatz in Tabelle B zugeordnet. Diese Art von Beziehung hat eine untergeordnete Bedeutung, denn den Regeln der Normalformen entsprechend müssten alle Attribute, die eine Entität beschreiben, in einer Tabelle versammelt sein.

1:1-Beziehung werden z. B. dennoch verwenden, um eine Tabelle mit sehr vielen Feldern zu teilen, oder um einen Teil der Tabelle aus Gründen dezentraler Speicherung oder unterschiedlicher Zugriffsrechte wegen, abzutrennen.

1:n-Beziehung

Die 1:n-Beziehung ist der häufigste Beziehungstyp und damit auch der Standardfall. In der 1:n-Beziehung werden einem Datensatz in Tabelle A mehrere Datensätze in Tabelle B zugeordnet. Aber einem Datensatz in Tabelle B ist nie mehr als ein Datensatz in Tabelle A zugeordnet. Beispiel: Ein Kunde kann mehrere Aufträge erteilen, jedoch kann ein Auftrag nur von einem Kunde stammen.

m:n-Beziehung

In einer m:n-Beziehung können jedem Datensatz in Tabelle A mehrere Datensätze in Tabelle B zugeordnet sein und umgekehrt. Dieses Phänomen stammt aus der Natur der Sache.

Einer konstruierten Vorstellung entsprechend, ist das Verhältnis zwischen Aufträgen und Büchern eine n:m Beziehung. Viele (n) Aufträge enthalten ebenfalls viele (m) Bücher. Eine direkte Zuordnung zwischen Aufträgen und Büchern ist formal nur möglich, wenn die Entität "Auftragspositionen" dazwischen installiert wird. Die Beziehungslogik lautet dann:

Ein Auftrag enthält (hoffentlich) viele (n) Bücher (1:n) Jedes Buch ist (hoffentlich) in vielen (n) Aufträgen enthalten (1:n)

Die Entitäten (m) Aufträge und (n) Bücher werden über die zusätzlich eingeführte Entität "Auftragspositionen" mittels zwei 1:n-Beziehungen verbunden. Derart installierte Tabellen (geschaffene Entitäten) haben ein unverkennbares Merkmal: ihr Primärschlüssel besteht aus zwei geerbten Fremdschlüsseln aus den jeweils umgebenden Tabellen.

Nachfolgende Darstellung zeigt die Struktur der Tabellen: Auftrag, Auftragsposition und Buch sowie deren 1:n-Beziehungen, dargestellt mittels einfach (1) bzw. doppelt (n) gerichteten Kanten.

Diese Maßnahme führt alle Beziehungen zwischen Tabellen in relationalen Datenbanken auf 1:n-Beziehungen zurück.

Grafische Darstellung von Beziehungen

Den vorliegenden Ausführungen liegt eine Beispieldatenbank zugrunde, die einerseits als Modell für Beispiele zu den behandelten Themen dient, andererseits als interaktive Trainingsdatenbank dort eingesetzt wird, wo SQL-Anweisungen nicht nur erklärt, sondern auch zur praktischen Übung angeboten werden.

Bei der nachfolgenden Darstellung handelt es sich um eine frei erfundene, vereinfachte Form, die zum Ziel hat, Beziehungen zwischen Tabellen in allgemein verständlicher Form zu visualisieren. Die Namen der Tabellen sind durch Fettschrift hervorgehoben, die Attribute (Felder) der Tabellen sind eingerückt unter der Bezeichnung der Tabelle angeführt. Primärschlüsselfelder sind unterstrichen. Die einfache Pfeilspitze an den Kanten zwischen den Tabellen deuten auf die "1" von "1:n"-Beziehungen hin, die doppelten Pfeilspitzen auf das "n".

Das Zustandekommen der dargestellten Tabellen und ihrer Beziehungen ist Gegenstand des Datenbank-Entwurfsprozesses, der an dieser Stelle nicht zum Gegenstand gemacht wird. Wie diesem Beispiel zu entnehmen ist, werden alle Tabellen nach erfolgtem Entwurfsprozess mit 1:n-Beziehungen verbunden.

Das Arbeiten, insbesondere das Formulieren von Datenbank-Abfragen an eine konkrete Datenbank erfordert die genaue Kenntnis des Aufbaues aller Tabellen und deren Beziehungen untereinander.

Zitiervorschlag

Mittendorfer in Höller, Informationsverarbeitung I, Beziehungen in Datenbanken (mussswiki.idb.edu/iv1)