数据库技术与应用新概念教程(第二版)
上QQ阅读APP看书,第一时间看更新

1.1.3 数据模型的基本概念

人们对于模型,特别是具体模型并不陌生,如一张地图、一架精致的航模飞机都是具体模型,它们都是现实世界客观事物特征的模拟和抽象。数据模型(Data Model)也是一种模型,它是对现实世界数据特征的模拟和抽象,是用来描述数据、组织数据和操作数据的。

事实上,现实世界中的任何客观事物计算机都不可能直接处理,这就需要先将客观事物如具体的人、物、活动等抽象成计算机可以处理的数据,在数据库技术理论中,这个抽象、表示和模拟的工具称为数据模型。

数据库系统是以某种数据模型为基础的,数据模型是数据库系统的核心。

1.三级数据模型

数据模型作为从现实世界到计算机过渡的产物,必须满足4个要求:一是能够比较真实地模拟现实世界;二是容易被人们理解和使用;三是便于在计算机上实现;四是既能够描述数据本身,又能够反映数据间的联系。事实上,一种数据模型要全面满足4个要求是很困难的。因此,数据模型在分析和构造过程中针对不同的使用对象和应用目的,采用不同的数据模型。一般将数据模型分成三级,分别是概念数据模型(Conceptual Data Model)、逻辑数据模型(Logic Data Model)和物理数据模型(Physical Data Model)

(1)概念数据模型:简称概念模型。它是一种面向客观世界、面向用户的模型,独立于数据库管理系统,是数据库专业设计人员与用户之间最早进行交流的数据模型。在建立概念模型时,应着重于现实世界信息的数据描述和概括。因此,概念模型应具有较强的语义表达能力,语言简单清晰易于用户理解。

(2)逻辑数据模型:简称数据模型。它是一种面向数据库系统的模型,利用某种数据库管理系统支持的数据库语言,将概念模型转换为计算机上某一数据库管理系统支持的逻辑模型。数据模型着重于数据库系统的专业表达和描述,是数据库设计人员的重要工具。显然,概念模型只有在转换成数据模型后才能在计算机数据库中得以表示。

(3)物理数据模型:简称物理模型。它描述的是数据在计算机内部的存储方式和存储方法,是一种面向计算机物理表示的数据模型。物理模型的建立不涉及所采用的数据库管理系统,而涉及计算机系统的硬件及运行其上的操作系统。

在数据库设计、开发时,各级数据模型是逐层演化发展而来的:首先将现实世界中的客观事物抽象为概念模型,然后将概念模型转换为数据模型,最后转换为物理模型。

2.概念模型

概念模型是现实世界到信息世界的第一层抽象,是对信息世界的抽象建模,概念模型是现实世界到机器世界的中间过程,是用来描述数据在处理过程中的状态的逻辑模型。

1)基本概念

(1)实体(Entity):客观存在并可相互区别的事物称为实体。具体的人、事、物及抽象的概念或联系都是实体。例如,一名学生、一门课程、教师与院系的工作关系等都是实体。

(2)属性(Attribute):实体所具有的某方面特性称为属性。一个实体可以用若干个属性来描述。例如,学生实体可以由学号、姓名、性别、出生年月、所在院系等属性组成,某学生的姓名张三就是该学生实体的一个属性,属性组合(20151234,张三,男,199606,生物医学工程)表示一个学生。

(3)实体型(Entity Type):具有相同属性的实体必然具有相同的特征和性质,用实体名及其属性名集合来抽象和描述同类实体,称为实体型。例如,学生(学号,姓名,出生年月,所在院系)就是一个实体型,实体型是抽象的实体表达。

(4)实体集(Entity Set):具有相同属性的实体集合称为实体集。例如,全体学生就是一个实体集。

(5)域(Domain):属性的取值范围称为该属性的域。例如,学生性别的域为{男,女}。

(6)码(Key):可以唯一标识一个具体实体的最小属性集合称为码。例如,学生实体的学号属性就是学生实体的码。若一个实体中作为码的属性或属性组有多个,则称为候选码。在候选码中指定的常用码,称为主码。

(7)联系(Relationship):在现实世界中,事物内部和事物之间是有联系的,在信息世界中,这些联系表现为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系指实体各属性之间的联系,实体之间的联系指不同实体集间的联系。例如,学生实体与教师实体之间存在称为师生关系的联系。

2)实体型之间联系的种类

两个实体之间的联系为实体型之间最基本的联系,具体又分为3类:

(1)一对一联系(1∶1):如果一个实体集A中的每一个实体都至多与实体集B中的一个实体相联系,反之亦然,则称这两个实体集所对应的实体(型)A与B具有一对一联系,记为1∶1。例如,独生子女家庭成员中父亲与儿子之间就是一对一的联系,即一位父亲只有一个孩子,而一个孩子仅仅有一位父亲。可用示例图表示,如图1-1所示。

图1-1 实体间1∶1联系

(2)一对多联系(1∶n):如果一个实体集A中的每一个实体可以与实体集B中的n(n≥0)个实体相联系,反之,对于实体集B中的每一个实体至多与实体集A中的一个实体相联系,则称对应的实体(型)A与B具有一对多联系,记为1∶n,其中实体型A称为一方,实体型B称为多方。例如,班级与学生的关系就是班级实体与学生实体间的一对多联系,因为,一个班级可以有多个学生,而一个学生只属于一个班级,其中班级为一方,学生为多方,如图1-2所示。

图1-2 实体间1∶n联系

(3)多对多联系(m∶n):如果一个实体集A中的每一个实体可以与实体集B中的n(n≥0)个实体相联系,反之,实体集B中的每一个实体也可以与实体集A中的m(m≥0)个实体相联系,则称对应的实体(型)A与B具有多对多联系,记为m∶n。例如,学生与课程的关系就是学生实体与课程实体间的多对多联系,因为一个学生可以选修多门课程,而一门课程也可以有多个学生选修,如图1-3所示。

图1-3 实体间m∶n联系

多个实体型之间的联系:多个实体型中每两个实体型之间也存在一对一、一对多和多对多的联系。例如,对于课程、教师和参考书3个实体型,如果一门课程可以由多名教师讲授,使用多本参考书,而每一名教师只讲授一门课程,且每本参考书只供一门课程使用,则3个实体型之间的联系就是一对多的联系,如图1-4所示。

单个实体型内的联系。同一个实体型内部的各个实体之间也可以存在一对一、一对多和多对多的联系。例如,职工实体型内部职工之间具有领导与被领导的联系,即一名职工(干部)“领导”多名普通职工,而每个普通职工仅被另外一名职工(干部)领导,因此他们之间就是一对多的联系,如图1-5所示。

图1-4 三个实体间联系

图1-5 同一实体型内各实体间的联系

3)概念模型的表示方法

概念模型的表示方法很多,其中最常用的是实体-联系(Entity-Relationship)方法。该方法用E-R图来描述现实世界的概念模型,故也称为E-R模型。E-R模型是采用图示来表现现实世界中的实体型、属性和联系的方法。它所用的图形符号包括以下几种:

(1)矩形:用于表示实体型,矩形框内写明实体名。

(2)椭圆形:用于表示属性,属性名称写在椭圆形内部。

(3)菱形:用于表示联系,联系名称写在菱形内部。

(4)线段:用于连接矩形与菱形、矩形与椭圆形。在连接矩形与菱形的线段上应标注联系的类型(1∶1、1∶n或m∶n)。

需要注意的是,如果一个联系具有属性,则这些属性也要用线段与该联系相连接。

【任务1-1】 绘制学生实体及其属性的E-R图,并用下画线标出实体的主码。

操作提示:

(1)学生的属性包括学号、姓名、性别、出生年月、专业。

(2)学生的主码应具有唯一标识的特征,因此,可选学号作为学生的主码。图1-6所示为学生实体的E-R图,其中带下画线的属性表示其为实体指定的主码。

图1-6 一个实体及其属性E-R图

【任务1-2】 绘制两个实体间1∶1联系的E-R图。例如,独生子女家庭成员中的父子关系。

操作提示:

(1)实体父亲的属性为身份证号、姓名、工作单位和联系方式,实体儿子的属性为身份证号、姓名、学籍编号和所在学校,它们之间是父子关系,关系的属性是住址。实体间的联系是1∶1。

(2)图1-7所示为联系的E-R图,E-R图省略了实体自身的属性。

图1-7 两实体间1∶1联系E-R图

【任务1-3】 绘制两个实体间1∶n联系的E-R图。例如,班级与学生间的关系。

操作提示:

(1)班级与学生之间是一对多的关系,一个班级可以包含多名学生。

(2)图1-8所示为班级与学生实体间的1∶n联系的E-R图,联系具有的属性为“班长”。

图1-8 两实体间1∶n联系E-R图

【任务1-4】 绘制两个实体间m∶n联系的E-R图。例如,学生与课程之间的关系。

操作提示:

(1)学生的属性为学号、姓名、性别、出生年月和专业,课程的属性为课程号、课程名、学分和课时。一名学生可以选多门课程,一门课程可以被多名学生选择。

(2)图1-9所示为学生与课程实体间m∶n联系的E-R图,联系具有的属性为“成绩”。

图1-9 两实体间m∶n联系E-R图

【任务1-5】 绘制3个实体间联系的E-R图。例如,教师、课程和参考书之间联系的E-R图。

操作提示:

(1)教师的属性为教师编号、姓名、性别和职称,课程的属性为课程号、课程名、学分和课时,参考书的属性为书号、书名、作者和出版社。一门课程有多位教师主讲,有多本参考书,一名教师有多本参考书,一本参考书可被多名教师使用。

(2)图1-10所示为教师、课程和参考书3个实体间联系的E-R图。联系具有自己的属性“课时”与“章节”。

【任务1-6】 绘制同一实体型内部各实体间联系的E-R图。例如,企业内职工的E-R图。

操作提示:

(1)作为企业内的职工,一部分职工担任领导工作。因此,在职工这个实体中,存在领导与被领导的职工,领导的职工与被领导的职工之间具有一对多的联系。职工具有的属性为工号、姓名、性别和工种。

(2)图1-11所示为职工实体内部1∶n联系的E-R图,联系具有的属性是“职务”和“任期”。

图1-10 三实体间联系E-R图

图1-11 同一实体内部联系E-R图

3.数据模型

数据模型是数据库管理系统用来表示实体及联系的方法,是实体-联系模型的数据化,一个具体的数据模型应能正确表达数据间存在的整体逻辑关系。目前,数据库领域中最常用的数据模型有:层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relational Model)和面向对象数据模型(ObjectOriented Data Model),对象关系数据模型(Object Relational Data Model)、XML数据模型等。

基于层次模型或网状模型的数据库系统在20世纪70年代至80年代初应用普遍,在数据库系统中占据主导地位,但现已被基于关系模型的数据库系统所取代。自20世纪80年代以来,面向对象的方法和技术在计算机领域中产生了深远影响,推动数据库中面向对象数据模型的发展。许多关系数据库公司为了支持面向对象数据模型,对关系模型进行了扩展,从而产生了对象关系数据模型。随着网络的发展,网页上各种半结构化、非结构化的数据已成为信息的主要来源,出现了半结构化和非结构化的数据模型。

1)层次模型

层次模型是数据库系统中最早出现的数据模型,它用树状结构表示各类实体及实体间的联系。层次关系是现实世界中实体间联系的一种很常见且很自然的关系,如家族关系、行政关系等。层次数据库系统的典型代表是IBM公司在1968年推出的大型商用数据库管理系统IMS(In for mation Management System)。

层次模型的数据结构采用树状结构,主要优点是结构简单,查询效率高,最显著的缺点是难以表达显示现实世界中非层次关系的实体间的联系。基于层次模型的数据库系统目前已很少使用。

2)网状模型

网状模型是针对层次数据模型的缺陷提出的一种更具普遍性的数据模型,它采用网状结构表示各类实体及实体间的联系。网状模型的典型代表是DBTG系统,它是20世纪70年代美国数据系统语言研究会(Conference On Data System Language,CODASYL)下属的数据库任务组(Date Base Task Group,DBTG)提出的一个网状模型系统方案。

网状模型的主要优点是能够直接地描述现实世界中复杂的关系,但其结构复杂,用户不易掌握和使用,目前已很少使用。

3)关系模型

关系模型是由美国IBM公司SanJose研究室的研究员E.F.Codd于1970年首先提出的。关系模型的优点是数据结构简单,用户易于理解和使用;具有更高的数据独立性和安全保密性。其缺点是查询效率不如层次模型和网状模型;对用户的查询请求优化增大了数据库管理系统开发的难度。

关系模型的出现是数据库技术发展史上的一次飞跃,当前数据库领域的研究工作是以关系理论和方法为基础的。很多著名的数据库管理系统都是关系型的,如现在使用的小型数据库系统FoxPro、Access,大型数据库系统DB2、Oracle、Sybase、In for mix、SQL Server等。

4)面向对象数据模型

面向对象数据模型是一种将语义数据模型和面向对象程序设计方法结合起来而提出的数据模型。自20世纪80年代,基于这种数据模型的数据库产品相继问世,例如ObjectStore、ONTOS等。但由于面向对象数据库语言过于复杂,面向对象数据库产品最终没有在市场上获得成功。

5)对象关系数据模型

对象关系数据模型是关系模型与面向对象数据模型相结合的产物,它既保持了关系数据模型的优点,又能支持面向对象模型和对象管理。1999年发布的SQL标准中增加了SQL/Object Language Binding,提供了面向对象的功能标准,但仍滞后于实际的系统,使得各个对象关系数据库系统产品在语法、扩展功能等方面也不尽相同。

6)XML数据模型

随着互联网的快速发展,Web上各种非结构化、半结构化的数据源已成为信息的主要来源,可扩展置标语言(eXtensible Markup Language,XML)已作为网上数据交换的标准和研究热点,随之人们提出了半结构化数据的XML数据模型。

本书将主要介绍关系模型的相关理论和方法,重点讲授的数据库管理系统软件Access就是基于关系模型的。