Wie funktioniert die 2 Normalform bei Datenbanken?

Jawad1231

Lt. Junior Grade
Registriert
Aug. 2017
Beiträge
370
Hallo,

ich arbeite mich gerade in das Thema Datenbanken ein und komme einfach nicht weiter. Ich gehe gerade den Prozess von der Erstellung eines ER-Modells bis zum Verfeinerungsprozess durch und hänge fest.

Im ersten Anhang habe ich das ER Modell gebaut.
ERM_Onlineshop (1).png

im zweiten Schritt habe ich auf Basis des ER-Modell das Relationales Datenmodell gebaut. Die Ausrufezeichen stehen für den Fremdschlüssel.

Relationales Datenmodell.png

Als nächstes habe ich das Verfahren der Schrittweisen Verfeinerung in Angriff genommen.

1. Normalform:
In der 1NF stellen wir sicher, dass jede Attributwert Menge Atomar ist und jede Tabelle einen Primärschlüssel hat.

Lösung:

Folgende Attribute lassen sich Atomar aufteilen:

  • Name → Vorname, Nachname
  • Adresse → Straße, Ort, Bundesland, Hausnummer ,Land, Postleitzahl, Stadt
  • Datum → Tag, Monat, Jahr
  • Rufnummer → Vorwahl, Rufnummer

2. Normalform:

  • Die Relation muss bereits in der 1NF sein.
  • Datenfelder müssen von einem Schlüssel“ funktional abhängig“ sein
Lösung: ??????????????
Hier komme ich nicht weiter. Ich habe mir jedes Video auf Youtube angeschaut und verstehe es immer noch nicht. In allen Videos hat man immer 2 Primäre Schlüssel für eine Tabelle, wie kommt man drauf? In meinem Modell habe ich ja entweder nur einzelne Tabellen mit 1 Primär Schlüssel oder manche Tabellen, die 1 Primärschlüssel und 1 Fremdschlüssel haben.
Muss ich für die zweite Normalform eine Datenbank erstellen und diese mit Werte füllen, die bewusst falsch anlegen, damit ich so, die 2 Normalform lösen kann, ich bin maximal verwirrt.
 
"Funktional abhängig" bedeutet hier, dass jedes Attribut von allen Primär- und Fremdschlüsseln abhängt. D. h. alle Attribute benötigt auch wirklich alle vorhandene Schlüssel.

Das bedeutet für dich zwei Sachen:
1. Diese Normalform kann man nur bei Tabellen prüfen, die mehr als nur einen Schlüssel haben.
2. Die 2NF ist verletzt, wenn mindestens ein Attribut nicht alle Schlüssel (Primär oder Fremd) benötigt.

In deinem konkreten Fall musst du also nur die Tabellen Lager, Abteilung, Mitarbeiter, Produkt lagert in Lager, Kunde tätigt Bestellung, Bestellung beinhaltet Produkt und Mitarbeiter arbeitet in Abteilung untersuchen, da sie mehrere Schlüssel haben. Alle anderen Tabellen sind damit schon automatisch in der 2NF!

Dann gehst du jedes Attribut in einer Tabelle durch und schaust, ob dieses Attribut wirklich alle Schlüssel benötigt oder wenigstens einen Schlüssel nicht.

Beispiel Produkt lagert in Lager
Es gibt hier nur ein Attribut namens Menge und dieses benötigt den Primär- und den Fremdschlüssel. ("Von Produkt X gibt es Y Stück im Lager Z.") Also liegt hier die 2NF vor.

Beispiel Mitarbeiter
Hier gibt es eine Menge Attribute, aber ich picke hier mal nur Name bzw. Vorname und Nachname heraus. Der Name hängt eindeutig vom Mitarbeiter ab, hat aber rein gar nichts mit der Abteilung zu tun und man braucht auch nicht die Abteilung, um den Mitarbeiter einen Namen zu geben. Oder anders gesagt: Name ist nicht funktionell abhängig von AbteilungID. Hier liegt also eine Verletzung der 2NF vor.
Ich würde die 2NF so herstellen, in dem ich AbteilungID herauslösche. Es gibt ja noch die Tabelle Mitarbeiter arbeitet in Abteilung, die diese Beziehung bereits darstellt. Es geht also nichts verloren. Würde es diese andere Tabelle nicht geben, würde ich eine ähnliche Tabelle in der Art erstellen, in der AbteilungID und MitarbeiterID zusammen auftauchen, um die Zuordnung herzustellen.


Verstanden?
 
  • Gefällt mir
Reaktionen: Jawad1231, Espero, Marco01_809 und 4 andere
Krik schrieb:
"Funktional abhängig" bedeutet hier, dass jedes Attribut von allen Primär- und Fremdschlüsseln abhängt. D. h. alle Attribute benötigt auch wirklich alle vorhandene Schlüssel.
Nein, nur Primärschlüssel bzw. Schlüsselkandidaten, d.h. Attribute, die gemeinsam einen natürlichen Primärschlüssel bilden könnten.
Krik schrieb:
Beispiel Produkt lagert in Lager
Es gibt hier nur ein Attribut namens Menge und dieses benötigt den Primär- und den Fremdschlüssel. ("Von Produkt X gibt es Y Stück im Lager Z.") Also liegt hier die 2NF vor.
Diese Kreuztabelle hat zwei Fremdschlüssel: Produkt-ID und Lager-ID. Zusammen bilden diese beiden Fremdschlüssel den Primärschlüssel.

Wenn Fremdschlüssel nicht teil des Primärschlüssels oder ein Schlüsselkandidat sind, spielen sie keine Rolle. D.h. die Abteilungs-ID könnte in der Mitarbeitertabelle bleiben, sofern das eine 1:n-Beziehung ist (dann sollte aber die redundante Kreuztabelle entfernt werden).
 
Zuletzt bearbeitet:
Zurück
Oben