was der beste Weg ist die folgende ..."One-to-many" Modellierung Frage
Angenommen, ich habe zwei Objekte zu modellieren: Agency
und Publisher
, und beide haben eine 1-zu-n-Beziehung zu Employee
. Dies ist eine echte 1-zu-n-Beziehung, da jeder Employee
nur für einen Agency
oder einen Publisher
arbeiten kann. Nehmen wir weiterhin an, dass ich keinen Supertyp (Employer
) einführen kann, der die 1-zu-n-Beziehung enthält.
Meine bevorzugte Lösung ist ein Fremdschlüssel in Employee
zu haben, die entweder Verbindung zu einem Primärschlüssel Agency
oder Publisher
(alle meine Primärschlüssel 64-Bit-IDs sind, die über die Datenbank eindeutig sind). Jetzt kann ich jedoch keine bidirektionale Verknüpfung mehr zuordnen, ohne in Employee
anzugeben, ob es sich um eine Agency
oder Publisher
Beziehung handelt.
Meine andere Option ist die Verwendung von zwei Tabellen AgencyEmployee
und PublisherEmployee
, die dann als traditionelle 1-zu-n bidirektionale Verbindungen verknüpft werden können.
Was halten Sie in dieser Situation für die beste Vorgehensweise?
UPDATE: Danke für die tollen Antworten in so kurzer Zeit! Was halten Sie von der folgenden Lösung: Fremdschlüssel in Employee
für beide Agency
und Publisher
, wie agency_id
und publisher_id
?
Ich stimme den Best Practice- und Bad Thing-Aufrufen zu, aber ich denke, dass aus Sicht der Normalisierung eine dritte Tabelle mit EmployeeID als PK, EmployerID und EmployerType besser wäre. –
@Harper: Das ist richtig, aber aus einer pragmatischen Sicht bedeutet das eine andere Verbindung (und einen mehrspaltigen Primärschlüssel). –