1
大学信息技术基础
1.11.2 8.2 数据模型

8.2 数据模型

8.2.1 数据模型的基本概念

现实世界是存在于人脑之外的客观世界,使用数据来解释和认识现实世界时,需要用相应的手段进行描述。 模型是对现实世界的模拟和抽象。 数据模型也是一种模型,是对现实世界问题的数据特征的描述。

在描述现实世界的过程中,通常将模型分为以下两个层次。

(1)概念模型:它是对现实世界的第一层抽象,是根据用户的观点对信息进行建模,与计算机系统无关。

(2)数据模型:它是对现实世界的第二层抽象,直接与DBMS有关,这类模型有严格的形式化定义,以便在计算机系统中实现。

数据从现实世界到计算机中的具体表示一般要经历现实世界、信息世界和数据世界。 通常,首先将现实世界抽象为信息世界,然后将信息世界转换为机器世界。 把现实世界中的客观对象抽象为某一种信息结构,这种信息结构与计算机系统无关,不是某一DBMS支持的数据模型,而是概念级的模型,再把概念模型转换为某一DBMS支持的数据模型。 三个世界的转换过程如图8-1所示。

图8-1 从现实世界、信息世界到数据世界

8.2.2 概念模型

概念模型是对信息世界的各类信息的描述形式,它不依赖计算机及DBMS,是现实世界的真实反映。 表示概念模型的方法有很多种,其中最常用的一种是于1976年由P.Chen首先提出的实体-联系方法(Entity-Relationship Approach,E-R方法)。E-R图是用来描述现实世界的模型,是数据设计的有效工具。 E-R图中有三个基本要素,即实体、属性和联系。 E-R图中用矩形框表示实体,椭圆形框表示属性,菱形框表示联系。 实体与属性或实体与联系之间用无向直线连接。 下面介绍E-R图中的三个基本要素的概念。

1.实体

数据是用来描述现实世界的,而描述的对象有具体的也有抽象的。 这些对象共同的特点就是可以相互区分。 在信息世界中,客观存在的凡是可以互相区别的事、物、概念等统统抽象为实体(Entity)。 例如,一个学生、一本书等,也可以是抽象的概念,如一门课程。 具有共性的一类实体可以划分为一个实体集(Entity Set)。 例如,学生张三、李四都是实体,他们都是学生。 为了描述他们,可以定义“学生”实体集,所有学生都是这个集合中的成员。

2.属性

属性(Attribute)用来描述实体的某些特征,如“学生”实体可以用学号、姓名、性别、生源、出生日期、政治面貌、班级号等属性来描述。

能够唯一标识实体的属性或属性组称为关键字。 例如,“学号”是学生实体的关键字。

每个属性都有其取值范围,称为该属性的域。 例如,“成绩”属性的域为0~100。

在E-R图中属性用椭圆形表示。 实体和属性之间用无向直线连接。 图8-2所示为学生实体及其属性。

图8-2 学生实体及其属性

3.联系

实体与实体之间会有各种关系,如学生实体和课程实体之间可有选课关系,读者实体与图书实体之间可有借阅关系等。 这种实体与实体之间的关系可抽象为联系(Relationship)。 两个不同实体集之间的联系有三种类型,如图8-3所示。

(1)一对一联系(1∶1)

如果实体集A中的每个实体至多和实体集B中的一个实体有联系,则称A与B具有一对一的联系,反之亦然,则称实体集A与实体集B具有一对一的联系,记作1∶1。 例如,一个班级只有一个班长,一个班长只在一个班中任职,则班长与班级之间是一对一的联系。

(2)一对多联系(1∶n)

如果实体集A中的每个实体和实体集B中一个或多个实体有联系,而实体集B中的每个实体至多和实体集B中的一个实体有联系,则称A与B是一对多联系。 例如,一个班级有多个学生,而每个学生只属于一个班级,则班级和学生之间是一对多的联系。

(3)多对多联系(m∶n)

如果实体集A中的每个实体和实体集B中的多个实体有联系,反之亦然,则称实体集A与实体集B具有多对多的联系,记作m∶n。 例如,一种商品可以在多个超市销售,一个超市可以销售多种商品,则商品和超市之间是多对多的联系。

图8-3 实体间的三种联系

下面用E-R图来表示教学管理系统的概念模型,该系统包含学生、课程、教师和班级四个实体,每个实体的属性如下。

学生:属性有学号、姓名、性别、出生日期、生源、政治面貌和班级号,关键字为学号。

课程:属性有课程号、课程名、课程类别和学分,关键字为课程号。

教师:属性有教师号、姓名、性别、工作时间、政治面貌、职称和工资,关键字为教师号。

班级:属性有班级号、班级名称、人数、班级负责人和联系电话,关键字为班级号。

实体之间的联系如下:

①一个学生可选修多门课程,一门课程可被多个学生选修,则学生与课程实体之间的联系是多对多的联系。

②一个教师可讲授多门课程,一门课程可被多个教师授课,则教师与课程实体之间的联系是多对多的联系。

③一个班级有多个学生,一个学生只能属于一个班级,则班级和学生实体之间的联系是一对多的联系。

在进行系统的全局E-R图设计时,一般先设计局部E-R图,再整合成全局E-R图。 下面以教师与课程为例介绍局部E-R图的设计,具体如图8-4所示。

各局部E-R图完成之后,需要整合成一个全局E-R图。 教学管理系统的全局E-R图如图8-5所示。

图8-4 教师和课程的局部E-R图

图8-5 教学管理系统全局E-R图

8.2.3 数据模型

常见的数据模型有层次模型、网状模型和关系模型三种。 基于它们建立的数据库相应地被称为层次数据库、网状数据库和关系数据库。

1.层次模型

层次模型是数据库中使用得较早的一种数据模型。 层次模型用树形结构来表示各类实体以及实体间的联系。 层次模型的基本联系是一对一和一对多。

2.网状模型

网状模型用网状结构表示实体及实体间的关系。 在现实世界中事物之间的联系更多的是非层次关系,用层次模型表示非树形结构不直接,网状模型则可以克服这一弊病,是层次模型的扩展。 网状模型可反映多对多的联系。

3.关系模型

关系模型是目前最重要、应用最广泛的一种数据模型。 关系数据库系统采用关系模型作为数据的表示形式,当前流行的数据库管理系统都支持关系模型。 关系模型用二维表结构表示实体及实体间的联系。 关系模型具有较强的数据表示能力,可表示一对一、一对多和多对多的联系。

8.2.4 关系模型的基本概念及特征

在关系模型中用一个二维表来描述实体之间的联系,图8-6所示的学生表和成绩表都是典型的关系模型数据集合的表示。

图8-6 关系模型的数据集合

1.关系模型中的概念

(1)关系:一张二维表格对应一个关系,由行和列组成。

(2)属性:表中的一列称为关系的一个属性。 每个属性都有对应的属性名。

(3)域:每个属性的取值范围称为它的域。 关系的每个属性必须对应一个域,不同属性的域可以相同也可以不同。

(4)元组:表中的一行称为关系的一个元组,对应于实体集中的一个实体。

(5)关键字:能唯一地标识关系中的各个元组的属性(属性组),且又不包含多余的属性。

(6)主键:表中可以有多个关键字,在应用中被选用的关键字称为主键。 主键的取值不能为NULL。

(7)外键:如果关系A的主键出现在关系B中,则关系B中该主键对应的属性被称为外键。 两个关系之间的联系就是通过主键和外键作为纽带来实现的。 以另一个关系的外键作为主关键字的表被称为主表,具有此外键的表被称为主表的从表。

(8)关系模式:关系模式是对关系结构的定义,描述关系由哪些属性组成、各个属性的域以及关系的完整性约束条件。 关系模式可用下列形式表示:

关系名(属性1,属性2,…,属性n)

例如:学生(学号,姓名,性别,出生日期,生源,政治面貌,班级号)是一个用来描述学生的关系模式。

2.关系的特征

一个符合关系模型的二维表格,通常将表格中的每一列称为一个字段,每一行称为一条记录。 一张二维表格若能构成一个关系模型,则必须满足一定的条件。 一个规范化的关系必须满足以下几个特征。

(1)表中的每一列都必须是不可分的基本数据项。

(2)属性间的顺序无所谓。

(3)元组间的顺序无所谓。

(4)每一列的属性值应取自同一域。

(5)不能有相同的属性名。

(6)任两个元组不能完全相同。

3.关系模型的基本运算

(1)选择

选择运算是根据给定的条件,从一个关系中选择符合条件的元组,形成一个新的关系(行方向运算)。这个新的关系是原关系的一个子集,关系模式与原关系保持一致。

例8.1:从图8-6所示的学生表中筛选出生源为福建的记录。SQL 语句表示如下。

SELECT*

FROM学生

WHERE生源=“福建“

执行结果如图8-7所示。

图8-7 选择操作实例

(2)投影

投影运算是从一个关系中选择所需要的属性组成一个新的关系(列的方向)。 投影运算之后关系的属性减少,可能会有相同的行出现。 新的关系可能不满足规范化要求。

例8.2:从图8-6所示的学生表中筛选出学号、姓名、性别和出生日期。SQL 语句表示如下。

SELECT学号,姓名,性别,出生日期

FROM学生

执行结果如图8-8所示。

图8-8 投影操作实例

(3)连接

连接是同时涉及两个或多个关系的运算,它是将两个或多个关系在给定的属性上把满足给定条件的记录连接起来而得到的一个新的关系。

例8.3:从图8-6所示的学生和成绩表中筛选出性别为男的列(姓名,性别,课程号,成绩)。SQL 语句表示如下。

SELECT姓名,性别,课程号,成绩

FROM学生,成绩

WHERE学生.学号 =成绩.学号AND性别=“男“

执行结果如图8-9所示。

图8-9 连接操作实例