一文打通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


相关文章
|
2月前
|
弹性计算 人工智能 运维
Terraform从入门到实践:快速构建你的第一张业务网络(上)
本次分享主题为《Terraform从入门到实践:快速构建你的第一张业务网络》。首先介绍如何入门和实践Terraform,随后演示如何使用Terraform快速构建业务网络。内容涵盖云上运维挑战及IaC解决方案,并重磅发布Terraform Explorer产品,旨在降低使用门槛并提升用户体验。此外,还将分享Terraform在实际生产中的最佳实践,帮助解决云上运维难题。
156 1
Terraform从入门到实践:快速构建你的第一张业务网络(上)
|
6月前
|
Python
Mandelbrot集的最新变化形态一览——MandelBox,Mandelbulb,Burning Ship,NebulaBrot
该文介绍了几种基于Mandelbrot集的衍生形态,包括Mandelbulb、MandelBox、Burning Ship和NebulaBrot。Mandelbulb是3D扩展,使用球坐标;MandelBox利用盒映射创造复杂形状;Burning Ship以复数模和实部迭代;NebulaBrot则结合多种分形特征。文中提供了简单的Python代码示例来生成这些图形,并提到了相关学习资源。
架构学习——ER图
架构学习——ER图
246 0
|
7月前
|
Java 调度 Spring
KnowStreaming系列教程第三篇——调度任务模块
KnowStreaming系列教程第三篇——调度任务模块
148 0
|
弹性计算 监控 NoSQL
数据库重构之路,以 OrientDB 到 NebulaGraph 为例
如果你想尝鲜图数据库 NebulaGraph,记得去 GitHub 下载、使用、(^з^)-☆ star 它 -> GitHub;和其他的 NebulaGraph 用户一起交流图数据库技术和应用技能,留下「你的名片」一起玩耍呀~
113 0
|
弹性计算 监控 NoSQL
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
图数据库系统重构之路:从OrientDB迁移到NebulaGraph 真实案例分享
197 0
|
数据库
【系统架构】ER图
【系统架构】ER图
|
Kubernetes Cloud Native 调度
带你读《企业级云原生白皮书项目实战》——3.2.8 Scheduler 调度
带你读《企业级云原生白皮书项目实战》——3.2.8 Scheduler 调度
|
存储 数据可视化 算法
揭秘可视化图探索工具 NebulaGraph Explore 是如何实现图计算的
在可视化图探索工具 NebulaGraph Explorer 3.1.0 版本中加入了图计算工作流功能,针对 NebulaGraph 提供了图计算的能力,同时可以利用工作流的 nGQL 运行能力支持简单的数据读取,过滤及写入等数据处理功能。 本文将简单分享下 NebulaGraph Explorer 中集成图计算的基本实现原理。
495 0
下一篇
DataWorks