2017-02-08 2 views
1

Vollständig optionale Eins-zu-Eins-Relation in MySQL Workbench?
Ich bin nur in der Lage, eine teilweise optionale Eins-zu-Eins-Beziehung zu erstellen.
Mein Fall ist:Vollständig optionale Eins-zu-Eins-Relation in der MySQL-Workbench

A GROUPkann ein PROBLEM zugeordnet werden
A PROBLEMkann

EDIT1 zu einer Gruppe zugeordnet werden: enter image description here

EDIT2: Vielleicht wäre eine bessere Frage, wenn vollständig fakultative Eins-zu-Eins-Beziehungen vermieden werden sollten?

+0

Einer Gruppe kann nur 1 Problem zugewiesen werden? und ein Problem kann nur 1 Gruppe zugewiesen werden? –

+0

Ja, einer Gruppe kann ein Problem zugewiesen werden, während ein Problem einer Gruppe zugewiesen werden kann. Ich bin mir nicht sicher, wie ich es modellieren soll. Ich möchte in der Lage sein, Gruppen und Probleme zu erstellen, ohne etwas zuweisen zu müssen. – Duy

+0

Kann ich tatsächlich die Beziehung löschen und eine problem_id als normale Spalte haben? – Duy

Antwort

1

Lassen Sie uns sehen, ob dies Ihr Problem angeht.

Eine Gruppe kann ein PROBLEM

ein Problem zu einem mit einer Struktur wie GROUP zugeordnet werden können

Start zugewiesen werden:

PROBLEM 
id | title 
1 | Prob1 
2 | Prob2 

GROUP 
id | title 
1 | Group1 
2 | Group2 

Was wichtig ist, ist auch um zu wissen, ob einer GROUP mehrere Probleme gleichzeitig zugewiesen werden können oder nicht. Und ob ein und dasselbe Problem mehr als einer GROUP zugeordnet werden kann.

Angenommen, es gibt eine strikte optionale 1: 1-Beziehung. Dies bedeutet, dass einer Gruppe nicht 2 Probleme gleichzeitig zugewiesen werden können und dass 1 dasselbe Problem nicht 2 Gruppen zugewiesen werden kann.

Ein striktes 1: 1 würde durch Hinzufügen der PK von Tabelle A als FK von Tabelle B implementiert werden. Wenn die FK Nullable ist, dann werden Sie bemerken, dass dies bereits ein optionales 1: 1 ist, da Sie leere Zellen lassen können zeigt 0 Probleme zugewiesen (oder 0 Gruppen zugewiesen).

PROBLEM 
id | title 
1 | Prob1 
2 | Prob2 

GROUP 
id | title | problem 
1 | Group1 |  2 
2 | Group2 | null 

In diesem Beispiel wurde Group2 kein Problem zugewiesen. Group1 wurde Prob2 zugewiesen und Prob1 wurde keiner Gruppe zugewiesen.

Sie sind nicht gezwungen, etwas zuzuweisen, aber alles kann eine 1: 1-Beziehung haben.

Diese Struktur kann einige leere (Null) Werte enthalten. Dies ist keine Best Practices, aber würde die Arbeit machen. Wenn Sie Nullwerte vermeiden möchten, müssen Sie möglicherweise eine N: M-Implementierung verwenden.

Mit dieser Implementierung kann es vorkommen, dass 1 Gruppe mehr als 1 Problem zugewiesen wird und 1 dasselbe Problem mehr als 1 Gruppe zugewiesen wird. Wenn Sie jedoch für jedes der beiden Felder (Gruppe und Problem) einen eindeutigen Index definieren, sollten Sie dies beheben.