Liebe Mitleser,
mich treibt das folgende Problem um:
Ich habe in meinen Daten oft eine Art Dreiecksstruktur. Ein Beispiel könnte so aussehen:
Thomas -> gehört zu Abteilung 17 -> Abteilung 17 ist Teil von Firma X-Treme
Jan -> ist beschäftigt bei Firma X-Treme
Wo ist das Problem? Ich könnte Thomas per Fremdschlüssel an Abteilung 17 binden und Abteilung 17 wiederum an die Firma. Ich müsste jetzt nicht mehr Thomas mit der Firma verknüpfen, weil sich diese Verbindung über seine Zugehörigkeit zur Abteilung transitiv nachvollziehen lässt.
Jan gehört aber zu keiner Abteilung, ihn müsste ich direkt mit der Firma verknüpfen.
Es fallen mir zwei Lösungen ein:
Lösung 1: Hinzufügen einer Pseudoabteilung "Abteilung -1" und verknüpfen aller Mitarbeiter, die keine Abteilung haben, mit dieser.
Das ist unsauber, weil die Daten nicht mehr die reale Situation abbilden und es per Konvention geregelt werden muss, dass Abteilung -1 anders zu behandeln ist.
Lösung 2: Alle Mitarbeiter werden per Fremdschlüssel an die Firma gebunden. Bei Thomas gibt es dann einen Fremdschlüssel zur Abteilung und zur Firma.
Das ist unsauber, weil hier Daten redundant gespeichert werden müssen.
Beide Möglichkeiten gefallen mir nicht. Die dritte und einzige gute Lösung, die mir einfiele, wäre Lösung 2 zu nehmen und eine Regel einzuführen:
Wenn Person zu Abteilung hinzugefügt wird, trage die zugehörige Firma als Fremdschlüssel der Person hinzu. Allerdings kämen dann noch Regeln für Updates etc. hinzu.
Meine Fragen wären jetzt:
1) Gibt es noch eine andere Möglichkeit?
2) Wie geht man üblicherweise mit diesem Problem um?
3) Wenn die Lösung in Richtung meiner dritten Lösung geht: Wie würde man so etwas realisieren? Über Fremdschlüssel, über Trigger?
mich treibt das folgende Problem um:
Ich habe in meinen Daten oft eine Art Dreiecksstruktur. Ein Beispiel könnte so aussehen:
Thomas -> gehört zu Abteilung 17 -> Abteilung 17 ist Teil von Firma X-Treme
Jan -> ist beschäftigt bei Firma X-Treme
Wo ist das Problem? Ich könnte Thomas per Fremdschlüssel an Abteilung 17 binden und Abteilung 17 wiederum an die Firma. Ich müsste jetzt nicht mehr Thomas mit der Firma verknüpfen, weil sich diese Verbindung über seine Zugehörigkeit zur Abteilung transitiv nachvollziehen lässt.
Jan gehört aber zu keiner Abteilung, ihn müsste ich direkt mit der Firma verknüpfen.
Es fallen mir zwei Lösungen ein:
Lösung 1: Hinzufügen einer Pseudoabteilung "Abteilung -1" und verknüpfen aller Mitarbeiter, die keine Abteilung haben, mit dieser.
Das ist unsauber, weil die Daten nicht mehr die reale Situation abbilden und es per Konvention geregelt werden muss, dass Abteilung -1 anders zu behandeln ist.
Lösung 2: Alle Mitarbeiter werden per Fremdschlüssel an die Firma gebunden. Bei Thomas gibt es dann einen Fremdschlüssel zur Abteilung und zur Firma.
Das ist unsauber, weil hier Daten redundant gespeichert werden müssen.
Beide Möglichkeiten gefallen mir nicht. Die dritte und einzige gute Lösung, die mir einfiele, wäre Lösung 2 zu nehmen und eine Regel einzuführen:
Wenn Person zu Abteilung hinzugefügt wird, trage die zugehörige Firma als Fremdschlüssel der Person hinzu. Allerdings kämen dann noch Regeln für Updates etc. hinzu.
Meine Fragen wären jetzt:
1) Gibt es noch eine andere Möglichkeit?
2) Wie geht man üblicherweise mit diesem Problem um?
3) Wenn die Lösung in Richtung meiner dritten Lösung geht: Wie würde man so etwas realisieren? Über Fremdschlüssel, über Trigger?