实体关系图 (ERD)

由于没有详细了解过相关知识,本周画ER图的时候出现了差错。这里介绍一下ER图。

什么是ERD?

ERD, 即 entity Relationship diagram, 实体关系图。使用一组定义的符号,如矩形、菱形、椭圆和连接线来描述实体、关系及其属性的相互联系。

ER图的组成部分

ER 图由实体、关系和属性组成。

并且不同的记法有不同的符号。
这里介绍比较常用的两种技法: Chen notation styleCrow's Foot style

Chen notation style

Peter Chen(又名 Peter Pin-Shan Chen)他在 1970 年代开发了用于数据库设计的 ER 建模。所以以他的名字命名了

Crow's Foot style

Crow's Foot 意为 鸦脚,像鸟爪式。 因为它的一些符号看起来很像鸟爪。

实体

ER 图最重要的组成部分是它的实体。由于 ERD 表示数据库的结构,因此实体是组成数据库的表。

  • Chen notation style记法: 在这种记法中,实体由矩形表示。实体写在一个矩形框内

这个学期学的数据库书中介绍的就是这种记法。如下:用一个矩形框表示。

实体关系图 (ERD)_第1张图片

  • Crow's Foot Notation记法: 用表格的形式,以实体作为该符号的标题。
    实体关系图 (ERD)_第2张图片

属性

Chen notation style:在这种记法中,属性用圆形表示。它们起源于实体。
实体关系图 (ERD)_第3张图片

Crow's Foot Notation: 属性列在表格下方,实体名字作为标题。

实体关系图 (ERD)_第4张图片

关系

第二个组成部分是实体之间的关系,这些关系显示了不同实体之间的关联。


两个实体型之间的联系三个主要的基本关系是一对一一对多多对多

一对一的例子 (1 : 1):一名学生与一个邮件地址相关联。

一对多的例子 (1 : n):(或多对一):一个班级有多个学生。

多对多例子(m : n):一个的学生与多个教师相关联,而教师又与多个学生相关联。

比如学生可能会注册一门课程。这两个实体是学生和课程,所描述的关系是注册行为。

  • Chen notation style记法:在这个符号中,关系由一个菱形表示,里面写着描述性文字

实体关系图 (ERD)_第5张图片


  • Crow's Foot Notation:在这种表示法中,关系由一条线表示。在线的两端都有描述关系基数的符号。

在这种记法中,如下几种符号表示不同的关系联系。
实体关系图 (ERD)_第6张图片


One to one。例如,一名学生与一个邮件地址相关联。

这里的PK(primary key) 在数据库中代表主键,是一个表的唯一主属性列。

左边用到了两条竖线,表示该实体必须存在,右边用到了zero one, 最少0个,最多1个。
实体关系图 (ERD)_第7张图片

One to many: (1 : n)(或多对一)。 例如一个班级拥有多个学生

这里的FK (FOREIGN KEY), 表示外键。外键不一定是主键,但必须是唯一性索引。
实体关系图 (ERD)_第8张图片

外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。

外键的作用:通过外键来保证数据的完整性一致性

在用户进行insert,update,delete等操作时,数据库会先通过外键检测(做关系检查),才会允许操作。例如:

insert:主表不存在的主键,子表也是不能插入相应的外键的
delete:从表记录不存在时,主表才可以删除。删除从表,主表不变

从这里就可以看出,外键的缺点:对海量数据,处理性能低

这也是为什么海量的数据推荐使用nosql的原因,nosql不需要处理大量的关系,在执行相关数据库命令的时候更快。

manyToMany(m : n):例如,一个的学生与多个教师相关联,而教师又与多个学生相关联。

使用manyToMany 实际上会生成一个中间表,如横线下方所示, 两个实体对这个中间表是oneToMany 的关系。 但是,为了简化,我们一般会使用横线上方所示, 默认它有中间表。
实体关系图 (ERD)_第9张图片

画ER图

  1. https://draw.io/ 这个网址提供在线的画图操作。

从实体关系一项, 可以选择符号。 Chen notation style 和 Crow's Foot Notation 两种符号都有提供。完全可视化操作,方便快捷。

实体关系图 (ERD)_第10张图片

  1. https://plantuml.com/zh/ie-di... 提供快速编写UML图在线工具

相比之下,需要先了解一定的语法才能快速开发
实体关系图 (ERD)_第11张图片

你可能感兴趣的:(entity)