如何理解UML中类似自反关联的“自反聚合”关系

2023-12-05

这个类图是什么意思?自反关联的类图使用了实线和箭头,但这里用空心菱形代替。和递归有关系吗?这个类图会生成什么?如果能举个例子就最好了。另外这个递归关系应该是一对多,如果存储数据库怎么建表。


这是什么意思?

这个类图意味着Unit can与其他几个实例相关联Unit:

  • 空心聚合钻石只是一个“建模安慰剂”:它不会改变图表的含义,而只是表明关联代表某种分组。

  • A 反身联想意味着它将一个类与其自身关联起来。与递归没有直接关系,因为这个答案解释了.

  • 尽管如此,递归的算法是探索此类关联的良好候选者(例如,找到Unit与特定实例间接相关)。在数据库环境中,有时使用术语“递归关联”而不是“自反”,因为递归连接用于实现它们的。

请注意,1也许应该是0..1因为1恰好意味着 1,这意味着向上导航时有无限循环。

它看起来怎样?

由于它是一对多关联,因此您可以将其想象为一片树林:每个Unit实例可以是某些分支的开始并且几棵树可能共享公共分支(废话:最多有一个父树).

enter image description here

生成了什么/如何实现?

Let's add some roles to better speak about the ends of the aggregation: enter image description here

代码生成取决于工具和目标语言。但是具有聚合的模型和具有简单关联的模型很可能会生成完全相同的代码,例如:

class Unit { // Java
    private String id;
    private Unit[] child; // java objects are sharable by default 
    private Unit parent; // unless we make it non navigable in that direction
    ...
}

在 RDBMS 中,该表看起来非常相似。关系模型允许仅使用一列进行双向链接:

ID (PK)  |  Parent (FK, nullable)
----------------------------------
w        |
u        |
u1       |  u
u2       |  u 
u3       |  u
u21      |  u2
u31      |  u3
u32      |  u3 
v        |
v2       |  v

A 自连接或递归 CTE将允许利用自反关联来查询数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何理解UML中类似自反关联的“自反聚合”关系 的相关文章

  • Node.js 和代码优先

    我使用代码优先方法开发实体框架 现在我正在学习 Node js 我想知道是否有一种方法可以使用 Node js 和一些库来实现相同的代码优先方法 我正在考虑使用MySql作为数据库 你可以看看续集 http docs sequelizejs
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • 如何使组合键唯一?

    I am making a database of students in one school Here is what I have so far 如果您不喜欢阅读 请跳至 简而言之 部分 问题是我对这个设计并不满意 我想要的组合gra
  • 术语 SSTable 和 LSM Tree 之间有什么区别

    这两个术语可以互换使用吗 我读过有关 SSTable 工作原理的文章 通常文章都会开始提到 LSM Tree 然而 它们似乎是同一件事 我什么时候应该使用一个术语而不是另一个术语 对于凡人来说 SSTables 和 LSM Trees 的最
  • iOS 解析如何通过 URL 下载文件

    我正在将 parse 用于我的聊天应用程序 当我上传文件时 我保留该 url 并将该 url 发送给其他用户 然后其他用户可以通过该 URL 下载文件 这是我上传文件的代码 void uploadBlob NSData blob fileN
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • SQL Server 批量插入 - “批量加载数据转换错误”

    bulk insert dbo A FROM d AData csv WITH FIELDTERMINATOR ROWTERMINATOR n 将批量数据插入数据库时 在检查可疑数据后 我遇到了无法解释的错误 消息 4867 16 级 状态
  • Hibernate saveOrUpdate 与更新与保存/持久

    我正在努力理解休眠方法之间的细微差别 saveOrUpdate update save persist 我知道网站上有一些类似的问题 Hibernate中不同的保存方式有什么区别 https stackoverflow com questi
  • Riak 在 MapReduce 查询中失败。使用哪种配置?

    我正在与 riak riak js 结合开发一个 nodejs 应用程序 并遇到以下问题 运行此请求 db mapreduce add logs run 正确返回存储在存储桶日志中的所有 155 000 个项目及其 ID logs 1GXt
  • 将数据从电子表格迁移到 RDBMS 的策略是什么?

    这与我的另一个问题相关何时从电子表格迁移到 RDBMS https stackoverflow com questions 2395607 when to switch from spreadsheet to rdbms 决定从 Excel
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应
  • UML 图 - 在我的应用程序中发送电子邮件被视为外部系统

    我的应用程序有一个联系选项 它将打开带有按摩页面的电子邮件应用程序 并且消息接收者设置为应用程序支持电子邮件 我已附上我的意思的图片 我已将其编写为需求 但不确定如何在系统类图和用例图中说明它 我最初在用例图中所做的是 将我的用户 主要参与
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • 用例 - 帮助 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是编写用例的新手 我听说用例是非技术表达 我有以下任务 我必须为其编写用例 我降低了对你理解的要求 ABC公司的注册客户使用凭据登录系统以检索
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数

随机推荐

  • 在数据表子表单中使用级联组合框

    在 Access 2010 中 我有表Task and Action通过表具有多对多关系ActionTask 在表格中Task 我想为所有的子表单Action与当前任务相关的ActionTask联结表 这本身就是我能做到的 诀窍是Actio
  • Swift 2.2 中 C 风格循环的替代

    Swift 2 2 弃用了 C 风格的循环 但在某些情况下 新的范围运算符的工作方式并不相同 for var i 0 i lt 1 i and for i in 0 lt 1 后一个将在运行时失败 我可以用一个包裹循环if 但是有点乱 有时
  • JavaScript:突出显示/选择鼠标指针下的单词

    当鼠标指针悬停在某个单词上时 如何使用 JavaScript 突出显示 css 背景颜色 单词 应该可以通过单击它并将其保存在变量中来选择它 var words yourTextContainer text split yourTextCo
  • 将 CSS 应用到 Google 可视化表

    我在 Google Visualization 中创建了一个表 它使用以下代码
  • 控制对可供下载的文件的访问

    我有一个文件夹 其中包含我的 ZF 应用程序可以将其输出给登录用户的上传文档 我希望他们能够使用类似的链接http server documents filename pdf并下载文件 但我想要一个控制器DocumentsControlle
  • 对工作日文本进行排序

    我有清单 Tue Wed Mon Thu Fri 作为列表 我想将其设为 Mon Tue Wed Thu Fri 这个该如何排序呢 效率不是很高 但是如果你有一个它们应该排列的顺序列表 gt gt gt m Mon Tue Wed Thu
  • 底图形状文件可视化

    使用 Basemap 创建一些地图后 我变得热情起来 我想集成shapefile信息 比如说一个多边形 但是有一些问题 我在这里下载了巴伐利亚村庄的边界 https www arcgis com home item html id b752
  • 当对数组调用此 .pop 方法时,为什么我会得到意外的 .length 结果

    我是 JS 新手 所以请耐心等待 当我试图打电话给 pop数组上的方法定义为secretMessage 它有 24 个元素 我使用了语法secretMessage secretMessage pop 我相信这是错误的 呼叫 length m
  • PHP 中的关联数组中有类似 keypath 的东西吗?

    我想剖析这样的数组 ID UUID pushNotifications sent campaigns boundDate campaigns endDate campaigns pushMessages sentDate pushNotif
  • 错误:无法从字典转换为 IDictionary

    为什么会出现错误 错误 52 参数 1 无法从 System Collections Generic Dictionary gt 转换为 System Collections Generic IDictionary gt Dictionar
  • 将字符串列表转换为 int

    我有一个要转换为 int 的字符串列表 或者从一开始就有 int 任务是从文本中提取数字 并得出总和 我所做的是这样的 for line in handle line line rstrip z re findall d line if l
  • RISC 架构中小数的直接算术运算

    是否有任何 RISC 架构允许算术运算单独应用于字节 半字和其他数据单元 其大小小于 CPU 通用寄存器的大小 在 Intel x86 IA 32 和 x86 64 称为 EM64T 或 AMD64 处理器中 不仅整个寄存器可用 而且其较小
  • 使用具有单个 DbContext 和实体的多个数据库并在运行时生成连接字符串

    我正在开发一个 MVC 5 应用程序 最初 我使用单一数据库和 EF6 数据库第一种方法 并使用 DbContext 实例来访问包含 102 个表的数据库 我将其实例声明为 私有 MyEntities db new MyEntities 现
  • 使用 Application.WorksheetFunction.Trim 修剪一系列单元格

    我正在尝试使用修剪一系列单元格Application WorksheetFunction Trim 我正在尝试定义我的范围 但出现类型不匹配错误 我创建了 Dim 并设置了范围并为该函数创建了一个变量 Dim rng As Range Di
  • Scalaz 管道运算符与列表方法连接

    我是新手Scala 但我有一些使用经验OCaml 我正在考虑采用中定义的管道运算符Scalaz通过以下方式 import scalaz import Scalaz def test def length2 x String List x l
  • 保存与 Cakephp 3 的关联

    我在使用 CakePHP 3 和通过一项操作保存新实体及其关联时遇到问题 在我看来 我按照文档中的建议进行操作 这是我的控制器 articles TableRegistry get Articles article articles gt
  • AngularJS 中指令隔离范围与 ng-repeat 范围

    我有一个带有隔离范围的指令 以便我可以在其他地方重用该指令 并且当我将此指令与ng repeat 它无法工作 我已阅读有关此主题的所有文档和 Stack Overflow 答案并了解这些问题 我相信我已经避免了所有常见的问题 所以我知道我的
  • jQuery .each 在 Safari 上比 Chrome/Firefox 慢

    我有一个大型 HTML 表格 1 000 1 500 行 40 列宽 我有一些输入和选择框 以便用户可以过滤行 附加的相关 javascript jquery 注意 没有粘贴整个代码库 因为它不是瓶颈 如下所示 function autoR
  • 错误:文档未定义,在构建角度通用应用程序时

    Error factory require jquery document window navigator ReferenceError document is not defined 面对角度通用渲染服务器端的问题 我用谷歌搜索了这个并
  • 如何理解UML中类似自反关联的“自反聚合”关系

    这个类图是什么意思 自反关联的类图使用了实线和箭头 但这里用空心菱形代替 和递归有关系吗 这个类图会生成什么 如果能举个例子就最好了 另外这个递归关系应该是一对多 如果存储数据库怎么建表 这是什么意思 这个类图意味着Unit can与其他几