UML建模角色,用户和文档

时间:2014-05-13 17:57:22

标签: java uml dms

我是UML建模的新生,想要为情况建模。

我有一个系统,管理员创建角色,用户和文档,它们都存在于数据库中,管理员将为每个文档选择可以操作的用户 这个带角色的文档

  • 在系统中,用户无法拥有特定文档的角色
  • 角色可以存在且不受任何用户文档关系的影响
  • 对于每个文档,我们都有一个用户列表,可以将其与特定角色一起使用。

问题是我正在尝试仅使用二元关联对其进行建模,如果不可能是什么解决方案? 在屏幕上,您将看到更多情况enter image description here

您可以看到user_a在doc_1中有角色role_1,在doc_2中有另一个角色 并且user_c在doc_2;)

中没有角色

2 个答案:

答案 0 :(得分:1)

Lipido的想法很好,但不幸的是,提议的解决方案显然存在轻微但重大的缺陷,并未涵盖您的第三个要求: 角色可能存在且不会影响任何用户 - 文档关系 即可。作为关联类建模,Role只能作为User和Document对象之间的链接实例存在。在此解决方案中,角色不能被定义为独立实例!此外,它不允许重用角色

这里有两个可以解决此问题的解决方案。你应该根据附加条件选择它们(参见注释):

enter image description here

  • 所有3个概念(用户,文档,角色)彼此独立存在,可以自由独立地创建和查询
  • “访问”的新概念模拟事实,而不是用户在特定文档的上下文中具有角色(或多个角色)。有两种方法可以对Access进行建模,具体取决于它是否应该具有更多自己的属性(参见图表)。作为独立类访问允许重用Roles。在这两个解决方案中,Access只有1个文档,1个用户和1个或多个角色。
  • 用户可以拥有一个或多个角色,每个文档可以访问
  • 所有可能的查询都是可能的 - getAllUsers,getAllDocuments,gettAllRoles,getUsersRoles(Document),getRoles(User,Document)等。

更新(评论后)

这是一个对象图,解释了对象的运行时结构(它基于第二个类图,一个具有关联类而不是n-ry关联):

enter image description here

请参阅评论中的注释。并非Access实例既是类又是关联实例(链接)。这就是为什么它总是有两个关联类的单个实例,在这种情况下只有一个角色。 另一方面,每个用户都可以访问许多文档(0 .. ),每个文档可以被0个或更多用户访问(0 .. )。

答案 1 :(得分:0)

如果用户可以在系统中拥有多个角色,则需要指定在每个具体[User * - * Document]关联中采用哪些角色。如果是这种情况,您将需要:

  1. 正常[用户* - *角色]关联,独立于[用户* - *文档]关系,另外

  2. IBM

  3. 中描述此示例中的关联

    association class example

    忘记属性,在你的情况下:

    • 航班 - >文献

    • FrequentFlyer - >用户

    • 前程万里(MileageCredit) - >作用

    此图表模拟当用户与文档相关时,将有一个Role实例指定[User * - * Document]关系中的具体角色。注意:您还需要[用户* - 1角色]关联(不在图片中),正如我之前在第1点中所说的那样。

    如果用户只能拥有一个角色,则不需要[User * - * Document]关系中的关联类,因为该角色是从[User * - 1 Role]关系明确派生的。