Zur Optimierung der Tabellenstruktur gibt es weitere Schritte, wobei nachfolgend die Überführung in die zweite Normalform beschrieben wird. Die Regel besagt: Tabellen der ersten Normalform lassen sich auf die zweite Normalform reduzieren, indem alle Felder, die nicht vom primären Schlüssel abhängen, zu entfernen sind.
Auch hier soll die Problematik wieder an einem kleinen Beispiel erläutert werden. Die Tabelle Auftrag (Abb. 2.4) enthält die Felder mit den Auftragsdaten, mit deren Hilfe auch die Rechnung erstellt wird. Diese fasst eine unterschiedliche Anzahl an Lieferpositionen als Gesamtrechnung für den Kunden zusammen. Die Identifizierung der Einzelpositionen erfolgt über die Auftragsnummer und die Position des Auftrags (es handelt sich damit um einen eindeutigen Primärschlüssel). Die beiden anderen Felder geben jetzt die Kundennummer an (aus dieser Information lassen sich die Informationen wie Name und Adresse aus der Tabelle Kunden lesen). Die Produktnummer dient zur Ermittlung des Einzelpreises.
Zur Überführung in die zweite Normalform sind alle Felder zu entfernen, die nicht vom Primärschlüssel abhängen. Betrachten wir uns nun die Abhängigkeiten:
Auftrags-Nr. + Position -> Produkt Nr.
Auftrags-Nr. + Position -> Kunden Nr.
Um die Produktnummer zu ermitteln, benötigen Sie eindeutig die Auftragsnummer und die Position (es wird hier davon ausgegangen, dass ein Produkt immer nur einmal im Auftrag bzw. in der Rechnung auftaucht und Einzelmengen akkumuliert wurden). Das Feld Produkt Nr. hängt damit eindeutig vom Schlüssel ab. Anders sieht es aber bei der Kunden Nr. aus. Zwar lässt sich über den Schlüssel auch die Kundennummer lesen. Aber die Kundennummer tritt ja nicht in jeder Zeile des Auftrags bzw. der Rechnung auf. Damit ist das Feld Kunden Nr. faktisch nur vom Feld Rechn. Nr. und nicht vom gesamten Schlüssel abhängig, d.h. die Tabelle liegt nicht in zweiter Normalform vor. Die Lösung ist in Abb. 2.5 zu sehen.
Durch die Auslagerung des Felds Kunden Nr. in eine zweite Tabelle wird die Tabelle Verkauf in die zweite Normalform überführt. Die nachfolgend beschriebenen Normalformen erlauben eine weitere Optimierung der Tabellenstruktur, werden aber seltener benutzt.