er模型与范式建模 (er模型基本概念)

er模型与范式建模,如何用er模型表示概念模型

接下来几篇文章会围绕「业务建模」这个方向,展开总结一下。讲到业务建模就联想到ER模型,ER建模可以说是B端产品经理必要掌握的技能。

本文会从以下几个点进行基础指引:

  • 什么是ER模型?
  • ER模型有什么作用?
  • ER图的核心部分是什么?
  • 产品经理如何进行ER建模绘制ER图?

➊ 什么是ER模型?

ER模型,全称为实体联系模型、实体关系模型(全称:Entity-Relationship Model)由美籍华人计算机科学家 陈品山 发明,是概念数据模型的高层描述所使用的数据模型或模式图。

ER模型常用于信息系统设计中;比如它们在 概念结构设计阶段 用来描述 信息需求和 /或要 存储在数据库中的信息的类型 。但是数据建模技术可以用来描述特定论域(就是感兴趣的区域)的任何本体(就是对使用的术语和它们的联系的概述和分类)。

在基于数据库的信息系统设计的情况下,在后面的阶段(通常叫做 逻辑设计 ),概念模型要映射到 逻辑模型如关系模型 上;它依次要在物理设计期间映射到物理模型上。注意,有时这两个阶段被一起称为“物理设计”。

在以前的文章中有简单的提过「 概念模型 」,其实就是ER建模的输出产物—— 实体联系模式图 (ERD,全称:Entity Relationship Diagram)。

er模型与范式建模,如何用er模型表示概念模型

汽车美容门店排位系统

产品经理接收到一个新的业务需求后,可以通过ERD进行梳理实体之间、实体与属性之间的关系,从中将整个业务抽象出共性与核心特征;当ERD给到我们的开发人员后,这些实体之间、实体属性之间的关系就演变成数据库的表与字段。有了ERD后对于整个系统的架构与后续扩展都有很大的好处,可以很好的理解与梳理业务。

➋ ER模型有什么作用?

当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,ERD就是用来描述这种需求。

在梳理ERD的过程中,其实我们就是梳理业务,它在这个数据过程中起到的作用:

  • 提升总结归纳的抽象能力 :我们接收需求的时候,会有很多噪声需求,产品经理就需要从中提炼有意义的实体概念,实体属性,从而达到整个业务模式能在系统上运作起来。
  • 提高沟通效率 :当我们输出ERD后,与业务、开发、测试人员沟通时,能很好的表达出我们系统上的实体关系,这就是所谓的 一图胜千言
  • 提高建模合理性,避免掉坑 :在ER建模过程中,提高建模的合理性能让系统运作更良好,避免后续业务变化导致系统又需推到重来的结果,影响业务发展。

➌ ER图的核心部分是什么?

ER图分为 实体 属性 关系 三个核心部分:

  • 实体是 长方形 体现
  • 属性是 椭圆形 体现
  • 关系是 菱形 体现

er模型与范式建模,如何用er模型表示概念模型

门店员工实体关系模型图

ⓐ 实体(Entity)

即数据模型中的数据对象,例如 门店、员工、物品 都可以作为一个数据对象,用长方体来表示,每个实体都有自己的 实体成员 (entity member)或者说 实体对象 (entity instance),例如员工实体里包括张三、李四等, 实体成员(entity member)/ 实体实例(entity instance) 不需要出现在ER图中

ER的实体还会细分:弱实体、复合实体

◆ 弱实体 :一个实体必须依赖于另一个实体存在,那么前者是 弱实体 ,后者是 强实体 ,弱实体必须依赖强实体存在,例如上图的门店实体和员工实体,员工依赖于门店实体而存在,因此 门店是强实体 ,而 员工是弱实体

弱实体和强实体的联系必然只有 1:N 或者 1:1 ,这是由于弱实体完全依赖于强实体,强实体不存在,那么弱实体就不存在,所以弱实体是完全参与联系的,因此弱实体与联系之间的联系也是用的 双线菱形

er模型与范式建模,如何用er模型表示概念模型

强弱实体关系模型

◆ 复合实体 :复合实体也称 联合实体 桥接实体 ,常常用于实现两个或多个实体间的 M:N 联系,它由每个关联实体的主码组成,用 长方体内加一个菱形 来表示。

举个复合实体的例子,还是以汽车美容门店的案例, 车主 施工项目 两个实体是 M:N 的关系,中间有 施工订单 这个实体联系,因此施工订单这个实体是一个复合实体,同时如果车主实体不存在,就没有施工订单实体的存在,因此 对于车主实体来讲施工订单是弱实体 ,同理施工项目实体如果不存在,同样不存在施工订单实体,因此 对施工项目实体而言施工订单是弱实体 ,具体如图:

er模型与范式建模,如何用er模型表示概念模型

车主施工单复合实体示例

我们如何找到业务中的实体?

首先我们要定义的实体,就是最终定义具体业务的关键核心点。而要在业务场景中找到有实际业务意义的实体,在找实体的过程中我们可以用以下思路:

㊀ 利益相关者法 :思考业务本身有哪些 利益相关者 ,这些利益相关者有需要我们 解决什么问题

在B端业务中,经常会涉及到很多利益相关者,而我们可以将一部分利益相关者抽象出一部分实体。

比如,前段时间的文章《一篇长文:总结B端业务调研的问题》,经过调研后,我们可以输出以下利益相关者:

利益相关者

存在什么问题 / 对系统的期望

客服(话务/电销)

1、系统上没有对 客户 下次跟进时间提醒;2、不能清晰知道是哪个 渠道 过来的(抖音、小红书);……

设计师

1、 量房记录 没在系统体现;2、 收款 每次 财务 审核提交都很难查询记录;……

……

……

这样一系列调研下来后,我们可以初步的确认这些实体:员工(客服人员/设计师/财务人员)、客户、渠道、量房记录、收款记录

㊁ 业务流程法 :这个方法可以从 流程中抽象出实体 ,因为业务流程往往体现了 实体与实体之间 的交互过程。

在《流程图——产品⽂档和原型咋弄(二)》有提到业务流程画法,其中我们还是以前面调研的例子绘制一个简单的业务流程图:

er模型与范式建模,如何用er模型表示概念模型

SCRM客户留资实体关系模型图

ⓑ 属性(Attribute)

即数据对象所具有的属性,例如员工具有姓名、工号、职位等属性,用椭圆形表示,属性分为 唯一属性 ( unique attribute)和 非唯一属性 ,唯一属性指的是唯一可用来标识该实体实例或者成员的属性,用 下划线表示 ,一般来讲实体都至少有一个唯一属性。

ER图的属性还细分为 复合属性 多值属性 派生属性 可选属性 ,同时还有用来表示联系的属性,称为 联系属性

◆ 复合属性(composite attribute) :复合属性是指具有多个属性的组合,例如「 姓名 」属性,它可以包含「 姓氏 」属性和「 名字 」属性,如下图:

er模型与范式建模,如何用er模型表示概念模型

复合属性也有唯一属性,例如员工的「 职位 」属性,由于多个「 职位 」都有「 职级 」,所以单单「 职位 」属性是不唯一的,但是和「 职级 」组成的复合属性后则可以匹配成唯一属性。

多值属性(multivalued attribute):一个实体的某个属性可以有多个不同的取值,例如一辆车的「 车型 」属性,这辆车有多个「 车型 」,例如SUV、MPV等,这个「 车型 」就是多值属性, 用双线椭圆表示。

er模型与范式建模,如何用er模型表示概念模型

多值属性

派生属性(derivers attribute):是 非永久性 存于数据库的属性。派生属性的值可以从别的属性值或其他数据(如当前日期)派生出来,用虚线椭圆表示,如下图。

er模型与范式建模,如何用er模型表示概念模型

派生属性(门店的营销活动参与情况)

类似上图「 门店的营销活动参与情况 」中,「 参与人数 」就是一个派生属性,随着车主参加的活动变化,「 参与人数 」属性也会变化,一般来说 派生属性不存在数据库中 ,而是通过相应的公式逻辑查询出来,比如:参与记录、活动下单等。而如果存放在数据库中,那么就需要隔一段时间就进行更新,否则会出现数据不对的情况。

可选属性(optional attribute):并不是所有的属性都必须有值,有些属性的可以没有值,这就是可选属性,在椭圆的文字后用(O)来表示,如下图的地址就是一个可选属性。

er模型与范式建模,如何用er模型表示概念模型

可选属性

联系属性:联系属性用于表示多个实体之间联系所具有的属性,一般来讲M:N的两个实体的联系具有联系属性,在1:1和1:M的实体联系中联系属性并不必要。

er模型与范式建模,如何用er模型表示概念模型

联系属性

比如上图的「 门店 」需要开展「 营销活动 」,那么需要有个「门店开展活动」属性将两个实体联系起来,而这个属性其实是需要「门店id」、「活动id」组合而成的「 开展ID 」,这里类似数据库中的「复合主键」。而这个「开展日期」、「开展成本」都是用于门店开展活动整体情况数据。

ⓒ 关系(Relationship)

用来表现数据对象与数据对象之间的联系,例如「 门店 」的实体和「 员工 」的实体之间有一定的联系,每个「 门店 」都有自己的「 员工 」,这就是一种关系,关系用菱形来表示。

ER图中关联关系有三种:

1对1(1:1) :1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

1对多(1:N) :1对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。

多对多(M:N) :多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少N(N>0)个实体有关系。

对于这三种关联关系,其实上面的图例中都有体现出来。

➍ 产品经理如何进行ER建模绘制ER图?

前面提到ER图分为 实体 (长方形)、 属性 (椭圆形)、 关系 (菱形)三个核心部分,而对于之间的 联系 (直线表示),相关表示符号见下图:

er模型与范式建模,如何用er模型表示概念模型

来源「亿图图示」

其实这里从1976年3月陈品山博士发明ER图后,随着实体关系建模的发展,ER图的画法也出现了变化。比如上面是「亿图图示」这个软件提供的ER图图例。

陈氏符号 ,其实就是我们前面提到的案例:

  • 实体是 长方形 体现;
  • 属性是 椭圆形 体现,如果是唯一键值属性,就在内容文本中加下划线;
  • 关系是 菱形 体现,菱形内注明实体之间的联系情况;
  • 基数就是关系菱形两侧直线内标注关系类型;

er模型与范式建模,如何用er模型表示概念模型

出自processon.com

UML画法

使用UML画ER图,其实只是用UML的符号进行绘制而已,并没有什么特别之处。

实体:还是使用矩形表示。

属性:这个时候我们初期都可以先忽略属性,先把实体与实体之间的关系梳理清楚。

联系:直接使用直线,对比前面的中间有个菱形,这样可能会快捷一些。

er模型与范式建模,如何用er模型表示概念模型

UML画ER图

如果在考虑属性,那么就会到最开始的汽车美容门店排位系统的图。

er模型与范式建模,如何用er模型表示概念模型

◉ 拓展内容

本文章很多内容出自以下书籍(私信回复关键词 008 」可获取):

• 陈品山博士发表的《The Entity-Relationship Model--Toward a Unified View of Data》

• 数据库领域的殿堂级作品《数据库系统概念》

• 亿图图示(https://www.edrawsoft.com/)