PlantUML中的实体关系图

概述

实体关系图(Entity Relationship Diagrams,ERD)是一种被广泛用于数据库建模的图。

1976年美籍华裔计算机科学家陈品山(Peter Chen)首次提出了Entity Relationship Modeling(实体关系建模)概念,并发明了陈氏表示法Peter Chen's Notation,因此ER模型也可以叫做Chen's Model(陈氏模型)。

E-R图的组成要素

  • 实体(entity):现实世界客观存在,并区别于其他对象的"事件"或"物体",在关系数据库中往往是一张表中的一条记录
  • 属性(attribute):每个实体的特征,对应实体所在表中的一个字段
    • 其中主键(key)对应的就是ID类型的字段,特征是不重复,而且随着数据记录的增加,自增
  • 关系(relationship):实体与实体也就是表与表之间的关系,有一对一(1:1)、一对多(1:m)和多对多(m:n)三种

绘制

定义实体

与类图中的形式一样,你可以用entity关键字,加上一个实体名称,然后带一对花括号,定义一个实体:

swift 复制代码
@startchen

entity Person {
}

@endchen

实体被现实为一个矩形加实体的名称:

为实体添加属性

entity的花括号体内,可以按行书写其属性:

swift 复制代码
@startchen

entity Person {
name
sex
age
}

@endchen

属性被显示为椭圆加名称:

你可以在属性名称后用:分隔指定属性的类型:

swift 复制代码
@startchen

entity Person {
name:String
sex:int
age:int
}

@endchen
设定主键

主键是实体的特殊属性,对应关系数据库表格中的ID字段,可以在属性的后面添加<<key>>将属性标记为主键:

swift 复制代码
@startchen

entity Person {
p_id:INTEGER <<key>>
name
sex
age
}


@endchen

定义关系

可以看到实体其实是一张关系数据表中拥有唯一ID的一条记录,但是关系数据表妙的一点是,每条记录的结构,就是表的结构。

关系表示的则是不同表之间,它们的记录之间可能存在的关系。

relationship关键字定义关系,然后用--分别连接两个实体和关系,并在短线中间加上用于描述数量关系的1nm或者(1,n)(0,1)等。

swift 复制代码
@startchen

entity Person {
p_id:INTEGER <<key>>
name:String
sex:int
age:int
}

entity Car {
c_id:INTEGER <<key>>
name:String
}

relationship Own{
}

Person -1- Own
Own -n- Car

@endchen

其实到这一步传统ER图最实用的部分已经都有了。PlantUML中有一些扩展的语法这里就不纳入了,因为对实际的数据库建模并没有太大的帮助。

总结

  • 可以看到,实体关系图按照图论,应该属于无向图,只有矩形、椭圆和菱形三种基本图形组成。
  • 另外我在B站看到有些视频中采用了另一种形式的ER图,看起来更简洁和现代
相关推荐
Minilinux20183 天前
工具使用系列之 PlantUML画UML时序图
uml·plantuml·统一建模语言·sequence·时序图
小湘西3 天前
UML 用例图图中包含和扩展区别
uml·设计规范·设计语言
明洞日记3 天前
【图解软考八股034】深入解析 UML:识别标准建模图示
c++·软件工程·软考·uml·面向对象·架构设计
奋斗的小方7 天前
01 一文读懂UML类图:核心概念与关系详解
java·uml
钝挫力PROGRAMER8 天前
UML构造块中的关系梳理
软件工程·uml
未来之窗软件服务8 天前
计算机等级考试—UML 核心图分类与图标对照表—东方仙盟练气期
uml·计算机软考·仙盟创梦ide·东方仙盟
rolt11 天前
质量需求当成愿景、伪创新的基本盘《软件方法》第2章
产品经理·uml·软件方法
rolt19 天前
利用AI识别损毁程度是愿景吗《软件方法》第2章
产品经理·需求分析·uml
rolt19 天前
[pdf]《软件方法》全流程引领AI-电子书共435页202601更新
产品经理·ddd·架构师·uml·领域驱动设计
:mnong19 天前
跟着《软件需求分析和设计实践指南》成长
学习·需求分析·uml·软件需求