Hauptmenü

Untermenü

MySQL - Normalisierung - Eine normalisierte Datenbank

1. Da fehlt noch was

Bei der Erläuterung der zweiten Normalform habe ich noch nichts zur Tabelle Bestellungen gesagt, da es dort keine Rolle spielte. Darum hole ich das hier nach. Bis jetzt haben wir drei Tabellen und zwar produkt, kunde und hersteller. Um nun eine Beziehung/Relation zu den Bestellungen herzustellen, müssen wir die IDs der einzelnen Datensätze zusammen mit der gewünschten Anzahl in einer weiteren Tabelle zusammenfassen. Die Sache mit den Paketlieferanten vergessen wir erst mal.

2. Unsere bisherigen Tabellen

produkt


+--+------------+------+------+
|id|produkt     |preis |nummer|
+--+------------+------+------+
| 1|Schlagbohrer|199.95|1000-1|
| 2|Zement      |  5.95|1000-2|
| 3|Kneifzange  19.95|1000-3|
| 4|Brecheisen  49.95|1000-4|
| 5|Hammer      19.95|1000-5|
+--+------------+------+------+

kunde


+--+------------+-------+-------+------------+-----+------------+
|id|doktor      |telefon|fax    |strasse     |plz  |ort         |
+--+------------+---------------+------------+-----+------------+
| 1|Blutgesicht |123-550|123-551|Kariesweg 1 |12345|Zahnstein   |
| 2|Quälstein   |456-777|456-778|Lochpfad 23 |23458|Schmerzstadt|
| 3|Eisenfaust  |789-250|789-251|Zahnwurzel 3|87454|Dolomostadt |
| 4|Rostzange   |234-100|234-101|Peinweg 5   |74512|Reissheim   |
| 5|Frankenstein|567-200|567-201|Am Dom 5    |50670|Köln        |
+--+------------+-------+-------+------------+-----+------------+

hersteller


+--+-----------+-------+-------+------------+-----+------------+
|id|zulieferer |telefon|fax    |strasse     |plz  |ort         |
+--+-----------+---------------+------------+-----+------------+
| 1|Hilti      |111-345|111-346|Bohrweg 25  |70001|Keine Ahnung|
| 2|Hoch Tief|211-100|211-110|Schlammweg 2|50041|Wasweissich |
| 3|Eisen-Karl |504-561|504-562|Kruppstr57|43254|Bochum      |
| 4|Stahl AG   |600-400|600-410|Alfred-Weg 4|47847|Dortmund    |
+--+-----------+-------+-------+------------+-----+------------+

3. Unsere angepasste Tabelle bestellung


+--+------+-----+-----+-----+
|id|anzahl|pr_id|kd_id|hr_id|
+--+------+-----+-----+-----+
| 1|1     |1    |1    |1    |
| 2|5     |2    |2    |2    |
| 3|3     |3    |3    |3    |
| 4|7     |4    |4    |3    |
| 5|4     |5    |5    |4    |
| 6|9     |2    |3    |2    |
| 7|2     |4    |1    |3    |
+--+------+-----+-----+-----+

Wir legen drei neue Spalten an, in denen wir die IDs als so genannte Fremdschlüssel hinterlegen. Ach ja, so ein Konstrukt nennt man auch Relationstabelle, da sie die Beziehungen der Datensätze untereinander abbildet.

Ein Hinweis

Da dies nur ein erster Einstieg in die Materie ist, bin ich so vorgegangen. Es gibt auch noch andere Möglichkeiten. Aber darauf werde ich erst im Tutorial Advanced MySQL eingehen.

Und wie man nun Tabelle zusammenführt, erfahrt ihr später unter dem Abschnitt Joins. Vorher müssen wir uns erst noch mit der Abfragesprache SQL beschäftigen.

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