Direkt zum Inhalt

Was ist die dritte Normalform (3NF)?

Lerne, wie die dritte Normalform (3NF) dir helfen kann, deine Datenbanken effizienter zu organisieren, indem du Redundanzen entfernst und Abhängigkeitsprobleme minimierst. Erfahre, wie die Zerlegung von Tabellen die Datenverwaltung vereinfachen kann.
Aktualisierte 14. Feb. 2025  · 9 Min. Lesezeit

Stell dir vor, du arbeitest mit einer riesigen, unstrukturierten Datenbank voller sich wiederholender, redundanter Informationen. Jede Aktualisierung oder Löschung wird zu einem potenziellen Desaster und birgt das Risiko von Fehlern und Inkonsistenzen. Die dritte Normalform (3NF) ist eine bewährte Methode zur Normalisierung von Datenbanken, um dieses Chaos zu vermeiden. Die Implementierung von 3NF bereinigt deine Datenstruktur und stellt sicher, dass sie effizient, organisiert und frei von unnötigen Redundanzen ist.

In diesem Artikel erfahren wir, wie 3NF funktioniert, warum es wertvoll ist und wie du es in der Praxis einsetzen kannst. Wir werden auch 3NF mit anderen Formen vergleichen und lernen, wann wir sie verwenden sollten. Jeder kann davon profitieren, mehr über diese Strukturen zu lernen, aber dieses Wissen ist besonders wertvoll, wenn du ein Datenbankdesigner oder Datenwissenschaftler bist, da es deine Arbeit erheblich vereinfachen und deine Datenbanken zuverlässig halten kann. Wenn du dich für das Datenbankdesign als Ganzes interessierst, schau dir unseren kompletten Kurs Datenbankdesign an.

Dritte Normalform (3NF) Definition

Die dritte Normalform ist ein Schlüsselkonzept der Datenbanknormalisierung, das unerwünschte Abhängigkeiten beseitigt. 3NF baut auf der ersten Normalform (1NF) und der zweiten Normalform (2NF) auf, das heißt, sie übernimmt deren Regeln: 1NF erfordert atomare (unteilbare) Werte in jeder Zelle, und 2NF beseitigt partielle Abhängigkeiten von einem zusammengesetzten Primärschlüssel. 3NF geht noch einen Schritt weiter, indem sie transitive Abhängigkeiten beseitigt, also eine Situation, in der Nicht-Schlüsselattribute indirekt vom Primärschlüssel abhängen.

Dadurch stellt 3NF sicher, dass jede Nicht-Schlüsselspalte in einer Tabelle direkt mit dem Primärschlüssel verbunden ist und nichts anderes. In der Praxis hilft 3NF, Redundanzen zu minimieren und Anomalien beim Einfügen, Aktualisieren oder Löschen von Daten zu vermeiden.

In den 1970er Jahren führte Edgar F. Codd die 3NF ein, um die Bedingungen für eine vollständig normalisierte Datenbankstruktur zu formalisieren. Eine Neuformulierung von Carlo Zaniolo ein paar Jahre später erklärte den Unterschied zwischen der "klassischen" 3NF und der restriktiveren Boyce-Codd-Normalform (BCNF) deutlicher. Mach dir vorerst nicht zu viele Gedanken über BCNF, wir werden weiter unten darauf zurückkommen.

Verstehen der Bedingungen für die dritte Normalform

Was genau braucht es also, um 3NF zu erreichen? Damit sich eine Tabelle qualifizieren kann, muss sie einige Bedingungen erfüllen:

  • Sei in 2NF: Das bedeutet, dass sie bereits atomar ist, ohne sich wiederholende Gruppen und ohne partielle Abhängigkeiten von zusammengesetzten Schlüsseln.

1NF-, 2NF- und 3NF-Anforderungen

3NF ist inklusive 2NF und 1NF. Bild vom Autor

  • Keine transitiven Abhängigkeiten: Diese Regel ist entscheidend. In einer 3NF-Tabelle darf eine Nicht-Primärschlüsselspalte nur vom Primärschlüssel abhängen und nicht indirekt über eine andere Nicht-Schlüsselspalte.

Schauen wir uns einmal an, was das praktisch bedeutet.

Zerlegen von Tabellen zum Erreichen von 3NF

Gehen wir den Prozess der Zerlegung von Tabellen durch, um 3NF zu erreichen. Wir werden einige Beispieldaten aus DataCamp-Kursen verwenden, um jeden Schritt zu veranschaulichen.

Schritt 1: Identifiziere transitive Abhängigkeiten

Zunächst suchen wir nach allen Attributen in einer Tabelle, die indirekt vom Primärschlüssel abhängen. Als Faustregel gilt: Wenn ein Attribut von etwas anderem als dem Primärschlüssel abhängt, weist dies auf eine transitive Abhängigkeit hin. Das ist ein Zeichen dafür, dass es vielleicht an der Zeit ist, eure Tabelle aufzuteilen.

Sieh dir die drei Tabellen unten an. Welche hat eine transitive Abhängigkeit?

Tabelle 1: Kurs

Kurs-ID Kursname Schwierigkeit
201 SQL-Grundlagen Anfänger
202 Einführung in Python Anfänger
203 Datenwissenschaft verstehen Zwischenbericht

Tabelle 2: Ausbilder

Ausbilder-ID Name des Ausbilders Expertise
1 Sarah Johnson Datenwissenschaft
2 Tom Williams Maschinelles Lernen
3 Emily Brown Python

Tabelle 3: Anmeldungen

Einschreibe-ID Schüler Name Kurs-ID Kursname
1001 Alice Smith 201 SQL-Grundlagen
1002 Bob Green 202 Einführung in Python
1003 Charlie Blue 201 SQL-Grundlagen

Die Antwort ist... Tabelle 3!

In dieser Tabelle hängt der Kursname von der Kurs-ID ab , aber nicht direkt von der Einschreibe-ID (dem Primärschlüssel). Durch diese indirekte Abhängigkeit ist Kursname eine transitive Abhängigkeit.

Schritt 2: Daten in neue Tabellen aufteilen

Um die transitive Abhängigkeit zu berücksichtigen, teilen wir Tabelle 1 in zwei Tabellen auf. Jede Tabelle konzentriert sich auf die direkt abhängigen Daten.

Überarbeitete Tabelle mit den Anmeldungen

Einschreibe-ID Schüler Name Kurs-ID
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Blue 201

Tabelle der Kurse

Kurs-ID Kursname
201 SQL-Grundlagen
202 Einführung in Python

Jetzt enthält jede Tabelle nur noch Informationen, die direkt von ihrem Primärschlüssel abhängen: Kurs-ID ist jetzt der Primärschlüssel für Kursname in der Datei Kurse Tabelle, und Einschreibe-ID ist der Primärschlüssel in der Tabelle Anmeldungen Tabelle.

Mit dieser Zerlegung erfüllen die Tabellen nun die 3NF-Anforderungen, wodurch Redundanzen beseitigt werden und sichergestellt wird, dass jede Tabelle nur direkt relevante Informationen speichert.

Wenn du selbst Hand anlegen und deine eigene Datenbank erstellen möchtest, schau dir unseren Kurs PostgreSQL-Datenbanken erstellen an. Wenn du schon etwas fortgeschrittener bist, kannst du die Einführung in die Datenmodellierung in Snowflake ausprobieren, in der Themen wie Entity-Relationship und Dimensionsmodellierung behandelt werden.

Vorteile und Grenzen der Verwendung der dritten Normalform

Warum also der ganze Aufwand, um 3NF zu erreichen? Hier sind die wichtigsten Vorteile:

  • Verbesserte Datenintegrität: Durch die Eliminierung transitiver Abhängigkeiten stellt 3NF sicher, dass Aktualisierungen und Löschungen nicht zu widersprüchlichen oder veralteten Daten in den Tabellen führen.
  • Reduzierte Redundanz: Weniger Redundanz bedeutet, dass deine Datenbank einfacher zu pflegen ist und weniger Speicherplatz benötigt wird.
  • Einfachere Datenpflege: Wenn du ähnliche Informationen in speziellen Tabellen aufbewahrst, ist es einfacher, Datensätze zu aktualisieren, ohne überflüssige Einträge aufzuspüren.

3NF-Strukturen unterstützen zwar die Datengenauigkeit, können aber auch zu einer stärkeren Segmentierung der Daten führen, wodurch komplexe Abfragen aufgrund zusätzlicher Tabellen-Joins manchmal langsamer werden. In Fällen, in denen die Geschwindigkeit wichtiger ist als die Normalisierung, sind BCNF oder 4NF vielleicht die praktischere Option.

Vergleich: Erste, zweite, dritte und BC-Normalform

Werfen wir einen Blick auf die Formunterschiede.

Vergleichstabelle: erste, zweite und dritte Normalform

Hier ist eine Vergleichstabelle, die dir hilft, die Anforderungen von 1NF, 2NF und 3NF zu verstehen.

Feature 1NF 2NF 3NF
Atomare Daten
Keine partiellen Abhängigkeiten
Keine transitiven Abhängigkeiten

Dritte Normalform vs. Boyce-Codd-Normalform (BCNF)

BCNF ist eine "strengere" Form von 3NF, die Anomalien, die durch sich überschneidende Schlüsselkandidaten entstehen, weiter eliminiert. Sie kann besonders in komplexen Fällen nützlich sein, in denen 3NF allein die Abhängigkeiten nicht vollständig beseitigt. BCNF findet Anwendung, wenn ein Attribut ohne Primzahl von einem Attribut abhängt, das Teil eines zusammengesetzten Kandidatenschlüssels ist. Ich weiß, das klingt kompliziert, also lass es uns anhand eines Beispiels aufschlüsseln.

Aktuelle Struktur (in 3NF)

Nach der Zerlegung in 3NF hatten wir diese beiden Tabellen:

Tabelle der Anmeldungen

Einschreibe-ID Schüler Name Kurs-ID
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Blue 201

Tabelle der Kurse

Kurs-ID Kursname
201 SQL-Grundlagen
202 Einführung in Python

In dieser Struktur ist jede Tabelle in 3NF ohne transitive Abhängigkeiten, und die Daten sind entsprechend normalisiert.

Eine neue Anforderung einführen

Jetzt fügen wir den Kursenein neues Attribut hinzu : das Klassenzimmer, in dem der jeweilige Kurs stattfindet. Dieses neue Attribut könnte zu einem Szenario führen, das BCNF erfordert.

Aktualisierte Tabelle für Kurse (3NF)

Kurs-ID Kursname Klassenzimmer
201 SQL-Grundlagen Zimmer 101
202 Einführung in Python Zimmer 102
203 Datenwissenschaft verstehen Zimmer 101

Hier ist dieKurs-ID immer noch der Primärschlüssel, und alle anderen Attribute hängen direkt von ihr ab. Aber nehmen wir mal an, es gibt eine neue Regel, dass in jedem Klassenzimmer jeweils nur ein Fach unterrichtet werden kann. Nehmen wir außerdem an, dass der Kursname "SQL-Grundlagen" unter verschiedenen Kurs-IDs (z. B. 201, 204 usw.) angeboten werden könnte , wenn sie zu unterschiedlichen Zeiten stattfinden würden. In diesem Fall würde jedes Angebot von "SQL-Grundlagen" weiterhin in "Raum 101" stattfinden, unabhängig von der spezifischen Kurs-ID. Daher bestimmt Kursname auch eindeutig das Klassenzimmer.

Das bedeutet, dass wir jetzt zwei Schlüsselkandidaten haben:

  1. Kurs-ID
  2. Kursname

Mit beiden Schlüsselkandidaten haben wir nun ein Problem, das 3NF nicht löst: Klassenzimmer hängt ab von Kursname und nicht nur von der Kurs-ID.

BCNF anwenden

Um dieses Abhängigkeitsproblem zu beseitigen, müssen wir die Kurse weiter zerlegen. Kurse Tabelle in zwei separate Tabellen aufteilen, die besser mit der BCNF übereinstimmen:

  1. A neu Kurse Tabelle, die nur die Kurs-ID und enthält. Kursname.
  2. A KursDetails Tabelle, in der die Kursname und Klassenzimmer Zuordnung enthält.

So sieht das aus:

Überarbeitete Tabelle der Kurse (BCNF)

Tabelle "Kursdetails" (BCNF)

Kursname Klassenzimmer
SQL-Grundlagen Zimmer 101
Einführung in Python Zimmer 102
Datenwissenschaft verstehen Zimmer 101

Mit dieser neuen Struktur erfüllt jede Tabelle die BCNF-Bedingungen:

  • In den Kurse Tabelle, Kurs-ID der Primärschlüssel, und alle Attribute hängen ausschließlich von ihr ab.
  • In den KursDetails Tabelle, Kursname der Primärschlüssel, und Klassenzimmer hängt nur ab von Kursname.

Auf diese Weise werden Abhängigkeitsprobleme, die durch sich überschneidende Schlüsselkandidaten entstehen, beseitigt und eine streng normalisierte Struktur sichergestellt.

Fazit

Die dritte Normalform ist ein wertvolles Werkzeug für Datenbankdesigner, die Daten sauber, konsistent und frei von problematischen Abhängigkeiten halten wollen. Mit 3NF wird die Datenintegrität verbessert, was die Verwaltung vereinfacht und Redundanzen reduziert. Denke daran, dass 3NF in den meisten Situationen gut funktioniert, während komplexere Datenbanken von zusätzlichen Formen wie BCNF oder 4NF profitieren können.

Wenn du diesen Artikel hilfreich fandest, solltest du den nächsten Schritt wagen und unsere SQL Associate Zertifizierung erwerben. So kannst du deine SQL- und Datenbankmanagement-Kenntnisse unter Beweis stellen und potenziellen Arbeitgebern dein Fachwissen zeigen!


Marie Fayard's photo
Author
Marie Fayard

Senior Software Engineer, Technical Writer und Berater mit einem Hintergrund in Physik. Wir helfen Start-ups in der Anfangsphase, ihr Potenzial auszuschöpfen und machen komplexe Konzepte für alle zugänglich.

Häufig gestellte Fragen zur dritten Normalform

Kann 3NF auf alle Arten von Datenbanken angewendet werden?

Während 3NF in relationalen Datenbanken effektiv ist, ist sie für NoSQL-Datenbanken nicht immer notwendig, da hier Flexibilität und Skalierbarkeit oft wichtiger sind als eine strenge Normalisierung. In manchen Fällen kann ein denormalisiertes Schema aus Leistungsgründen vorzuziehen sein, vor allem wenn große Datenmengen schnell abgefragt werden sollen.

Was sind die Nachteile der strikten Befolgung der 3NF?

Die strikte Einhaltung der 3NF kann manchmal zu komplexen Schemata mit vielen Tabellen führen, die mehrere Joins in Abfragen erfordern. Das kann sich negativ auf die Leistung auswirken, vor allem bei großen Datenbanken oder Systemen mit hohem Transaktionsvolumen. In solchen Fällen können alternative Ansätze wie Denormalisierung oder die Verwendung von BCNF sinnvoller sein.

Kann 3NF auf bereits bestehende Datenbanken angewendet werden, oder muss ich sie neu entwerfen?

3NF kann auf jeden Fall auf bestehende Datenbanken angewendet werden, auch wenn es eine erhebliche Umstrukturierung erfordert. Bei diesem Prozess, der als Datenbank-Refactoring bezeichnet wird, werden Tabellen zerlegt, um Redundanzen und Abhängigkeiten zu beseitigen. Je nach Größe und Komplexität der Datenbank erfordert dies einige Planung und Tests, um sicherzustellen, dass die Datenintegrität und die Systemleistung erhalten bleiben.

Welche Tools oder Techniken können dabei helfen, den Prozess der 3NF zu automatisieren?

Es gibt verschiedene Datenbankentwurfswerkzeuge wie MySQL Workbench, Oracle SQL Developer und ER/Studio, die dabei helfen, das Datenbankschema zu visualisieren und Normalisierungsprobleme zu erkennen. Einige dieser Tools können Schritte vorschlagen oder automatisieren, um 3NF zu erreichen, obwohl die menschliche Aufsicht immer noch wichtig ist, um die Integrität und Konsistenz der Daten zu gewährleisten.

Was ist der Unterschied zwischen einem Kandidatenschlüssel und einem Primärschlüssel?

Ein Kandidatenschlüssel ist eine minimale Menge von Attributen, die jede Zeile in einer Tabelle eindeutig identifizieren können. In einer Tabelle kann es mehrere Schlüsselkandidaten geben. Ein Primärschlüssel hingegen ist der spezifische Schlüsselkandidat, den der Datenbankdesigner zur eindeutigen Identifizierung von Zeilen ausgewählt hat. Pro Tabelle ist nur ein Primärschlüssel erlaubt, der keine NULL-Werte haben darf.

Warum brauchen wir die Boyce-Codd-Normalform (BCNF), wenn eine Tabelle bereits in der dritten Normalform (3NF) ist?

BCNF ist strenger als 3NF und behandelt Fälle, in denen Abhängigkeiten von Kandidatenschlüsseln bestehen. 3NF beseitigt zwar transitive Abhängigkeiten, kann aber immer noch Redundanzen zulassen, wenn eine funktionale Abhängigkeit eine Determinante hat, die kein Superkey ist. BCNF beseitigt dies, indem sie sicherstellt, dass alle funktionalen Abhängigkeiten einen Superkey auf der linken Seite haben.

Kann eine Tabelle mehr als einen Kandidatenschlüssel haben?

Ja, eine Tabelle kann mehrere Kandidatenschlüssel haben. Jeder Kandidatenschlüssel ist ein eindeutiger und minimaler Satz von Attributen, die Zeilen identifizieren können.

Themen

Lernen mit DataCamp

Kurs

Understanding Data Engineering

2 hr
263.9K
Discover how data engineers lay the groundwork that makes data science possible. No coding involved!
Siehe DetailsRight Arrow
Kurs starten
Mehr anzeigenRight Arrow
Verwandt

Der Blog

Die 20 besten Snowflake-Interview-Fragen für alle Niveaus

Bist du gerade auf der Suche nach einem Job, der Snowflake nutzt? Bereite dich mit diesen 20 besten Snowflake-Interview-Fragen vor, damit du den Job bekommst!
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 Min.

Der Blog

Lehrer/innen und Schüler/innen erhalten das Premium DataCamp kostenlos für ihre gesamte akademische Laufbahn

Keine Hacks, keine Tricks. Schüler/innen und Lehrer/innen, lest weiter, um zu erfahren, wie ihr die Datenerziehung, die euch zusteht, kostenlos bekommen könnt.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

4 Min.

Der Blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates hat im zweiten Quartal 2023 über 20.000 Stipendien an unsere gemeinnützigen Partner vergeben. Erfahre, wie fleißige benachteiligte Lernende diese Chancen in lebensverändernde berufliche Erfolge verwandelt haben.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Der Blog

Die 32 besten AWS-Interview-Fragen und Antworten für 2024

Ein kompletter Leitfaden zur Erkundung der grundlegenden, mittleren und fortgeschrittenen AWS-Interview-Fragen, zusammen mit Fragen, die auf realen Situationen basieren. Es deckt alle Bereiche ab und sorgt so für eine abgerundete Vorbereitungsstrategie.
Zoumana Keita 's photo

Zoumana Keita

30 Min.

Der Blog

2022-2023 DataCamp Classrooms Jahresbericht

Zu Beginn des neuen Schuljahres ist DataCamp Classrooms motivierter denn je, das Lernen mit Daten zu demokratisieren. In den letzten 12 Monaten sind über 7.650 neue Klassenzimmer hinzugekommen.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 Min.

Der Blog

Top 30 Generative KI Interview Fragen und Antworten für 2024

Dieser Blog bietet eine umfassende Sammlung von Fragen und Antworten zu generativen KI-Interviews, die von grundlegenden Konzepten bis hin zu fortgeschrittenen Themen reichen.
Hesam Sheikh Hassani's photo

Hesam Sheikh Hassani

15 Min.

Mehr anzeigenMehr anzeigen