Eine gewisse Redundanz ist unvermeidlich und erhöht die Lesbarkeit bzw. Übersichtlichkeit. Redundanzfreiheit ist das Gegenteil von Redundanz, also die Vermeidung doppelter Einträge in den Tabellen einer Datenbank. Die Vorteile liegen auf der Hand: * geringerer Speicherbedarf * Erhöhung der Wartbarkeit * Vermeidung von Inkonsistenzen und Anomalien Inkonsistenzen und Anomalien (Einfüge-/Lösch-/Änderungs-/Update-Anomalie) sind widersprüchliche Daten (z.B. infolge Tippfehler) oder logische Brüche innerhalb eine Datenbank. Sie treten sehr oft auf, wenn man zum Beispiel Änderungen an den Inhalten vornimmt und gewisse Relationen(!) vergisst. Die Datenbank ist dann fehlerhaft und die Datenpflege erschwert. Normalisierung Dies ist eine Sammlung von Regeln, die eingehalten werden sollten, um obige Probleme zu vermeiden. Sie gliedert sich meist in drei Normalformen. 1. Normalform Eine Datenbank befindet sich in der ersten Normalform (1NF), wenn in keinem Feld innerhalb der Tabellen mehrere Werte eingetragen sind. Das Prinzip nennt sich "atomar". Es werden also z.B. nicht die Straße und der Ort in einem Feld gespeichert, sondern in zweien. Den Namen der z.B. Kunden wird in Vorname(n) und Nachname aufgeteilt. Wir müssen die Adressdaten der Kunden und Hersteller in separate Tabellen auslagern und in entsprechenden Feldern verteilen. 2. Normalform Eine Datenbank befindet sich dann in der zweiten Normalform (2NF), wenn die erste Normalform erfüllt ist und für jeden Primärschlüssel eindeutige Attributwerte vorhanden sind. Das bedeutet insbesondere, dass z.B. 2 Datensätze zum gleichen Kunden, Produkt oder Hersteller nicht unter verschiedenen Primärschlüsseln abgespeichert sind. Jeder Datensatz muss über den Primärschlüsselwert eindeutig benannt werden können. 3. Normalform Eine Datenbank befindet sich dann in der dritten Normalform (3NF), wenn die zweite Normalform erfüllt ist und keine so genannten transitiven Abhängigkeiten bestehen. Das bedeutet, dass alle Attribute nur vom Schlüsselattribut, nicht aber von anderen Attributen abhängig sind. Eine Abhängigkeit zwischen den Attributen muß aufgelöst werden. Zum Beispiel wird der Ort aus den Tabellen eliminiert, wenn über die PLZ eine transitive Abhängigkeit gegeben ist. Statt ID, Firmenname, Straße inkl. Hausnr., PLZ, Ort bilden wir also 2 Tabellen: ID, Firmenname, Straße inkl. Hausnr., PLZ und PLZ, Ort In der ersten Tabelle ist ID der primäre Schlüssel und PLZ ein (sekundärer) Fremdschlüssel, in der zweiten Tabelle ist PLZ der primäre Schlüssel. Ein Fremdschlüssel ist ein Sekundärschlüssel einer Relation, der in einer anderen Relation Primärschlüssel ist.