当前位置:首页 > draw.io文章

ER图的乌鸦脚符号

drawio7个月前 (10-24)draw.io文章10

乌鸦脚符号用于实体关系 (ER) 图中,以显示不同数据库表中的数据是如何相互关联的。

在 ER 连接器上使用乌鸦脚符号而不是 Chen 符号,可以省去给每个连接器末端贴上数字的麻烦,使图表更容易阅读。

使用乌鸦脚符号绘制ER图

启用实体关系形状库

点击左侧面板底部的“更多形状” 。在“软件”部分,选择“实体关系”形状库,然后点击“应用”

此库包含预设样式的连接线,其形状与关系数据库中使用的各种“乌鸦脚”形连接线相同。将鼠标悬停在每个形状上即可查看关系描述。

在格式面板的“样式”选项卡中更改连接器末端

  1. 在两个实体之间拖动连接线。您可以连接两个表,也可以连接表中的单个行。

  2. 选择连接器,然后从源列表和目标列表中选择新的连接器端头。

    提示:开口连接器端头位于列表底部。

用于乌鸦脚符号的连接端

连接符的两端表示两个实体之间关系的基数——即一个实体与另一个实体之间的关联数量。您可以通过在连接符的两端组合两个符号来表示任何关系的最小值和最大值。

  • = 零

  • 线= 一条

  • 乌鸦脚= 许多或无限

将这些结合起来,你可以表示:

  • 圆 + 线= 0 到 1

  • 行 + 行= 唯一且唯一(必填)

  • 圆圈 + 乌鸦脚= 零到多

  • 线 + 乌鸦脚= 最少一到多个

局限性:如下面的图书馆示例所示,这种表示法无法表示除 0 或 1 以外的其他限制。例如,您无法指定每个图书馆至少需要五名工作人员,或者每个成员最多可以借阅 20 本书。在这种情况下,您可能会发现Chen 或 ISO 最小/最大表示法更为实用。

使用乌鸦脚符号表示的库的 ER 模型

小心深渊和扇形陷阱

当一个模型暗示了一种关系(见图中的红色虚线),但两个实体之间的联系没有明确定义时,就会出现鸿沟陷阱。

例如,图书馆有很多书架就摆放在这些书架上。你应该能够查询图书馆里有多少本书——但是如果你通过查询书架上的书来查询,那么就不会包括那些暂时不在书架上但仍列在目录中的书(例如已被借出的书籍,或在后仓等待维修的书籍)。

扇形陷阱是指当一个查询可以通过模型中的多个路径来回答,但可能会返回不同的值时。

例如,“书架”数据库包含图书馆所有书架上的书籍列表“目录”数据库包含图书馆拥有的所有书籍列表(无论它们是否在书架上)。当您查询图书馆有多少本书时,根据您是通过“目录”数据库还是“书架”数据库进行查询,返回的数字可能会有所不同

最佳实践

  • 在您的图表中,请确保所有查询路径都使用关系连接器清晰定义。

  • 如果查询由于存在多个查询路径而可能返回不同的值,那么将该函数转换为单独的实体可能就很有意义了。

  • 尽量消除冗余关系,以简化查询路径。例如,本例中,目录数据库与作者和出版商实体之间的关系(以绿色虚线表示)就存在冗余。

使用键盘快捷键可以更快地处理实体关系表形状。选择一行并按 键Ctrl+Enter可克隆该行,按Backspace键可删除该行。

您还可以将一个表格拖放到另一个表格中,从而合并两个表格。

在 draw.io 中,您可以通过插入 SQL 代码快速记录现有数据库,将实体或表格形状添加到绘图画布中。然后,在实体之间绘制连接线,并从“样式”选项卡中选择“乌鸦脚”连接线端点。

   

乌鸦脚图与 UML 类图

乌鸦脚符号与类图中的 UML 符号类似,但不完全相同

  • 在 ER 图中,乌鸦脚表示基数——每个实体有多少个与另一个实体有多少个相关。

  • 在 UML 类图中,连接器末端形状表示类的依赖性、聚合性和组合性,编号标签表示多重性(类之间关系的允许基数)。