Erste Normalform (1NF)

Einführung

In der Einführung hast du gesehen, wie eine einzige, große und unstrukturierte Tabelle – unsere Bestelltabelle – zu ernsthaften Problemen führen kann. Begriffe wie Redundanz (unnötige Mehrfachspeicherung von Daten) und Datenanomalien (Fehler beim Ändern, Einfügen oder Löschen) beschreiben genau diese Schwächen. Das Ergebnis sind unzuverlässige und schwer wartbare Datenbanken.

Die Normalisierung ist der strukturierte Prozess, mit dem dieses Chaos beseitigt wird.

Die Erste Normalform (1NF) ist dabei der grundlegende und unverzichtbare erste Schritt. Sie bildet das stabile Fundament für alle weiteren Normalformen. Ohne eine saubere Umsetzung der 1NF kann kein Datenmodell langfristig funktionieren

Lernziele

Nach dieser Lerneinheit kannst du:

  • die erste Normalform (1NF) definieren und typische Verstöße wie mehrwertige Attribute, zusammengesetzte Attribute und wiederholende Gruppen sicher erkennen und erklären.
  • nicht-atomare Spalten zerlegen und diese in atomare Attribute wie Straße, Hausnummer, PLZ und Ort überführen, um die Regel der Atomarität korrekt umzusetzen.
  • eine nicht-normalisierte Tabelle schrittweise in die 1NF überführen und dabei die einzelnen Arbeitsschritte mit Zwischentabellen nachvollziehbar dokumentieren.

Definition der 1. Normalform (1NF)

Eine Relation (also eine Tabelle) befindet sich in der ersten Normalform, wenn alle Wertebereiche ihrer Attribute atomar sind. Das bedeutet, jede Zelle darf nur einen einzigen, unteilbaren Wert enthalten.

Atomarität steht für das Prinzip der Unteilbarkeit: In einer Tabelle darf keine Zelle mehrere Informationen gleichzeitig enthalten.

Das Konzept der Atomarität

Der Begriff atomar stammt vom griechischen atomos = “unteilbar”. In Datenbanken bedeutet das, dass ein Wert die kleinste logische Einheit ist, die du nicht weiter zerlegen musst, um sinnvoll mit ihr zu arbeiten.

Atomarität ist kontextabhängig. Du entscheidest, wie fein Daten zerlegt werden müssen, basierend auf den Anforderungen deiner Anwendung:

  • Wenn du z. B. Kundendaten sortieren oder filtern willst, musst du Felder wie Vorname, Nachname oder PLZ trennen.
  • Wenn du Daten nur als Ganzes nutzt (z. B. ein Geburtsdatum zur Altersberechnung), kann der Wert atomar bleiben.

Tabelle: Atomarität im Kontext

AttributNicht-atomarer WertMögliche ZerlegungBegründung
Kundenname”Erika Musterfrau”Vorname, NachnameFür Sortierung und Anrede notwendig
Adresse”Kaiserstr. 5, 53113 Bonn”Straße, HausNr, PLZ, OrtFür Filterung nach PLZ oder Ort erforderlich
Geburtsdatum”01.03.1995”(bleibt atomar)Wird meist als Ganzes genutzt
Bestellte_Produkte”A10, A15, A50”separate Zeilen pro ProduktNotwendig für saubere 1:n-Beziehungen

Die häufigsten Verstöße gegen die 1NF

In der Praxis treten drei typische Verstöße auf. Du musst sie erkennen und durch sauberes Design beheben.

Verstoß A: Mehrwertige Attribute

Eine Zelle enthält mehrere Werte, meist durch Kommas getrennt. Beispiel: Skills = "Java, Python, SQL" Problem: Du kannst nicht gezielt nach einem Skill suchen, z. B. wer “Python” kann. Lösung: Erstelle eine eigene Tabelle für Mitarbeiter-Skills mit einer Zeile pro Skill.

Die häufigsten Verstöße gegen die 1NF

Verstoß B: Zusammengesetzte Attribute

Ein Feld enthält verschiedene Informationen in einem Text. Beispiel: Adresse = "Müllerweg 10, 10117 Berlin" Problem: Du kannst nicht nach Stadt oder PLZ filtern. Lösung: Teile das Attribut in Straße, Hausnummer, PLZ und Ort auf.

Die häufigsten Verstöße gegen die 1NF

Verstoß C: Wiederholende Gruppen

Gleichartige Informationen stehen in durchnummerierten Spalten. Beispiel: ArtikelNr1, ArtikelNr2, ArtikelNr3 Problem: Unflexibel, führt zu leeren Feldern und komplexen Abfragen. Lösung: Erstelle eine separate Bestellpositionen-Tabelle, in der jede Artikelnummer eine eigene Zeile bildet.

Warum Verstöße A und C denselben Ursprung haben

Beide Verstöße entstehen, wenn eine 1:n-Beziehung falsch in einer einzelnen Tabellenzeile gespeichert wird. Eine Bestellung hat viele Artikel, ein Kunde hat viele Skills – das sind mehrwertige Beziehungen, die in relationalen Datenbanken immer in separaten Tabellen abgebildet werden müssen.

Zusammenfassung des Nutzens

Wenn du die 1NF konsequent umsetzt:

  • Vermeidest du Redundanzen und Inkonsistenzen.
  • Kannst du effizient suchen, sortieren und filtern.
  • Legst du die Basis für alle weiteren Normalformen (2NF, 3NF usw.).

Die Einhaltung der 1NF ist also kein Formalismus, sondern der erste Schritt zu einer klar strukturierten, wartbaren und performanten Datenbank.

⏳ Lädt Dataview-Inhalt...

Überleitung

Theorie ist gut, aber die Praxis zeigt, ob du das Prinzip wirklich verstanden hast. In diesem Abschnitt überführen wir eine fehlerhafte Bestelltabelle Schritt für Schritt in die erste Normalform (1NF).

Dabei lernst du, wie du Verstöße erkennst und systematisch behebst. Jeder Schritt enthält eine konkrete Zwischentabelle, damit du genau nachvollziehen kannst, was verändert wurde.

Ausgangssituation: Die chaotische Bestelltabelle

Unsere Tabelle Bestellungen_Rohdaten verstößt gegen mehrere Regeln der 1NF. Sie sieht so aus:

BestellNrBestellDatumKundeKundenAdresseArtikel_ListeTelefonnummern
100101.03.2024Schmidt, JosefKaiserstr. 5, 53113 BonnA10:200, A15:1000171-111, 0228-222
100201.03.2024Müller, HannesHändelstr. 67, 53115 BonnA60:100, A50:20, A80:10000172-333
100303.03.2024Schmidt, JosefKaiserstr. 5, 53113 BonnA10:1000171-111, 0228-222

Analyse der Verstöße

  • Mehrwertige Attribute: Artikel_Liste und Telefonnummern enthalten mehrere Werte.
  • Zusammengesetzte Attribute: Kunde kombiniert Nachname und Vorname, KundenAdresse kombiniert Straße, Hausnummer, PLZ und Ort.

Schritt 1: Mehrwertige Attribute auflösen

Ein mehrwertiges Attribut wie Artikel_Liste darf in der 1NF nicht mehrere Werte enthalten. Wir lösen diese Spalte auf, indem wir für jeden Artikel eine eigene Zeile erzeugen. Das bedeutet: Eine Bestellung mit zwei Artikeln erzeugt zwei Zeilen.

Zwischenergebnis nach Schritt 1

BestellNrBestellDatumKundeKundenAdresseArtikel_ListeTelefonnummern
100101.03.2024Schmidt, JosefKaiserstr. 5, 53113 BonnA10:2000171-111, 0228-222
100101.03.2024Schmidt, JosefKaiserstr. 5, 53113 BonnA15:1000171-111, 0228-222
100201.03.2024Müller, HannesHändelstr. 67, 53115 BonnA60:1000172-333
100201.03.2024Müller, HannesHändelstr. 67, 53115 BonnA50:200172-333
100201.03.2024Müller, HannesHändelstr. 67, 53115 BonnA80:10000172-333
100303.03.2024Schmidt, JosefKaiserstr. 5, 53113 BonnA10:1000171-111, 0228-222

Jetzt hat jede Zeile nur noch einen Artikelwert, aber noch zusammengesetzte Attribute in anderen Spalten.

Schritt 2: Zusammengesetzte Attribute zerlegen

Nun trennen wir die Spalten, die mehrere logische Informationen enthalten. Wir zerlegen sie in atomare Bestandteile:

  • KundeNachname, Vorname
  • KundenAdresseStrasse, HausNr, PLZ, Ort
  • Artikel_ListeArtNr, Menge

Zwischenergebnis nach Schritt 2

BestellNrBestellDatumNachnameVornameStrasseHausNrPLZOrtArtNrMengeTelefonnummern
100101.03.2024SchmidtJosefKaiserstr.553113BonnA102000171-111, 0228-222
100101.03.2024SchmidtJosefKaiserstr.553113BonnA151000171-111, 0228-222
100201.03.2024MüllerHannesHändelstr.6753115BonnA601000172-333
100201.03.2024MüllerHannesHändelstr.6753115BonnA50200172-333
100201.03.2024MüllerHannesHändelstr.6753115BonnA8010000172-333
100303.03.2024SchmidtJosefKaiserstr.553113BonnA101000171-111, 0228-222

Jetzt ist jede Spalte atomar, aber der Primärschlüssel ist noch nicht eindeutig.

Schritt 3: Primärschlüssel festlegen

Da nun jede Bestellung mehrere Zeilen hat (eine pro Artikel), ist BestellNr nicht mehr eindeutig. Deshalb bilden wir einen zusammengesetzten Primärschlüssel aus BestellNr und ArtNr. Jede Kombination ist einzigartig und identifiziert genau eine Bestellposition.

Endergebnis – Tabelle in 1NF

BestellNrArtNrBestellDatumNachnameVornameStrasseHausNrPLZOrtMenge
1001A1001.03.2024SchmidtJosefKaiserstr.553113Bonn200
1001A1501.03.2024SchmidtJosefKaiserstr.553113Bonn100
1002A6001.03.2024MüllerHannesHändelstr.6753115Bonn100
1002A5001.03.2024MüllerHannesHändelstr.6753115Bonn20
1002A8001.03.2024MüllerHannesHändelstr.6753115Bonn1000
1003A1003.03.2024SchmidtJosefKaiserstr.553113Bonn100

Ergebnisbewertung

Was haben wir gewonnen?

  • Atomarität: Jede Zelle enthält genau einen Wert – kein Komma, keine Liste, keine mehrfachen Angaben.
  • Abfragbarkeit: Die Tabelle ist jetzt leistungsfähig und flexibel. Wir können z. B. berechnen, wie viele Artikel eines Typs verkauft wurden (SELECT SUM(Menge) FROM Bestellungen_1NF WHERE ArtNr = 'A10';) oder alle Kunden einer bestimmten PLZ finden (SELECT * FROM Bestellungen_1NF WHERE PLZ = '53113';).
  • Saubere Struktur: Die Daten sind klar gegliedert, jede Spalte hat nur eine Bedeutung. Es gibt keine Vermischung unterschiedlicher Datentypen.

Ergebnisbewertung

Was ist der Preis?

  • Redundanz: Kundendaten werden mehrfach gespeichert. Ändert sich eine Adresse, müssen mehrere Zeilen aktualisiert werden. Diese Redundanz wird erst durch die 2. Normalform reduziert.
  • Datenvolumen: Die Tabelle enthält mehr Zeilen als zuvor, was Speicherplatz benötigt – dafür aber saubere, abfragbare Daten.
  • Änderungsanomalien: Ohne zusätzliche Tabellenstruktur (z. B. separate Kundentabelle) kann es bei manuellen Änderungen zu Inkonsistenzen kommen.

Fazit: Die 1NF ist erreicht, wenn alle Attribute atomar sind, keine wiederholenden Gruppen existieren und jede Zeile eindeutig identifizierbar ist. Sie ist der erste und unverzichtbare Schritt hin zu einem sauberen, relationalen Datenmodell – auch wenn sie Redundanzen noch nicht beseitigt. Diese werden in den höheren Normalformen adressiert.

⏳ Lädt Dataview-Inhalt...

Zusammenfassung

Zusammenfassung:

Die erste Normalform (1NF) – Prinzip der Atomarität

Die 1. Normalform stellt sicher, dass jede Tabelle logisch strukturiert und eindeutig abfragbar ist. Sie ist die Grundlage für alle weiteren Normalisierungen.

  • Eine Tabelle ist in der ersten Normalform, wenn alle Attribute atomar sind – das heißt, jede Zelle enthält nur einen unteilbaren Wert.
  • Keine Listen, Arrays oder Wiederholungen sind erlaubt. Jede Information steht in einer eigenen Zelle.
  • Zusammengesetzte Attribute wie Adressen oder Namen müssen in Einzelfelder zerlegt werden (z. B. Vorname, Nachname, PLZ, Ort).
  • Wiederholende Gruppen wie ArtikelNr1, ArtikelNr2 usw. werden durch eigene Zeilen oder separate Tabellen ersetzt.
  • Atomarität ist kontextabhängig: Ein Geburtsdatum gilt meist als atomar, eine Adresse dagegen nicht.

Nutzen der 1NF:

  • Daten sind klar strukturiert und konsistent.
  • Abfragen, Filterungen und Auswertungen werden präziser und schneller.
  • Sie bildet die Basis für die 2. und 3. Normalform, in denen Redundanzen reduziert werden.

Praktische Umsetzung – Tabelle in die 1NF überführen

Die Anwendung der 1NF erfolgt schrittweise. Am Beispiel einer fehlerhaften Bestelltabelle wurde gezeigt, wie du die Verstöße erkennst und behebst.

Schritt 1 – Mehrwertige Attribute auflösen:

  • Jede Liste oder Sammlung (z. B. „A10:200, A15:100“) wird in mehrere Zeilen umgewandelt.
  • Jede Zeile enthält nur noch einen Artikel.

Schritt 2 – Zusammengesetzte Attribute zerlegen:

  • Spalten mit mehreren logischen Informationen werden in atomare Spalten getrennt.
  • Beispiel: KundeNachname, Vorname; AdresseStraße, HausNr, PLZ, Ort.

Schritt 3 – Eindeutigen Primärschlüssel festlegen:

  • Durch das Auflösen der Mehrfachwerte entstehen mehrere Zeilen pro Bestellung.
  • Eine Kombination aus BestellNr und ArtNr wird als zusammengesetzter Primärschlüssel verwendet, um jede Zeile eindeutig zu identifizieren.

Endergebnis:

  • Jede Zelle ist atomar und enthält nur einen Wert.
  • Die Tabelle ist vollständig abfragbar und entspricht der 1NF.

Bewertung der 1NF

Vorteile:

  • Klare, strukturierte Datenbasis.
  • Präzise Abfragen und Berechnungen möglich.
  • Grundlage für stabile Datenmodelle.

Nachteile:

  • Erhöhte Redundanz: Wiederholte Kundendaten oder Adressen.
  • Gefahr von Änderungsanomalien, wenn redundante Informationen inkonsistent aktualisiert werden.

Ausblick:

In der nächsten Lerneinheit überführst du eine Tabelle in die 2NF, indem du partielle Abhängigkeiten erkennst und Attribute, die nur von einem Schlüsselteil abhängen, in passende Tabellen auslagerst. So reduzierst du Redundanz weiter und bereitest die 3NF vor.