PHP/MySQL - Praxistutorial 3 - Das Prinzip
1. Die Abschnitte
- Überblick
- Das Prinzip
- Theta/Inner Join
- Left/Right Join
- Zusatzbedingungen
- Relationstabellen
- Mehrere Tabellen verbinden
2. Vorab
... spielt ihr den aktuellen Dump ein (files/dump.sql
) und dann schaut euch die Datenbank im MySQL-Frontend eurer
Wahl an. Dann werdet ihr feststellen, dass sich im Vergleich zu den beiden ersten Tutorials einiges geändert hat. Und nicht nur
dort.
3. Die Änderungen im Detail
Im Frontend
Wenn ihr jetzt den Basiscode im Browser aufruft, so fällt euch sicher auf, dass in der linken Navigation der Punkt "Bestellungen" hinzugekommen ist. Und im rechten Bereich gibt es nur noch oben einen Link namens "Überblick", wenn man links auf einen Punkt klickt.
Ach ja, bei den Bestellungen bekommt ihr nur ein paar Zahlen zu sehen. Das sieht ziemlich sinnfrei aus und ist es auch. Allerdings interessiert uns das nicht. Zum einen, weil ich nicht vorgreifen möchte und zum anderen, weil wir die Tabellen eh in anderen Dateien verknüpfen. Das geschieht dann über besagten Link "Überblick".
In der Datenbank
Hier hat sich eine ganze Menge getan. Es sind zwei Tabellen hinzugekommen, bestellung
und zahlungsmoral
.
Außerdem wurde die Tabelle produkt
um die Spalte hs_link
sowie kunde
um zm_link
erweitert.
Und die schauen wir uns jetzt genauer an.
4. Fremdschlüssel
Bei den beiden neuen Spalten handelt es sich um so genannte Foreign Keys. So verweist zum Beispiel die Spalte hs_link
in der Tabelle produkt
auf den Primärschlüssel (id
) der Tabelle hersteller
. Allerdings
ist die Bezeichnung ein wenig unglücklich, da wir hier ohne FOREIGN KEY
arbeiten werden. Das kommt in einem späteren
Tutorial. Hier zeige ich erst mal nur das Konzept.
Tabelle 'produkt' Tabelle 'hersteller'
+----+--------------+---------+ +----+------------+
| id | produkt | hs_link | | id | zulieferer |
+----+--------------+---------+ +----+------------+
| 1 | Schlagbohrer | 1 | -> | 1 | Hilti |
+----+--------------+---------+ +----+------------+
Dasselbe gilt auch für die Spalte zm_link
in der Tabelle kunde
, die auf den entsprechenden Eintrag in der
Tabelle zahlungsmoral
verweist.
Tabelle 'kunde' Tabelle 'zahlungsmoral'
+----+-----------+---------+ +----+-------------+
| id | doktor | zm_link | | id | art |
+----+-----------+---------+ +----+-------------+
| 2 | Quälstein | 3 | -> | 3 | mittelmäßig |
+----+-----------+---------+ +----+-------------+
Die Tabelle bestellung
... schaut ihr euch am besten erst gar nicht an. Denn die besteht (fast) nur aus Fremdschlüsseln und sieht im Moment für euch eh wie böhmische Dörfer aus. Das Prinzip ist dasselbe, nur ein wenig komplizierter. Darum gehe ich darauf auch erst zum Schluss ein.
5. Wichtig!
Bei dieser Vorgehensweise müsst ihr wissen, dass die so genannte referentielle Integrität, also die Beziehung verschiedener Datensätze über mehrere Tabellen, nicht vom RDMS (MySQL) übernommen wird. Darum müsst ihr euch selber kümmern. Es gibt zwar eine Lösungsmöglichkeit dafür, aber dazu komme ich irgendwann beim geplanten Punkt "Advanced MySQL".
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt