Wie kann ich eine verbindliche, nicht identifizierende Beziehung zwischen zwei Entitäten erstellen?

7591
Cam Jackson

Ich arbeite in MS Visio 2010. Dies ist der relevante Teil meiner ERD:

ERD

Die Beziehung zwischen Event und Adventure ist korrekt: Es gibt einen Fremdschlüssel von Event zu Adventure, und dieser FK ist Teil des Primärschlüssels von Event.

Was ich jedoch nicht herausfinden kann, ist, wie die Beziehungslinie von Adventure zu AccomodationType mit der von Event zu Adventure identisch sein kann, ohne dass diese Beziehung Teil der PK of adventure wird. Wenn ich mir die 'Miscellaneous' -Eigenschaften dieser Beziehungslinie ansehe, möchte ich:

  • Kardinalität: Null oder mehr
  • Beziehungstyp: Nicht identifizierend
  • Kind hat Elternteil: Nicht optional (obligatorisch)

Das Kontrollkästchen für die dritte Eigenschaft ist jedoch ausgegraut und wechselt zwischen Wahr / Falsch, wenn ich die Beziehung nicht identifizierend / identifizierend mache.

Die einzige Möglichkeit, die ich herausfinden konnte, bestand darin, die beiden Spalten von der Registerkarte 'Definition' zu trennen, auf der dann das Kontrollkästchen 'Optional' deaktiviert wird, aber dann verliere ich die Fremdschlüsseleigenschaft in der Unterkunftskategorie und die Beziehungssymbole stimmen, bleibt die Linie gepunktet.

Wie kann ich die Kardinalität der Linie auf der linken Seite wie die Beziehungslinie auf der rechten Seite anzeigen lassen, ohne den PK of Adventure um einen Accuntype-Typ zu ergänzen?

3

2 Antworten auf die Frage

1
Air

In diesem MS TechNet-Thread wird das Problem als mit der Art und Weise bezeichnet, auf die Visio 2010 den Fremdschlüssel automatisch einfügt, wenn Sie eine Beziehung zwischen Entitäten erstellen:

Es scheint in der Tat so, dass das Eingeben des Fremdschlüsselfeldnamens und das anschließende Herstellen der Beziehung dies ermöglicht. Durch Aktivieren / Deaktivieren der Option Erforderlich für den Fremdschlüssel wird die Option Optional für die Beziehung automatisch aktiviert / deaktiviert.

Es gibt zwei Möglichkeiten, dieses Problem zu lösen, je nachdem, ob Sie eine neue Beziehung in Ihrem Diagramm erstellen oder versuchen, eine vorhandene zu beheben.

So erstellen Sie eine verbindliche, nicht identifizierende Beziehung

Fügen Sie vor dem Erstellen der Beziehung die gewünschten FK-Attribute der untergeordneten Entität hinzu, und verwenden Sie dabei denselben Namen wie im PK der übergeordneten Entität. Stellen Sie sicher, dass die Option "Erforderlich" für jedes FK-Attribut aktiviert ist.

In Ihrem Beispiel fügen wir der Adventure-Entität ein "name" -Attribut hinzu:

Durch das Hinzufügen der Beziehung wird nun automatisch das FK erstellt, der nicht identifizierende, nicht optionale Status des vorhandenen Attributs in Adventure bleibt jedoch erhalten:

Sie können das FK-Attribut an dieser Stelle beliebig umbenennen.

Beachten Sie, dass das Kontrollkästchen "Child hat Parent: Optional" immer noch ausgegraut ist. Auch nach diesem Punkt hat das Ändern der Eigenschaften der Beziehung und / oder der betreffenden Attribute manchmal unerwünschte Nebenwirkungen, und es kann vorkommen, dass das falsche Krähenfußsymbol wieder "hängen bleibt". Glücklicherweise gibt es eine schnellere Möglichkeit, dies zu beheben, als die Beziehung zu löschen und von vorne zu beginnen.

So lösen Sie eine bestehende Beziehung

Wählen Sie die Beziehung mit dem "steckengebliebenen" Krähenfußsymbol aus, und wechseln Sie im Fenster Datenbankeigenschaften auf die Registerkarte Definition.

Sie sehen eine Linie mit Pfeilen, die die PK- und FK-Attribute in den übergeordneten und untergeordneten Entitäten verbinden. Wählen Sie die verbundenen Attribute in beiden Tabellen aus und trennen Sie sie, indem Sie auf die Schaltfläche in der mittleren Spalte klicken. Wenn der Schlüssel zusammengesetzt ist, werden mehrere Paare von Attributen angezeigt:

Wenn Sie alle in der Beziehung enthaltenen Attribute getrennt haben, wird das Feld "Kind hat Elternteil: Optional" auf der Registerkarte "Verschiedenes" wieder aktiv. Legen Sie die Eigenschaften der Beziehung auf Nicht identifizierend mit Optional parent fest. Überprüfen Sie, ob die FK-Attribute in der untergeordneten Entität auf "Erforderlich" gesetzt sind. Wechseln Sie dann zurück zur Registerkarte "Definition" und ordnen Sie die PK- und FK-Attribute erneut zu :

-1
rogal111

Visio fügt beim Erstellen einer neuen Beziehung automatisch eine Fremdschlüsselspalte hinzu. Um das Pflichtfeld der Beziehung zu ändern, setzen Sie einfach das erforderliche Attribut dieser Spalte (in Entitätseigenschaften Tabulatorspalten).