一文打通ER图(手把手教你画)

简介: 一文打通ER图(手把手教你画)

期末了,E-R图也是大学课程设计中经常用到的,也是期末考的重点,毕竟大学生也没什么好考的,最近也有不少同学问,不少单子也扯到E-R图,但是我看了看网上的玩意好像没到手把手的地步,那么我就写一个手把手的画E-R图的博客吧。

什么是er图?

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型属性联系的方法,用来描述现实世界概念模型

这是来自百度百科的介绍,从上面我们可以看到3个最重要的词,实体类型属性,联系,那这三个是什么意思呢?

什么是实体类型?

具有相同属性的实体必然具有共同的特征和性质。用实体名及描述它的各属性名,可以刻画出全部同质实体的共同特征和性质,称为实体类型。例如,学生(学号,姓名,性别,出生年月,所在院系,入学时间)就是一个实体型。说白了,最粗糙的理解无非就是物品的玩意,客观存在并可以相互区别的事物,一个学生是,一个班级是,一个学校是。在E-R图中用矩形表示,矩形框内写明实体名

什么是属性?

实体所具有的某一特性,一个实体可由若干个属性来刻画。属性不能脱离实体,属性是相对实体而言的。在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来;比如学生的姓名、学号、性别、都是属性。

什么是联系 ?

联系也称关系,信息世界中反映实体内部或实体之间的关联。实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。在E-R图中用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。比如老师给学生授课存在授课关系,学生选课存在选课关系。

一对一

一对一关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

比如一个人,只有一个身份证号,一个身份证号也对应一个人。

8d6d437c1ac64f4a8a33e5ade49c5568.png

对多

一对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。

比如一个班级里有多个学生

71c17bbe56c542429bf130fce9da7cd7.png

这里注意可能不清晰这个1和n怎么标?把1和n的位置标不对。呃我就是那个人,后面我是这样子记得:俩个实体是吧,先假想是其中的的一个实体,把描述的关系放联系名对面的边,我是一个班级,那么我有n个学生,所以n放对边,我是一个学生是吧,我只有一个班级,所以1放我对边。然后就完成了。


再看一个例子:一个教师可讲授多门课,一门课只有一个教师讲授


43b2b6ebf1274ad481ed3758e027b96f.png

我是一个教师,那么我有n个课要教,n放对边。


3b1727c6a8d942e3b7b36393a3e2bc05.png

我是一个课程,我只有一个教师来教,1放对边。

a6c50a0898e64209b298d1eba9a5c815.png

多对多

多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。

比如一个学生可以选多个课程,一个课程也可以有多个学生。

7bafda6f17eb4926bc81904f16e4fb81.png

注意点

有时候我们可以发现在菱形框内连着椭圆形属性可能你会觉得奇怪?不是说属性和实体相连吗?这其实是一个很正常的一种画法,由于视图间产生的联系,产生的新属性那就应该画在


联系名上,比如学生跟课程实体产生了联系以后就会出现一个成绩的属性。


下面通过俩个例题来打通这个玩意去应付期末的玩意


例题解答

一个学生可选修多门课,一门有若干学生选修;一个教师可讲授多门课,一门课只有一个教师讲授;一个学生选修一门课,仅有一个成绩。学生的属性有学号、学生姓名;教师的属性有教师编号,教师姓名;课程的属性有课程号、课程名。

bf14f7f021d34b2cb6361b75e96d1900.png

设某商业集团有多个商店。在其信息系统中,对“商店”记录有商店编号、商 店名、地址等信息;对销售的 “商品”记录有商品号、商品名、规格、单价等信息;对其 “职工”记录其职工编号、姓名、性别和业绩等级(优秀、良好、较差)等。每个商店可销 售多种商品,每种商品也可放在多个商店销售,每个商店销售每一种商品,需要记录每月的 销售量;每个商店有许多职工,每个职工只能在一个商店工作,商店聘用职工按照聘期规定 月薪发放工资,每个聘期长度为 1 年。


(1)试画出 ER 图,并在图上注明属性、联系的类型。

(2)转换成关系模式集,要求满足 3NF,并指出每个关系模式的主键和外键。


商店:


f249ff30bd994dc29991c754477f998c.png

 职工:

6716e32d6f634cd081f1296d22ea1930.png


商品:

9c903901fd26479f9eb043118c02dfb2.png

商店和商品的关系:

09526e66d1d347299172fa1858cef80b.png


看这里,由于商店跟商品进行联系以后就会产生了一个新的的属性那就是月销售量

最后再结合商店跟职工的关系:


0c5746075ff94ddba0e8f970b52bb7ec.pngcb9a52b7503c4726a5b3d72289015bcb.png


相关文章
|
4月前
【sgTopo】强哥古法炮制、纯手工打造简单拓扑图、流程图、思维导图组件(完善中ing)(二)
【sgTopo】强哥古法炮制、纯手工打造简单拓扑图、流程图、思维导图组件(完善中ing)
|
11月前
|
SQL 资源调度 数据库
数仓学习---14、大数据技术之DolphinScheduler
数仓学习---14、大数据技术之DolphinScheduler
|
3月前
|
运维 数据管理 关系型数据库
数据管理DMS产品使用合集之新版本的ER图在什么位置
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
34 3
|
3月前
|
Python
Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot
该文介绍了几种基于Mandelbrot集的衍生形态,包括Mandelbulb、MandelBox、Burning Ship和NebulaBrot。Mandelbulb是3D扩展,使用球坐标;MandelBox利用盒映射创造复杂形状;Burning Ship以复数模和实部迭代;NebulaBrot则结合多种分形特征。文中提供了简单的Python代码示例来生成这些图形,并提到了相关学习资源。
|
10月前
|
SQL 监控 数据可视化
DolphinScheduler教程(02)- 系统架构设计(上)
DolphinScheduler教程(02)- 系统架构设计(上)
202 0
DolphinScheduler教程(02)- 系统架构设计(上)
|
4月前
【sgTopo】强哥古法炮制、纯手工打造简单拓扑图、流程图、思维导图组件(完善中ing)(一)
【sgTopo】强哥古法炮制、纯手工打造简单拓扑图、流程图、思维导图组件(完善中ing)
架构学习——ER图
架构学习——ER图
212 0
|
10月前
|
JSON 监控 Java
DolphinScheduler教程(02)- 系统架构设计(下)
DolphinScheduler教程(02)- 系统架构设计(下)
171 0
|
SQL 监控 数据可视化
DolphinScheduler教程(02)- 系统架构设计
DolphinScheduler教程(02)- 系统架构设计
1256 0
DolphinScheduler教程(02)- 系统架构设计
|
存储 NoSQL 算法
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化
NebulaGraph 技术社区用户的实践优化心得集大成者,从数据建模开始,解决数据膨胀问题,再到软硬皆施搞定数据导入的速率,到最后的查询语句优化。一站式搞定数据库的性能问题。
656 0
使用秘籍|如何实现图数据库 NebulaGraph 的高效建模、快速导入、性能优化