Zusammengesetzter Fremdschlüssel

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Um welches Datenbanksystem geht es?

(Und warum verwendest du diesen zusammengesetzten Schlüssel? Der "richtige" Primärschlüssel für eine Tabelle "Mitarbeiter" ist doch "Personalnummer" oder "MitarbeiterID" - die ProjektID könnte man höchstens in eine Tabelle aufnehmen, die die Mitarbeiter den Projekten zuordnet.)

Gruß Ragnar


rigoraner 
Beitragsersteller
 23.11.2010, 11:07

habe die tabelle nun geändert und mitarbeiter_id als einzigen primärschlüssel genommen und es geht.

wotan38  16.05.2012, 09:34
@rigoraner

Grundsätzlich geht das und es gibt auch sinnvolle Anwendung dafür. Ob es hier sinnvoll ist oder nicht, ist was anderes.

Ich habe eine Anwendung mit etwas über 50 Tabellen. Da kommt das ein paarmal vor, z.B. bei Bankleitzahlen und Länderkennzeichen. Wenn man auch ausländische Bankverbindungen hat, ist die Bankleitzahl alleine nicht mehr eindeutig. Es ist kein Problem, mit zusammengesetzten Fremdschlüsseln zu arbeiten. Funktioniert im Prinzip genauso.

Die Beziehung "Mitarbeiter" - "Projekt" wird ja i.d.R. eine 1:n-Beziehung sein. Schließlich wird ein Mitarbeiter im Normalfall an mehreren Projekten arbeiten - zumindest nacheinander.

Ich würde das so lösen:

  • Tabelle "Mitarbeiter": Personalnummer als Schlüssel.

  • Tabelle "Projekte": Projekt-ID als Schlüssel.

  • Tabelle "Projektarbeit": Personalnummer und Projekt-ID als (zusammengesetzten) Fremdschlüssel


wotan38  16.05.2012, 09:41

Das kann man so machen, ein zusammengesetzter Fremdschlüssel ist aber etwas anderes. Das hier sind zwei voneinander unabhängige aber einfache Fremdschlüssel. Wenn man mehrere Fremdschlüssel (für unterschiedliche Tabellen wie hier) definiert, sind das deswegen keine zusammengesetzten Fremdschlüssel. Das trifft nur zu, wenn der Primärschlüssel, auf den sich der Fremdschlüssel bezieht, ein zusammengesetzter Schlüssel ist. Das ist hier nicht der Fall.