【问题标题】:Entity Relationship Diagram, generalization when only one class can interact with another class实体关系图,只有一个类可以与另一个类交互时的概括
【发布时间】:2021-02-08 12:06:20
【问题描述】:

假设我们有一个 User 类,这是其他两个类的概括:Admin 和 noAdmin
还有一个只有 Admin 才能与之交互的类,我们称之为 only_admin

我的问题是,only_admin 应该与哪个类相关?用户还是管理员?

【问题讨论】:

  • to what class should only_admin be related to? User or Admin?: 越简单越好,所以Admin,否则要加约束
  • 谢谢,您能否提供有关该约束的更多信息?
  • 我正在编辑我的评论,最后我会给出答案
  • 这是关于 UML 还是 ERD 的问题?不能两者兼有。
  • 我回答了

标签: uml entity-relationship software-design erd


【解决方案1】:

如果UserSomething 相关联,那么User 的所有特化(即Admin NoAdmin)也将与Something 相关联。

因此,如果 Something 仅与 Admin 有意义,则仅与 Admin 关联,而不与 User 关联。该图将非常清晰且不言自明。

补充说明

  • 如果NoAdminUser 相比没有什么特别之处,则不需要为它创建自己的类。
  • 如果事情变得更棘手,User 会有更多的专业化,其中大多数都与Something 相关联,除了少数,或者如果你有SomethingForAdminOnly,这将是@987654337 的专业化@你可以看看this other SO question

【讨论】:

    【解决方案2】:

    对于作为类图的 UML 观点

    only_admin 应该与哪个类相关?用户还是管理员?

    越简单越清晰越好,所以Admin,否则你必须添加约束oclIsKindOf(Admin)oclIsTypeOf(Admin)(见下文)

    无论如何,如果这仅适用于 Admin 的实例而不适用于可能继承 Admin 的类的实例,则通常需要使用 oclIsTypeOf(Admin) 进行约束,即使附加了关系到 Admin 而不是 User

    来自Object Constraint Language / formal/2014-02-03第153页:

    oclIsTypeOf(type : Classifier) : Boolean

    如果 self 属于 t 类型但不是 t 的子类型,则计算结果为 true。

    发布:self.oclType() = 类型

    oclIsKindOf(type : Classifier) : Boolean

    如果 self 的类型符合 t,则计算结果为 true。也就是说,self 是 t 类型或 t 的子类型。

    发布:self.oclType().conformsTo(type)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-08
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多