购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 概念数据模型

概念数据模型(Conceptual Data Model)简称为概念模型,是一种面向用户、面向客观世界的模型,主要用来描述世界的概念化结构。数据库设计人员在设计的初始阶段,摆脱计算机系统及DBMS具体技术问题,集中精力分析数据以及数据之间的联系等,建立概念数据模型,它与具体的计算机系统及DBMS无关。

概念模型是数据库设计人员和用户之间交流的工具和语言,因此要满足两方面的要求:一是要有较强的语义表达能力,能够方便、直接地表达应用中的各种语义;二是要简单、清晰,便于用户理解。概念模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型等。由于篇幅所限,本章只介绍E-R模型。

2.2.1 E-R模型与E-R图

E-R模型是实体-联系模型(Entity-Relationship Model)的简称,在1976年由美籍华裔计算机科学家陈品山(Peter Chen)发明。它给出了数据库结构中实体及其联系的图形表示,提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。

E-R模型通过E-R图来表示实体及其联系。E-R模型的构成成分是实体型、联系型和属性。在E-R图中,实体型用矩形框表示,联系型用菱形框表示,实体型或联系型的属性用椭圆形框表示。画E-R图的步骤如下:

1)用矩形框画出实体型,用椭圆形框画出其具有的属性,用无向直线把实体型与属性连接起来,并在实体标识符相关属性底下画下划线。

2)重复步骤1),直至画出所有实体型。

3)分析各实体型之间是否存在联系。若实体型之间存在联系,则用菱形框画出联系型,并用无向直线把菱形框与有关实体型连接,在直线上标明联系的类型。如果联系型存在属性,则用椭圆形框画出其具有的属性,并用无向直线把联系型与属性连接起来。

4)重复步骤3),直至所有联系型都画出来。

【例2.1】 以教务管理系统为例,教务管理系统要记录学生选修课程的情况。“学生”实体型具有学号、身份证号、姓名、性别、班级、生日等属性,其中学号、身份证号都可以作为“学生”实体型的实体标识符,选取其一作为实体标识符即可。“课程”实体型具有课程号、课程名、学时、学分等属性,其中课程号可作为实体标识符。在“学生”和“课程”之间存在 M : N 联系,可将该联系型命名为“选修”。由于学生选修课程的行为会产生一个非常重要的信息——成绩,因此,成绩作为“选修”联系型的属性要画出来。最后,可得到如图2.8所示的选课管理E-R图。

图2.8 选课管理E-R图

思考 :在学生选课E-R图中,成绩是否可以作为实体型学生或课程的属性画出来?

2.2.2 E-R模型设计常见问题

为了让读者能更好地掌握E-R模型设计的技巧,本小节将通过若干案例详细说明E-R模型设计的方法和原则。

1.两个不同实体型之间的联系(二元联系)

在E-R模型设计过程中,两个不同实体型之间存在联系是最常见的情况。如前文所述,两个实体型之间的联系分为三种类型:1:1联系、1: N 联系和 M : N 联系。例2.1已举例说明两个实体型之间存在 M : N 联系的情况,下面将举例说明另外两种情况。

【例2.2】 在教务管理系统里,若记录各班班主任的任职情况,每个班只能有一位老师任班主任,每一位老师也只能任一个班的班主任,则“班”与“班主任”之间是1:1联系;班主任管理班有时间期限,“管理”联系型上应加上开始时间和结束时间两个属性,因此,班主任管理班E-R图设计如图2.9所示。

【例2.3】 在教务管理系统里,若要记录学生分班的情况,由于每个班可有多名学生,而每一名学生只能归属于一个班,则“班”与“学生”之间的联系是1: N 联系,因此,学生归属班E-R图设计如图2.10所示。

2.多个不同实体型之间的联系

【例2.4】 在教务管理系统里,要记录学生上课、教师授课的信息,由于同时涉及“学生”“课程”“教师”三个实体型,每名学生可以选择多门课程,每门课程可被多名学生选修,每位教师可以讲授多门课程,每门课程也可被多位教师讲授,则“课程”与“学生”之间的联系、“教师”与“课程”之间的联系都是 M : N 联系。学生选修课程会产生成绩信息,教师授课应记录其上课时间和地点,因此该E-R图设计如图2.11所示。

图2.9 两个实体型之间的1:1联系

图2.10 两个实体型之间的1: N 联系

图2.11 多个实体型之间的二元联系

在上例中,若强调“教师”与“学生”之间也存在联系,则图2.11所示的E-R图可画成多个实体型之间的多元联系结构,如图2.12所示。在图2.12中,“课程”“学生”和“教师”实体型两两之间存在多对多联系。

图2.12 多个实体型之间的多元联系

思考 :成绩属性值的个数等于课程门数乘以学生个数,在这种情况下,图2.11和图2.12的E-R图设计中,哪一种设计的存储效率更高?

3.两个不同实体型之间的多种联系

两个不同实体型之间可能会存在多种不同类型的联系。

【例2.5】 学生团队开展学生项目,团队中有且只能有一名学生作为项目负责人,每名学生最多只能参加一个项目,则“项目”与“项目负责人”之间的联系是1:1联系,“项目”与“其他团队成员”之间的联系是1: N 联系,“项目负责人”与“其他团队成员”都属于“学生”实体型,因此该E-R图设计如图2.13所示。

图2.13 两个不同实体型之间的多种联系

4.同一实体型内各实体之间的联系

【例2.6】 在上例中,一个项目团队里,一位项目负责人管理着多位项目参与人,“项目负责人”与“项目参与人”之间的联系是1: N 联系。“项目负责人”与“项目参与人”都属于“学生”实体型,因此,在“学生”实体型内各实体之间的联系如图2.14所示。

图2.14 同一实体型内各实体之间的1: N 联系

【例2.7】 在大学的专业课程体系中,一些课程是另外一些课程的基础,如“大学计算机基础”是“高级语言程序设计”“数据库技术及应用”等课程的基础,“数据库技术及应用”“计算机网络”等课程又是“软件工程”课程的基础,因此,“课程”实体型内各实体之间存在的联系如图2.15所示。

图2.15 同一实体型内各实体之间的 M : N 联系

5.弱实体问题

在现实世界中,有时某些实体对另一些实体有很强的依赖关系,即一个实体的存在必须以另一实体的存在为前提。我们把依赖于另一实体而存在的实体称为 弱实体 ,不依赖于任何实体而存在的实体称为 强实体 ,它们之间的联系称为 强联系 。反之,如果一个实体与另一个实体之间不存在依赖关系,它们之间的联系称为 弱联系

在E-R模型中,使用双线矩形框表示弱实体,使用双线菱形框表示强联系。要特别提醒的是:强实体与弱实体之间的联系只能是1:1联系或1: N 联系。弱实体参与联系时应该是“完全参与”,因此弱实体与强联系间的连线也画成双线边。

【例2.8】 在人事管理系统中,职工亲属的信息就是以职工的存在为前提的,“亲属”实体是弱实体,“亲属”与“职工”的联系是一种依赖联系,职工具有亲属E-R图设计如图2.16所示。

图2.16 存在弱实体的E-R图

6.泛化:超类实体与子类实体

原始的E-R模型已经可以描述基本的数据和联系,泛化概念的引入能方便多个概念模型的集成。泛化关系是指抽取多个实体型的共同属性作为超类实体型。泛化层次关系中的低层次实体型为子类实体型,对超类实体型中的属性进行了继承与添加,子类实体型特殊化了超类实体型。E-R模型中的泛化与面向对象编程中的继承概念相似,但其标记法(构图方式)有些差异。

【例2.9】 大学里的人员基本上可以分为两大类:教师和学生。“人员”为其他实体的超类实体型,包含共同属性,“教师”和“学生”是“人员”的子类实体型,子类实体型可以继承超类实体型的所有属性,还能包含自身特有的属性。如“人员”的属性包括身份证号、姓名、性别、生日等,身份证号为实体标识符。“教师”和“学生”都是“人员”的子类实体型,“教师”的属性可以包括身份证号、工号、姓名、性别、生日、学院等,身份证号或工号可为实体标识符。“学生”的属性可以包括身份证号、学号、姓名、性别、生日、班级等,身份证号或学号可为实体标识符。子类实体型和超类实体型可采用相同的实体标识符。“人员”与“教师”“学生”等的泛化关系如图2.17所示。

泛化可以表达子类型的两种重要约束:重叠性约束(Disjointness)与完备性约束(Completeness)。 重叠性约束 表示各个子类实体型之间是否排他。若为排他的则用字母“d”标识,否则用“o”标识(o表示Overlap)。图2.17中各子类实体型概念上是排他的。

对商品销售系统中的“员工”“客户”实体型进行泛化,抽象出超类实体型——“个人”。由于部分员工也可能是客户,因此子类实体型“员工”与“客户”之间是有重叠部分的,得到的泛化关系如图2.18所示。

图2.17 “人员”与“教师”“学生”等的泛化关系

图2.18 “个人”与“员工”“客户”等的泛化关系

完备性约束 表示所有子类实体型在当前系统中能否完全覆盖超类实体型。若能完全覆盖,则在超类实体型与圆圈之间用双线标识(可以把双线理解为等号)。在图2.18中子类实体型“员工”与“客户”能完全覆盖超类实体型“个人”。

7.多值属性问题

只能有一个取值的属性称为 单值属性 ,如性别、生日等。能同时有多个取值的属性称为 多值属性 ,例如电话号码。在画E-R图时,需要对多值属性进行处理,处理方法有两种:①将原来的多值属性用几个新的单值属性来表示;②将原来的多值属性用一个新的实体型表示,该实体型为弱实体。

【例2.10】 “教师”实体型具有工号和电话号码两个属性。由于电话号码可以是办公电话或家庭电话,是多值属性,因此需要处理。如图2.19所示,方法一是用办公电话和家庭电话这两个属性代替电话号码这个属性;方法二是把“电话”作为一个新的实体型单独画出,办公电话和家庭电话作为“电话”实体型的两个属性画出。“电话”是弱实体,依赖于“教师”实体型而存在,“电话”与“教师”之间存在强联系。

图2.19 多值属性问题处理方法

值得一提的是,可以进一步划分出属性的属性称为 复合属性 ,例如地址可以进一步划分为省份、城市、街道、邮编等。不能再划分的属性称为 简单属性 ,例如年龄、性别、婚姻状况等。单值属性和多值属性相对,复合属性和简单属性相对,要注意区分。

思考 :单值属性一定就是简单属性吗?

8.派生属性问题

【例2.11】 在图2.20中,“教师”实体型中的“年龄”属性的值可根据“生日”属性计算或推导出来,我们把能由其他属性计算或推导出值的属性称为 派生属性 。派生属性是不需要物理存储在数据库中的,因此,在进行E-R图设计时,要避免派生属性的出现。

图2.20 “教师”实体型中的派生属性

思考 :在图2.20中,“生日”和“年龄”两个属性相比,记录哪一个更好?

9.用实体型还是用联系型

在抽象表示客观事物及事物之间的联系时,既可以使用实体型,也可以使用联系型。

【例2.12】 客户向银行贷款,每位客户可向多家银行贷款,每家银行可向多位客户提供贷款,因此,银行与客户之间的贷款信息可以使用如图2.21所示的E-R图表示。假设银行提供贷款有属性A,客户申请贷款有属性B。在图2.21 a中“贷款”被当作联系型来处理,而在图2.21 b中“贷款”被当作实体型来处理。若属性A和B被访问的频率相差很大,采用图2.21 b的E-R图结构进行设计,把“贷款”作为实体型来处理,将申请贷款和提供贷款的属性分开,这样会更节省空间,提高访问效率。

图2.21 客户向银行贷款E-R图

10.联系型属性的布局问题

在设计E-R图时,联系型属性的布局与联系型的类型相关。根据联系型类型的不同,联系型属性的布局有所区别。

若联系型为1:1联系时,联系型的属性既可以画在联系型上,也可画在参与该联系的任意一个实体型中,作为实体型的属性画出。如图2.9所示的班主任管理班的E-R图,可以画成如图2.22 a或图2.22b所示。

图2.22 1:1联系的属性布局

若联系型为1: N 联系时,联系型的属性既可以画在联系型上,也可画在参与该联系的 N 方对应的实体型上,作为实体型的属性画出。

【例2.13】 学校聘任教师,每一所学校可聘任多位教师,每位教师只能在某一所学校任职,则“学校”与“教师”的聘任联系是1: N 联系。在设计E-R图时,聘任产生的“薪酬”属性既可以作为“聘任”联系型的属性画出(见图2.23a),也可以作为“教师”实体型的属性画出(见图2.23b)。

若联系型为 M : N 联系时,联系型的属性只能画在联系型上。

思考 :在图2.8学生选课E-R图中,“成绩”属性可以作为“学生”实体型或“课程”实体型的属性画出吗?为什么?

图2.23 1: N 联系的属性布局

2.2.3 E-R模型的优点与缺陷

E-R模型的目标是捕获现实世界的数据需求,并以简单、易理解的方式表现出来。E-R图将概念简单化、形式化地表示出来,是非常好用的数据库设计工具,常被用于项目组内部交流或与用户讨论系统数据需求。

然而,E-R模型也不是完美的:它能表示的数据约束很有限,如“成绩的取值必须在[0,100]这个区间范围”这样的约束就不能在E-R图上体现出来;它表示实体内部属性之间关系的能力有限;它对信息内容的表示不全面;它没有对应的数据操作语言。

尽管如此,由于E-R模型能够很好地与关系数据模型集成,在关系数据库占市场主导地位的今天,E-R模型仍然是一个非常受欢迎的概念模型层面的建模工具。 QiYm7gllerqci7jbDJ+EVC70vKXthaCXEblHvJNuKPH5tRwJLg8vJl5Tx83hSYBA

点击中间区域
呼出菜单
上一章
目录
下一章
×