Direkt zum Inhalt

Was ist die zweite Normalform (2NF)?

Lerne, wie die zweite Normalform (2NF) dein Datenbankdesign verbessern kann, indem du partielle Abhängigkeiten eliminierst.
Aktualisierte 6. Jan. 2025  · 9 Min. Lesezeit

Bei der Arbeit mit Datenbanken kommt es häufig zu Problemen wie redundanten Daten und inkonsistenten Aktualisierungen. Die zweite Normalform ist ein Datenbanknormalisierungsschritt, der auf der ersten Normalform (1NF) aufbaut, um sauberere und effizientere Tabellen zu erstellen. 

Das Verständnis der 2NF ist für jeden, der sich mit Datenbankdesign oder Datenmanagement beschäftigt, von entscheidender Bedeutung und bildet die Grundlage für höhere Normalisierungsformen wie die dritte Normalform (3NF). In diesem Artikel erfahren wir, wie 2NF funktioniert und wie man Tabellen so umwandelt, dass sie die 2NF-Anforderungen erfüllen, mit praktischen Beispielen. Wir werden auch über die Vor- und Nachteile von 2NF sprechen und darüber, für welche Anwendungsfälle sie am besten geeignet ist.

Die zweite Normalform verstehen

Die zweite Normalform ist ein Datenbanknormalisierungsschritt, der sich auf die Beseitigung partieller Abhängigkeiten konzentriert. Sie wurde von Edgar F. Codd, dem Pionier der relationalen Datenbanken, im Rahmen seiner Arbeit zur Normalisierung eingeführt.  

Damit eine Tabelle in 2NF sein kann, muss sie die Regeln der ersten Normalform erfüllen:

  • Atomarität: Jede Zelle muss einen einzelnen Wert enthalten (keine sich wiederholenden Gruppen oder Arrays).
  • Einzigartige Reihen: Die Tabelle muss einen eindeutigen Primärschlüssel haben.

2NF geht mit einer zusätzlichen Regel noch einen Schritt weiter: partielle Abhängigkeiten eliminieren.

Eine partielle Abhängigkeit liegt vor, wenn ein Nicht-Prime-Attribut (eine Spalte, die nicht Teil eines Kandidatenschlüssels ist) sich nur auf einen Teil eines zusammengesetzten Schlüssels bezieht und nicht auf den gesamten Schlüssel. Die 2NF-Regel stellt sicher, dass alle Attribute, die keine Primzahl sind, vom gesamten Primärschlüssel abhängen, nicht nur von einem Teil davon. Das Belassen partieller Abhängigkeiten in einer Tabelle bedeutet, dass sich redundante Daten in die Datenbank einschleichen können, was zu Ineffizienz und potenziellen Inkonsistenzen bei Aktualisierungen oder Löschungen führt.

Die Theorie allein kann ein bisschen trocken sein, also lass uns ein praktisches Beispiel anschauen.

Unten ist eine Kurseinschreibung Tabelle der DataCamp-Schüler/innen.

Schülerausweis Kurs-ID Kursname Name des Ausbilders
1001 201 SQL-Grundlagen Ken Smith
1002 202 Einführung in Python Merlin O’Donnell
1001 202 Einführung in Python Merlin O’Donnell

Hier ist der Primärschlüssel eine Kombination aus Schüler-ID und Kurs-ID. Die Nicht-Prime-Attribute Kursname und Kursgebühr hängen jedoch nur von der Kurs-ID ab , nicht vom gesamten Schlüssel. Dies verstößt gegen 2NF.

Schritte zur Zerlegung von Tabellen zur Erreichung von 2NF

Um sicherzustellen, dass eine Tabelle den Regeln der 2NF folgt, musst du das tun:

  1. Identifiziere alle in Frage kommenden Schlüssel: Bestimme die minimalen Mengen von Attributen, die die Zeilen der Tabelle eindeutig identifizieren. Dies sind deine Kandidatenschlüssel.
  2. Bestimme die funktionalen Abhängigkeiten: Identifiziere alle funktionalen Abhängigkeiten in der Tabelle. Suche insbesondere nach Abhängigkeiten, bei denen Nicht-Prime-Attribute (die nicht Teil eines Kandidatenschlüssels sind) nur von einem Teil eines zusammengesetzten Schlüssels abhängen.
  3. Eliminiere partielle Abhängigkeiten: Für jede Teilabhängigkeit:
    • Verschiebe die abhängigen Attribute zusammen mit dem Teil des Schlüssels, von dem sie abhängen, in eine neue Tabelle.
    • Stelle sicher, dass die neue Tabelle einen eindeutigen Primärschlüssel hat.
  4. Wiederhole diesen Vorgang, bis keine Teilabhängigkeiten mehr bestehen: Bestätige, dass jedes Nicht-Primärattribut in allen Tabellen vollständig von seinem jeweiligen Primärschlüssel abhängig ist.

Beispiele für die zweite Normalform in der Praxis

Schauen wir uns nun zwei Beispiele an.

Beispiel 1: Tabelle der Kurseinschreibungen

Vorhin haben wir die folgende Tabelle mit den Kursanmeldungen gesehen:

Schülerausweis Kurs-ID Kursname Name des Ausbilders
1001 201 SQL-Grundlagen Ken Smith
1002 202 Einführung in Python Merlin O’Donnell
1001 202 Einführung in Python Merlin O’Donnell

Folgen wir den Schritten, die wir im vorherigen Abschnitt beschrieben haben.

1. Identifiziere unseren Kandidatenschlüssel.

In diesem Fall ist der Kandidatenschlüssel ein zusammengesetzter Schlüssel aus Schüler-ID und Kurs-ID. Diese eindeutige Kombination identifiziert jede Zeile in der Tabelle.

2. Bestimme unsere funktionalen Abhängigkeiten

Der Kursname und der Name des Kursleiters hängen von der Kurs-ID ab , nicht vom vollständigen zusammengesetzten Schlüssel (Schüler-ID, Kurs-ID). Dies ist eine partielle Abhängigkeit, weil diese Attribute nur von einem Teil des zusammengesetzten Schlüssels abhängen.

3. Eliminiere partielle Abhängigkeiten

Wir müssen die Attribute verschieben, die nur von einem Teil des Schlüssels abhängen (Kursname und Name des Lehrers) in eine neue Tabelle verschieben, die ausschließlich auf der Kurs-ID.

Nach der Dekomposition sehen unsere neuen Tabellen wie folgt aus:

Tabelle der Kurseinschreibungen

Schülerausweis Kurs-ID
1001 201
1002 202
1001 202

Tabelle mit den Kursdetails

Kurs-ID Kursname Name des Ausbilders
201 SQL-Grundlagen Ken Smith
202 Einführung in Python Merlin O’Donnell

Wenn du selbst Hand anlegen und deine eigene Datenbank erstellen willst, schau dir unseren PostgresQL-Kurs an. Wenn du schon etwas fortgeschrittener bist, könntest du diese Einführung in die Datenmodellierung in Snowflake ausprobieren, in der Ideen wie Entity-Relationship und Dimensionsmodellierung behandelt werden.

Beispiel 2: Tabelle der Bestellungen

Wir beginnen mit dieser Tabelle der Bestellungen. Versuche, die oben beschriebenen Schritte zu befolgen und diese Tabelle selbst zu zerlegen! 

Bestell-ID Produkt-ID Bestelldatum Produktname Name des Lieferanten
1 201 2024-11-01 Laptop TechSupply
1 202 2024-11-01 Maus TechSupply
2 201 2024-11-02 Laptop TechSupply
3 203 2024-11-03 Tastatur KeyMasters

1. Identifiziere unseren Kandidatenschlüssel

Die Kombination ausBestell-ID und Produkt-ID identifiziert jede Zeile eindeutig und macht (Bestell-ID, Produkt-ID) zu einem zusammengesetzten Kandidatenschlüssel. Keine einzelne Spalte kann Zeilen eindeutig identifizieren, denn:

  • Die Bestell-ID allein ist nicht eindeutig, da mehrere Produkte Teil derselben Bestellung sein können.
  • Die Produkt-ID allein ist nicht eindeutig, da dasselbe Produkt in verschiedenen Bestellungen auftauchen kann.

Das bedeutet, dass (Bestell-ID, Produkt-ID) auch unser Primärschlüssel ist.

2. Bestimme unsere funktionalen Abhängigkeiten

Das Bestelldatum hängt von der Bestell-ID ab (nicht von dem vollständigen zusammengesetzten Schlüssel). Dies ist eine teilweise Abhängigkeit.

Produktname und Lieferantenname hängen von der Produkt-ID ab (nicht vom vollständigen zusammengesetzten Schlüssel). Dies sind ebenfalls teilweise Abhängigkeiten.

3. Eliminiere partielle Abhängigkeiten

Wir müssen die Tabelle in kleinere Tabellen aufteilen, die jeweils eine logische Abhängigkeit adressieren. 

Zunächst erstellen wir eine Tabelle für Bestellinformationen, die folgende Informationen enthält Bestell-ID.

Tabelle der Bestellungen

Bestell-ID Bestelldatum
1 2024-11-01
2 2024-11-02
3 2024-11-03

Dann erstellen wir eine Tabelle, die Informationen zu folgenden Punkten enthält Produkt-ID.

Tabelle der Bestellungen

Produkt-ID Produktname Name des Lieferanten
201 Laptop TechSupply
202 Maus TechSupply
203 Tastatur KeyMasters

Die ursprüngliche Tabelle ist jetzt auf den zusammengesetzten Schlüssel und die Beziehungen zwischen Bestellungen und Produkten reduziert.

Bestell-ID Produkt-ID
1 201
1 202
2 201
3 203

Jetzt ist unsere Datenbank in 2NF, weil 1) alle partiellen Abhängigkeiten eliminiert wurden, und 2) non-prime-Attribute vollständig von ihren jeweiligen Primärschlüsseln abhängen.

Wann wird die zweite Normalform eingeführt?

Warum solltest du also deine Datenbank auf 2NF umstellen? Reicht das aus, oder solltest du einen Schritt weiter gehen und 3NF anstreben? 

Vorteile und Grenzen der zweiten Normalform

Die zweite Normalform bietet mehrere Vorteile, die sie zu einem nützlichen Schritt im Prozess der Datenbanknormalisierung machen:

  • Verbesserte Datenintegrität: Durch die Eliminierung partieller Abhängigkeiten minimiert 2NF Einfüge-, Aktualisierungs- und Löschungsanomalien, was zu einer zuverlässigeren Datenbank führt.
  • Verringerung der Redundanz: 2NF verringert die Wiederholung von Daten, optimiert die Speichernutzung und vereinfacht die Datenpflege.
  • Verbesserte Datenstruktur: Sie legt den Grundstein für weitere Normalisierungen, wie die Weiterentwicklung zur dritten Normalform, indem sie ein saubereres und effizienteres Datenbankdesign schafft.

Aber es gibt auch einige Einschränkungen:

  • Erhöhte Komplexität: Die Zerlegung von Tabellen zur Erfüllung der 2NF kann den Entwurfsprozess komplexer machen, vor allem wenn es um zusammengesetzte Schlüssel und Abhängigkeiten geht.
  • Zusätzliche Fugen: Das Aufteilen von Tabellen kann mehr Joins in Abfragen erfordern, was sich auf die Leistung von Systemen mit großen Datensätzen oder komplexen Abfragen auswirken kann - mehr dazu weiter unten.
  • Residuale Redundanz: 2NF reduziert zwar partielle Abhängigkeiten, geht aber nicht auf transitive Abhängigkeiten ein, sodass einige Redundanzen bestehen bleiben, bis sie in 3NF behandelt werden.

Leistungsüberlegungen mit der zweiten Normalform

Die Zerlegung von Tabellen, um partielle Abhängigkeiten zu beseitigen, kann sich direkt auf die Datenbankleistung auswirken. Einerseits wird durch das Erreichen von 2NF die Datenredundanz reduziert und die Konsistenz verbessert, was zu weniger Anomalien bei Einfüge-, Aktualisierungs- oder Löschvorgängen führt. Andererseits kann die Normalisierung die Anzahl der Tabellen erhöhen, was bedeutet, dass zusätzliche Joins notwendig sind, um zusammenhängende Daten abzurufen. Dies kann die Abfrageleistung bei großen Datensätzen beeinträchtigen.

Um sicherzustellen, dass deine normalisierte Datenbank performant bleibt, solltest du diese Best Practices befolgen:

  • Indizierung: Verwende Indizes, um Joins zwischen zerlegten Tabellen zu beschleunigen.
  • Abfrageoptimierung: Optimiere Abfragen, um die Kosten für zusätzliche Joins zu minimieren.
  • Hybrider Ansatz: Kombiniere die Normalisierung mit der Denormalisierung in Bereichen, in denen die Leistung wichtig ist, z. B. bei Tabellen für die Berichterstattung.
  • Regelmäßige Überwachung: Überprüfe kontinuierlich die Leistung deiner Datenbank mit Profiling-Tools, um mögliche Probleme zu erkennen.

Ist 2NF nur ein Übergangsschritt, um die dritte Normalform zu erreichen?

In den meisten Fällen streben Datenbankdesigner die dritte Normalform an, da sie die Redundanz weiter reduzieren und die Datenintegrität insgesamt verbessern kann. Das Erreichen von 3NF ist jedoch oft mit zusätzlichem Aufwand verbunden, z. B. mit der Erstellung weiterer Tabellen und Beziehungen, was zu Komplexität und Leistungseinbußen bei der Abfrageausführung führen kann.

Es gibt Fälle, in denen die zweite Normalform allein schon ausreicht. Wenn Einfachheit und schnelle Umsetzung im Vordergrund stehen, wie z.B. bei kleinen Projekten, Prototypen oder Situationen, in denen die Datenredundanz minimal ist, kann 2NF ausreichen. In Systemen, in denen alle Attribute bereits vollständig von einem einfachen Primärschlüssel abhängig sind, kann das Erreichen von 2NF das primäre Ziel der Reduzierung der partiellen Abhängigkeit erfüllen, ohne dass eine weitere Normalisierung erforderlich ist.

Über die zweite Normalform hinaus: zur dritten Normalform

Wenn du deine Datenbank weiter normalisieren willst, kannst du deine Tabellen immer wieder umstrukturieren, um die dritte Normalform zu erreichen.

3NF baut auf 2NF auf, indem sie transitive Abhängigkeiten berücksichtigt - Situationen, in denen Nicht-Schlüssel-Attribute von anderen Nicht-Schlüssel-Attributen abhängen und nicht vom Primärschlüssel. Diese Reihenfolge stellt sicher, dass jedes Attribut direkt vom Primärschlüssel abhängt und von nichts anderem.

Zum Beispiel in einer Tabelle, die die Einschreibungen für einen Kurs verfolgt:

  • 2NF: Stellt sicher, dass Attribute wie der Kursname und der Name des Schülers/der Schülerin vollständig von ihren jeweiligen Primärschlüsseln abhängen (z. B. Schüler-ID und Kurs-ID). Dadurch werden partielle Abhängigkeiten vermieden, bei denen Nicht-Schlüssel-Attribute nur von einem Teil des zusammengesetzten Schlüssels abhängen.
  • 3NF: Stellt sicher, dass Attribute wie z. B. Angaben zu Lehrkräften oder Abteilungen in separaten Tabellen gespeichert werden, um transitive Abhängigkeiten zu vermeiden.

3NF ist ideal für komplexere Systeme, bei denen Datenintegrität und Effizienz an erster Stelle stehen, insbesondere wenn das Datenvolumen wächst. Schau dir unseren Artikel Was ist die dritte Normalform? an, wenn du mehr über die 3NF und ihre restriktivere Form, die BCNF, erfahren möchtest.

Fazit

Die zweite Normalform ist ein wichtiger Schritt in der Datenbanknormalisierung und schließt die Lücke zwischen der 1NF und höheren Formen wie der 3NF. Durch die Beseitigung partieller Abhängigkeiten reduziert 2NF die Redundanz und verbessert die Zuverlässigkeit deiner Daten. Sie kann zwar zu einer gewissen Komplexität führen, aber die Vorteile einer verbesserten Datenintegrität und einer vereinfachten Wartung machen sie zu einem wichtigen Bestandteil eines effektiven Datenbankdesigns.

Wenn du bereit bist, deine Kenntnisse zu vertiefen, solltest du unseren Kurs Datenbankdesign besuchen, um dein Verständnis von Normalisierungstechniken und ihren praktischen Anwendungen zu vertiefen. Mit unserer SQL Associate-Zertifizierung kannst du außerdem deine SQL- und Datenbankmanagement-Kenntnisse unter Beweis stellen und potenziellen Arbeitgebern dein Fachwissen zeigen!

Abschließend möchte ich sagen: Wenn du ein Entscheidungsträger in einem Unternehmen bist und weißt, dass du daran arbeiten musst, sauberere und effizientere Datenbanken zu erstellen , solltest du in Erwägung ziehen, ein DataCamp für Unternehmen Demo-Anfrage. Wir helfen dir dabei, die Fähigkeiten deines Teams zu verbessern, damit du skalierbare Datenbanksysteme erstellen kannst, die die Effizienz deines Unternehmens und die Innovation fördern. Wir können sogar maßgeschneiderte Lernpfade und benutzerdefinierte Strecken erstellen. 

2 oder mehr Personen ausbilden? Schau dir unsere Business-Lösungen an

Verschaffe deinem Team Zugang zur gesamten DataCamp-Bibliothek mit zentralisierten Berichten, Aufgaben, Projekten und mehr

Probiere DataCamp for Business aus
business-homepage-hero.png

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.

2NF FAQs

Kann die zweite Normalform (2NF) auf Datenbanken ohne zusammengesetzte Schlüssel angewendet werden?

Ja! Während 2NF oft mit zusammengesetzten Schlüsseln arbeitet, können auch Tabellen mit nur einem Schlüssel den 2NF-Prinzipien folgen, wenn alle Attribute, die keine Primzahlen sind, vollständig vom Primärschlüssel abhängen.

Garantiert das Erreichen von 2NF die Eliminierung aller Redundanzen in einer Datenbank?

Nein. 2NF eliminiert zwar partielle Abhängigkeiten, aber nicht transitive Abhängigkeiten. Dafür musst du zur dritten Normalform (3NF) übergehen.

Gibt es Situationen, in denen eine Datenbank in 1NF ausreicht, ohne zu 2NF überzugehen?

Ja. In sehr einfachen Systemen mit minimaler Datenredundanz oder in Prototypen kann 1NF ausreichen. Ich würde generell nicht empfehlen, bei 1NF aufzuhören, es sei denn, du hast einen sehr spezifischen und gerechtfertigten Grund.

Was ist der Unterschied zwischen der 2NF und der dritten Normalform (3NF)?

2NF beseitigt partielle Abhängigkeiten und stellt sicher, dass die Attribute vom gesamten Schlüssel abhängen. 3NF geht noch weiter, indem sie transitive Abhängigkeiten beseitigt und sicherstellt, dass Attribute direkt vom Primärschlüssel abhängen und nicht von anderen Nicht-Schlüssel-Attributen.

Wie prüfe ich, ob meine bestehende Datenbank bereits in 2NF ist?

Du kannst dies überprüfen, indem du alle Tabellen mit zusammengesetzten Schlüsseln durchgehst und sicherstellst, dass alle Attribute, die keine Primzahlen sind, von dem gesamten zusammengesetzten Schlüssel abhängen und nicht nur von einem Teil davon.

Themen

Lernen mit DataCamp

Kurs

Database Design

4 hr
82.2K
Learn to design databases in SQL to process, store, and organize data in a more efficient way.
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

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

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.

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.

See MoreSee More