Die Datenbanknormalisierung ist ein Ansatz zur Gestaltung von Datenbanken, der von Edgar F. Codd in den 1970er Jahren eingeführt wurde. Bestimmte Datenbanken, die als relationale Datenbanken bezeichnet werden, ermöglichen die Speicherung von Daten in separaten Gruppen. Jede Gruppe wird allgemein als Tabelle bezeichnet. Um nützliche Informationen bereitzustellen, werden diese Gruppen miteinander verbunden. So können beispielsweise Studenten in einer Gruppe und Klassen in einer anderen Gruppe gespeichert werden. Um zu zeigen, dass ein Student in einer Klasse eingeschrieben ist, wird eine "Beziehung" von einer Gruppe zur anderen hergestellt. Ein Student könnte eine Beziehung zu vielen Klassen haben, in denen er oder sie jeweils eingeschrieben ist, während eine Klasse eine Beziehung zu vielen Studenten hat.
Eine traditionelle Alternative ist die "Flatfile-Datenbank", in der alle Daten wie in einer Tabellenkalkulation gruppiert sind. Das Problem mit Flatfile-Datenbanken besteht darin, dass sie viele Leerzeichen enthalten können und es eine Menge Informationen gibt, die für jeden Eintrag wiederholt werden müssen. Das bedeutet, dass die Datenbank größer ist, als sie sein muss, und dadurch wird es wahrscheinlicher, dass die Datenbank Fehler enthält. Relationale Datenbanken verringern, indem sie die Daten in Gruppen aufteilen, die Fehlerwahrscheinlichkeit und nehmen nicht mehr Platz in Anspruch als nötig. Aber damit sie funktioniert, muss sie gut gestaltet sein.
Die Datenbanknormalisierung ist eine Methode zur Gestaltung guter relationaler Datenbanken. Es gibt mehrere "Normalformen", von denen jede Regeln hat, denen die Datenbank entsprechen sollte. Codd spezifizierte ursprünglich drei Sätze von Kriterien, die verschiedene Datenbanken erfüllen müssen: erste, zweite und dritte Normalform.
Wenn eine Relation (oder "Datenbanktabelle") einer bestimmten Normalform entspricht, ist sie nicht anfällig für bestimmte Änderungen, die die Datenintegrität beeinträchtigen. Der Nachteil der Erfüllung einer solchen Reihe von Kriterien ist normalerweise, dass die Abfrage bestimmter Daten aus der Datenbank schwieriger wird.