0Pricing
Coding Interview Prep · Lektion

Normalisierung bis zur 3NF

Erste, zweite und dritte Normalform sowie die Anomalien, die sie beseitigen.

Normalisierung bis zur 3NF ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Warum Interviewer nach Normalisierung fragen

Normalisierung ist ein grundlegendes Thema der Datenmodellierung, und Interviewer nutzen sie, um zu prüfen, ob Sie Datenintegrität auf Entwurfsebene verstehen. Die Frage klingt oft etwa so: "Was ist Normalisierung und warum ist sie wichtig?"

Normalisierung ist der Prozess, Spalten und Tabellen so zu organisieren, dass Redundanz verringert und Änderungs-, Einfüge- und Löschanomalien verhindert werden. Jede Normalform (1NF, 2NF, 3NF) fügt eine strengere Regel hinzu.

Eine überzeugende Antwort nennt die Anomalien, die durch Normalisierung beseitigt werden, und beschränkt sich nicht auf Lehrbuchdefinitionen.

Die drei Anomalien

Bevor Sie sich mit den Normalformen beschäftigen, sollten Sie die Probleme kennenlernen, die sie lösen. Eine schlecht entworfene Tabelle, die alles an einem Ort speichert, weist drei Anomalien auf:

  • Änderungsanomalie: Dieselbe Tatsache wird in vielen Zeilen gespeichert. Eine Änderung muss daher in allen Zeilen vorgenommen werden, andernfalls werden die Daten inkonsistent.
  • Einfügeanomalie: Sie können eine Tatsache nicht hinzufügen, ohne gleichzeitig unabhängige Daten anzugeben (z. B. können Sie kein Produkt ohne eine Bestellung hinzufügen).
  • Löschanomalie: Beim Löschen einer Zeile wird versehentlich eine andere unabhängige Tatsache gelöscht.

Wenn Sie diese Anomalien in einer Beispieltabelle erkennen können, können Sie jeden Normalisierungsschritt begründen.

Eine nicht normalisierte Ausgangstabelle

Hier ist ein klassisches Beispiel aus Vorstellungsgesprächen: eine breite Tabelle, in der Bestellungen, Kunden und Produkte vermischt werden. Beachten Sie die wiederholte Kunden-E-Mail-Adresse und den wiederholten Produktpreis in mehreren Zeilen. Hier liegen die Anomalien.

Ihre Aufgabe im Interview besteht darin, diese Tabelle schrittweise bis zur 3NF zu normalisieren und jede Aufteilung zu erläutern.

-- Unnormalized: everything in one table
CREATE TABLE orders_flat (
  order_id     INT,
  customer_id  INT,
  customer_email VARCHAR(255),
  product_id   INT,
  product_name VARCHAR(100),
  unit_price   DECIMAL(10,2),
  quantity     INT
);

Erste Normalform (1NF)

1NF verlangt, dass jede Spalte genau einen atomaren Wert enthält und dass es innerhalb einer Zelle keine sich wiederholenden Gruppen oder Arrays gibt.

Eine Tabelle verletzt 1NF, wenn eine Spalte eine durch Kommas getrennte Liste wie 'phone1, phone2' speichert oder wenn Sie Spalten wie product1, product2, product3 haben.

Die Lösung: Geben Sie jedem Wert eine eigene Zeile. Der Interviewer möchte hören: "Atomare Werte, keine sich wiederholenden Gruppen und ein Schlüssel, der jede Zeile identifiziert."

-- Violates 1NF: a list inside one column
-- phones = '555-1111, 555-2222'

-- 1NF fix: one phone per row
CREATE TABLE customer_phone (
  customer_id INT,
  phone       VARCHAR(20),
  PRIMARY KEY (customer_id, phone)
);

Funktionale Abhängigkeiten

Um 2NF und 3NF zu erklären, müssen Sie den Begriff funktionale Abhängigkeit verwenden. Wir schreiben A -> B, um „A bestimmt B“ zu bedeuten: Für jeden Wert von A gibt es genau einen Wert von B.

In unserer Bestelltabelle gilt:

  • customer_id -> customer_email
  • product_id -> product_name, unit_price
  • order_id, product_id -> quantity

Bei der Normalisierung geht es im Grunde darum sicherzustellen, dass jede Nichtschlüsselspalte vom gesamten Schlüssel und von nichts anderem als dem Schlüssel abhängt.

Zweite Normalform (2NF)

2NF gilt, wenn der Primärschlüssel zusammengesetzt ist. Sie verbietet, dass eine Nichtschlüsselspalte nur von einem Teil des Schlüssels abhängt (partielle Abhängigkeit).

Der Schlüssel unserer Bestellpositionszeile lautet (order_id, product_id). product_name und unit_price hängen jedoch nur von product_id ab, nicht vom vollständigen Schlüssel. Das ist eine partielle Abhängigkeit und verstößt daher gegen 2NF.

Die Lösung: Verschieben Sie die Produktattribute in eine products-Tabelle mit product_id als Schlüssel.

CREATE TABLE products (
  product_id   INT PRIMARY KEY,
  product_name VARCHAR(100),
  unit_price   DECIMAL(10,2)
);

CREATE TABLE order_items (
  order_id   INT,
  product_id INT,
  quantity   INT,
  PRIMARY KEY (order_id, product_id),
  FOREIGN KEY (product_id) REFERENCES products(product_id)
);

Dritte Normalform (3NF)

3NF beseitigt transitive Abhängigkeiten: eine Nichtschlüsselspalte, die von einer anderen Nichtschlüsselspalte statt direkt vom Schlüssel abhängt.

Angenommen, eine orders-Tabelle enthält customer_id und customer_email. Dann gilt order_id -> customer_id -> customer_email. Die E-Mail-Adresse hängt nur über customer_id vom Schlüssel ab – das ist eine transitive Abhängigkeit.

Die Lösung: Lagern Sie die Kunden in eine eigene Tabelle aus. Nun hängen die Nichtschlüsselspalten jeder Tabelle nur von ihrem jeweiligen Schlüssel ab.

CREATE TABLE customers (
  customer_id    INT PRIMARY KEY,
  customer_email VARCHAR(255)
);

CREATE TABLE orders (
  order_id    INT PRIMARY KEY,
  customer_id INT,
  FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

Die Merkhilfe in einem Satz

Interviewer schätzen Kandidaten, die 3NF in einem Satz zusammenfassen können. Die klassische Formulierung lautet:

"Jede Nichtschlüsselspalte muss vom Schlüssel, vom gesamten Schlüssel und von nichts anderem als dem Schlüssel abhängen."

  • Der Schlüssel -> 1NF (es gibt einen Schlüssel und atomare Werte).
  • Der gesamte Schlüssel -> 2NF (keine partielle Abhängigkeit).
  • Nichts anderes als der Schlüssel -> 3NF (keine transitive Abhängigkeit).

Mit diesem einen Satz können Sie alle drei Normalformen bei Bedarf herleiten.

BCNF: Die Rückfrage

Ein aufmerksamer Interviewer fragt möglicherweise nach der Boyce-Codd-Normalform (BCNF), einer strengeren Variante der 3NF.

BCNF verlangt, dass für jede funktionale Abhängigkeit X -> Y X ein Superschlüssel ist. 3NF erlaubt eine seltene Ausnahme, wenn das abhängige Attribut Teil eines Kandidatenschlüssels ist; BCNF beseitigt auch diese Ausnahme.

In der Praxis werden Sie nur selten auf BCNF-Verletzungen stoßen. Wenn Sie sie jedoch nennen und sagen: "BCNF ist 3NF ohne Ausnahmen für Primattribute", zeigen Sie ein vertieftes Verständnis.

Wann Sie NICHT normalisieren sollten

Eine Antwort auf Senior-Niveau berücksichtigt den Zielkonflikt. Normalisierung verbessert die Integrität, kann aber die Leseleistung beeinträchtigen, weil Abfragen mehr Joins benötigen.

Eine bewusst vorgenommene Denormalisierung ist sinnvoll, wenn:

  • die Arbeitslast leseintensiv ist und Joins den Engpass darstellen.
  • Sie eine Analytics- oder Reporting-Schicht erstellen (Sternschemata werden später behandelt).
  • Sie die redundante Kopie synchron halten können (Trigger, ETL, materialisierte Views).

Sagen Sie: "Normalisieren Sie für OLTP-Integrität; denormalisieren Sie bewusst für OLAP-Lesegeschwindigkeit."

Durchgehen am Whiteboard

Führen Sie alles zusammen. Wenn Sie in einem Live-Interview eine unübersichtliche Tabelle erhalten:

  • Benennen Sie den Kandidatenschlüssel und listen Sie die funktionalen Abhängigkeiten auf.
  • Prüfen Sie Atomarität und sich wiederholende Gruppen (1NF).
  • Wenn der Schlüssel zusammengesetzt ist, prüfen Sie auf partielle Abhängigkeiten (2NF).
  • Prüfen Sie auf Abhängigkeiten von Nichtschlüsselspalte zu Nichtschlüsselspalte (3NF).
  • Zeichnen Sie die resultierenden Tabellen mit Primär- und Fremdschlüsseln.

Wenn Sie diese Schritte laut erläutern, ist genau das, was der Interviewer bewertet.

Kurzer Test

Testen Sie Ihr Verständnis der Normalformen.

Zusammenfassung: Normalisierung bis zur 3NF

Sie können nun die typische Interviewfrage zur Normalisierung von Anfang bis Ende beantworten:

  • Normalisierung beseitigt Änderungs-, Einfüge- und Löschanomalien, indem sie Redundanz verringert.
  • 1NF: atomare Werte, keine sich wiederholenden Gruppen.
  • 2NF: keine partielle Abhängigkeit von einem zusammengesetzten Schlüssel.
  • 3NF: keine transitive Abhängigkeit (von Nichtschlüsselspalte zu Nichtschlüsselspalte).
  • Fassen Sie es als "den Schlüssel, den gesamten Schlüssel und nichts anderes als den Schlüssel" zusammen.
  • BCNF verschärft die 3NF; denormalisieren Sie bewusst für leseintensive Analytics-Anwendungen.

Häufig gestellte Fragen

Ist die Lektion „Normalisierung bis zur 3NF“ kostenlos?

Ja — der vollständige Text von „Normalisierung bis zur 3NF“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Normalisierung bis zur 3NF“?

Erste, zweite und dritte Normalform sowie die Anomalien, die sie beseitigen. Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Coding Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Normalisierung bis zur 3NF“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Normalisierung bis zur 3NF
  2. ER-Modellierung und Kardinalität von Beziehungen
  3. Star-Schema und Data-Warehouse-Design
  4. Kompletter Satz von Probeinterview-Aufgaben
← Zurück zu Coding Interview Prep