Hauptmenü

Untermenü

MySQL - Normalisierung - 1. Normalform

1. Bedingung

Eine Datenbank (genauer gesagt Relation) befindet sich in der ersten Normalform (1NF), wenn in keinem Feld innerhalb der Tabellen mehrere Werte eingetragen sind.

2. Unser Beispiel

Dort haben wir ein Feld telefon_fax, das mehrere Einträge enthält. Das ist ein Verstoß gegen die 1NF. Dasselbe gilt für die Adresse und den Hersteller. Das Prinzip nennt sich "atomar".

Atomare Attributwerte

Wow, klingt wie eine Mischung aus thermonuklearem Krieg und erster Vorlesung "Einführung in die theoretische Mathematik für Informatiker". Die Erklärung selber ist sehr einfach. Atomar bedeutet in diesem Zusammenhang einzigartig und Attributwerte sind die Daten, die einzelne Spalten einer Tabelle enthalten. Es werden also z.B. nicht die Straße und der Ort in einem Feld gespeichert, sondern in zweien.

3. Erste Verbesserung

Wir müssen die Adressdaten der Kunden und Hersteller in separate Tabellen auslagern und in entsprechenden Feldern verteilen. Dabei bekommt jeder Datensatz wieder eine eindeutige ID (Identifier).

Tabelle 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        |
+--+------------+-------+-------+------------+-----+------------+

Tabelle 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    |
+--+-----------+-------+-------+------------+-----+------------+

4. Ein wichtiger Hinweis

Dies ist ein elementares Prinzip der Normalisierung und sollte daher ständig(!) beachtet werden. Leider gibt es unter Anderem in meinem schon mehrmals erwähntem Lieblingsforum immer noch genug Beispiele, wo dagegen verstoßen wurde. Und auch die Ausreden sind immer dieselben.

"Das sind noch Altlasten. Das hat jemand anderes gemacht. Ich muss das so übernehmen und kann nichts ändern" [Quelle: verschieden Anfänger in diversen Foren]

Njet!

So drücken sich Russen aus, wenn sie sagen wollen, nee so geht das schon mal gar nicht. Es gab sogar mal einen Außenminister, dem man diesen Ausdruck als Spitznamen verpasst hat. Weil er halt unnachgiebig war. Und das solltet ihr hier auf jeden Fall beherzigen. Wenn ihr es mit einer Datenbank zu tun bekommt, die bereits gegen die erste Normalform verstößt, so lasst entweder die Finger davon oder besteht auf einer kompletten Umstrukturierung. Alles andere ist Murks und bringt euch in des Teufels Küche!

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