(Datenbanken) Normalisierung - Aufspaltung der Tabelle

Jack159

Lieutenant
Registriert
Dez. 2011
Beiträge
766
Hallo,

Folgende Beispieltabelle sei gegeben:

Projekt(ProjektID, MitarbeiterID, Projektname, MitarbeiterName)

Alle Attribute seien hier atomar. Dann ist die Tabelle in der 1. NF.

Die Tabelle ist jedoch nicht in der 2. NF, da sich z.b. die ProjektID nicht zwingend ändert, wenn man MitarbeiterName ändert. Somit muss die Tabelle aufgespalten werden.

Hier nun meine Frage: Welche der beiden Varianten ist richtig?


Variante 1:

Projekt(ProjektID, ProjektName)
Mitarbeiter(MitarbeiterID, MitarbeiterName)

------------------------------------------

Variante 2:

Projekt(ProjektID, MitarbeiterID, ProjektName)
Mitarbeiter(MitarbeiterID, MitarbeiterName)



Unterschied:
Bei Variante 2 habe kommt der (Teil)-Primärschlüssel "MitarbeiterID" in der Tabelle Projekt und in der Tabelle Mitarbeiter vor.
Bei der Variante 1 kommt der (Teil)-Primärschlüssel "MitarbeiterID" nur in der Tabelle Mitarbeiter vor. Hier wurde also zu 100%ig alles aufgeteilt.

Welche Variante ist die richtige, wenn es um Normalisierung geht?
 
Die Definition deiner 2. NF ist falsch oder ungenau (kann die Aussage gerade nicht nachvollziehen). Korrekt müsste es ungefähr so heißen:
Jedes Nicht-Schlüssel-Attribut (Projektname, Mitarbeitername) ist von allen Teilen des Primärschlüssels (ProjektID, MitarbeiterId) abhängig.
(Man könnte für abhängen eventuell auch so etwas wie "wird spezifiziert durch" genannt, aber abhängen ist eben die immer genutzte Veschreibung)

Projektname hängt von der Projektid ab, das ist richtig, genauso wie der Mitarbeiternamevon der MitarbeiterId abhängt.
Der Projektname hängt jedoch nicht von der Mitarbeiterid ab, genauso wenig wie der Mitarbeitername von der ProjektId abhängt.

Wenn du das also betrachtest, kannst du nur zu einer Lösung kommen: Variante 1.
Du hast für Variante 1 noch die Verknüpfungstabelle Projekt_Mitarbeiter(ProjektID, MitarbeiterID) vergessen.
 
Zurück
Oben