IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Datenbanken - Normalisierung



Normalisierung

Es wird anhand eines Beispiels beschrieben, wie man eine Tabelle in Tabellen der 1., 2. und 3. Normalform umwandelt.


Autor: Patrick Bucher (paedubucher)
Datum: 19-04-2004, 10:10:09
Referenzen: paedubucher@bluewin.ch
Schwierigkeit: Anfänger
Ansichten: 6739x
Rating: 9.14 (7x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Normalisierung von Tabellen

Nicht normalisierte Tabelle

PersonalNr Name Vorname AbtNr AbtBezeichnung ProjNr ProjektBeschreibung Tätigkeit
4 Richter Hans 3 Verkauf 1, 2, 3 Kundenumfrage, Konkurrenzanalyse, Verkaufsmesse Sachbearbeiter, Leiter


Alle Informationen wurden in einem Datensatz der oberen Tabelle gespeichert. Es gibt zu jedem Angestellten mehrere Abteilungen. Das Problem daran ist, dass man nicht sagen kann, bei welchem Projekt er welche Tätigkeit verrichtet. Darum darf jedes Feld nur einen einzigen Wert enthalten! Die Spalte ProjNr sollte logischerweise eine Zahl sein. Dieser Eintrag kann aber unmöglich eine Zahl sein, da dort Kommas und Leerstellen vorkommen.

1NF – erste Normalform
PersonalNr Name Vorname AbtNr AbtBezeichnung ProjNr ProjektBeschreibung Tätigkeit
4 Richter Hans 3 Verkauf 1 Kundenumfrage Sachbearbeiter
4 Richter Hans 3 Verkauf 2 Konkurrenzanalyse Sachbearbeiter
4 Richter Hans 3 Verkauf 3 Verkaufsmesse Leiter


In der 1. Normalform werden die Daten einer Tabelle so verteilt, dass jede Spalte nur noch einen einzigen Wert hat. Nun kann die Spalte ProjNr auch eine Zahl sein. Dazu kommt, dass man jetzt weiss, welche Tätigkeit Hans Richter in welchem Projekt hat. In welcher Abteilung arbeitet Hans Richter? Das Datenbanksystem wird drei verschiedene Resultate ausspucken, was kein Problem darstellen sollte. Hans Richter kann jedoch nicht eindeutig identifiziert werden, da die PersonalNr mehrmals vorhanden ist. So kann man nicht überprüfen, ob ein anderer Benutzer dieselbe Nummer verwendet. Weiter ist es sinnlos, den gleichen Angestellten mehrmals abzuspeichern – hier wird Speicherplatz verschwendet!

2NF – zweite Normalform

Personal:

PersonalNr Name Vorname AbtNr
4 Richter Hans 3
5 Meier Walter 3


Damit die Probleme der 1. NF umgangen werden können, muss man alle Informationen auf mehrere Tabellen verteilen. Dazu gibt es eine gute Faustregel: jeder Eintrag muss von der Identifikationsnummer abhängig gemacht werden! Eine Tabelle wird dann möglicherweise nur noch 2 Spalten besitzen. Wie findet man heraus, welche Tätigkeit ein bestimmter Angestellter hat? Durch Verknüpfungen! Die Spalten mit den gleichen Farben wurden hier verknüpft.

Die Tabelle "Tätigkeit" verknüpft die PersonalNr mit der ProjNr in der Tabelle "Projekt". So wird auch die entsprechende Tätigkeit zugeordnet. Sämtliche Daten können nun über diese Verknüpfungen zugeordnet werden, es gibt keine Probleme mehr beim Hinzufügen von neuen Angestellten oder Platzverschwendung.

Abteilung:

AbtNr AbtBezeichnung
3 Verkauf


Projekt:

ProjNr ProjektBeschreibung
1 Kundenumfrage
2 Konkurrenzanalyse
3 Verkaufsmesse


Tätigkeit:

PersonalNr ProjNr Tätigkeit
4 1 Sachbearbeiter
4 2 Sachbearbeiter
4 3 Leiter
5 1 Sachbearbeiter
5 2 Sachbearbeiter


3NF – dritte Normalform

In diesem Beispiel genügt die 2. Normalform. Die 3. Normalform wird nur für komplexere Datenbestände verwendet. Hier fährt man mit der Normalisierung weiter, bis jedes nicht id Feld von einem id Feld abhängig ist.
So könnte eine Tabelle in der 2. Normalform aussehen:

PersonalNr ProjNr Tätigkeit Stunden Stundenlohn
2 1 Leitung 25 50
3 1 Bearbeitung 55 30
4 1 Bearbeitung 70 30
4 2 Leitung 25 50
5 2 Präsentationsvorbereitung 160 35
4 3 Leitung 25 50
2 3 Bearbeitung 80 30
3 3 Bearbeitung 65 30


Die Tabelle wird nun weiter auseinander genommen:

TätigkeitsNr Tätigkeit
1 Leitung
2 Bearbeitung
3 Präsentationsvorbereitung


PersonalNr ProjNr TätigkeitsNr Stunden
2 1 1 25
3 1 2 55
4 1 2 70
4 2 1 25
5 2 3 160
4 3 1 25
2 3 2 80
3 3 2 65


Die 3. Normalform wird in der Praxis am häufigsten verwendet. Manchmal genügt auch schon die 2. Normalform, wie oben beschrieben.

Nach der 3. Normalform gibt es noch weitere Normalformen, wie die 4. und 5. oder die sog. Boyce-Codd Normalform. Diese werden in der Praxis nur sehr selten und bei extrem komplexen Datenbeständen verwendet. In der 5. Normalform hat z.B. eine Tabelle nur einen Index (id) und dazu eine weitere Spalte mit Inhalt. Auf diese Weise entsteht für jede Spalte eine Tabelle mit 2 Spalten. Das verlangsamt die Geschwindigkeit und braucht viel mehr Speicherkapazität.

Referenzen: SQL - Grundlagen und Datenbankdesign, Herdt-Verlag


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0