ER图概念

实体联系图,提供了表示实体、属性和联系的方法,用来描述现实世界的概念模型。与计算机系统没有关系,比较接近自然语言,是容易被用户理解的数据描述方式。

ER图什么时候画

在需求分析之后,逻辑模型设计之前。 在需求分析中产生的需求说明书的基础上按照一定的方法抽象成满足应用需求的信息结构

ER图作用

  • 可以当做数据库设计人员与用户之间交流的语言,帮助澄清用户数据需求
  • 数据逻辑模型设计的基础,数据库设计人员可以更好地理解数据库中包含的信息

ER图要求和评价标准

  • 清晰、易懂
  • 完整、精确、无二义

ER图例子

大家先对ER图又一个整体认识。

ER图_ER图

ER图组成

  • 实体
  • 联系
  • 属性
  • 关键字/码

实体

凡是可以相互区别而可以被人们识别的事、物、概念等通通抽象为实体。如产品、促销策略 矩形框表示

ER图_ER图_02

联系

是两个或多个实体间的联系

使用 菱形框标识

ER图_ER图_03

现实世界中诸多形式的联系合一分为三类

  • 存在性联系 如学校 有教师,教室有学生
  • 功能性联系 如 教师讲授课程,仓库管理员管理仓库
  • 事件联系 学生借书 产品发送

联系的度: 指联系涉及到的实体数

  • 单实体联系 涉及单个实体的联系
  • 两实体联系 涉及两个实体的联系
  • 多实体联系 涉及两个以上实体的联系

联系的连接性

  • 一对一联系 实体A的实例只能和实体B的一个实例发生联系,反之实体B的实例也只能和实体A的一个实例发生联系。
  • 一对多或多对多一系 实体A的实例能和实体B的多个实例发生联系,反之,实体B的实例只能和实体A的一个实例发生联系
  • 多对多联系 实体A的实例可以和实体B的多个实例发生联系,反之,实体B的实例也可以和实体A的多个实例发生联系

1端实体直线旁标1,多端实体直线旁标m或n

属性

椭圆表示

ER图_ER图_04

不可分割的数据单位,用于描述实体或联系所具有的特征

  • 单值属性 每一个特定的实体在该属性上取值唯一。如学生的学号,年龄、性别等
  • 多值属性 某个特定的实体在该属性上有多与一个的取值。如学生的学号,联系电话。学生可以有多个联系电话,学号与联系电话之间是一种多值依赖关系,一般多值属性会转化为实体。 使用双椭圆表示

ER图_ER图_05

  • 派生属性 可以从其他相关的属性或实体派生出来的属性值,如学生(学号,姓名,平均成绩),选课(学号,课程号,成绩),则平均成绩可由学生所选课程的总成绩除以课程总数得到。平均成绩就是一种派生属性,成绩为基属性 使用虚椭圆表示

ER图_ER图_06

连接实体和属性

直线表示

ER图_ER图_07

连接实体和联系

直线表示

ER图_ER图_08

连接联系和属性

直线表示

ER图_ER图_09

关键字/码

实体中能够唯一区分每一实例的属性或属性组合。 如 学号是学生的关键字/码 属性下面下划线表示

ER图_ER图_10

ER图扩展

###弱实体 依赖其它实体的实体,依赖实体不存在时弱实体也不会存在,弱实体没有一个关键字能唯一区分实体的实例。 如 贷款(贷款号,金额)和还款(还款序号,还款日期,金额),还款序号不足以标识唯一的还款实例贷款不存在,还款也不存在还款是一个弱实体集。 弱实体的主键由依赖实体主键和分辨符构成

使用双边矩形框标识

ER图_ER图_11

分辨符

弱实体区分各个实体的属性,如贷款(贷款号,金额)和还款(还款序号,还款日期,金额)中还款序号。用下划虚线表示

ER图_ER图_12

弱联系

实体和弱实体之间的联系扯称为弱联系,也可以叫标识性联系 双边框菱形标识

ER图_ER图_13

连接弱联系和弱实体

双实线

ER图_ER图_14

特殊化

实体中某些子集区别于实体内其它实体的特性,可以根据这些差异特性进行分组,分组的过程称为特殊化。 父类特殊出子类

特殊化使用ISA三角形表示,表示高层实体和底层实体之间的父类-子类联系

ER图_ER图_15

如银行提供两类账户,支票账户 和储蓄账户,账户有账号和余额属性。储蓄账户有利率,支票账户有透支额。

ER图_ER图_16

概括

各个实体根据共有性质,合成一个较高层的实体。

  • 特殊化和概括是个互逆的过程,在ER图表示方法相同
  • 特殊化强调实体集内不同实体的差异,概括强调不同实体集之间的相似性
  • 数据库设计的不同方法,自顶向、逐步求精下和自底向上、逐步合成

属性继承

高层实体的属性被低层自动继承 底层实体的特有属性仅适用特定低层实体

聚集

按照定义联系是指实体之间的关系,但是联系之间也有联系,与联系的概念有矛盾,引入聚集。将联系及联系的实体作为一个高层实体来对待,高层实体即为聚集。将高层实体当做一般实体和其它实体一起建立联系 如实体A和实体B以及它的联系可被看成另一实体C,与实体D产生联系

ER图_ER图_17

例:职工参加项目,并在参加项目时使用机器 表达方式1 此种表达方式并不清晰易懂。职工参加项目必须要使用机器,事实上不是。 关系的工时属性和职工参加项目有关,但是和使用机器无关

ER图_ER图_18

ER图_ER图_19

##一些问题

某个概念用属性表示还是使用实体

例:员工和联系电话的关系,联系电话作为属性还是实体表示更为合适。如果员工只有一个联系电话,联系电话作为属性没有问题 如果员工有多个联系电话,联系电话作为实体更能反映现实世界情况。 用属性还是实体主要依赖被建模的现实世界事实的结构,以及所讨论的属性的相关语义。

  • 实体又多方面的性质,属性没有
  • 若实体中除了多值属性之外还有其他若干属性,则将该多值属性定义为另一实体

某个概念用实体还是使用联系表示

例:一个银行分支机构给客户进行贷款1)银行和客户作为实体,贷款作为联系

ER图_ER图_20

2)银行和客户、贷款都作为实体

ER图_ER图_21

如果每笔贷款正好为一个客户所有,并且和正好同一家银行联系,那么用联系表示贷款是符合设计要求的。但是这样设计不能方便的表示几个客户共用一笔贷款的情况,不能从ER图上直观的表示出几个客户共用一笔贷款的关系。

用三元联系还是使用二元联系

二元联系

如学生选修课程

三元联系

如 供应商、项目、零件三个实体一个供应商可以供给多个项目多种零件每个项目可以使用多个供应商供应的零件 每种零件可由不同供应商供给

ER图_ER图_22

三元联系的判断 按照语义判断 辅助方法 能被多个二元联系表示,则不是三元联系 存在多个二元联系替换三元联系的方法,但是现在已经没有存在的价值。

什么时候使用聚集

表达联系和联系之间的联系时,为了符合ER图规范,ER图只有实体间有联系,将其中一个联系当做为实体。

怎么画

  • 理解需求,寻找实体
  • 用属性刻画每一个实体 至少要给出重要属性
  • 确定每一个实体的关键字/码
  • 分析实体之间的联系确定联系的属性,确定联系的基数
  • 检查是否覆盖了需求

实例

假定一个部门数据库包含以下信息职工:职工号、姓名、住址 部门:部门名、负责人 产品:产品号、产品名、价格、型号 制造商:制造商编号、制造商名称、地址、联系电话 其中,一个部门拥有多名职工,一个职工只能属于一个部门;一个部门可以销售多种产品,每种产品可由多个部门 来销售;每种产品可由多家制造商来生产,每家制造商又生产多种产品。

转为ER图

ER图_ER图_23

怎么转换为关系模式

实体类型的转换

  • 将每个实体类型转换为一个表
  • 实体的属性即表的字段
  • 实体的关键字/码即为表的主键

二元联系的转换

  • 如果实体间联系是1:1,可以将两个实体中任意一个实体的"关键字属性"和"联系的属性"作为另外实体转换成为的表的字段
  • 如果实体间联系是1:N,则在N端实体转换成的表中加入"1端实体"类型的"关键字属性"和"联系类型属性"作为字段
  • 如果实体间联系是M:N 则将联系也转换成一个表,并加入联系的两边实体"类型的"关键字属性"加上"联系的属性"作为字段,表主键为联系的两边实体关键字的组合

三元联系的转换

  • 如果实体间联系是1:1:1 可以将三个实体中任意一个实体的表中加入另两个实体"关键字属性"和"联系的属性"作为字段
  • 如果实体键联系是1:1:N 可以在N端的转换的表中加入"两个1端实体"类型的"关键字属性"和"联系的属性"作为字段。
  • 如果实体联系是1:N:M 将联系转换成表,在表中加入"1端、N端和M端实体"的"关键字属性"加"上联系的属性"作为字段。主键为三端实体关键字的组合。
  • 如果实体联系是N:M:P将联系转换成表,在表中加入"三端实体"类型的"关键字属性",加上"联系的属性"作为字段,主键为三端实体关键字的组合。

弱实体

  • 弱实体转换成表
  • 弱实体的属性即为表字段
  • 弱实体主键为依赖实体的关键字/码加上弱实体的辨识符组成###概括
  • 高层实体低层实体分别转换成表-高层实体和底层的属性即为表字段-低层实体包含高层实体的关键字/码

聚集

聚集的转换方式同二元、多元联系的转换方式

转为等价的关系模式

职工(职工号,姓名,住址,部门名)部门(部门名,负责人)产品(产品号,产品名,价格,型号)制造商(制造商编号,名称,住址,联系电话) 销售(部门名,产品号) 生产(制造商编号,产品号)

附录

参考资料

一些问题

ER图和数据库表区别语义表达更清晰简单,更容易理解,更适合交流,面向的用户不同数据库表会做一些业务优化,反范式设计但实际上它真正的目的是帮助设计人员和用户进行交流,正确理解数据结构及相互关系。 ER图更灵活,规定更少,更容易理解,容易使用用户的术语来表达数据:便于与用户交流。 概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象