
1.2 数据模型
计算机系统是不能直接处理现实世界的,现实世界只有数据化后,才能由计算机系统来处理这些代表现实世界的数据。为了把现实世界的具体事物及事物之间的联系转换成计算机能够处理的数据,具有联系性的相关数据按照一定的组织关系排列,从而构成一定的结构,对这种结构的抽象和描述就是数据模型。数据模型是数据库系统的核心。通俗地讲,数据模型是现实世界的模拟。
1.2.1 数据模型的基本概念
数据模型(Data Model)是反映客观事物及客观事物间联系的数据组织的结构和形式,是数据库系统中用于提供信息表示和操作手段的形式框架,是数据库系统的核心和基础。
数据模型应满足三方面要求:一是能比较真实地模拟现实世界;二是容易理解;三是易在计算机上实现。在数据库系统中针对不同的使用对象和应用目的,采用不同的数据模型。
不同的数据模型实际上提供给用户模型化数据和信息的不同工具。根据模型应用的不同,可将模型分为两类,它们分别属于两个不同的层次,如图1-5所示。
第一类模型是概念模型,也称信息模型,它是一种独立于计算机系统的数据模型,完全不涉及信息在计算机中的表示,只是用来描述某个特定组织所关心的信息结构。概念模型是按用户的观点对数据和信息建模,强调其语义表达能力,概念应该简单、清晰、易于用户理解,它是对现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具。

图1-5 数据抽象的层次
第二类模型是数据模型,主要包括网状模型、层次模型、关系模型等,它是按计算机系统的观点对数据建模,是直接面向数据库的逻辑结构,是对现实世界的第二层抽象。这类模型直接与DBMS有关,称为“逻辑数据模型”,一般又称“结构数据模型”。这类模型有严格的形式化定义,以便于在计算机系统中实现。它通常有一组严格定义的无二义性语法和语义的数据库语言,人们可以用这种语言来定义、操纵数据库中的数据。
数据模型是数据库系统的核心和基础。各种机器上实现的DBMS软件都是基于某种数据模型的。
数据库的数据模型先后经历了层次模型、网状模型、关系模型和面向对象模型几个阶段。其中关系模型因为有完整的理论基础,取代了层次模型和网状模型,目前关系数据库在实际应用中居主导地位。
1.2.2 概念模型
由图1-5可以看出,概念模型实质上是现实世界到机器世界的一个中间层次。概念模型是最常用的对信息世界建模的方法,涉及的基本概念有:
1.实体
客观存在并可相互区别的事物称为实体。实体可以是具体的人、事、物,也可以是抽象的概念或联系。例如,一个学生、一名教师、一门课程、一本书、一场比赛等。
2.属性
描述实体的特性称为属性。一个实体可以由若干属性来刻画,如一个学生实体有学号、姓名、性别、出生日期、专业等方面的属性。属性的具体取值称为属性值。例如,某一个男学生实体的“姓名”属性的属性值是“张强”。
3.实体集
同类型实体的集合称为实体集。例如,对于“学生”实体来说,全体学生就是一个实体集;对于“课程”实体来说,学校开设的所有课程也是一个实体集。
4.实体之间的联系
实体之间的联系是指两个不同实体之间的联系。实体集A和实体集B之间的联系可分为三种类型,如图1-6所示。

图1-6 实体集间的联系
(1)一对一联系(1:1)。实体集A中的一个实体最多与实体集B中的一个实体相对应,反之亦然,则称实体集A与实体集B之间是一对一联系。例如,一个班级只有一位班长,而一个班长也只能管理一个班级,所以班级和班长两个实体集是一对一联系。
(2)一对多联系(1:n)。对于实体集A中的每一个实体,实体集B中有多个实体与之对应;反之,对于实体集B中的每一个实体,实体集A中最多只有一个实体与之对应,则称实体集A与实体集B之间是一对多联系。例如,一个班级有多个学生,而一个学生只能属于一个班级,所以班级和学生两个实体集是一对多联系。
(3)多对多联系(m:n)。对于实体集A中的每一个实体,实体集B中有多个实体与之对应;反之,对于实体集B中的每一个实体,实体集A中也有多个实体与之对应,则称实体集A与实体集B之间是多对多联系。例如,一个学生可以选修多门课程,而一门课程可以被多名学生选修,所以学生和课程两个实体集是多对多联系。
5.E-R图
E-R图(Entity-Relationship,实体-联系)是最广泛使用的数据库设计方法,该方法用E-R图来描述现实世界中实体及实体之间的联系。E-R图使用三种图形来描述实体、属性和联系,如图1-7所示。

图1-7 E-R图
(1)实体:用矩形表示,矩形内写上实体的名称。
(2)属性:用椭圆表示,椭圆内写明属性名,并用连线将其与对应的实体连接起来。
(3)联系:用菱形表示,菱形内写明联系名,并用连线分别与有关的实体连接起来,同时标注上联系的类型。
1.2.3 层次模型
层次模型(Hierarchical Model)利用树形结构来表示实体以及实体之间的联系,如图1-8所示。层次模型中的结点为记录型,表示某种类型的实体,结点之间的连线则表示了它们之间的关系。
其主要特征如下:
(1)有且只有一个结点没有双亲结点,该结点称为根结点。
(2)根以外的其他结点有且只有一个双亲结点。

图1-8 层次模型
1.2.4 网状模型
网状模型(Network Model)是层次模型的扩展,它表示多个从属关系的层次结构,呈现一种交叉关系的网络结构,如图1-9所示。网状模型是以记录为结点的网络结构。
其主要特征如下:
(1)允许一个以上的结点无双亲结点。
(2)一个结点可以有多于一个的双亲结点。

图1-9 网状模型
1.2.5 关系模型
关系模型(Relational Model)的“关系”是有特定含义的。广义地说,任何数据模型都描述一定事物数据之间的关系。关系模型的“关系”虽然也适用于这种广义的理解,但同时又特指具有相关性而非从属性的平行数据之间按照某种序列排列的集合关系。
关系模型中的主要术语有:
(1)关系:一个关系对应于平常讲的一张二维表,是具有相同性质的元组(或记录)的集合。
(2)元组:表中的一行称为一个元组,相当于一个记录。
(3)属性:表中的一列称为属性,给每一列起一个名称即属性名,属性相当于字段。
(4)关键字:唯一地标识一个元组的一个或若干属性集合。
(5)主关键字:当一个关系有多个关键字时,选定其中一个作为主关键字。
(6)外关键字:若在诸属性中,某属性不是该关系的主关键字,却是另一个关系的主关键字,则称该属性为外关键字。
(7)域:属性的取值范围。
(8)分量:元组中的一个属性值。
关系模型的主要特点有:
(1)关系中每一分量不可再分,是最基本的数据单位。
(2)每一列的分量是同属性的,列数根据需要而设,且各列的顺序是任意的。
(3)每一行由一个个体事物的诸多属性构成,且各行的顺序可以是任意的。
(4)一个关系是一张二维表,不允许有相同的属性名,也不允许有相同的元组。
基于关系模型的数据库为关系数据库。关系数据库管理系统是至今为止最为常见的产品,较为著名的有SQL Server、Oracle、Sybase、Visual FoxPro、Access等。关系数据库管理系统通常支持数据独立性,因而可维护性、可扩展性、可用性都比较好。