Hauptmenü

Untermenü

MySQL - Grundlagen - Relation

1. Jetzt wird es ganz wichtig!!!

Denn nun kommen wir zu dem elementaren Prinzip von relationalen Datenbanken. Also bisher habt ihr das gelernt. Eine Datenbank besteht aus einer oder mehreren Tabellen. Und es gibt eindeutige Schlüssel. Diese beiden Tatsachen bilden nun die Grundlage einer relationalen Datenbank.

2. Das Grundprinzip

In einer relationalen Datenbank kann man besagte Tabellen miteinander verknüpfen. Und zwar über Schlüssel. Dabei gibt es ein paar Grundregeln zu denen ich unter dem Punkt Normalisierung meinen Senf dazu gebe. Hier geht es erst mal nur um das Basiswissen.

Das Beispiel

Wir haben eine Tabelle mit Adressinformationen und eine mit Kontodaten. Und nun wollen wir zwischen den Datensätzen eine Beziehung (Relation) herstellen, also jeder Person ein Konto zuordnen.

Die Tabelle adressen


+--+-------+----------+--------------+-----+-----------+
|id|vorname|namen     |strasse       |plz  |ort        |
+--+-------+----------+--------------+-----+-----------+
| 1|Claudia|Mustermann|Musterstraße 0|12345|Musterstadt|
| 5|Dieter |Hinz      |Hinzweg 0     |45678|Hinzdorf   |
| 9|Peter  |Kunz      |Kunzpfad 0    |67890|Kunzdorf   |
+--+-------+----------+--------------+-----+-----------+

Die Tabelle konten


+--+--------+----------+---+
|id|BLZ     |Kto.-Nr.  |adr|
+--+--------+----------+---+
||30020012|2407745128|1  |
|25|30025070|1509457845|5  |
|91|30040020|2407745128|9  |
+--+--------+----------+---+

3. Die Beziehung/Relation

... läuft in diesem Fall über die Spalte adr in der Tabelle konten. In ihr sind nämlich die eindeutigen IDs der Adressen abgelegt. So wissen wir also, dass zum Beispiel Claudias Kontonummer die erste in der Tabelle konten ist.

Illustration


+--+--------+----------+---+      +--+-------+----------+
|id|BLZ     |Kto.-Nr.  |adr|      |id|vorname|namen     |
+--+--------+----------+---+      +--+-------+----------+
||30020012|2407745128|1  | <--> | 1|Claudia|Mustermann|
|25|30025070|1509457845|5  | <--> | 5|Dieter |Hinz      |
|91|30040020|2407745128|9  | <--> | 9|Peter  |Kunz      |
+--+--------+----------+---+      +--+-------+----------+

Aber warum speichert man die Adress-ID in der Konten-Tabelle? Gute Frage. Es könnte zum Beispiel sein, dass man aus welchen Gründen auch immer, spezielle Bankleitzahlen sperren möchte. Zum Beispiel, weil es sich um eine deutsche Landesbank handelt und man fürchtet, dass die bald pleite ist. So könnte man ganz schnell alle Leute aussperren, die bei besagtem Institut ein Konto haben.

Anders herum

... ginge es natürlich auch. Das wäre im Moment dasselbe in grün. In diesem Fall verweist die Spalte kto in der Tabelle adressen auf die IDs der Tabelle konten.


+--+-------+----------+---+      +--+--------+----------+
|id|vorname|namen     |kto|      |id|BLZ     |Kto.-Nr.  |
+--+-------+----------+---+      +--+--------+----------+
| 1|Claudia|Mustermann|4  | <--> ||30020012|2407745128|
| 5|Dieter |Hinz      |25 | <--> |25|30025070|1509457845|
| 9|Peter  |Kunz      |91 | <--> |91|30040020|2407745128|
+--+-------+----------+---+      +--+--------+----------+ 

Aber wo setzt man denn nun den Verweis? In Tabelle X oder Y? Und was ist, wenn wir mehrere Tabellen miteinander verknüpfen wollen? Fragen über Fragen. Leider setzt das gewisse Überlegungen voraus, die sich nicht immer zu Beginn eines Projektes erschließen oder sich später als notwendig herausstellen. Gottlob gibt es da ein paar grundsätzliche Regeln, die man auf jeden Fall berücksichtigen sollte. Und die haben mit Datenbankdesign und der so genannten Normalisierung zu tun.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt