Normalisierung - Aufspaltung der Tabelle

Jack159

Bekanntes Mitglied
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 ich den Teilprimärschlüssel "MitarbeiterID" einerseits mit ausgelagert, jedoch auch in der Ursprungstabelle drinnen gelassen. Mir geht es hier nur im die Normalisierung und erstmal nicht um Fremdschlüssel!
Ist in Variante 2 der Teilprimärschlüssel "MitarbeiterID" nicht überflüssig?
 
In deiner Variante 1 hast du überhaupt keine Verbindung zwischen den beiden Tabellen. In Variante 2 mit einem Fremdschlüssel (MitarbeiterID). Aber es könnte ja auch sein, dass ein Projekt mehrere Mitarbeiter hat. Dann bräuchtest du (zusätzlich zu Variante 1) evtl. noch eine weitere Tabelle, welche die Verbindung Projekt und Mitarbeiter speichert.
 
Sorry, ich habe bei Variante 2 in der Tabelle Mitarbeiter vergessen, "MitarbeiterID" als Primärschlüssel zu deklarieren.

Variante 2:

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


Mir geht es nur um das generelle Muster beim Normalisieren.
Bei Variante 1 ist ja das Muster, dass ich die Ursprungstabelle wirklich zu 100%ig aufteile in 2 Tabellen. Kein Attribut oder Schlüssel kommt in beiden Tabellen gleichzeitig vor.
Bei Variante 2 ist das Muster, dass ich wie bei Variante 1 zwar alles zu 100% aufteile in 2 Tabellen, jedoch der Primärschlüssel in beiden Tabellen vorkommt.

Die Frage ist: Welche Variante ist die richtige?
 
Du musst halt auch überlegen, was du erreichen willst. Ich vermute mal, es sollen ein oder mehrere Mitarbeiter einem Projekt zugeordnet werden können.

Bei deiner 2. Variante ist die Tabelle Mitarbeiter OK, aber bei der Tabelle Projekte sieht es unschön aus, wenn du mehrere Mitarbeiter für ein Projekt hast. Dann sind mehrere Zeilen in der Tabelle, in denen sich nur der Fremdschlüssel (MitarbeiterID) unterscheidet und aber die anderen beiden Felder gleich sind (ProjektID und ProjektName). Dann wäre die 1. Variante vielleicht besser, aber halt nicht vollständig, weil noch die Verbindung von Projekten und Mitarbeitern fehlt, was mit einer 3. Tabelle gemacht werden könnte.
 
Zuletzt bearbeitet von einem Moderator:
Dann wäre die 1. Variante vielleicht besser, aber halt nicht vollständig, weil noch die Verbindung von Projekten und Mitarbeitern fehlt, was mit einer 3. Tabelle gemacht werden könnte.

Die fehlende 3. Tabelle in der Variante 1 würde ich dann wie folgt erstellen:

Projekt_Mitarbeiter(ProjektID, MitarbeiterID)


Ok, dann ist nun alles klar, danke dir 😉
 

Zurück
Oben