Das zerlegen eines ternären Beziehung in binäre Beziehungen
Entwerfe ich eine Datenbank, mit Benutzer-accounts und Projekten mit den folgenden Beziehungen und constraints:
- Ein Konto hat viele Nutzer
- Gehört ein Benutzer zu viele Konten
- Ein Konto hat viele Projekte
- Einem Projekt gehört nur ein Konto
- Ein Benutzer arbeitet in vielen Projekten (redundante Hinweis: jedes von Ihnen gehören zu seinen eigenen account).
In anderen Worten, ein Benutzer kann die Zusammenarbeit in vielen Projekten mit dem gleichen Konto. Aber seit ein Benutzer kann Mitglied mehrere Konten, so kann ein Benutzer arbeiten Sie in vielen Projekten von mehreren Konten. Dies führt mich zu einer ternären arbeitet Beziehung:
Nach der Lektüre ein paar Papiere zum konvertieren von ternären Beziehungen in binäre Beziehungen, die ich kam mit der folgenden äquivalenten Beziehungen:
Zwei Frage stellt sich hier:
-
Ist diese Umrechnung richtig? Ich habe festgestellt, dass ich haben, um zusätzliche Kontrollen auf Applikationsebene zu verarbeiten Einfügungen. Zum Beispiel, bevor ein neuer
(User,Project)
ich habe zu prüfen, dass der Benutzer gehört, die das gleiche Konto, das dem Projekt gehört. -
Ist es wirklich notwendig, um die Beziehung zwischen
Account
undUser
? Nachdem die Beziehung zwischenUser
undProject
Hinzugefügt wurde, konnte nicht wir wissen, dass der account gehört ein Benutzer zu, durch Zugriff auf das Projekt?
Dank!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn du mit "richtige" meinst du "gleichwertig", dann nicht.
Es gibt nichts zu stoppen Sie verbindet Projekt-und account - ohne verbinden eines Benutzers (etc...), was nicht möglich wäre, in eine echte ternäre Beziehung.
Tatsächlich, wir würden nur wissen, welche Konten sind "Kandidaten" mit dem Benutzer, aber wir hätten keinen guten Weg, sich für eine zu entscheiden.
Das eigentliche problem mit diesem System ist, dass es ermöglicht die Verbindung der Benutzer zu einem Konto ohne Bezug zu irgendeiner der Benutzer, die mit Projekten.
Meiner Meinung nach, wenn Sie eine ternäre Beziehung, gehen Sie einfach weiter und direkt stellen es in das physische Modell. Wenn ich Ihre Anforderungen verstehen richtig, würde dies wie folgt Aussehen:
Hinweis, wie
AccountId
außerhalbCollaboration
PK. Dies bedeutet, dass jedes Projekt/Benutzer-Kombination angeschlossen werden muss, um genau einen account (ein verschiedenen Kombination können immer noch eine Verbindung mit einem anderen Konto).