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|Kruppstr. 57|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.
pr_id
->id
der Tabelle produktkd_id
->id
der Tabelle kundehr_id
->id
der Tabelle hersteller
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