由于没有详细了解过相关知识,本周画ER图的时候出现了差错。这里介绍一下ER图。
什么是ERD?
ERD, 即 entity Relationship diagram, 实体关系图。使用一组定义的符号,如矩形、菱形、椭圆和连接线来描述实体、关系及其属性的相互联系。
ER图的组成部分
ER 图由实体、关系和属性组成。
并且不同的记法有不同的符号。
这里介绍比较常用的两种技法: Chen notation style
和 Crow'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记法: 在这种记法中,实体由矩形表示。实体写在一个矩形框内
这个学期学的数据库书中介绍的就是这种记法。如下:用一个矩形框表示。
- Crow's Foot Notation记法: 用表格的形式,以实体作为该符号的标题。
属性
Chen notation style:在这种记法中,属性用圆形表示。它们起源于实体。
Crow's Foot Notation: 属性列在表格下方,实体名字作为标题。
关系
第二个组成部分是实体之间的关系,这些关系显示了不同实体之间的关联。
两个实体型之间的联系三个主要的基本关系是一对一、一对多和多对多。
一对一的例子 (1 : 1):一名学生与一个邮件地址相关联。
一对多的例子 (1 : n):(或多对一):一个班级有多个学生。
多对多例子(m : n):一个的学生与多个教师相关联,而教师又与多个学生相关联。
比如学生可能会注册一门课程。这两个实体是学生和课程,所描述的关系是注册行为。
- Chen notation style记法:在这个符号中,关系由一个菱形表示,里面写着描述性文字
- Crow's Foot Notation:在这种表示法中,关系由一条线表示。在线的两端都有描述关系基数的符号。
在这种记法中,如下几种符号表示不同的关系联系。
One to one。例如,一名学生与一个邮件地址相关联。
这里的PK(primary key) 在数据库中代表主键,是一个表的唯一主属性列。
左边用到了两条竖线,表示该实体必须存在,右边用到了zero one, 最少0个,最多1个。
One to many: (1 : n)(或多对一)。 例如一个班级拥有多个学生
这里的FK (FOREIGN KEY), 表示外键。外键不一定是主键,但必须是唯一性索引。
外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。
外键的作用:通过外键来保证数据的完整性一致性
在用户进行insert,update,delete等操作时,数据库会先通过外键检测(做关系检查),才会允许操作。例如:
insert:主表不存在的主键,子表也是不能插入相应的外键的
delete:从表记录不存在时,主表才可以删除。删除从表,主表不变
从这里就可以看出,外键的缺点:对海量数据,处理性能低
这也是为什么海量的数据推荐使用nosql的原因,nosql不需要处理大量的关系,在执行相关数据库命令的时候更快。
manyToMany(m : n):例如,一个的学生与多个教师相关联,而教师又与多个学生相关联。
使用manyToMany 实际上会生成一个中间表,如横线下方所示, 两个实体对这个中间表是oneToMany 的关系。 但是,为了简化,我们一般会使用横线上方所示, 默认它有中间表。
画ER图
- https://draw.io/ 这个网址提供在线的画图操作。
从实体关系一项, 可以选择符号。 Chen notation style 和 Crow's Foot Notation 两种符号都有提供。完全可视化操作,方便快捷。
- https://plantuml.com/zh/ie-di... 提供快速编写UML图在线工具
相比之下,需要先了解一定的语法才能快速开发
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。