Hallo exzel,
Aber wenn doch so eine Änderung gemacht werden würde, müsste man doch eh jeden Mitarbeiter gesondert aufrufen und manuell nachtragen, wer jetzt in der Oberen- und wer in der Unteren-Hauptraße wohnt. Und da würde doch die Personalnummer langen.
Und nach welcher Personalnummer muss ich dann suchen? Ich habe schon mit Adressdatenbänken mit mehr als 100.000 Einträgen gearbeitet.
Wenn Du da die Mitarbeiter, die in der richtigen Hauptstrasse wohnen, finden willst brauchst Du die PLZ (oder gaaaanz viel Zeit).
Das ist dann eine Abhängigkeit von einem Nichtschlüssel-Attribut.
Wir machen mal noch eine Baustelle auf. Was passiert eigentlich mit der Strasse wenn der einzige Mitarbeiter der da Wohnt gelöscht wird.
Dann sind alle Adressdaten weg. Und warum? Weil die halt in der Personaltabelle stehen. Und wenn ich die Daten jetzt für einen Kunden brauche?
Dann habe ich von vorneherein schon eine redundante Datenhaltung gehabt und das ist ja gerade das was man mit der Normalisierung verhindern will.
Übrigen heißt die Hauptstrasse in der Personaltabelle dann Obere- und Untere-Hauptstrasse und in der Kundentabelle immer noch Hauptstrasse oder gar nicht mehr.
Und das ist dann wirklich nicht mehr schön.
Jetzt gehen mir so langsam die Beispiele aus
.
Und wie ukulele schon gesagt hat:
Die Normalformen sind Definitionen, sie beschreiben eine Art Perfektion der Datenstruktur gegen Redundanzen. Benötigen tust du keine davon. Der SQL Datenbank ist das ziemlich egal...
Nur die Fehleranfälligkeit der Anwendung wir geringer und die Handhabung wird schwieriger.
Gruß Charly
PS: Ich schreib heute Abend nochmal wie der Algorithmus genannt wird der die 3NF prüft und wie er funktioniert. Hab das Buch jetzt nicht hier.