ER模型

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

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

1.ER模型包括哪些要素
ER模型中有三个要素,分别是实体、属性和关系

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

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

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

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

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

一对一∶指实体之间的关系是一一对应的,比如个人与身份证信息之间的关系就是一对一的关系。一个人只能有一个身份证信息,一个身份证信息也只属于一个人。

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

多对多∶指关系两边的实体都可以通过关系对应多个对方的实体。比如在进货模块中,供货商与超市之间的关系就是多对多的关系,一个供货商可以给多个超市供货,一个超市也可以从多个供货商那里采购商品。再比如一个选课表,有许多科目,每个科目有很多学生选,而每个学生又可以选择多个科目,这就是多对多的关系。

3、建模分析
ER模型看起来比较麻烦,但是对我们把控项目整体非常重要。如果你只是开发一个小应用,或许简单设计几个表够用了,一旦要设计有一定规模的应用,在项目的初始阶段,建立完整的ER模型就非常关键了。开发应用项目的实质,其实就是建模

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

  • 地址实体
  • 用户实体
  • 购物车实体
  • 评论实体
  • 商品实体
  • 商品分类实体
  • 订单实体
  • 订单详情实体

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


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

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

接下来,再分析一下各个实体都有哪些属性,如下所示:
(1)地址实体包括用户编号、省、市、地区、收件人、联系电话、是否是默认地址。
(2)用户实体包括用户编号、用户名称、昵称、用户密码、手机号、邮箱、头像、用户级别。
(3)购物车实体包括购物车编号、用户编号、商品编号、商品数量、图片文件url。
(4)订单实体包括订单编号、收货人、收件人电话、总金额、用户编号、付款方式、送货地址、下单时间。
(5)订单详情实体包括订单详情编号、订单编号、商品名称、商品编号、商品数量。
(6)商品实体包括商品编号、价格、商品名称、分类编号、是否销售,规格、颜色。
(7)评论实体包括评论id、评论内容、评论时间、用户编号、商品编号
(8)商品分类实体包括类别编号、类别名称、父类别编号

这样细分之后,就可以重新设计电商业务了,ER模型如图:

5、ER模型图转换成数据表
通过描绘ER模型,我们已经理清了业务逻辑,现在,我们就要进行非常重要的一步了:把绘制好的ER模型,转换成具体的数据表,下面介绍下转换的原则:
(1)一个实体通常转换成一个数据表;
(2)一个多对多的关系,通常也转换成一个数据表;
(3)一个1对1,或者1对多的关系,往往通过表的外键来表达,而不是设计一个新的数据表;(4)属性转换成表的字段。

Mysql——ER模型相关推荐

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

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

  2. 在线制作数据库ER模型

    在线制作数据库ER模型 在以往的数据库设计中,我们通过会用到一些数据库的设计工具,有针对Mysql的Mysql workbench, PowerDesign等等工具,可以通过这些工具创建数据库的ER模 ...

  3. 预定酒店的类图与E-R模型

    本文主要对某年代澳大利亚某线上酒店预订网站进行数据库建模,相关的业务文档: https://download.csdn.net/download/qq_33559972/10366961 上一步的用例 ...

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

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

  5. mysql第三章关系模型_一个MySQL关系模型只有三个关系(二维表)组成。_学小易找答案...

    [判断题]DELETE语句功能是对表中所有记录或满足条件的记录进行批量删除. [填空题]The computer's entire ____ was on a single board. [单选题]下 ...

  6. 数据库设计三大范式和ER模型

    1. 数据库设计之三范式的介绍 范式: 对设计数据库提出的一些规范,目前有迹可寻的共有8种范式,一般遵守3范式即可. 第一范式(1NF): 强调的是列的原子性,即列不能够再分成其他几列.(1NF强调字 ...

  7. 数据库系统概念总结:第七章 数据库设计和E-R模型

    周末无事水文章,期末备考的总结资料 第七章 数据库设计和E-R模型 7.1 设计过程概览 7.1.1 设计阶段 需要完整地刻画未来数据库用户的数据需求 选择数据模型,并采用所选数据模型的概念将这些需求 ...

  8. MySQL / 索引模型

    一.索引的作用 提高数据查询效率. 二.常见索引模型 哈希表.有序数组.搜索树. 三.哈希表 思路:把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位 ...

  9. DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换为关系模式、UML建模...

    设计过程概览 1. 设计阶段 ·最初阶段:刻画未来数据库用户的数据需求,产品为用户需求规格说明: ·概念设计阶段(conceptual-design phase):(关注描述抽象数据及其联系,通常使用 ...

最新文章

  1. Mtop,Mysql Top,一个Mysql的监控工具
  2. Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
  3. 虚拟化:企业信息化建设中坚力量
  4. 编解码再进化:Ali266与下一代视频技术
  5. matlab安装MinGW-64代码C/C++编译器的方法
  6. win7电脑内存信息的查看方法
  7. 优惠券领取--Java电商
  8. 鬼灭之刃人物炫酷高清壁纸
  9. 防伪拉线 CCD 纠偏控制器
  10. mysql自动多表联合更新_mysql多表联合更新 的 三种方法
  11. SPSS问卷中的人口学变量是否要用?以及如何选用?【SPSS 065期】
  12. 自动化遍历-appcrawler
  13. 备考OCJP认证知识点总结(五)
  14. Baxter学习笔记
  15. 关于双网卡同时连接内外网
  16. android sqlite多条件查询,sqlite 多条件查询
  17. [LuoGu] P3957 跳房子
  18. 解决windows指纹解锁过一段时间就使用不了、需要重新录入指纹才可以使用的问题
  19. did you register the component correctly? For recursive components, make sure to provide the “name“
  20. 从苏宁电器到卡巴斯基第34篇:我与卡巴斯基的邂逅(上)

热门文章

  1. html/css 总结项目之一 app端 机械师2
  2. 神经网络:DNN回归问题
  3. KMP算法详解及代码
  4. 基于自组织背景减除的运动目标检测算法
  5. 我的世界手机版制作服务器指令大全,我的世界手机版服务器指令大全(18)
  6. Scratch少儿编程与游戏: 部落的觉醒
  7. Ubuntu hostname修改
  8. 仿比心1对1直播源码开发,如何获取Android系统权限?
  9. OpenCV安装配置教程VS2022(超级顺利)
  10. 网页设计基础教程最最简单的一个ppt