Dies ist eine alte Version des Dokuments!
Normalisierung beschreibt den Vorgang, Tabellen einer Datenbank dahingehend zu strukturieren, sodass sie keine vermeidbaren Redundanzen enthalten. Normalisierte Tabellen sorgen für eine konsistente und fehlerunanfällige Datenhaltung.
Ein Entwickler hat die Aufgabe bekommen, die Datenbank für das Wirtschaftssystem der Firma Failution zu implementieren. Die Firma möchte folgenden Informationen seiner Kunden speichern:
Der Entwurf des Entwicklers sieht wie folgt aus:
KND_Name | KND_Firma | KND_Adresse | KND_Notiz | KND_Notiz2 | BST_Datum | BST_Bezahlt | ART_1 | ART_2 |
---|---|---|---|---|---|---|---|---|
Max Mustermann | Mustermann Consulting | Musterstrasse 1, 12345 Musterstadt | 10.10.2010 | 1 | 10x Thin-Client BAER (1.6 Ghz,Sound,VGA,USB) 199.99 | 15x Thin-Client NP (1.0 Ghz,Sound,VGA+DVI,USB) 179.99 Auslauf | ||
Theodor Tester | Test-Solutions AG | Testweg 16, 55353 Testort | Offene Rechnung | 15.02.2011 | 1x Thin-Client BAER (1.6 Ghz,Sound,VGA,USB) 199.99 | |||
Theodor Tester | Test-Solutions AG | Testweg 16, 55353 Testort | Offene Rechnung | 15.02.2011 | 1x Thin-Client BAER (1.6 Ghz,Sound,VGA,USB) 199.99 |
Die erste Normalform liegt vor, wenn eine Tabelle die folgenden Bedingungen erfüllt:
Der oben angezeigt Entwurf erfüllt keine der drei Bedingungen - die Gründe sind:
Beherzigt man die oben genannten drei Regeln lässt sich das Konzept wie folgt überarbeiten:
ID | KND_Vorname | KND_Nachname | KND_Firma | KND_Strasse | KND_HausNr | KND_PLZ | KND_Ort | KND_Notiz | BST_Datum | BST_Bezahlt | ART_Anzahl | ART_Bez | ART_Details | ART_Auslauf | ART_Preis |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Max | Mustermann | Mustermann Consulting | Musterstrasse | 1 | 12345 | Musterstadt | 10.10.2010 | ja | 10 | Thin-Client BAER | 1.6 Ghz,Sound,VGA,USB | nein | 199.99 | |
2 | Max | Mustermann | Mustermann Consulting | Musterstrasse | 1 | 12345 | Musterstadt | 10.10.2010 | ja | 15 | Thin-Client NP | 1.0 Ghz,Sound,VGA+DVI,USB | ja | 179.99 | |
3 | Theodor | Tester | Test-Solutions AG | Testweg | 16 | 55353 | Testort | Offene Rechnung | 15.02.2011 | nein | 1 | Thin-Client BAER | 1.6 Ghz,Sound,VGA,USB | nein | 199.99 |
Was wurde geändert?
Die zweite Normalform liegt vor, wenn die folgenden Bedingungen erfüllt werden:
Diese Bedingungen werden vom aktuellen Entwurf nicht erfüllt:
ID | KND_Vorname | KND_Nachname | KND_Firma | KND_Strasse | KND_HausNr | KND_PLZ | KND_Ort | KND_Notiz | BST_Datum | BST_Bezahlt | ART_Anzahl | ART_Bez | ART_Details | ART_Auslauf | ART_Preis |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Max | Mustermann | Mustermann Consulting | Musterstrasse | 1 | 12345 | Musterstadt | 10.10.2010 | ja | 10 | Thin-Client BAER | 1.6 Ghz,Sound,VGA,USB | nein | 199.99 | |
2 | Max | Mustermann | Mustermann Consulting | Musterstrasse | 1 | 12345 | Musterstadt | 10.10.2010 | ja | 15 | Thin-Client NP | 1.0 Ghz,Sound,VGA+DVI,USB | ja | 179.99 | |
3 | Theodor | Tester | Test-Solutions AG | Testweg | 16 | 55353 | Testort | Offene Rechnung | 15.02.2011 | nein | 1 | Thin-Client BAER | 1.6 Ghz,Sound,VGA,USB | nein | 199.99 |
Es sind Spalten vorhanden, die nicht vom Primärschlüssel ID abhängig sind - so sind beispielsweise die Artikel keineswegs vom Primärschlüssel abhängig. Abgesehen davon, dass die Tabelle sehr unübersichtlich ist, werden Informationen mehrfach definiert (beispielsweise die Kunden- und Artikelinformationen) und sind somit anfällig für Anomalien.
Diese Tabelle muss in mehrere Tabellen aufgeteilt werden - ein korrekter Ansatz wäre:
Tabellen für:
KUNDEN | ||||||||
---|---|---|---|---|---|---|---|---|
KND_Nr | KND_Vorname | KND_Nachname | KND_Firma | KND_Strasse | KND_HausNr | KND_PLZ | KND_Ort | KND_Notiz |
1 | Max | Mustermann | Mustermann Consulting | Musterstrasse | 1 | 12345 | Musterstadt | |
2 | Theodor | Tester | Test-Solutions AG | Testweg | 16 | 55353 | Testort | Offene Rechnung Nr.3 |
ARTIKEL | ||||
---|---|---|---|---|
ART_Nr | ART_Bezeichnung | ART_Details | ART_Auslauf | ART_Einzelpreis |
1 | Thin-Client BAER | 1.6 Ghz,Sound,VGA,USB | nein | 199.99 |
2 | Thin-Client NP | 1.0 Ghz,Sound,VGA+DVI,USB | ja | 179.99 |
BESTELLUNGEN | |||
---|---|---|---|
BST_Nr | KND_Nr | BST_Datum | BST_Bezahlt |
1 | 1 | 10.10.2010 | ja |
2 | 2 | 15.02.2011 | nein |
BESTELL_POS | |||
---|---|---|---|
BPOS_Nr | BST_Nr | ART_Nr | BPOS_Anzahl |
1 | 1 | 1 | 10 |
2 | 1 | 2 | 15 |
3 | 2 | 1 | 1 |
Was wurde geändert?