天天看点

《数据库原理与应用(第3版)》——2.2 概念层数据模型

本节书摘来自华章出版社《数据库原理与应用(第3版)》一 书中的第2章,第2.2节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

从图2-1可以看出,概念层数据模型实际上是现实世界到机器世界的一个中间层,机器世界实现的最终目的是为了反映和描述现实世界。本节介绍概念层数据模型的基本概念及基本构建方法。

概念层数据模型是指抽象现实系统中有应用价值的元素及其关联关系,反映现实系统中有应用价值的信息结构,并且不依赖于数据的组织层数据模型。

概念层数据模型用于对信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的工具,也是数据库设计人员和业务领域的用户之间进行交流的工具,因此,该模型一方面应该具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识;另一方面还应该简单、清晰和易于被用户理解。因为概念模型设计的正确与否,即所设计的概念模型是否合理、是否正确地表达了现实世界的业务情况,是由业务人员来判定的。

概念层数据模型是面向用户、面向现实世界的数据模型,它与具体的dbms无关。采用概念层数据模型,设计人员可以在数据库设计的开始把主要精力放在了解现实世界上,而把涉及dbms的一些技术性问题推迟到后面去考虑。

常用的概念层数据模型有实体-联系(entity-relationship,e-r)模型、语义对象模型。本书只介绍实体-联系模型,这也是最常用的一种模型。

如果直接将现实世界数据按某种具体的组织模型进行组织,必须同时考虑很多因素,设计工作也比较复杂,并且效果并不一定理想,因此需要一种方法能够对现实世界的信息结构进行描述。事实上这方面已经有了一些方法,我们要介绍的是p.p.s.chen于1976年提出的实体-联系方法,即通常所说的e-r方法。这种方法由于简单、实用,因此得到了广泛的应用,也是目前描述信息结构最常用的方法。

实体-联系方法使用的工具称为e-r图,它所描述的现实世界的信息结构称为企业模式(enterprise schema),也把这种描述结果称为e-r模型。

在实体-联系模型中主要涉及三方面内容:实体、属性和联系。

(1)实体

实体是具有公共性质并可相互区分的现实世界对象的集合,或者说是具有相同结构的对象的集合。实体是具体的,如职工、学生、教师、课程都是实体。

在e-r图中用矩形框表示具体的实体,把实体名写在框内,如图2-2a中的“经理”和“部门”实体。

实体中每个具体的记录值(一行数据),比如学生实体中的每个具体的学生,我们称之为实体的一个实例。(注意,有些书也将实体称为实体集或实体类型,而将每行具体的记录称为实体。)

(2)属性

每个实体都具有一定的特征或性质,这样我们才能根据实体的特征来区分一个个实例。属性就是描述实体或者联系的性质或特征的数据项,属于一个实体的所有实例都具有相同的性质。在e-r模型中,这些性质或特征就是属性。比如学生的学号、姓名、性别等都是学生实体具有的特征,这些特征就构成了学生实体的属性。实体应具有多少个属性是由用户对信息的需求决定的。例如,假设用户还需要学生的出生日期信息,则可以在学生实体中加一个“出生日期”属性。

在实体的属性中,将能够唯一标识实体的一个属性或最小的一组属性(称为属性集或属性组)称为实体的标识属性,这个属性或属性组也称为实体的键。例如,“学号”就是学生实体的键。

属性在e-r图中用圆角矩形表示,在圆角矩形框内写上属性的名字,并用连线将属性框与它所描述的实体联系起来,如图2-2c所示。

《数据库原理与应用(第3版)》——2.2 概念层数据模型

(3)联系

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界反映为实体内部的联系和实体之间的联系。实体内部的联系通常是指一个实体内部属性之间的联系,实体之间的联系通常是指不同实体属性之间的联系。比如在“职工”实体中,假设有职工号、职工姓名、所在部门和部门经理号等属性,其中“部门经理号”描述的是这个职工所在部门的经理的编号。一般来说,部门经理也属于单位的职工,而且通常与职工采用的是同一套职工编码方式,因此“部门经理号”与“职工号”之间有一种关联的关系,即“部门经理号”的取值在“职工号”取值范围内。这就是实体内部的联系。而“学生”和“系”之间就是实体之间的联系,“学生”是一个实体,假设该实体中有学号、姓名、性别、所在系等属性,“系”也是一个实体,假设该实体中包含系名、系联系电话,系办公地点等属性,则“学生”实体中的“所在系”与“系”实体中的“系名”之间存在一种关联关系,即“学生”实体中“所在系”属性的取值范围必须在“系”实体中“系名”属性的取值范围内,因为不可能招收不在学校已有系范围内的学生。因此像“系”和“学生”这种关联到两个不同实体的联系就是实体之间的联系。通常情况下我们遇到的联系大多都是实体之间的联系。

联系是数据之间的关联关系,是客观存在的应用语义链。在e-r图中联系用菱形框表示,框内写上联系名,并用连线将联系框与它所关联的实体连接起来,如图2-2c中的“选课”联系。

联系也可以有自己的属性,比如图2-2c所示的“选课”联系中有“成绩”属性。

两个实体之间的联系通常有如下三种类型。

1)一对一联系(1∶1)。如果实体a中的每个实例在实体b中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体a与实体b具有一对一联系,记作1∶1。

例如,部门和经理(假设一个部门只允许有一个经理,一个人只允许担任一个部门的经理)、系和正系主任(假设一个系只允许有一个正主任,一个人只允许担任一个系的主任)都是一对一的联系,如图2-2a所示。

2)一对多联系(1∶n)。如果实体a中的每个实例在实体b中有n(n≥0)个实例与之关联,而实体b中的每个实例在实体a中最多只有一个实例与之关联,则称实体a与实体b是一对多联系,记作1∶n。

例如,假设一个部门有若干职工,而一个职工只允许在一个部门工作,则部门和职工之间就是一对多联系。又比如,假设一个系有多名教师,而一个教师只允许在一个系工作,则系和教师之间也是一对多联系,如图2-2b所示。

3)多对多联系(m∶n)。如果实体a中的每个实例在实体b中有n(n≥0)个实例与之关联,而实体b中的每个实例在实体a中也有m(m≥0)个实例与之关联,则称实体a与实体b是多对多联系,记为m∶n。

比如学生和课程,一个学生可以选修多门课程,一门课程也可以被多个学生选修,因此学生和课程之间是多对多的联系,如图2-2c所示。

实际上,一对一联系是一对多联系的特例,而一对多联系又是多对多联系的特例。

注意:实体之间联系的种类是与语义直接相关的,也就是由客观实际情况决定的。例如,部门和经理,如果客观情况是一个部门只有一个经理,一个人只担任一个部门的经理,则部门和经理之间是一对一联系。但如果客观情况是一个部门可以有多个经理,而一个人只担任一个部门的经理,则部门和经理之间就是一对多联系。如果客观情况是一个部门可以有多个经理,而且一个人也可以担任多个部门的经理,则部门和经理之间就是多对多联系。

e-r图不仅能描述两个实体之间的联系,而且还能描述两个以上实体之间的联系。比如有顾客、商品、售货员三个实体,并且有语义:每个顾客可以从多个售货员那里购买商品,并且可以购买多种商品;每个售货员可以向多名顾客销售商品,并且可以销售多种商品;每种商品可由多个售货员销售,并且可以销售给多名顾客。描述顾客、商品和售货员之间的关联关系的e-r图如图2-3

所示,这里联系被命名为“销售”。

e-r图被广泛用于数据库设计的概念结构设计阶段。用e-r图表示的数据库概念设计结果非常直观,易于用户理解,而且所设计的e-r图与具体的数据组织方式无关,并且可以被直观地转换为关系数据库中的关系表。