
1.3 数据模型
数据模型(Data Model)是数据特征的抽象,是数据库管理的教学形式框架,也是数据库系统中用以提供信息表示和操作手段的形式架构。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。数据模型描述了在数据库中结构化和操纵数据的方法,模型的结构部分规定了数据如何被描述。
1.3.1 数据模型的分类
1.组成部分
数据模型所描述的内容包括3部分:数据结构、数据操作和数据约束。
(1)数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都基本建立在数据结构上。
不同的数据结构具有不同的操作和约束。
(2)数据操作:数据模型中的数据操作主要描述在相应数据结构上的操作类型和操作方式。
(3)数据约束:数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系以及数据动态变化的规则,以保证数据的正确、有效和相容。
2.分类
数据模型的研究包括以下3方面:
(1)概念数据模型
这是面向数据库用户的现实世界的数据模型,主要用来描述世界的概念化结构,可以使数据库的设计人员在设计的初始阶段摆脱计算机系统及数据库管理系统的具体技术问题,集中精力分析数据以及数据之间的联系等。概念数据模型与具体的数据库管理系统无关。需要注意的是,概念数据模型必须换成逻辑数据模型才能在数据库管理系统中实现。
(2)逻辑数据模型
这是用户在数据库中看到的数据模型,是具体的数据库管理系统所支持的数据模型,主要有网状数据模型、层次数据模型和关系数据模型3种类型。此模型既要面向用户,又要面向系统,主要用于数据库管理系统的实现。
(3)物理数据模型
这是描述数据在存储介质上的组织结构的数据模型,不仅与具体的数据库管理系统有关,还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有与其相对应的物理数据模型。数据库管理系统为了保证其独立性与可移植性,将大部分物理数据模型的实现工作交由系统自动完成,而设计者只设计索引、聚集等特殊结构。
数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型。目前成熟地应用在数据库系统中的数据模型有层次模型、网状模型和关系模型。它们之间的根本区别在于数据之间联系的表示方式不同(记录型之间的联系方式不同)。层次模型以“树结构”表示数据之间的联系。网状模型以“图结构”来表示数据之间的联系。关系模型是用“二维表”(或称为关系)来表示数据之间的联系的。
1.3.2 E-R模型
E-R方法是“实体-联系方法”(Entity-Relationship Approach)的简称,是描述现实世界概念结构模型的有效方法。E-R方法是表示概念模型的一种方式,用矩形表示实体型,在矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。用E-R方法描述的数据模型即为E-R模型,也称为E-R图。图1.2所示为一个简单学生管理系统的数据库E-R模型图。

图1.2 简单学生管理系统的数据库E-R图
1.E-R图成分
在E-R图中,有如下4个成分。
● 矩形框:表示实体,在框中记入实体名。
● 菱形框:表示联系,在框中记入联系名。
● 椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下加一下划线。
● 连线:实体与属性之间、实体与联系之间、联系与属性之间用直线相连,并在直线上标注联系的类型。
2.构图要素
构成E-R图的基本要素是实体型、属性和联系,其表示方法如下。
(1)实体型(Entity):有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,在E-R图中用矩形表示,在矩形框内写明实体名。例如,学生张三丰、学生李寻欢都是实体。
(2)属性(Attribute):实体所具有的某一特性,一个实体可由若干个属性来刻画。属性在E-R图中用椭圆形表示,并用无向边将其与相应的实体连接起来。例如,学生的姓名、学号、性别都是属性。
如果是多值属性,就在椭圆形外面再套实线椭圆。如果是派生属性,就用虚线椭圆表示。
(3)联系(Relationship):也称关系,用于在信息世界中反映实体内部或实体之间的联系。联系包括实体内的联系和实体间的联系两种,实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体集之间的联系。联系在E-R图中用菱形表示,在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。例如,老师给学生授课存在授课关系,学生选课存在选课关系。
需要注意的是,联系也可能有属性。例如,学生“学”某门课程所取得的成绩,既不是学生的属性也不是课程的属性。由于“成绩”既依赖于某名特定的学生又依赖于某门特定的课程,因此它是学生与课程之间的联系“学”的属性。一般来说,联系可分为以下3种类型:
(1)一对一联系(1:1)
例如,一个部门有一个经理,而每个经理只在一个部门任职,则部门与经理的联系是一对一的。
(2)一对多联系(1:n)
例如,某校教师与课程之间存在一对多的联系“教”,即每个教师可以教多门课程,但是每门课程只能由一个教师来教。
(3)多对多联系(m:n)
例如,图1.2表示学生与课程间的联系(“学”)是多对多的,即一个学生可以学多门课程,每门课程也可以有多个学生来学。
3.设计步骤
一般来说,用户在设计数据库之前需要先设计E-R模型,而E-R模型用E-R图来表示,其设计分为3个步骤:调查分析、合并生成和修改重构。
(1)调查分析
在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,用多层数据流图和数据字典描述整个系统,逐一设计分E-R图每个局部应用对应的数据流图,同时将局部应用涉及的数据都收集在数据字典中。
(2)合并生成
由于实体之间的联系在不同局部视图中呈现不同的类型,因此用户需要设计多个针对局部应用的E-R图。合并生成步骤是将多个局部E-R图的实体、属性和联系合并,从而生成整体的E-R图。
(3)修改重构
经合并生成后的基本E-R图可能存在冗余的数据和冗余的实体间联系,即存在可由基本数据导出的数据和由其他联系导出的联系。冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难。
因此,得到基本E-R图后,还应当进一步检查E-R图中是否存在冗余,如果存在,应设法予以消除。修改重构步骤主要采用分析方法来消除基本E-R图中的冗余,也可以用规范化理论来消除冗余。
1.3.3 层次模型
当前数据库领域常用的数据模型主要有3种:层次模型、网状模型和关系模型。其中,层次模型和网状模型统称非关系模型,如图1.3所示。

图1.3 常见的3种数据模型
1.层次模型定义
现实世界中许多实体之间的联系本来就呈现出一种很自然的层次关系,如家族关系、军队编制、行政机构等,这就需要用层次结构来描述。层次模型是按照层次结构的形式组织数据库数据的数据模型,用树形结构来表示各类实体以及实体间的联系。层次模型是在数据结构中满足下面两个条件的基本层次联系的集合:
● 有且仅有一个节点且没有双亲节点,这个节点称为根节点。
● 除根节点之外的其他节点有且只有一个双亲节点。
在层次模型中,使用节点表示记录。记录之间的联系用节点之间的连线表示,这种联系是父子之间的一对多的实体联系。层次模型中的同一双亲的子女节点称为兄弟节点,没有子女节点的节点称为叶节点。层次模型示例如图1.4所示。

图1.4 层次模型的示例
层次模型像一棵倒立的树,只有一个根节点,有若干个叶节点,节点的双亲是唯一的。图1.5是一个教学院系的数据结构,图1.6是教学院系数据库的一个实例,该层次数据结构中有4个记录。

图1.5 教学院系的数据模型

图1.6 教学院系数据库的一个实例
2.层次模型的数据操作与完整性约束
层次模型的数据操作主要有查询、插入、删除和更新。需要注意的是,进行插入、删除、更新操作时要满足层次模型的完整性约束条件。层次模型必须满足的完整性约束条件如下:
(1)在进行插入记录值操作时,如果没有指明相应的双亲记录值,就不能插入子女记录值。
(2)进行删除记录操作时,如果删除双亲记录值,相应的子女节点值也同时被删除。
(3)进行修改记录操作时,应修改所有相应记录,以保证数据的一致性。
3.层次模型的优缺点
层次模型能够描述自然界的一些基本关系,是其他数据模型所不能代替的,其主要优点如下:
● 层次模型的数据结构比较简单。
● 对于实体间联系是固定的且预先定义好的应用系统,采用层次模型实现,其性能优于关系模型,不低于网状模型。
● 层次数据模型提供了良好的完整性支持。
需要注意的是,层次模型中的任何一个给定的记录值只有按其路径查看时才能显示它的全部意义,没有一个子记录值能够脱离其双亲记录值而独立存在。因此,层次模型对具有一对多的层次关系的描述非常直观、自然、容易理解。
同样地,由于层次模型是较为单一的模型,因此能描述的基本关系较少。该模型存在的主要缺点如下:
(1)现实世界中很多联系是非层次性的,如多对多联系、一个节点具有多个双亲等。
(2)对插入和删除操作的限制比较多。
(3)查询子节点必须通过双亲节点。
(4)由于结构严密,层次命令趋于程序化。
层次模型表示这类联系的方法很不灵活,只能通过引入冗余数据(易产生不一致性)或创建非自然的数据组织来解决。
1.3.4 网状模型
在现实世界中,事物之间的联系更多是非层次关系,用层次模型表示非树形结构很不直接,而网状模型则可以克服这一缺点。
网状数据模型的典型代表是DBTG系统,这是20世纪70年代数据系统语言研究会(Conference On Data System Language, CODASYL)下属的数据库任务组(Data Base Task Group,DBTG)提出的一个系统方案。DBTG系统虽然不是实际的软件系统,但是它提出的基本概念、方法和技术具有普遍意义,对于网状数据库系统的研制和发展起了重大的影响。后来许多系统都采用DBTG模型或者简化的DBTG模型,如CuUinetSoftware公司的IDMS等。
1.网状模型的数据结构
网状模型是指满足下面两个条件的基本层次联系的集合:
● 有一个以上的节点没有双亲。
● 节点可以有多于一个的双亲。
如图1.7所示,(a)、(b)和(c)图都是网状模型的示例。

图1.7 网状模型的示例
网状模型是一种比层次模型更具普遍性的结构,去掉了层次模型的两个限制,允许多个节点没有双亲节点,允许节点有多个双亲节点,此外还允许两个节点之间有多种联系。因此,网状模型可以更直接地去描述现实世界,而层次模型实际上是网状模型的一个特例。
与层次模型一样,网状模型也使用记录和记录值表示实体集和实体,每个节点也表示一个记录,每个记录可包含若干个字段。
2.网状模型的数据操作与完整性约束
与层次模型相似,网状模型的数据操作主要包括查询、插入、删除和更新。进行插入操作时,允许插入尚未确定双亲节点值的子节点值。进行删除操作时,只允许删除双亲节点值。进行更新操作时,只需更新指定记录即可。
因此,一般来说,网状模型没有层次模型那样严格的完整性约束条件,但具体的网状数据库系统(如DBTG)对数据操作都加了一些限制,提供了一定的完整性约束。DBTG在模式DDL中提供了定义DBTG数据库完整性的若干概念和语句,主要有以下几种。
(1)支持记录码的概念。码是唯一标识记录的数据项的集合。在数据库中不允许出现重复值。
(2)保证一个联系中双亲记录和子记录之间是一对多的联系。
(3)可以支持双亲记录和子记录之间的某些约束条件。例如,有些子记录要求双亲记录存在才能插入,双亲记录删除时也连同删除。
3.网状数据模型的优缺点
相对于层次模型,网状数据模型所能描述的自然关系更多,主要优点如下:
● 能够更为直接地描述现实世界。例如,一个节点可以有多个双亲,节点之间可以有多种联系。
● 具有良好的性能,存取效率较高。
网状数据模型也存在不少缺点,主要表现在:结构比较复杂,而且应用环境越大,数据库的结构就变得越复杂,不利于最终用户掌握;模型的数据定义语言(DDL)、数据操作语言(DML)复杂,用户不容易使用。
此外,网状模型中由于记录之间的联系是通过存取路径实现的,因此应用程序在访问数据时必须选择适当的存取路径。因此,用户必须了解系统结构的细节,加重了编写应用程序的负担。
1.3.5 关系模型
关系模型是当前最重要的、应用最广泛的一种数据模型。目前,主流的数据库系统大部分都是基于关系模型的关系数据库系统(Relational DataBase System, RDBS)的。1970年,美国IBM公司San Jose研究室的研究员E.F.Codd首次提出数据库系统的关系模型,开创了数据库关系方法和关系数据理论的研究,为数据库技术的发展奠定了理论基础。20世纪80年代以来,计算机厂商新推出的DBMS几乎都支持关系模型,非关系模型的产品也大都添加了关系接口,数据库领域当前的研究工作也都是以关系方法为基础的。
1.关系模型的数据结构
关系数据模型是建立在严格的数学概念基础上的。在关系模型中,数据的逻辑结构是一张二维表,由行和列组成。关系模型中的主要术语如下。
(1)关系:一个关系对应通常所说的一张二维表。
(2)元组:表中的一行称为一个元组,许多系统中把元组称为记录。
(3)属性:表中的一列称为一个属性。一个表中往往会有多个属性,为了区分属性,要给每一列起一个属性名。
同一个表中的属性应具有不同的属性名。
(4)码:表中的某个属性或属性组的值可以唯一地确定一个元组,且属性组中不含多余的属性,这样的属性或属性组称为关系的码。
(5)域:属性的取值范围。例如,大学生年龄属性的域是(18~30),性别的域是(男,女)。
(6)分量:元组中的属性值。
(7)关系模式:关系的型称为关系模式,是对关系的描述。关系模式的一般表示如下:
关系名(属性1,属性2,…,属性n)
在关系模型中,实体集以及实体间的联系都是用关系来表示的。关系模型要求关系必须是规范化的,即要求关系必须满足一定的规范条件,这些规范条件中最基本的一条就是:关系的每一个分量必须是一个不可分的数据项,也就是说,不允许表中还有表。关系模型示例如图1.8所示。

图1.8 关系模型的示例
2.关系模型的数据操作与完整性约束
关系数据模型的操作主要包括查询、插入、删除和修改数据,这些操作必须满足关系的完整性约束条件。关系模型中数据操作的特点是集合操作方式,即操作对象和操作结果都是集合,这种操作方式也称为一次一集合的方式。相应地,非关系数据模型的操作方式是一次一记录的方式。
关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。实体完整性定义数据库中每一个基本关系的主码应满足的条件,能够保证元组的唯一性。参照完整性定义表之间的引用关系,即参照与被参照关系。用户定义完整性是用户针对具体的应用环境制定的数据规则,反映某一具体应用所涉及的数据必须满足的语义要求。
3.关系模型的优缺点
关系模型是当前使用最为广泛的一类模型,目前的主流数据库系统如Oracle、SQL Server等都采用关系模型。关系数据模型的优点主要体现在以下几点:
● 关系模型与非关系模型不同,它是建立在严格的数学理论基础上的。
● 关系模型的概念单一,实体与实体间的联系都用关系表示,对数据的检索结果也是关系(即表),所以其数据结构简单、清晰,用户易懂易用。
● 关系模型的物理存储和存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了程序员的数据库开发工作。
需要注意的是,虽然关系模型是现在的主流,但该模型也存在一定的缺陷,主要表现在如下两方面:
● 由于存取路径对用户透明,查询效率往往不如非关系数据模型高,因此为了提高性能,必须对用户的查询请求进行优化,这就增加了开发数据库管理系统的难度和负担。
● 关系数据模型不能以自然的方式表示实体集间的联系,存在语义信息不足、数据类型过少等弱点。