Frage

Ich habe mehrere Tabellen in meiner ERD, das die Ich mag würde in einer relationalen Weise kombinieren.

habe ich mehrere Anwendungsfälle, aber ich völlig den Überblick verloren, was für die Beziehungen zwischen den Tabellen zu verwenden.

  • Jeder Benutzer kann an mehreren Projekten arbeiten.
  • Jeder Benutzer hat eine spezifische Rolle pro Projekt (Manager Profi, User)
  • Jedes Projekt hat mehrere Datensätze (currDataXXX Spalten in ‚Projekte‘), die auf die Tabellendaten verknüpft werden müssen.
  • Die Anwendung wird den Überblick über Datensätze halten, die von Benutzern hinzugefügt wurden. So gehe ich davon aus ich eine Beziehung zwischen Tabellen ‚Nutzer‘ müssen und ‚Daten‘ zu?

Ich habe eine Brücke Modell in der Tabelle ‚Rollen‘ mit 2 PK die Benutzer und Projekte miteinander zu verbinden ist und eine Rolle für diesen Benutzer und Projekt zur gleichen Zeit (ist dies der richtige Weg?).

Könnte jemand bitte helfen Sie mir die richtigen Beziehungen zwischen den Tabellen helfen? und vielleicht Spalten vorschlagen Tabellen (die fehlen) (oder Tabellen als Ganze natürlich).

Eine Art von den Augen verlieren diese.

Mit freundlichen Grüßen

B.

REVISED ERD: alt text (Original Bild: http://i55.tinypic.com/2mq2ejs.jpg )

War es hilfreich?

Lösung

  

Jedes Projekt hat mehrere Datensätze (currDataXXX Spalten in 'Projekten')

Das bedeutet, dass es eine eins-zu-viele-Beziehung von Projekt zu Dataset. In diesem Sinne soll der Projekt-ID ein Fremdschlüssel auf der Dataset-Tabelle, während die currDataXX Spalten sollten aus der Projekttabelle entfernt werden. (Das aktuelle Design stellt eine Denormalisation.)

Nachdem dies erledigt ist, haben Sie jetzt zwei many-to-many-Beziehungen zwischen Projekt und Anwender - ein mit einem Link Einheit von Rollen, und einen mit einem Link Entität-Datensatz. Solche Beziehungen sind in der Regel redundant -. In diesem Fall würde ich a) Nur Benutzer mit einer Rolle an einem Projekt Datensätze hinzufügen können, und b) dass ein einzelner Benutzer viele Datensätze für ein einzelnes Projekt hinzufügen kann,

annehmen, dass

Wenn diese beiden Annahmen richtig sind, dann gibt es tatsächlich ein Eins-zu-Beziehung von Rolle zu Datenmenge und damit die Rolle ID soll ein Fremdschlüssel auf der Dataset-Tabelle, während der Benutzer und Projekt-IDs überflüssig wird auf der Dataset-Tabelle und kann entfernt werden. Wie folgt aus:

+----------+    +----------+    +----------+
|   User   +---<|   Role   |>---+  Project |
+----------+    +----+-----+    +----------+
                     |
                    /|\
                +----------+
                |  Dataset |
                +----------+

[Wenn Annahme b) falsch ist, dann Rolle und Daten-Set kann in einer einzigen Tabelle kombiniert werden, während, wenn eine Annahme) ist korrekt Rolle und Daten-Set bleiben zwei verschiedene Verknüpfungseinheiten, die unabhängig von einander.]

EDIT - aktualisiert vorgeschlagene Struktur, folgende Rhizosis' Änderungen:

                +----------+
                |   Role   |
                +----+-----+
                     |
                    /|\
+----------+    +----------+    +----------+
|   User   +---<|  Users/  |>---+  Project |
|          |    | Projects |    |          |
+----------+    +----+-----+    +----------+
                     |
                    /|\
                +----------+
                |  Dataset |
                +----------+

Andere Tipps

Jeder Benutzer kann an mehreren Projekten arbeiten.

Dies ist eine many-to-many-Beziehung, so dass es mit einem mittleren Tisch sein muss, wie Sie mit der ID des Benutzers und das Projekt getan haben.

Jeder Benutzer hat eine spezifische Rolle pro Projekt (Manager Profi, User)

Sie sollten drittes Feld in dieser Tabelle hinzufügen oben erwähnt, und nennen es „RoleID“ und haben eine andere Tabelle mit dem Namen „Rollen“, die zwei Felder „RoleID“ und „Rolle“

Sie haben nicht entwerfen Sie Ihre Tabellen dann die Beziehungen erarbeiten -. Sie sollten beide evolve zugleich

Besonders wenn Sie eine Datenbank verwenden, die keine Fremdschlüssel Erklärungen erfordern, würde ich empfehlen, eine strenge Namenskonvention. Obwohl Sie für die Tabellen zu tun scheinen, dass sie gezeigt Beziehungen haben, scheint der Rest der Feldnamen etwas hap-Gefahr.

Aber ohne all die Analyse zu sehen (und zu wissen, es richtig ist) es ist nicht wirklich möglich, dass jemand, Ihnen zu sagen, wie die Tabellen verknüpft werden sollen, noch was fehlt möglicherweise

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top