数据仓库笔记2

第2章 数据库需求与ER建模

2.1 引言

确定数据库需求(database requirement)并创建能将这些需求可视化的概念数据库模型,这是开发数据库过程的第一步,也是最关键的步骤。

数据库需求是一系列表述,这些表述指明了该数据库数据及元数据的细节和约束。

实体-联系建模(entity-relationship modeling)是一种广泛使用的概念数据库建模方法,这种方法可以对收集到的需求进行构建和组织,同时以图形的方式将需求展示出来。

2.2 ER建模基本构件

ER建模后得到的ER图是整个数据库的蓝图。实体(entity)和联系(relationship)是ER图的两个基本构件。

2.3 实体

实体是ER图的基本组件,用于描述数据库所记录的内容。实体可以表示现实世界中的众多概念,比如人、地点、对象、事件、项目等。例如,一个零售公司的ER图可能包括顾客(customer)、商店(Store)、产品(product)和交易额(Sales Transaction)四个实体。

ER图用矩形代表实体,实体名写在矩形里面,同一个ER图中的不同实体应该有不同名字。

2.4 属性(唯一和非唯一)

ER图中每个实体都有属性,实体的一个属性描述该实体的一种特征。由于实体表示的是数据库所记录内容的组件,因而实体属性表示每个实例需要记录的细节。例如:对实体customer可以记录以下属性:编号(CustID)、姓名(Name)、生日(CustBDate)、性别(CustGender)。唯一属性(unique attribute)是指可以唯一标识实体实例的属性。通常来说一个实体至少要有一个唯一属性。如图2-2所示,ER图中实体的唯一属性都带有下划线。该图所示的数据库需求声明,每个顾客的编号必须是唯一,但两个或多个顾客的生日、姓名或性别则可以相同。
一个带属性的实体

2.5 联系

ER图中每个实体必须通过联系至少与一个其他实体相关联。

基数约束
ER图中,在实体与联系的连线上往往写有一些符号,这些符号就是基数约束(cardinality constraint)。基数约束用于表示该实体可以有多少实例与另一实体的实例存在联系。而表示基数约束的符号则常常写于实体和联系之间靠近实体一端的连线上。
两个实体间的联系
每个基数约束包含以下两个部分:
最大基数(maximum cardinality)——靠近实体一端的基数约束部分。
最小基数/参与(minximum cardinalith/participation)——远离实体一端的基数约束部分。最大基数可以是一个或多个。
最小基数可以是可选的或者是强制的。
四种可能的基数约束以下是图2-3中ER图基本需求:

  • 数据库将记录职员(employee)和部门(department)信息。
  • 对每个职员记录其姓名及唯一职员编号(employeeID)
  • 对每个部门记录其唯一部门编号(departmentID)和位置。
  • 每个职员必须且只能为一个部门作报告。一个部门可以有许多职员为其报告,但也可以没有任何职员。
    ReportsTo联系的几种可能版本

版本A:

  • 每个职员必须且只能为一个部门作报告。一个部门可能同时有多个职员作报告,也可能没有。

版本B:

  • 一个职员可以为一个或者不为任何部门作报告。一个部门可以同时有多个职员作报告,也可能没有任何职员。

版本C:

  • 每个职员必须且只能为一个部门作报告。一个部门必须有至少一个职员作报告,也可以同时有多个职员。

版本D:

  • 一个职员可以为一个或者不为任何部门作报告。一个部门必须有至少一个职员作报告,也可以同时有多个职员。

2.6 联系类型(最大基数侧)

联系两侧的最大基数约束可为一个或者多个。因此,若不考虑最小基数而仅考虑最大基数,则联系共有以下几种情况:

  • 一对一联系(1 :1)
  • 一对多联系(1 :M)
  • 多对多联系(M :N)
    联系的三种类型在这里插入图片描述

2.7 联系和联系实例

每个实体都有自己的实例,联系也有自己的实例。图2-10给出了一个联系及其实例的例子。
在这里插入图片描述
如图2-10所示,当一个实体的实例通过联系与另一个实体的实例相关联时,一个联系实例就产生了。就像实体和实体实例的情况一样,联系本身会被画进ER图,联系实例则不需要表示在ER图中,但会被记录到根据该ER图所创建的数据库中。

2.8 联系属性

在许多情况下,多对多联系有自己的属性,这些属性就是联系属性(relationship attributes)。图2-11给出了一个例子,该ER图的需求如下:

  • 数据库将记录学生(students)和校园组织(campus organizations)信息。
  • 每个学生记录其唯一学号(student ID)、姓名(name)以及性别(gender).
  • 对每个校园组织记录其唯一组织编号(organization ID)和位置(location)。
  • 数据库中每个学生必须至少属于一个校园组织,也可以同时属于多个组织。
  • 数据库中每个校园组织至少有一个学生加入其中,也可以同时拥有多个学生。
  • 对属于某个校园组织的每个具体的学生实例,记录该学生在该校园组织中的智能(function)(如主席、副主席、会计、成员等)。
    在这里插入图片描述

接下来讨论1 :1联系与1 :M联系是否也可以拥有属性。图2-12给出了两个细微差别的ER图,这两个图需求如下:

  • 数据库记录学生(student)和学院(college)信息。
  • 对每个学生记录其姓名和唯一学号(student ID)。
  • 对每个学院记录其唯一名称(name)和位置(location)。
  • 每个学生必须且只能加入一个学院。
  • 每个学院有多个学生。
  • 对每个学生记录其注册进入学院的日期。

一般来讲,联系属性可以转化为在该联系中最大基数为1的实体属性。因此,1 :M联系或1 : 1联系的属性都不是必要的。相反,对一些M : N联系来说,属性是必要的。
在这里插入图片描述

2.9 实例:数据库需求集及其ER图

ZAGI 零售公司的销售部门准备创建一个数据库来记录销售过程的细节。在访问公司并学习了公司文件以后,数据库团队抽取如下需求。

  • 对每个在售产品(product):产品号(product ID)(唯一)、产品名称(product name)、价格(price);
  • 对每个种类(category):种类号(category ID)(唯一)、种类名称(category name);
  • 对每个自动售货机(vendor):售货机号(customer ID)(唯一)、售货机名称(vendor name);
  • 对每位顾客(customer):顾客号(customer ID)(唯一)、姓名(name)
  • 对每个商店(store):商店号(store ID)(唯一)、邮政编码(zip code);
  • 对每个区域(region):区域号(region ID)(唯一)、区域名称(region name);
  • 对每项销售交易(sales transaction):交易号(transaction ID)(唯一)、交易时间(date of transaction).
  • 每个产品必须且只能由一个售货机供应;
  • 每个售货机可以包含一个或多个产品。
  • 每个产品必须且只能属于一个种类;
  • 每个种类可以包含一个或多个产品。
  • 每个商店必须且只能位于一个区域;
  • 每个区域可以包含一个或多个商店。
  • 每项销售交易只能出现在一个商店中;
  • 每个商店可以有一项或多项销售交易发生。
  • 每项销售交易必须且只能跟一位顾客相关;
  • 每位顾客可以与一项或多项销售交易相关。
  • 每个产品可以通过一项或多项销售交易售出;
  • 每项销售交易可以包含一个或多个产品。
  • 对于每个通过销售交易售出的产品实例,记录其售出的数量。

下面列出了几个相应问题的例子:

  • 对每一位顾客,你最想记录什么信息?(顾客号、姓名及邮政编码)
  • 每位顾客的顾客号是否唯一?(是滴)
  • 每位顾客的姓名是否唯一?(no)
  • 一个产品属于一个种类还是多个?(一个)
  • 一个产品是否只能来自一个售货机?(是滴)
  • 是否曾经有过某售货机不提供任何产品的情况?(no)
  • 是否需要记录那些到目前为止没有买过任何商品的顾客(那些没有参与任何销售交易的顾客)?(不需要)
    在这里插入图片描述

2.10 复合属性

复合属性(composite attribute)是若干属性的组合。复合属性用于表示由若干单个属性组成的属性集合拥有新含义的情况。

图2-15给出了另一个复合属性的例子。实体STORE共有6个属性,每个属性都有自己的意义。若将属性街道(Street)、编号(StreetNumber)、城市(City)、州(State)、邮编(Zip)放在一起考虑,则可得到一个新的含义:商店地址(Store Address)。

图2-16给出了包含7个属性的boutiqueclient实体的例子。裁缝店记录了每位顾客的尺寸信息及顾客的名字(firstname)。同时,该裁缝店还记录了顾客的5种穿衣指数:腿长(inseam)、腰围(waist)、袖长(sleeves)、肩宽(shoulders)以及领围(collar)。这个例子说明一个简单属性可能是多个复合属性的组成部分。腰长及腰围可组成属性裤子尺寸(pantsize),而腰围、肩宽、领围及袖长组组成属性衬衣尺寸(shirtsize).
复合属性共享成分

2.11 复合的唯一属性

复合属性使得实体符合每个实体至少要有一个唯一属性的规则。

复合的唯一属性

2.12 多个唯一属性(候选码)

实体同时拥有多个唯一属性,这里的每个唯一属性就叫做一个候选码(candidate key)。候选的意义在于:这些属性都可作为构建整个数据库时主要区别属性(或称主码)的备选。换言之,这些候选码中的一个会成为表中该实体的主码。一个实体可以同时将常规属性(单个复合属性)或复合属性作为主码。

2.13 多值属性

多值属性(multivalued attribute)用于实体实例的同一属性可以有多个不同取值的情况。多值属性用于哪些属性取值多于一个的实体。例如,某职员可能有两个联系电话,而有些职员可能有多于两个的联系电话,或是少于两个的联系电话。若对每个职员都记录两个联系电话(办公室电话和手机),则不需要使用多值属性,只要分别使用两个单值属性就可以了。

2.14 派生属性

派生属性(derives attribute)是非永久性存于数据库的属性。派生属性的值可以从别的属性值或其他数据派生出来。

2.15 可选属性

对每个实例,实体的大部分属性都有相应的取值,但有的属性也可能没有取值,这些属性就是可选属性(optional attribute)。在可选属性后面加一个带括号的大写字母O来表示可选属性。

2.17 联系中最小基数和最大基数确切值

在某些情况下,联系中的最小基数和最大基数确切值(exact minimum and/or maximum cardinality)是事先知道的。用圆括号起来的一对数表示最小基数和最大基数,括号内的第一个数表示最小基数,第二个数表示最大基数。根据事先知道的最小基数和最大基数的信息,这些数对可以出现在联系的任意一边或者两边。

  • 每名学生最多选择6门课程,也可以不选任何课程。一门课程必须要有至少5名学生,选课人数没有上限。
    在这里插入图片描述

2.18 一元联系和联系的角色

联系的度(degree of a relationship)表示有多少个实体参与到该联系中。两个实体之间的联系叫做二元联系(binary relationship)或者度为2的联系(因为该联系涉及两个实体)。尽管绝大多数业务ER图中的联系都是二元联系,但是也会出现度不为2的联系。度为1的联系也称为一元联系(unary relationship)或者递归联系(recursive relationship),出现在一个实体与它自己相联系的情况中。

在ER图中,联系角色(relationship role)可以表达额外的语义信息。数据建模者可以使用联系角色进一步说明每个实体在联系中的角色。联系角色可以用在任何度的联系中,但联系角色的作用通常体现在一元联系中。
具有角色名的一元联系的例子图2-29中,例A的解释如下:

  • 一个客户可以是推荐者,推荐多个客户。该客户也可以不是推荐者。
  • 一个客户可以是被推荐者,且只能被一个客户推荐。该客户也可以不是被推荐者。

图2-29中,例B的解释如下:

  • 一个雇员可以是指导者,指导多个雇员,也可以不是指导者。
  • 一个雇员可以是被指导者,被多个雇员指导,也可以不是被指导者。

图2-29中,例C的解释如下:

  • 一个人必须是礼物赠送者,且只能向一个人赠送礼物。
  • 一个人必须是礼物接受者,且只能接受一个人的礼物。

2.19 相同实体间的多种联系

ER图中,相同实体之间通过多种联系连接起来的情况是很常见的。
相同实体间的多种联系

  • 一个航运公司要创建一个数据库以记录它的雇员信息和包裹信息。
  • 每个包裹只能由一个雇员分拣。
  • 每个雇员可以分拣多个包裹。
  • 每个包裹只能由一个雇员递送。
  • 每个雇员可以递送多个包裹。

2.20 弱实体

通常情况下,实体至少要有一个唯一属性。在ER图中,弱实体(week entity)用来表示没有唯一属性的实体。弱实体是用来表示没有唯一属性的实体。弱实体是用双框的矩形表示的。在ER图中,弱实体必须和它的属主实体(owner identity)通过标识性联系(identitying relationship)连接起来。该联系是用双框的菱形表示的。
图2-32展示了一个弱实体的例子。该例子基于如下需求:

  • 一个公寓出租公司要创建一个数据库以记录它的建筑物信息和公寓房间信息。
  • 对于每个建筑物,将记录唯一的建筑物ID和该建筑物的层数。
  • 对于每套公寓,将记录公寓编号和公寓内的房间数。
  • 每个建筑物内有多套公寓,每套公寓只能位于一个建筑物内。
  • 在数据库中,多套公寓可以有相同的公寓编号,但在一个建筑物内每套公寓只能有一个唯一的公寓编号。
    在这里插入图片描述

2.21 实体、属性和联系的命名约定

在ER建模的过程中,采取特定的准则来为实体、联系和属性命名是一个很好的做法,使用大学字母来命名实体,使用大写字母和小写字母的组合来命名属性和联系。对于命名实体和属性,一个常见的准则是使用单数名词以使ER图尽量清晰易读。对于命名联系,通常使用动词或动词短语而不是名词。当命名实体、属性和联系时,尽量简洁但又不要太过简洁而使概念模糊不清。ER建模的一条基本规则就是同一个实体内的属性必须有不同的名称。而ER建模中一个良好的规则是使整个ER图中的属性名均不相同。

2.25 各种ER符号体系
如果设计者熟悉某种ER符号体系,那么掌握其他的ER符号体系就会很容易。
图2-42用三种不同的符号体系说明了同样的ER图。
各种ER符号体系的例子图2-42中间的图使用了另一种符号体系。在该符号体系中,属性名和实体名放在一个矩形内,联系用连接实体的虚线表示,联系名嵌入该虚线中。基数约束用括号内的一对数表述,但基数约束是反过来的。解释联系的规则是实体-基数约束-联系-实体。
图2-42底部的图使用UML(Unified Modeling Language)符号体系来表示同样的ER图。该符号体系中实体和联系的表示方法和中间图的标识方法很相似,但基数约束的解释方法和顶部的图是一样的。如果最小基数是可选的,则用两个点分开的数字标识;如果是强制的,则只用一个数字表示。

2.26 扩展的ER模型

扩展的ER模型(enhanced ER,EER)是对ER符号体系的扩充,可以描述标准ER模式之外的概念。

2.28 问题说明:关联实体

关联实体是一种概念:用于描述M :N联系的替代方法之一。关联实体用一个内部有菱形的矩形来表示。关联实体没有唯一或部分唯一的属性,且通常没有任何属性。
图2-49展示了一个M :N联系以及用关联实体替代的形式,在图2-49中,上、下两图是相互等价的,且是根据完全相同的需求来设计的。只要联系AssignedrTo没有属性,则这个相应的关联实体ASSIGNMENT也没有属性。
在这里插入图片描述

2.29 问题说明:三元(及更高阶)联系

一个度为3的联系,包含3个实体,也称为三元联系。
MG公司需求:

  • 我公司有多类产品。
  • 我公司有多家供应商。
  • 我公司多累零部件。
  • 我公司想要哪家供应商提供了哪些零部件给哪类产品。
  • 每类产品包含一个或多个零部件,每一零部件有一家或多家供应商。
  • 每一家供应商可以提供多种零部件给多累产品,但是也可不提供任何零部件给任何产品。
  • 每一类零部件可以被一家或多家供应商提供一类或多累产品。

在这里插入图片描述

总结

表2-1总结了基本ER模型概念。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

复习题

Q2.1 ER建模的目的是什么?
ER建模是一种广泛使用的概念数据库建模方法,这种方法可以对收集到的需求进行构建和组织,同时以图形的方式将需求展示出来。

Q2.2 ER模型的基础架构是什么?
ER模型的基础架构是实体和联系。

Q2.3 唯一属性是什么?
唯一属性是指可以唯一标识实体实例的属性。

Q2.4 基数限制的定义是什么?
基数约束就是在ER图中,实体与联系的连线上写的一些符号。

Q2.5 四种可能的基数限制是什么?
强制的多个 可选的多个 强制的一个 可选的一个

Q2.6 三种基数的类型是什么(最大基数侧)?
一对一联系 一对多联系 多对多联系

Q2.7 复合属性是什么?
复合属性是若干属性的组合。

Q2.8 候选码是什么?
给出的实体同时拥有多个唯一属性,这里的每个唯一属性就叫做一个候选码。

Q2.9 多值属性是什么?
多值属性用于实体实例的同一属性可以有多个不同取值的情况。

Q2.10 派生属性是什么?
派生属性是非永久存在于数据库的属性。

Q2.11 可选属性是什么?
可选属性就是在每个实例,实体的大部分属性都有相应的取值,但有的属性也可能没有取值。

Q2.12 最小基数和最大基数确切值限制在联系里是如何定义的?
用圆括号括起来的一对数表示最小基数和最大基数,括号内的第一个数表示最小基数,第二个数表示最大基数。

Q2.13 二元联系是什么?
两个实体之间的联系叫做二元联系。

Q2.14 一元联系是什么?
一个实体与它自己相关联的情况就叫做一元联系。

Q2.15 弱实体是什么?
弱实体是用来表示没有唯一属性的实体。

Q2.16 关联实体是什么?
关联实体是一种概念,是用于描述M :N联系的替代方式之一。

Q2.17 三元联系是什么?
一个度为3的联系,包含3个实体。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值