ER模型、ER分析介绍

article/2025/9/23 18:30:32
关注公众号【程猿薇茑】

 

【仅需一次订阅,作者所有专栏都能看】

推荐【消息队列Kafka】https://bigbird.blog.csdn.net/article/details/108770504
推荐【大数据Flink】https://blog.csdn.net/hellozpc/article/details/109413465
推荐【SpringBoot】https://blog.csdn.net/hellozpc/article/details/107095951
推荐【SpringCloud】https://blog.csdn.net/hellozpc/article/details/83692496
推荐【Mybatis】https://blog.csdn.net/hellozpc/article/details/80878563
推荐【SnowFlake】https://blog.csdn.net/hellozpc/article/details/108248227
推荐【并发限流】https://blog.csdn.net/hellozpc/article/details/107582771

 

1 简介

1.1 ER模型的作用

    以建筑房屋的例子,说明建筑师、建筑工人和原材料商的作用,强调数据库规划师、数据库操作人员和数据库管理系统的作用,指出ER模型是种基于关系模型的数据库整体规划方法。

1.2 ER模型的概念

    模型来源于数据概念模型,说明ER模型是一种概念模型设计方法。

    ER来源于英文单词“实体”和“联系”,说明它主要是利用这两个图例的绘制进行表达和设计。由美籍华人陈平山设计。Codd的范式方法不甚适用于全局性设计,除此以外,还有其他一些概念模型设计方法。

1.3 ER模型的设计方法

    从用户需求调研开始,结合学籍信息系统的案例说明。

    1)调研用户需求,得到几点基本要求,如“查找和修改学生的基本信息”,“查找和修改学生成绩信息”。

    2)识别用户需求中的数据内容,忽略功能性内容,并再次调研以确定数据的含义,如什么是学生基本信息。最终得到如下数据:学号,姓名,性别,生日,身高、课程名、成绩。判断这些数据是否合格,只需判断它们是否可以再次细分(准则1)。这些最后得到的数据被称为属性。

    3)将全部信息放入一个关系,虽然功能可行,但是冗余太大,易带来不一致的危险。

    4)使用“拆”的方法,将关系按照语义联系细分。

    将“学号,姓名,性别,生日,身高”五个属性识别出“学生”语义,并新建关系,学号作为主键。

    将“课程名”一个属性识别出“课程”语义,并新建关系,并添加课程号主键,同时体现出信息建设所具有的变革意味。

    说明“成绩”属性不能建立成绩实体,因为它不能独立存在(准则2)。反过来说,它与现有关系存在联系。

    说明“成绩”属性不能归入上述两个关系中任一关系,因为对于上述实体集合中的每一实体,该项属性取值不惟一(准则3)。

    强调“成绩”属性是学生和课程联系的属性,即将两个实体主键拿过来新建关系,并将“成绩”属性放入该关系。

    最后得到关系为:

    学生(学号,姓名,性别,生日,身高)

    课程(课程号、课程名)

    选修(学号、课程号,成绩)

2 ER图的绘制

    结合学籍信息系统案例简述建模方法,并描述相应的ER图。

    说明实体、属性(包括主属性)和联系的画法。

    强调ER模型设计的两大内容:一是将需求通过ER表达,另一个是将ER转换为关系模型。ER图是从实践归纳出来的理论方法,可以重新指导实践行为,既可以作为理解和表达用户数据需求的手段,同时也构成如何生成关系模型的依据。

结合电影公司案例说明ER图的绘制。

 

 

3 ER图转换为关系模型的方法

    从学籍信息系统案例解释ER图和生成关系模型的对应关系,方法为:

    1)一个实体直接对应一个关系,实体的所有属性成为关系的属性,实体的主属性成为关系的主属性

    2)一个联系直接对应一个关系,此关系首先将联系所关联的所有实体主属性拿来一齐构成自己的主属性,并添加自己的属性。

    强调实体和联系对应的关系名称命名问题,如不用汉字,联系关系要表达语义等。

    按照上述方法将电影公司案例ER图转换为关系模型(属性自己添加):

    Movies(mid,title,year,length,type)

    Stars(stid,name,address)

    Studios(sdid,name,address)

    MovieStar(mid,stid,salary)

    MovieStudio(mid,sdid)

    说明上述做法中MovieStudio关系可以合并到Movies中,指出原因在于此种联系为1:N。

    结合学生和班级的问题再次说明这种合并的用法,并说明1:N的联系如何生成关系模型,方法为:在联系值为多的实体后添加联系值为1的实体的主属性。

    说明联系的三种类型,并强调涵盖关系。说明多对多联系之所以新建关系的原因在于将其拆成两个一对多,而一对多联系作为多对多联系的特例,可以按照多对多联系处理,不过合并更为简单。

    ER图转换为关系模型的课堂练习之一(属性自己添加):

 

 

 

结果为:

    学生(学号,姓名,性别)

    课程(课程号,课程名称,教师号)

    教师(教师号,教师名)

    参考书(书号,书名,课程号)

    学生课程(学号,课程号,成绩) 

    说明一对一联系转换方法为在任一关联实体后添加另一实体的主属性。强调必要时要结合查询要求等功能决定选择。

    ER图转换为关系模型的课堂练习之二(属性自己添加):

 

 

 

 结果为:

    学生(学号,姓名,性别)

    课程(课程号,课程名称)

    教师(教师号,教师名)

    参考书(书号,书名)

    课程教师参考书(课程号,教师号,书号)

    学生课程(学号,课程号,成绩)

    学生管理(学号,班委号)

    (注:如学生管理为1:N,则应在学生关系后添加“班委号”即可)

 

4 ERWin使用简介

    介绍ERWin等常用数据库建模工具(还有Visio,PowerDesigner,Rational等)的好处,绘图简单、转换方便。

4.1 安装注册

4.2 ER的绘制,注意联系实体(Associate Entity)的生成

4.3 正向工程的使用,即从逻辑模型转换为物理模型

4.4 逆向工程的使用,即从物理模型转换为逻辑模型

5 ER图的规划方法

    将所得到的属性分门归类,利用以前讲述的几条简单准则即可将其并入实体或者联系。

    按照的准则主要有两个:

    1)属性如果不能具有独立存在的意义,则不能成为一个新建立实体。

    2)属性归入一个实体的依据是对实体的每个实例而言具有唯一值。

    结合合同案例讲解设计方法,如:


 

 

 

相应的ER图结构可以描述为:

    合同(合同号,订货日期,厂商名称,厂商地址)

    货物(货物编号,货物分类)

合同货物(合同号,货物编号,订货数量)

 

 

 

除此以外,还有一种方法,将厂商视为实体,相应的ER图结构可以描述为:

    合同(合同号,订货日期,厂商号)

    货物(货物编号,货物分类)

    厂商(厂商号,厂商名称,厂商地址)

    合同货物(合同号,货物编号,订货数量)

 

 

 

两种方法的比较:

    1)第一种方法存在冗余(相同的厂商具有相同的地址),但是实体少,处理简单,以后利用范式分析方法可以得到标准结构。所以,实体能少则少。

    2)第二种方法需要考察厂商实体与合同、货物的关系,发现与合同存在一对多的关系,但与货物存在多对多的关系,明显增加处理的复杂度。事实上,可以考虑去除厂商与货物的关系(可以从剩下的关系中推断出来,但是其他的关系不能省略)。

    结合学校信息系统案例讲解设计方法,如:

学院有很多不同的系,每个系下属若干个教研室,每个教研室下属若干个教师,其中的有些教授能够带若干个研究生,但是每个研究生只能有一个导师;每个系下属若干个班级,每个班有很多学生,每个学生选修很多门课程,每门课也可以被多个学生选修。

 

 

 

相应的ER图结构可以描述为:

    学院(学院号,学院名)

    系(系号,系名,学院号)

    教研室(教研室号,教研室名,系号)

    教师(教师号,教师名,职称,教研室号)

    班级(班级号,班级名,系号)

    学生(学号,名称,班级号,学历,导师号)

    课程(课程号,课程名)

    学生课程(学号,课程号)

    除此以外,还有一种方法,将教授和研究生单独视为实体,相应的ER图结构可以描述为:

    学院(学院号,学院名)

    系(系号,系名,学院号)

    教研室(教研室号,教研室名,系号)

    教师(教师号,教师名,教研室号)

    教授(教授号)

    班级(班级号,班级名,系号)

    学生(学号,名称,班级号,学历)

 

    研究生(研究生号,导师号)

    课程(课程号,课程名)

    学生课程(学号,课程号) 

 

 

 

 两种方法的比较:

    1)第一种方法实体较少,但是教师实体的职称、学生实体的学历和导师号存在较多的空值可能,在空值较少的情况下是个较好的选择。

2)第二种方法虽然实体较多,没有上述的空值问题。对于此类子类问题,要注意相应的处理方法,即子类中只留有必须的主键信息,全部信息都可以直接从父类中获取,这样查询更为简单易行。

 

6 子类问题

    在电影公司数据库中表达电影的实体信息中,表达卡通片的主角配音演员信息

    这是个子类问题,因为卡通片电影是电影的一种子类。

    处理方式一:将子类视为父类的内容来处理 

 

上述做法对应的关系模型为:

    Movies(mid,title,isCartoon,sdid,did)

    Studios(sdid,name)

    Dubbers(did,name)

    说明:

    1)可以表达查询要求

    2)对于非卡通片,did多为空

    3)不适用于子类较多的情况,如引入爱情片(affectional film)的结局(finale)查询要求


 

 

 

  

 对应的关系模型为:

    Movies(mid,title,isCartoon,sdid,did, isAffectional, finale)

    Studios(sdid,name)

    Dubbers(did,name)

    可以看出大部分电影的did和did信息皆为空

    处理方式二:将子类单独表达 

 

 

 

相应的关系模型为:

    Movies(mid,title,sdid)

    Studios(sdid,name)

    Dubbers(did,name)

    AffectionalFilms(mid,title,sdid,finale)

    Cartoons(mid,title,sdid,did)

    说明:

    1)没有较多的空值问题

    2)爱情片、卡通片和一般电影分开存储不便于那些不区分电影类型的常见检索(需要更多的表合并操作)

    处理方式三:将子类单独表达,但是父类拥有全部记录信息,子类只有主键信息和自己的特殊信息。这种方式一般是最为有效的。

    改进的关系模型为:

    Movies(mid,title,sdid)

    Studios(sdid,name)

    Dubbers(did,name)

    AffectionalFilms(mid,finale)

    Cartoons(mid,did)

 

 

总结:

ER模型的设计一般步骤:

①客户调研,了解需求,收集数据

②根据用户需求来把数据细分到不可再分的基本数据项

③可以先将全部信息(或者称属性、字段)放入一个关系,虽然功能可行,但是冗余太大,易带来不一致的危险。使用“拆”的方法,将关系按照语义联系(实体-关系)细分。根据从客户那得到的原始信息识别出实体,依次将属性放入实体中(原则是只有该属性对于该实体来说是唯一确定的才能将这个属性归到这个实体里,否则看看能不能放到其他实体里)。注意有的属性是联系的属性,这时就要建立实体间的联系,并给联系加个属性。

从E-R模型到关系模型的变换规则:

①每个实体建一张表,实体的属性变为表的一个字段,要设个主属性。

②所有的多对多的联系也要转变为一张表,如果是多对一的联系就不要新建表了,在联系值为多的实体后面添加联系值为1的实体的主键,如果是一对一的联系那就随便在哪个实体后面加上另外一个实体的主键。

一个权限管理数据库设计案例 https://blog.csdn.net/hellozpc/article/details/103236720

关注公众号【程猿薇茑】

参考文献:

1.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=412&page=8

2.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1163&page=2

3.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1166&page=2

4.http://www.njcie.com/bbs/dispbbs.asp?boardid=19&Id=1173

视频下载地址(迅雷输入地址即可)

http://www.njcie.com/DB/files/41.wmv

http://www.njcie.com/DB/files/42.wmv

http://www.njcie.com/DB/files/43.wmv

 

 

欢迎关注公众号

 


http://chatgpt.dhexx.cn/article/9R3DHpu5.shtml

相关文章

数据库实验—ER模型

E—R图 实体性用举行表示,矩形内写明实体名。 属性用椭圆表示,并用无向边将其与相应的实体性连接起来。 练习用菱形框表示,框内写出联系名称,用无向边分别与有关实体型链接起来,同时要在无向边上注明联系的类型&#x…

数据库系统笔记4: ER模型

基本概念 Entity(实体):对象,如学生、教师,用方形表示Entity Set(实体集):类 一个实体集必须至少有一个非主键的属性或者它是多对一/多对多关系中的“多”Attribute(属性…

数据库原理之如何设计一个ER模型

数据库原理之如何设计一个ER模型 前言 这里是 数据库系统原理 系列文章,主要介绍数据库系统理论以及数据库实用技术。 数据库技术是计算机学科中的一个重要分支,它的应用非常广泛,几乎涉及所有的应用领域。 关于作者: 小白&#…

在mysql中er是什么模型_er模型是反映数据库应用系统的什么模型

展开全部 er模型是e5a48de588b662616964757a686964616f31333431353365反映数据库应用系统的概念模型 ,表示概念模型的方式有多种其中最常用的是E-R模型,由P.PChen于1976年提出,中文为实体-联系模型。 概念数据模型是面向用户、面向现实世界的…

mysql学生选课系统的关系模型_数据库系统原理ER模型与关系模型

数据库系统是软件的一种,数据库系统自然而然也有他自己的生命周期生存期。它的生存期从规划开始,一直到将它卸载不用了。它的中间过程很复杂,为了实现用户的想法,数据库有关人员将现实生活中的数据进行抽象,然后在进行…

数据库设计(ER模型和UML模型及转换为关系模型的公式)

本文根据b站鲁老师的教学视频整理而来,可能会偏理论化,有点枯燥,但是如果认真看完,还是会有所收获哒。 从本文可以学习到: 对于一个即将展开的项目,我们应该怎么设计及实现数据库。 掌握概念模型&#xff0…

4000字细说ER模型基础概念•业务建模系列

前言 接下来几篇文章会围绕「业务建模」这个方向,展开总结一下。讲到业务建模就联想到ER模型,ER建模可以说是B端产品经理必要掌握的技能。 本文会从以下几个点进行基础指引: 什么是ER模型? ER模型有什么作用? ER图的核…

2.3.2 ER模型

1.实体 定义:用于表示现实世界具有相同属性描述的集合,它表示某一种类所有事物的集合。 表示形状:矩形 说明:(1)一个E-R图中通常包括多个实体 (2)每个实体→一张表 每个实例→一条记录 2.属性 定义:表示实体或实体间…

[MySQL进阶]——ER模型

🏳️‍🌈个人网站:code宝藏 👈,欢迎访问🎉🎉 🙏如果大家觉得博主写的还不错的话,可以点点关注,及时获取我的最新文章 🤝非常感谢大家的支持与点赞…

ER模型详解

ER(实体联系)模型中有三个主要的概念:实体集、属性、联系集。 实体集对应的是数据库中的一个表,一个实体则对应数据库表中的一行。一个属性则对应数据库表中的一列,则就是一个字段。 联系集就是表与表之间的关联关系; 一对一关联…

数据模型及E-R模型

数据模型的基本概念 模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模型。 1)概念数据…

E-R模型

知识点 E-R模型(Entity-relationship model)表示: 实体: 用矩形框表示。 属性: 实体的属性用椭圆框表示。 联系:实体间的联系用菱形框表示,并在连线上标明联系的类型,即1—1、1—n或…

ER模型

定义:ER模型即实体-关系模型,ER图即实体-关系图。提供不受任何DBMS约束的面向用户的表达方法, 在数据库设计中被广泛用作数据建模的工具。E-R模型的构成成分是实体集、属性和联系集 其表示方法如下: (1)…

Mysql——ER模型

ER模型 数据库设计是牵一发而动全身的。那有没有什么办法提前看到数据库的全貌呢?比如需要哪些数据表、数据表中应该有哪些字段,数据表与数据表之间有什么关系、通过什么字段进行连接,等等。这样我们才能进行整体的梳理和设计。 其实,ER模…

从图像解释采样定理

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理…

采样定理的直观解释

在 傅里叶级数和傅里叶变换之间的关系 这篇文章中,已经介绍了以下基本知识,建议在阅读本文之前掌握: 梳状函数的频谱图仍然是梳状函数梳状函数与别的函数卷积的结果一定是周期信号 这里的梳状函数 δ T s ( t ) {\delta}_{T_s}(t) δTs​​…

深入理解采样定理 + Matlab 仿真 Sa 函数的采样与恢复

建议配合国宝老师的视频食用。 信号与线性系统分析 吴大正 郭宝龙 文章目录 (1) 采样的说明1. 为什么要取样2. 什么是取样 (2) 采样定理1. 为什么要有奈奎斯特频率2. 什么是采样定理 (3) 信号的恢复(4) Matlab的Sa函数取样仿真1. 采样信号Sa函数的说明2. 进行参数的说明及相关计…

数字信号处理:时域采样定理与频域采样定理

数字信号处理:时域采样定理与频域采样定理 1.时域采样定理 %初始参数 A444.128; alphpi*50*2^0.5; omegapi*50*2^0.5; M64; %做64点fft变换 n0:M-1;%采样频率fs为1000Hz Fs11000; T11/Fs1; xn1A*exp(-alph*n*T1).*sin(omega*n*T1); %对原函数的抽样取点 Xk1fft(…

连续时间采样及采样定理——MATLAB

一、实验目的 1、掌握连续时间信号离散化的方法(即采样),并能利用Matlab编程加以仿真实现; 2、掌握连续时间信号的傅立叶变换和离散时变换的仿真实现方法; 3、学会利用傅里叶变换和离散时间信号的傅立叶变换的方法对连续时间信进行频谱的分析…

模拟信号的采样定理MATLAB实现

一. 实验目的 1.掌握信号的采样的方法。 2.分析信号的采样频率对频率特性的影响。 二.实验原理及方法 在现实世界里,声音、图像等各种信号多为模拟信号,要对它进行数字化处理&…