【问题标题】:What would be the UML relationship, between 2 classes which have the database id of the other, but do not have references to each other?两个类之间的 UML 关系是什么,它们的数据库 id 是另一个,但没有相互引用?
【发布时间】:2021-12-11 02:06:57
【问题描述】:

这些类将是普通对象,java 中的 pojos,它们之间的 UML 关系是什么,或者没有任何关系,但它们会与使用它们的其他类相关?

【问题讨论】:

  • 每个联系有 2 个号码,每端一个。数字回答了这个问题:靠近数字的类的对象中有多少属于另一端类的一个对象?另外:如果近的对象被删除,关联的远对象也会被删除吗?
  • 我的问题是关于 UML 类图而不是 ER,这两个类之间有关系吗?这当然不是关联,因为 2 之间没有物理关系。

标签: oop orm uml associations class-diagram


【解决方案1】:

invoice_id 外键表示 InvoiceInvoiceLine 之间存在结构关系。因此,您会将其表示为类图中的关联。多重性将通过在Invoice 一侧的1InvoiceLine 一侧的扣除0..* 进行。

该技术是 ORM 的经典之作,被一些作者称为“foreign key mapping”。使用软标识符而不是对象引用也很常见,尤其是在复杂的现实生活领域中,以避免在从数据库中仅获取一个对象时加载所有相关对象。

您可以使用{id} 修饰符来记录主键:

一个属性可以被标记为(...)作为它所属的分类器的标识符(如果有的话)的(一部分)。对此的解释是开放的,但可以映射到实现,例如关系数据库表的主键或 XML 中的 ID 属性。
-UML 2.5.1 规范

【讨论】:

  • 我在我同意的 ER 上看到它,但不会引用 Invoice 中的 InvoiceLine 对象,也不会引用 InvoiceLine 中的 Invoice 对象。它仍然算作协会吗?我认为不会。
  • 您没有实体级别的参考并不意味着您根本没有参考。外键是一个引用。
  • @VaderSkywalker 确实,我只能重复伊斯特刚才所说的话。关联的正式定义中没有任何内容需要使用对象引用。使用此类引用是您可以采用但并非必须采用的实现选择。
猜你喜欢
  • 2021-10-19
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多