Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >第1篇:数据库需求与ER建模

第1篇:数据库需求与ER建模

作者头像
Spark学习技巧
发布于 2018-03-20 06:39:56
发布于 2018-03-20 06:39:56
2K0
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

数据库需求与ER建模

前言

在数据库建设过程中,哪一步最重要?绝大多数资料会告诉你,是需求分析阶段。这一步的好坏甚至直接决定数据库项目的成败。

需求分析阶段,也被称为ER建模(entity-relationship modeling)阶段,也常被称为需求可视化,概念建模等。这一阶段数据库系统开发人员将协同需求方以ER图的方式对业务需求进行可视化展现。

本文将详细介绍(陈氏)ER符号体系,并在其中穿插一些具体实例讲解。

基本概念

1. 实体(entity)

实体表示客观世界中的众多概念,比如:人,地点,事件等。

每个实体本身包含多个实体成员,比如实体人可能包含张三,李四王五等。

在ER图中,实体通常用矩形表示,如下所示:

2. 属性(attribute)

每个实体都有属性,用椭圆表示并用来描述实体各个特征。 比如顾客的特征可能有顾客标识符,顾客姓名,顾客性别,顾客年龄等,如下图所示:

此外,每个实体至少要有一个唯一属性,用下划线标记,如上图中的id字段。

3. 联系(relation)

实体与实体之间通常具有某种关联,在ER图中用菱形表示。比如某职员向某主管汇报,如下图所示:

细心的读者相必发现了,实体间连线的两端,写有一些符号。这些符号被称为基数约束(cardinality constraint),用来表示实体可以有多少实例与另一实体的实例存在联系。

基数约束共有四种形态:

此为形态一,即强制多个对应,表示一个实体A对应多个实体B。

此为形态二,即可选多个对应,表示一个实体A对应0个或多个实体B。

此为形态三,即强制单个对应,表示一个实体A对应一个实体B。

此为形态四,即可选单个对应,表示一个实体A对应0个或1个实体B。

我们知道联系是双向的,所以实际ER建模中常见的版本长这样:

理解这个联系的方法是从两个方向进行解读,“实体A对应0个或1个实体B,实体B对应一个或多个实体A”。

扩展概念

使用前面介绍的这些概念,已经能完成基础ER建模了。然而,为了更为细致的刻画出用户需求,又有了下面这些建模规则。

1. 复合属性(composite attribute)

部分属性具有复合的特点,比如地址属性。地址可能包含了省份,城市,街道等子属性。

ER图上这类属性的属性名应当标记圆括号,然后扩展为多个子属性。可参考下面这个商店实体定义:

2. 多值属性(multivalued attribute)

部分属性具有多值的特点,比如一个职工可能有多个电话号码。

ER图上这类属性用双层椭圆标识,可参考下面这个职工实体定义:

3. 派生属性(derives attribute)

部分属性可从其他属性或者其他数据(如当前日期)派生出来,这类属性在ER图上用虚线椭圆标识。

可参考下面这个士多店实体定义:

上图中士多店的YearsInBusiness属性表示店铺开张了多少年,这个属性可以结合当前日期与OpeningDate属性算到,因此用虚线椭圆标识。

4. 可选属性(optional attribute)

部分属性可能有也可能没有取值,比如说职工奖金。

ER图上这类属性通过在属性名后面添加(0)标识,可参考下面这个职工实体定义:

5. 联系的进一步描述

a. 可以在联系中表明联系中的最大最小基数,如下图所示:

在上面这个例子中,每个学生具体对应到了2-6间教室;同时每间教室对应到了5-40名学生。

b. 也可以在联系中说明联系中的角色。这在一元联系中尤为常见,如下图所示:

每个人只能送给其他人一份礼物,但可以收到0或多份礼物。

6. 关联实体(associated entity)

关联实体示用于描述M:N联系的一个替代方式,用一个内部有菱形的矩形表示,它没有唯一属性也没有部分唯一属性,且通常来说没有任何属性。

如下两个图可以说是等价的:

关联实体基本都是在多元联系的场景下用到,后面的高级话题部分会讲。

7. 弱实体(week entity)

通常来说,实体至少要有一个唯一属性。因为这样才能精确定位到需要处理的记录。但在ER建模这一层,也并非总是如此。

举例来说,假如现在需要为某个连锁酒店管理系统进行ER建模。该公司在全国各地都开有酒店。现在需要记录下各地酒店的房间使用情况。

可以将房间使用相关信息作为酒店的建模一个多值复合属性,如下图所示:

这样做算是对的,但是并没有体现出部分码地位,也就是说各RoomID在各Building的唯一性。同时,很多时候需要将房间实体化与其他实体相联系。比如每个房间对应的清洁工。

引入弱实体机制后,便可顺利解决这两个问题。如下图所示:

两个地方要注意一下,一是弱实体的“主码”称为部分码,码名下方用虚线标记;

再一个就是弱实体必须至少有一个属主实体,它们之间的联系需用双框菱形标识。弱实体部分码同其属主实体候选码的组合可以唯一定位到任何一个弱实体记录。

高级话题

1. 相同实体之间具有多个M:N关系

某人为一个学生选课系统进行ER建模,得到如下结果:

假如需求中有说明:一个同学一门课只能选一次,那这样的设计没问题。可是如果需求中说明,一个同学可以选一门课几次(可能是挂了好几次),这样的设计就有问题了。

对此,正确的做法之一是使用有两个属主实体的弱实体:

或者为每次预定生成一个唯一的id,如下图所示:

2. 三元(或更多)关系

在ER图中,联系一般是将两个实体关联起来,又或者自己关联自己。但是也有些时候,需求方需要同时将多个实体联系起来。这怎么办呢?要知道表示联系的菱形有且只有两个接口。

答曰:使用关联实体。下面这个ER图中,使用了关联实体描述了某工厂的供货商,生产产品,零件三方联系:

但如果现在需求又变更了,需要给关联增加某些属性,比如说供货商每次提供的货物量,这个ER图就不能用了。

因为这样就没办法区分同一家供应商为同一产品提供等数量的同一零件的不同实例了。解决的办法是把关联实体改成一般的实体,并增设一个唯一标识符:

其他说明

1. 本文实体名全大写,属性和关系名则用首字母大写的驼峰法,同时尽量保证所有命名都全局唯一;

2. 用户的更多个性需求应当以注释,标签等方式一并标记在ER图中;

3. 建模工具可使用PowerDesigner,Workbench等。不过笔者在这里推荐一款轻量级的在线数据库建模工具,网址是https://erdplus.com/#;

小结

需求分析,ER建模是贯穿整个数据库生命周期的工作。这部分工作要求开发人员和业务方,数据库的使用者,公司领导等方面协同好需求,并将需求以ER图的模式可视化展现出来。

只有绘制好ER图之后,才能顺利进入到接下来的关系表设计阶段。这也是下篇要讲解的内容。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据库ER图基础概念知识
ER图分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。
全栈程序员站长
2022/08/31
5K0
数据库ER图基础概念知识
什么是ER图?数据库ER图基础概念整理
模型就是对现实世界特征的模拟和抽象,数据模型是对现实世界数据特征的抽象。对于具体的模型人们并不陌生,如航模飞机、地图和建筑设计沙盘等都是具体的模型。最常用的数据模型分为概念数据模型和基本数据模型。
全栈程序员站长
2022/08/31
12.2K0
什么是ER图?数据库ER图基础概念整理
【数据库设计和SQL基础语法】--数据库设计基础--数据建模与ER图
数据模型是对现实世界中事物及其之间关系的一种抽象表示。它提供了描述数据结构、数据操作、数据约束等的方式,是数据库设计的基础。数据模型帮助我们理解数据之间的关系,提供了一种规范化的方式来组织和存储数据。
喵叔
2023/11/22
5420
测试开发之路--需求分析及ER图(一)
1 需求背景及由来由开发提出的需求 最近公司开发向我们提了一个需求,要求我们在mock挡板时支持加解密和响应延时功能,但是我们现在用的easy-mock这个工具本身并不支持加解密功能,思来想去,那不得
用户9913368
2022/08/13
1.3K0
测试开发之路--需求分析及ER图(一)
梦回大学?数据库 E-R 模型设计
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
Java3y
2021/04/07
1.6K0
梦回大学?数据库 E-R 模型设计
第2篇:数据库关系建模
第二篇:数据库关系建模 前言 ER建模环节完成后,需求就被描述成了ER图。之后,便可根据这个ER图设计相应的关系表了。 但从ER图到具体关系表的建立还需要经过两个步骤:1. 逻辑模型设计 2. 物理模型设计。其中前者将ER图映射为逻辑意义上的关系表,后者则映射为物理意义上的关系表。逻辑意义上的关系表可以理解为单纯意义上的关系表,它不涉及到表中字段数据类型,索引信息,触发器等等细节信息。 本文将详细介绍前者。确切来说,也就是ER模型到逻辑关系表的映射是如何完成的。 基本概念 在开始进行ER模型到逻辑关系表的
Spark学习技巧
2018/03/20
1.7K0
第2篇:数据库关系建模
第11章_数据库的设计规范
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
6170
第11章_数据库的设计规范
ER 模型背后的建模哲学
将具体的业务场景数字化,首先需要对场景进行抽象和设计。业务场景中的概念及其联系,落到硬盘上就是数据库中的一张张表,加载到内存中便是编程语言的一个个类。因此,对具体场景进行建模时,最重要的便是数据库表的设计和软件类图的设计,而他俩又基本上是一一对应的。
木鸟杂记
2023/09/17
3580
ER 模型背后的建模哲学
数据库E-R模型关系图
早在专科阶段学习SqlServers时就学习过数据库E-R图,但是并没有真正的去了解这个东西,只是知道了大致的概念而已,借这次Oracle课程设计的机会,重新学习E-R图。 什么是E-R图 E-R图即实体-联系图(Entity Relationship Diagram),是指提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。E-R方法:是“实体-联系方法”(Entity-Relationship Approach)的简称。它是描述现实世界概念结构模型的有效方法。 E-R图的基本要素 通
李郑
2018/03/01
3.8K0
数据库E-R模型关系图
er图的表示方法_立体图形简笔画
什么是实体?实体是客观存在的事物。例如用户、商品、订单、供应商等。说直白点!!!你数据库的表名就可以做一个实体对象。一个系统是由很多个实体对象构成的,然后它们之间存在一定的关系和属性。
全栈程序员站长
2022/11/08
1.7K0
er图的表示方法_立体图形简笔画
使用PowerDesigner画ER图详细教程
原文地址已经不可考。。。一、概念数据模型概述数据模型是现实世界中数据特征的抽象。数据模型应该满足三个数据库
Java架构师必看
2021/03/22
8.3K0
数据库设计 ER图
ER图,简单来说,E是实体,实体有一组属性;R是关系。找到系统中的实体以及实体关系就可以绘制出ER图了。
全栈程序员站长
2022/08/31
4.1K0
数据库设计 ER图
er图和uml图_数据库表结构er图
ER图:实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型
全栈程序员站长
2022/09/30
2.8K0
er图和uml图_数据库表结构er图
【愚公系列】软考高级-架构设计师 054-数据库模型
数据库模型是一种抽象方法,用于定义和描述数据库的结构和数据组织方式、数据之间的关系以及它们如何存储和检索。数据库模型的选择通常取决于需要支持的应用程序的复杂性以及性能需求。
愚公搬代码
2024/07/01
1800
数据库建模工具有哪些(uml类图工具)
Sybase PowerDesigner – 一个高端数据建模工具。你可以下载一个45天试用版。ERWin – 一个高端数据建模工具。可下载试用版。Rational Rose Enterprise – 一个高端UML工具,恰如其分的数据库建模支持。可下载试用版。Visio Professional – 一个价格低廉的绘图工具,可用来生成数据模型、UML图等。企业版还支持针对各种数据库的双向工程能力。你可以订购60天试用版的CD。Dezign – 一个价格极其低廉的ERD建模工具。你可以下载一个有限制的试用版本。ERD Tool List – 一个关于各种数据库和UML建模工具的链接和资源的清单。 附: PowerDesigner12.0下载地址: http://download.sybase.com/eval/PowerDesigner/powerdesigner12_eval.exe
全栈程序员站长
2022/07/31
3.7K0
数据库建模工具有哪些(uml类图工具)
一文彻底解析数据库设计思路
一般而言, 一个实体被映射到一张关系表中, 代表一组对象的集合; 表中的每一行被称为一个实体发生(Entity Occurrence)或实体实例(Entity Instance), 代表一个特定对象。
苏州程序大白
2021/11/29
1.2K0
一文彻底解析数据库设计思路
数据库:实体关系图(ER图)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152022.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
11K0
数据库:实体关系图(ER图)「建议收藏」
数据库设计
举个例子: 按上面出现过的图, Students(sid, Iname, fname, midiaitia)
Rikka
2022/01/19
3.3K0
数据库设计
数据库设计
数据模型(Data Model)是数据特征的抽象,包括数据的结构部分、数据的操作部分和数据的约束条件。
Gujiu
2023/10/19
2810
软件设计师之综合技能(一)
E-R图也称实体-联系图(Entity Relationship Diagram),主要包含三种成分:
muntainyang
2020/10/23
6720
软件设计师之综合技能(一)
相关推荐
数据库ER图基础概念知识
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档