Momentan habe ich Probleme, ternäre Assoziationen in UML zu verstehen. Ich bekomme die binären, aber ich bin nicht sicher, wie die Multiplizität auf ternären funktioniert. Ich mache Übungen, die ich von meiner Universität bekommen habe, die aktuelle geht so:
Eine Abteilung kann viele Produkte verkaufen, aber nur an einen Markt. Auf einem Markt darf ein Produkt nur von einer Abteilung verkauft werden.
Ich habe in verschiedenen Quellen gelesen, wie ich über ein Paar der beiden Klassen nachdenken soll. Ich versuche nicht, die Vielzahl herauszufinden, aber mein Gehirn versteht es einfach nicht. Hilf mir, Kenobi zu überfluten, du bist meine einzige Hoffnung.
Es scheint eine gewisse Unklarheit in der Spezifikation von Multiplizitäten für ternäre Assoziationen zu geben. Siehe auch dieses Papier
Aber ich verstehe es so:
Die Multiplizität sagt etwas darüber aus, wie oft eine Instanz in diesen Assoziationen für ein bestimmtes Tupel verknüpfter Instanzen vorhanden sein kann.
Betrachten Sie als Beispiel die folgende (traditionelle) Familie
Ich würde das verstehen als
In jeder Familie muss es einen Vater, eine Mutter und null oder mehr Kinder geben.
Wenn wir das auf Ihren Fall anwenden, komme ich zu so etwas:
Für jedes Angebot muss es genau einen Markt, eine Abteilung und ein oder mehrere Produkte geben
Das scheint mehr oder weniger alle Ihre Einschränkungen zu erfüllen
Ich denke nicht, dass es wasserdicht ist, aber wie das Papier bereits sagte, verfügt UML nicht über genügend Werkzeuge, um ein wasserdichtes Design mit den Vielfältigkeiten allein an den Enden zu erstellen. Aus gutem Grund sollten Ihre Einschränkungen auch als UML-Einschränkungen modelliert werden.
Haftungsausschluss: Ternäre Assoziationen eignen sich sehr gut für akademische Diskussionen, werden aber in der (IT-) Branche nicht wirklich eingesetzt, wahrscheinlich weil sie so schwer zu verstehen sind.
Diese unspezifische ternäre Assoziation sagt nur, dass Sie Beziehungen haben, in denen
Market
steuert Department
-Product
,Department
steuert Market
-Product
undProduct
steuert Department
-Market
.Es gibt keine Aussage darüber, wie die einzelnen Klassen die beiden anderen steuern.
Die UML-Spezifikation definiert den ternären Operator nicht im Detail. Die Verwendung dieses Elements scheint also auf eigenes Risiko zu sein. Sie könnten OMG für die Verwendung beschuldigen, aber nicht mehr definieren als
Jede Assoziation kann als Raute (größer als ein Abschlusszeichen auf einer Linie) mit einer durchgezogenen Linie für jedes Assoziationsmitglied gezeichnet werden. Anschließend wird die Raute mit dem Klassifikator des Endtyps verbunden. Eine Assoziation mit mehr als zwei Enden kann nur auf diese Weise gezeichnet werden.
und ein einzelnes Beispiel in einem Bild auf S. 202.
Die einfache Assoziationsklasse
sagt Ihnen, dass die Product
zwischen Department
und Market
liegt, wobei die Multiplizität 1
angibt, dass es nur eine Market
für eine Department
gibt. So hört sich Ihre Anforderung an.
N.B. Es macht wenig Sinn, Haare nach den Anforderungen zu spalten, also "gibt es eine Product
ohne eine Market
". Dies sind Details, die mit Domain-Spezialisten besprochen werden müssen, bevor sie in einem Modell festgelegt werden.
Das Modell in der Antwort von Geert Bellekens ist richtig, aber seine Erklärung ist verwirrend. Die ternäre Assoziation "Angebot" mit ihren Multiplizitäten (Kardinalitätsbeschränkungen) kann durch die Aussage nicht erklärt werden
Für jedes Angebot muss es genau einen Markt, eine Abteilung und ein oder mehrere Produkte geben
sondern indem ich das sage
- eine Kombination aus Abteilung und Produkt ist mit genau einem Markt verbunden
- eine Kombination aus Markt und Produkt ist genau einer Abteilung zugeordnet