Normalisierung: Unterschied zwischen den Versionen
| Zeile 172: | Zeile 172: | ||
→ Die Tabellen befinden sich in der 3. Normalform. | → Die Tabellen befinden sich in der 3. Normalform. | ||
== Durchgehendes Beispiel: 1NF → 2NF → 3NF == | |||
In diesem Beispiel wird eine unstrukturierte Tabelle schrittweise normalisiert. | |||
=== Ausgangstabelle (nicht normalisiert) === | |||
Problem: Mehrere Artikel stehen in einer Zelle (Wiederholungsgruppe). | |||
{| class="wikitable" style="width:100%;" | |||
! Bestellnr !! Kunde !! Artikel (Nr:Name:Menge) | |||
|- | |||
| 1001 || Müller || A01:Tastatur:2, A02:Maus:1 | |||
|- | |||
| 1002 || Schmidt || A01:Tastatur:1 | |||
|} | |||
=== Schritt 1: 1. Normalform (1NF) === | |||
Regel: Alle Werte müssen '''atomar''' sein (eine Information pro Zelle). | |||
{| class="wikitable" style="width:100%;" | |||
! Bestellnr !! Kunde !! Artikelnr !! Artikelname !! Menge | |||
|- | |||
| 1001 || Müller || A01 || Tastatur || 2 | |||
|- | |||
| 1001 || Müller || A02 || Maus || 1 | |||
|- | |||
| 1002 || Schmidt || A01 || Tastatur || 1 | |||
|} | |||
=== Schritt 2: 2. Normalform (2NF) === | |||
Voraussetzung: 1NF ist erfüllt. | |||
Problem: zusammengesetzter Schlüssel (Bestellnr + Artikelnr). | |||
'''Teilabhängigkeit:''' Artikelname hängt nur von Artikelnr ab, nicht von der ganzen Kombination. | |||
Primärschlüssel in der 1NF-Tabelle: | |||
* (Bestellnr, Artikelnr) | |||
Lösung: Auslagern der Artikeldaten. | |||
'''Tabelle: Bestellposition''' (2NF) | |||
{| class="wikitable" style="width:100%;" | |||
! Bestellnr !! Artikelnr !! Menge | |||
|- | |||
| 1001 || A01 || 2 | |||
|- | |||
| 1001 || A02 || 1 | |||
|- | |||
| 1002 || A01 || 1 | |||
|} | |||
'''Tabelle: Artikel''' (2NF) | |||
{| class="wikitable" style="width:100%;" | |||
! Artikelnr !! Artikelname !! KategorieID !! Kategoriename | |||
|- | |||
| A01 || Tastatur || 1 || Eingabegeräte | |||
|- | |||
| A02 || Maus || 1 || Eingabegeräte | |||
|} | |||
=== Schritt 3: 3. Normalform (3NF) === | |||
Voraussetzung: 2NF ist erfüllt. | |||
Problem: '''transitive Abhängigkeit''' in der Artikel-Tabelle: | |||
Kategoriename hängt von KategorieID ab, nicht direkt von Artikelnr. | |||
Artikelnr → KategorieID → Kategoriename | |||
Lösung: Auslagern der Kategorie. | |||
'''Tabelle: Artikel''' (3NF) | |||
{| class="wikitable" style="width:100%;" | |||
! Artikelnr !! Artikelname !! KategorieID | |||
|- | |||
| A01 || Tastatur || 1 | |||
|- | |||
| A02 || Maus || 1 | |||
|} | |||
'''Tabelle: Kategorie''' (3NF) | |||
{| class="wikitable" style="width:100%;" | |||
! KategorieID !! Kategoriename | |||
|- | |||
| 1 || Eingabegeräte | |||
|} | |||
=== Ergebnis === | |||
* 1NF: keine Listen in Zellen (atomare Werte) | |||
* 2NF: keine Teilabhängigkeiten bei zusammengesetzten Schlüsseln | |||
* 3NF: keine transitiven Abhängigkeiten | |||
== Kurzmerksatz == | |||
'''1NF: atomar – 2NF: keine Teilabhängigkeit – 3NF: keine transitive Abhängigkeit.''' | |||
== Vorteile der Normalisierung == | == Vorteile der Normalisierung == | ||
Version vom 23. Februar 2026, 10:40 Uhr
Normalisierung ist ein Verfahren zur Strukturierung von Datenbanktabellen. Ziel ist es, Redundanzen zu vermeiden und Datenkonsistenz sicherzustellen.
Die Normalisierung wird hauptsächlich bei relationalen Datenbanken angewendet.
Ziel der Normalisierung
Durch Normalisierung sollen:
- doppelte Datenspeicherung vermieden werden
- Einfüge-, Änderungs- und Löschanomalien verhindert werden
- Tabellen logisch und übersichtlich aufgebaut sein
Grundprinzip
Große Tabellen werden in mehrere kleinere Tabellen aufgeteilt. Diese Tabellen werden über Primär- und Fremdschlüssel miteinander verknüpft.
Normalformen
Die Normalisierung erfolgt schrittweise in sogenannte Normalformen.
1. Normalform (1NF)
Bedingungen:
- Alle Attribute enthalten nur atomare (unteilbare) Werte
- Keine Wiederholungsgruppen
Beispiel (nicht 1NF):
| Kunde | Telefonnummern |
|---|---|
| Müller | 12345, 67890 |
Korrekt (1NF):
| Kunde | Telefonnummer |
|---|---|
| Müller | 12345 |
| Müller | 67890 |
2. Normalform (2NF)
Bedingungen:
- Tabelle ist in 1NF
- Jedes Nicht-Schlüsselattribut ist vollständig vom Primärschlüssel abhängig
Problem: Teilabhängigkeiten bei zusammengesetzten Schlüsseln.
Beispiel zur 2. Normalform (2NF)
Gegeben ist folgende Tabelle:
| Bestellnr | Artikelnummer | Artikelname | Menge |
|---|---|---|---|
| 1001 | A01 | Tastatur | 2 |
| 1001 | A02 | Maus | 1 |
| 1002 | A01 | Tastatur | 1 |
Primärschlüssel ist hier die Kombination aus:
- Bestellnr
- Artikelnummer
→ zusammengesetzter Primärschlüssel
Problem: Der Artikelname hängt nur von der Artikelnummer ab, nicht von der gesamten Kombination (Bestellnr + Artikelnummer).
Das ist eine Teilabhängigkeit und verletzt die 2. Normalform.
Lösung (Aufteilung in zwei Tabellen)
Tabelle: Bestellposition
| Bestellnr | Artikelnummer | Menge |
|---|---|---|
| 1001 | A01 | 2 |
| 1001 | A02 | 1 |
| 1002 | A01 | 1 |
Tabelle: Artikel
| Artikelnummer | Artikelname |
|---|---|
| A01 | Tastatur |
| A02 | Maus |
Jetzt gilt: Alle Nicht-Schlüsselattribute hängen vollständig vom jeweiligen Primärschlüssel ab.
→ Die Tabellen befinden sich in der 2. Normalform.
3. Normalform (3NF)
Bedingungen:
- Tabelle ist in 2NF
- Keine transitiven Abhängigkeiten
Das bedeutet: Ein Nicht-Schlüsselattribut darf nicht von einem anderen Nicht-Schlüsselattribut abhängen.
Beispiel (nicht 3NF):
Beispiel zur 3. Normalform (3NF)
Gegeben ist folgende Tabelle:
| Produktnr | Produktname | KategorieID | Kategoriename |
|---|---|---|---|
| 101 | Tastatur | 1 | Eingabegeräte |
| 102 | Maus | 1 | Eingabegeräte |
| 201 | Monitor | 2 | Ausgabegeräte |
Primärschlüssel:
- Produktnr
Problem: Der Kategoriename hängt nicht direkt von der Produktnr ab, sondern von der KategorieID.
Transitive Abhängigkeit:
Produktnr → KategorieID → Kategoriename
Damit liegt ein Verstoß gegen die 3. Normalform vor.
Lösung (Aufteilung in zwei Tabellen)
Tabelle: Produkt
| Produktnr | Produktname | KategorieID |
|---|---|---|
| 101 | Tastatur | 1 |
| 102 | Maus | 1 |
| 201 | Monitor | 2 |
Tabelle: Kategorie
| KategorieID | Kategoriename |
|---|---|
| 1 | Eingabegeräte |
| 2 | Ausgabegeräte |
Jetzt gilt: Alle Nicht-Schlüsselattribute hängen direkt vom jeweiligen Primärschlüssel ab.
→ Die Tabellen befinden sich in der 3. Normalform.
Durchgehendes Beispiel: 1NF → 2NF → 3NF
In diesem Beispiel wird eine unstrukturierte Tabelle schrittweise normalisiert.
Ausgangstabelle (nicht normalisiert)
Problem: Mehrere Artikel stehen in einer Zelle (Wiederholungsgruppe).
| Bestellnr | Kunde | Artikel (Nr:Name:Menge) |
|---|---|---|
| 1001 | Müller | A01:Tastatur:2, A02:Maus:1 |
| 1002 | Schmidt | A01:Tastatur:1 |
Schritt 1: 1. Normalform (1NF)
Regel: Alle Werte müssen atomar sein (eine Information pro Zelle).
| Bestellnr | Kunde | Artikelnr | Artikelname | Menge |
|---|---|---|---|---|
| 1001 | Müller | A01 | Tastatur | 2 |
| 1001 | Müller | A02 | Maus | 1 |
| 1002 | Schmidt | A01 | Tastatur | 1 |
Schritt 2: 2. Normalform (2NF)
Voraussetzung: 1NF ist erfüllt. Problem: zusammengesetzter Schlüssel (Bestellnr + Artikelnr). Teilabhängigkeit: Artikelname hängt nur von Artikelnr ab, nicht von der ganzen Kombination.
Primärschlüssel in der 1NF-Tabelle:
- (Bestellnr, Artikelnr)
Lösung: Auslagern der Artikeldaten.
Tabelle: Bestellposition (2NF)
| Bestellnr | Artikelnr | Menge |
|---|---|---|
| 1001 | A01 | 2 |
| 1001 | A02 | 1 |
| 1002 | A01 | 1 |
Tabelle: Artikel (2NF)
| Artikelnr | Artikelname | KategorieID | Kategoriename |
|---|---|---|---|
| A01 | Tastatur | 1 | Eingabegeräte |
| A02 | Maus | 1 | Eingabegeräte |
Schritt 3: 3. Normalform (3NF)
Voraussetzung: 2NF ist erfüllt. Problem: transitive Abhängigkeit in der Artikel-Tabelle: Kategoriename hängt von KategorieID ab, nicht direkt von Artikelnr.
Artikelnr → KategorieID → Kategoriename
Lösung: Auslagern der Kategorie.
Tabelle: Artikel (3NF)
| Artikelnr | Artikelname | KategorieID |
|---|---|---|
| A01 | Tastatur | 1 |
| A02 | Maus | 1 |
Tabelle: Kategorie (3NF)
| KategorieID | Kategoriename |
|---|---|
| 1 | Eingabegeräte |
Ergebnis
- 1NF: keine Listen in Zellen (atomare Werte)
- 2NF: keine Teilabhängigkeiten bei zusammengesetzten Schlüsseln
- 3NF: keine transitiven Abhängigkeiten
Kurzmerksatz
1NF: atomar – 2NF: keine Teilabhängigkeit – 3NF: keine transitive Abhängigkeit.
Vorteile der Normalisierung
- geringerer Speicherbedarf
- bessere Datenkonsistenz
- weniger Fehler bei Änderungen
- klare Tabellenstruktur
Nachteile
- mehr Tabellen
- komplexere Abfragen (JOINs notwendig)
Kurzmerksatz
Normalisierung reduziert Redundanz und sorgt für konsistente, logisch strukturierte Datenbanktabellen.
