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


相关文章
|
安全 数据库
通过E-R理解 主键和外键的关系
实例 现有课程和教师两个实体,课程实体的属性有课程名称、课程编号、课程属性、考试类型;教师实体的属性包括姓名、工号、职称;一门课程可以有多个教师,且每一位教师可以教授多门课程。教师每教授一门课有课序号。
7304 1
通过E-R理解 主键和外键的关系
|
移动开发 vr&ar
数据库系统概论——关系代数详解
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。关系代数的运算对象是关系,运算结果亦为关系。集合运算符将关系看成元组的集合从关系的“水平”方向即行的角度来进行运算专门的关系运算符不仅涉及行而且涉及列算术比较符辅助专门的关系运算符进行操作逻辑运算符辅助专门的关系运算符进行操作。
2537 1
数据库系统概论——关系代数详解
|
程序员 Linux Docker
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
使用Docker本地安装部署Draw.io绘图工具并实现远程访问协作办公
|
数据可视化 Java uml
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
6737 0
IDEA这个功能真强大!一键把整个项目代码绘制成UML类图...
|
存储 前端开发 中间件
『软件工程10』结构化系统分析:数据流图和字典案例分析
该文章通过具体案例分析了在软件工程中如何运用数据流图和数据字典来进行结构化系统分析,帮助明确系统的信息流程和数据定义。
『软件工程10』结构化系统分析:数据流图和字典案例分析
|
安全 Java 数据安全/隐私保护
【开题报告】基于SpringBoot的高校实验室管理系统的设计与实现
【开题报告】基于SpringBoot的高校实验室管理系统的设计与实现
1219 0
|
Java Maven Spring
如何在idea中创建Springboot项目? 手把手带你创建Springboot项目,稳!
文章详细介绍了在IDEA中创建Spring Boot项目的过程,包括选择Spring Initializr、配置项目属性、选择Spring Boot版本、导入依赖、等待依赖下载以及项目结构简介。
21918 1
|
机器学习/深度学习 Web App开发 测试技术
『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!
该文章介绍了八种常用的黑盒测试方法,包括等价类划分、边界值分析、错误推测法、因果图法、决策表测试、状态转换法、场景法以及随机测试,并提供了相应的案例说明。
|
存储 人机交互 数据库
如何数据库设计?
本文介绍了数据库设计的四种方法和基本步骤。直观设计法依赖设计者经验,规范设计法(如新奥尔良法)遵循软件工程原理,分为需求分析、概念设计、逻辑设计和物理设计四个阶段。计算机辅助设计法借助软件工具,自动化设计法则通过人机会话自动生成数据库。设计步骤包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库实施和运行维护。需求分析是关键,概念结构设计是基础,逻辑和物理设计涉及数据模型转换和存储优化,而运行维护是持续改进的过程。
1249 0
如何数据库设计?
|
SQL 数据可视化 关系型数据库
2022年最新最详细IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)
这篇文章详细介绍了如何在IntelliJ IDEA中关联MySQL数据库,包括打开Database侧边栏、选择数据库、输入连接信息、测试连接,并提供了解决连接问题的方案,以及在IDEA中进行数据库的可视化操作步骤。
2022年最新最详细IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)