3

私は UML モデリングの新入生で、状況をモデル化したいと考えています。

管理者がロールとユーザーとドキュメントを作成するシステムがあり、それらはすべてデータベースに存在し、管理者はドキュメントごとにロールでこのドキュメントを操作できるユーザーを選択します

  • システムで、ユーザーは特定のドキュメントの役割を持つことができませんでした
  • ロールが存在し、ユーザーとドキュメントの関係に影響を与えない可能性があります
  • ドキュメントごとに、特定の役割でそれを使用できるユーザーのリストがあります。

質問は、バイナリ アソシエーションのみでモデル化しようとしているのですが、それが不可能な場合の解決策は何ですか? ここに画面が表示され、状況がさらに表示されますここに画像の説明を入力

ご覧のとおり、user_a には doc_1 に role_1 の役割があり、doc_2 に別の役割があり、user_c には doc_2 に役割がありません;)

4

2 に答える 2

1

リピドのアイデアは良いですが、残念ながら、提案されたソリューションには明らかにマイナーだが重大な欠陥があり、3 番目の要件をカバーしていませ。関連クラスとしてモデル化された Role は、User オブジェクトと Document オブジェクトの間のリンク インスタンスとしてのみ存在できます。このソリューションでは、ロールを独立したインスタンスとして定義することはできません! また、ロールの再利用は許可されません。

この問題を解決する 2 つの解決策があります。追加の条件に従って、それらの中から選択する必要があります (注を参照)。

ここに画像の説明を入力

  • 3 つの概念 (ユーザー、ドキュメント、ロール) はすべて互いに独立して存在し、自由かつ独立して作成および照会できます。
  • 「アクセス」の新しい概念は、ユーザーが特定のドキュメントのコンテキストでロール (または複数のロール) を持っているという事実をモデル化します。Access をモデル化するには、さらに独自の属性が必要かどうかに応じて、2 つの方法があります (図を参照)。独立したクラスとしてアクセスすると、ロールの再利用が可能になります。どちらのソリューションでも、アクセスにはドキュメントが 1 つ、ユーザーが 1 つ、ロールが 1 つ以上あります。
  • ユーザーは、アクセスできるドキュメントごとに 1 つ以上のロールを持つことができます
  • getAllUsers、getAllDocuments、gettAllRoles、getUsersRoles(Document)、getRoles(User, Document) など、考えられるすべてのクエリが可能です。

UPDATE(コメントの後)

オブジェクトのランタイム構造を説明するオブジェクト図を次に示します (これは、n-ry 関連ではなく関連クラスを持つ 2 番目のクラス図に基づいています)。

ここに画像の説明を入力

コメントの注意事項を参照してください。Access インスタンスがクラスと関連インスタンス (リンク) の両方であるわけではありません。そのため、関連付けられた両方のクラスのインスタンスが常に 1 つだけあり、この場合はロールが 1 つだけです。一方、各ユーザーは多くのドキュメント (0.. ) にアクセスでき、各ドキュメントは 0 人以上のユーザー (0.. ) からアクセスできます。

于 2014-05-14T07:19:55.887 に答える