[MySQL进阶]——ER模型

article/2025/9/23 18:29:34

🏳️‍🌈个人网站:code宝藏 👈,欢迎访问🎉🎉
🙏如果大家觉得博主写的还不错的话,可以点点关注,及时获取我的最新文章
🤝非常感谢大家的支持与点赞👍
📚笔记整理自 【宋红康】MySQL数据库(mysql安装/基础/高级/优化)

文章目录

      • 概述
      • ER模型包括哪些要素
      • 关系的类型
      • 建模分析
      • ER 模型的细化
      • ER 模型图转换成数据表
        • 转换的原则:
        • 1、一个实体转换成一个数据表
          • 先看强实体转换成数据表
          • 弱实体转换成数据表
        • 2、一个多对多的关系转换成一个数据表
        • 3、通过外键来表达1对多的关系
        • 4、把属性转换成表的字段

概述

ER模型也叫作实体关系模型,是用来描述现实生活中客观存在的事物、事物的属性,以及事物之间关系的一种数据模型。在开发基于数据库的信息系统的设计阶段,通常使用ER模型来描述信息需求和信息特性,帮助我们理清业务逻辑,从而设计出优秀的数据库

ER模型包括哪些要素

ER 模型中有三个要素,分别是实体、属性和关系。

实体 ,可以看做是数据对象,往往对应于现实生活中的真实存在的个体。在 ER 模型中,用 矩形 来表 示。实体分为两类,分别是 强实体弱实体 。强实体是指不依赖于其他实体的实体;弱实体是指对另 一个实体有很强的依赖关系的实体。

属性 ,则是指实体的特性。比如超市的地址、联系电话、员工数等。在 ER 模型中用 椭圆形 来表示。

关系 ,则是指实体之间的联系。比如超市把商品卖给顾客,就是一种超市与顾客之间的联系。在 ER 模 型中用 菱形 来表示。

注意:实体和属性不容易区分。这里提供一个原则:我们要从系统整体的角度出发去看,可以独立存在 的是实体,不可再分的是属性。也就是说,属性不能包含其他属性。

关系的类型

在 ER 模型的 3 个要素中,关系又可以分为 3 种类型,分别是 一对一、一对多、多对多。

一对一 :指实体之间的关系是一一对应的,比如个人与身份证信息之间的关系就是一对一的关系。

一对多 :指一边的实体通过关系,可以对应多个另外一边的实体。相反,另外一边的实体通过这个关 系,则只能对应唯一的一边的实体。比如说,我们新建一个班级表,而每个班级都有多个学生,每个学 生则对应一个班级,班级对学生就是一对多的关系。

多对多 :指关系两边的实体都可以通过关系对应多个对方的实体。比如在进货模块中,供货商与超市之 间的关系就是多对多的关系,一个供货商可以给多个超市供货,一个超市也可以从多个供货商那里采购 商品。

建模分析

要设计有一定规模的应用,在项目的初始阶段,建立完整的 ER 模型非常关键 。开发应用项目的实质,其实就是 建模

我们设计的案例是 电商业务 ,由于电商业务太过庞大且复杂,所以我们做了业务简化,比如针对 SKU(StockKeepingUnit,库存量单位)和SPU(Standard Product Unit,标准化产品单元)的含义上,我 们直接使用了SKU,并没有提及SPU的概念。本次电商业务设计总共有8个实体,如下所示。

  • 地址实体

  • 用户实体

  • 购物车实体

  • 评论实体

  • 商品实体

  • 商品分类实体

  • 订单实体

  • 订单详情实体

其中, 用户 和 商品分类强实体,因为它们不需要依赖其他任何实体。而其他属于弱实体,因为它们 虽然都可以独立存在,但是它们都依赖用户这个实体,因此都是弱实体。知道了这些要素,我们就可以 给电商业务创建 ER 模型了,如图:

image-20220124141908304

在这个图中,地址和用户之间的添加关系,是一对多的关系,而商品和商品详情示一对1的关系,商品和 订单是多对多的关系。 这个 ER 模型,包括了 8个实体之间的 8种关系。

(1)用户可以在电商平台添加多个地址;

(2)用户只能拥有一个购物车;

(3)用户可以生成多个订单;

(4)用户可以发表多条评论;

(5)一件商品可以有多条评论;

(6)每一个商品分类包含多种商品;

(7)一个订单可以包含多个商品,一个商品可以在多个订单里。

(8)订单中又包含多个订单详情,因为一个订单中可能包含不同种类的商品

ER 模型的细化

有了这个 ER 模型,我们就可以从整体上 理解 电商的业务了。刚刚的 ER 模型展示了电商业务的框架, 但是只包括了订单,地址,用户,购物车,评论,商品,商品分类和订单详情这八个实体,以及它们之 间的关系,还不能对应到具体的表,以及表与表之间的关联。

我们需要把 属性加上 ,用 椭圆 来表示, 这样我们得到的 ER 模型就更加完整了。

因此,我们需要进一步去设计一下这个 ER 模型的各个局部,也就是细化下电商的具体业务流程,然后把 它们综合到一起,形成一个完整的 ER 模型。这样可以帮助我们理清数据库的设计思路。

接下来,我们再分析一下各个实体都有哪些属性,如下所示。

(1) 地址实体 包括用户编号、省、市、地区、收件人、联系电话、是否是默认地址。

(2) 用户实体 包括用户编号、用户名称、昵称、用户密码、手机号、邮箱、头像、用户级别。

(3) 购物车实体 包括购物车编号、用户编号、商品编号、商品数量、图片文件url

(4) 订单实体 包括订单编号、收货人、收件人电话、总金额、用户编号、付款方式、送货地址、下单 时间。

(5) 订单详情实体 包括订单详情编号、订单编号、商品名称、商品编号、商品数量。

(6) 商品实体 包括商品编号、价格、商品名称、分类编号、是否销售,规格、颜色。

(7) 评论实体 包括评论id、评论内容、评论时间、用户编号、商品编号

(8) 商品分类实体 包括类别编号、类别名称、父类别编号

image-20220124143111533

ER 模型图转换成数据表

转换的原则:

(1)一个 实体 通常转换成一个 数据表 ;

(2)一个 多对多的关系 ,通常也转换成一个 数据表 ;

(3)一个 1 对 1 ,或者 1 对多 的关系,往往通过表的 外键 来表达,而不是设计一个新的数据表;

(4) 属性 转换成表的 字段 。

1、一个实体转换成一个数据表

先看强实体转换成数据表

用户实体转换成用户表(userinfo)的代码如下所示。

image-20220124143303093

商品分类实体转换成商品分类表(base_category),由于商品分类可以有一级分类和二级分类,比如一级分类有家居、手机等等分类,二级分类可以根据手机的一级分类分为手机配件,运营商等,这里我们把商品分类实体规划为两张表,分别是一级分类表和二级分类表,之所以这么规划是因为一级分类和二级分类都是有限的,存储为两张表业务结构更加清晰。

image-20220124143340862

弱实体转换成数据表

地址实体转换成地址表(user_address),如下所示

image-20220124143428876

订单实体转换成订单表(order_info),如下所示,实际业务中订单的信息会非常多,我们这里做了简化。

image-20220124143511512

订单详情实体转换成订单详情表(order_detail),如下所示。(用于体现多对多关系的,见下图)

image-20220124143542098

评论实体转换成评论表(members),如下所示

image-20220124143812233

商品实体转换成商品表(members),如下所示。

image-20220124143835352

2、一个多对多的关系转换成一个数据表

这个ER模型中的多对多的关系有1个,即商品订单之间的关系,同品类的商品可以出现在不同的订单中,不同的订单也可以包含同一类型的商品,所以它们之间的关系是多对多。针对这种情况需要设计一个独立的表来表示,这种表一般称为中间表。

我们可以设计一个独立的订单详情表,来代表商品和订单之间的包含关系。这个表关联到2个实体,分别是订单、商品。所以,表中必须要包括这2个实体辅换成的表的主键。除此之外,我们还要包括该关系自有的属性:商品数量,商品下单价格以及商品名称

image-20220124143937300

3、通过外键来表达1对多的关系

在上面的表的设计中,我们可以用外键来表达1对多的关系。比如在商品评论表sku_comments中,我们分别把user_id、sku_id定义成外键,以使用下面的语句设置外键。

image-20220124144140452

外键约束主要是在数据库层面上保证数据的一致性,但是因为插入和更新数据需要检查外键,理论上性能会有所下降,对性能是负面的影响

实际的项目,不建议使用外键,一方面是降低开发的复杂度(有外键的话主从表类的操作必须先操作主表),另外是有外键在处理数据的时候非常麻烦。在电商平台,由于并发业务量比较大,所以一般不设置外键,以免影响娄据库性能

在应用层面做数据的一致性检查,本来就是一个正常的功能需求。如学生选课的场景,课程肯定不是输入的,而是通过下拉或查找等方式从系统中进行选取,就能够保证是合法的课程ID,因此就不需要靠数据库的外键来检查

4、把属性转换成表的字段

在刚刚的设计中,我们也完成了把属性都转换成了表的字段,比如把商品属性转换成了商品信息表中的字段。

image-20220124144325839

到这里,我们通过创建电商项目业务流程的ER模型,再把ER模型转换成具体的数据表的过程,完成了利用模型设计电商项目数据库的工作

其实,任何一个基于数据库的应用项目,都可以通过这种先建立ER模型,再转换成数据表的方式,完成数据库的设计工作。创建ER模型不是目的,目的是把业务逻辑梳理清楚,设计出优秀的数据库。我建议你不是为了建模而建模,要利用创建ER模型的过程来整理思路,这样创建ER模型才有意义。


http://chatgpt.dhexx.cn/article/stI66Y5R.shtml

相关文章

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.分析信号的采样频率对频率特性的影响。 二.实验原理及方法 在现实世界里,声音、图像等各种信号多为模拟信号,要对它进行数字化处理&…

【信号处理】采样定理的深入浅出

一些闲话: 这是我本科生涯的最后一年了,过去三年毫无征兆地蒸发了一样,我的大四上有一门移动通信课,在实验课后我突发的迫切想要搭建一个完整的通信系统,所以我想趁着大四上最后一个月好好将我的知识进行总结&#xf…

奈奎斯特采样定理

现实世界接触到的诸如电信号、光信号、声音信号等这些信号都是随时间连续变化的,称之为连续信号。但对于计算机来说,处理这些连续的信号显然是无能为力,要使计算机能够识别、计算、处理这些连续信号就必须将其转化为离散信号,将连…

采样定理的学习笔记

CSDN话题挑战赛第2期 参赛话题:学习笔记 数据采集的最主要功能之一是将外部模拟信号转换为离散信号传递到计算机中去,这一过程被称为采样。采样频率或采样率,即每秒采集所得的数据个数,对于采样过程是一个至关重要的参数&#xf…

(一)深入理解采样定理

1. 奈奎斯特采样定理是连接连续和离散的桥梁。现实世界中接触到的信号,比如电信号,光信号,声音信号等都是随时间连续变化的,称为连续信号。但对于计算机来说如要处理连续信号,这是无能为力的,必须要将连续信…

再次理解信号采样定理(低通抽样定理)

以前对低通信号的采样定理简单理解为:必须要以信号的最高频率的2倍进行采样,否则就恢复不出来原信号,原因是采样频率Fs较小时,信号频谱发生了混叠,所以无法恢复。 仔细想想,这样理解当然正确,可…

时域采样定理和频域采样定理

采样定理的形象化描述:在时域对信号进行采样,等效为在频域对信号频谱进行周期延拓。在频域对频谱进行采样,等效为在时域对信号进行周期延拓。 由频域采样定理,联想我之前的一篇博客《傅里叶级数和傅里叶变换》,可以显然…

频域采样定理

频域采样定理 1、频域采样定理的主要内容是: (a)对信号 x(n) x ( n ) 的频谱函数 X(ejw) X ( e j w ) 在 [0,2π) [ 0 , 2 π ) 上等间隔采样 N点,得到: XN(k)X(ejw)|w2πk/N ,  k0,1,2,...,N−1 X N ( k ) X ( e j w ) | w 2 π k…

带通采样定理简单记录

没有目的的学习是困难的,当初是为了过一遍信号处理的相关知识,遇到了带通采样定理,和奈奎斯特采样定理相比,简直麻烦的让人无法接受!转眼间,半年过去了,这次为了看论文而再次回顾带通采样定理时…

采样定理 ADC采样

一、采样定理 采样会造成频谱搬移,采样最重要的就是保证搬移后的频谱不会发生混叠。 上图中(a)为原信号的频谱,(b)为以Fs采样后的频谱。可以看到频谱以原点O为基准发生了周期性的搬移,其中频谱…