数据库原理及MySQL应用教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3 数据模型

模型(Model)是现实世界特征的模拟和抽象表达,其有助于人们更好地认识和理解客观世界中的事物、对象、过程等感兴趣的内容,例如汽车车模、飞机航模、建筑图纸、军事沙盘等。同样,为能表示和处理现实世界中的数据和信息,我们常使用数据模型(Data Model)这个工具。因此,数据模型也是一种模型,它是现实世界数据特征的抽象表达,它将事物的主要特征抽象地用一种形式化的方式描述表示出来。

1.3.1 数据模型组成要素

一般而言,数据具有静态和动态两种特征。其中,数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束;数据的动态特征是指对数据可以进行符合一定规则的操作。相应地,对现实世界数据特征进行抽象的数据模型,需要描述数据的静态特征与动态行为,并为数据的表示和操作提供框架。数据模型通常由数据结构、数据操作和数据约束三个要素组成,分别如下:

(1)数据结构。

数据结构描述的是系统的静态特性,即数据对象的数据类型、内容、属性以及数据对象之间的联系。由于数据结构反映了数据模型最基本的特征,因此,在数据库系统中,人们常常按照其数据结构的类型来命名数据模型。例如,层次结构、网状结构、关系结构的数据模型分别命名为层次模型、网状模型和关系模型,以及近年来得到广泛应用的面向对象模型。

(2)数据操作。

数据操作描述的是系统的动态特性,是对数据库中各种数据操作的集合,包括操作及相应的操作规则。数据操作主要分为更新和检索两大类,其中更新包括插入、删除和修改。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。

(3)数据约束。

数据约束描述数据结构中数据间的语法和语义关联,包括相互制约、依存关系以及数据动态变化规则,以保证数据的正确性、有效性和相容性。数据约束包括数据完整性约束、数据安全性约束以及并发控制约束。数据约束既刻画了数据静态特征,也表示了数据动态行为规则。任一数据模型都应该反映和规定本数据模型必须遵守的、基本的、通用的数据约束,特别是数据完整性约束,它是一组完整性规则的集合,例如,在关系模型中,任何关系必须满足实体完整性和参照完整性这两类约束。此外,数据模型还应该提供定义完整性约束条件的机制,以反映在具体应用数据时必须遵守的语义约束条件。例如,在学生数据库中,学生的年龄不得超过40岁。

1.3.2 数据模型的分类

在现实世界中,人们认识、理解的数据和信息,不能直接被计算机所处理,但可通过数据模型这个建模工具进行抽象表达,表示成计算机能够加工和处理的形式,并存入数据库中进行存储和管理。因而,数据模型应满足三个方面的要求,即:能比较真实地模拟现实世界;容易为人们所理解;便于在计算机上实现。然而,目前一种数据模型要很好地满足这三个方面的要求,仍很困难。

为此,人们通常是针对不同的使用对象和应用目的,采取逐步抽象的方法,在不同的抽象层面使用不同的数据模型,从而实现将现实世界中的具体事物逐步抽象、转换、组织成机器世界(计算机)中某一具体数据库管理系统所支持的数据类型。首先,将现实世界中的客观对象抽象为信息世界中的某一种信息结构,这种信息结构并不依赖于具体的计算机系统,也不与具体的数据库管理系统相关,是一种概念级的模型;其次,再将概念级的模型转换为机器世界中某一具体的数据库管理系统所支持的数据模型。这个过程如图1.7所示。

图1.7 从现实世界到机器世界的过程

由此可见,数据模型是模型化数据和信息的工具,也是数据库系统的核心和基础。事实上,数据库技术的发展正是沿着数据模型的主线推进的。本节主要介绍两大类数据模型,它们分别属于两个不同的层次,第一类是概念层数据模型,第二类是逻辑层数据模型和物理层数据模型。

1.3.3 概念层数据模型

概念层是数据抽象级别的最高层,其目的是按用户的观点来对世界建模。概念层数据模型也称为数据的概念模型(Conceptual Model)或信息模型,用来描述现实世界的事物,与具体的计算机系统无关,且独立于任何DBMS,但容易向DBMS所支持的逻辑数据模型转换。这类模型主要用于数据库的设计阶段,即在设计数据库时,通常用概念模型来抽象、表示现实世界的各种事物及其联系。

(1)信息世界中的基本概念。

概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员之间进行交流的语言,因此概念模型一方面具有较强的语义表达能力,能够方便、直接地表达应用中的各种语义知识,另一方面它简单清晰、易于用户理解。信息世界涉及的基本概念如下:

①实体(Entity)。

客观存在并能够相互区别的事物称为实体。实体可以是实际的事物,例如学生张、教师李、商品等;也可以是抽象的概念或联系,例如本学期教师李教了哪门课,学生张参加了数学建模竞赛,读者借还书等。

②属性(Attribute)。

实体所具有的某种特性称为实体的属性。一个实体可以用多个属性来描述,例如工人具有工号、姓名、性别、出生日期、年龄等属性。

③实体型(Entity Type)。

具有相同属性的实体必然具有共同的特征和性质。用实体名与属性名集合来抽象和刻画同类实体,称为实体型。例如,工人(工号、姓名、性别、出生日期)就是一个实体型。

④实体集(Entity Set)。

同类型实体的集合为实体集。例如,所有的工人就是一个实体集。

⑤联系(Relationship)。

在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指实体各属性之间的联系,例如,确定了学号,就一定能知道与之对应的姓名,即学号与姓名这两个属性之间有联系。实体之间的联系是指不同实体型之间的联系,例如,一个班有许多的学生,一个学生只属于一个班级,学生与班级这两个实体之间有联系。实体之间的联系类型共有一对一(1∶1)、一对多(1∶n)和多对多(m∶n)三种。

需要注意的是,在数据模型中有“型”(Type)和“值”(Value)两个不同的概念。“型”指的是对某一类数据的结构和属性的说明,而“值”是型的一个具体赋值。例如,在客户档案中,客户信息定义为(姓名,性别,年龄,籍贯,所在城市,联系电话)这样的记录型,而(李明,男,30,北京,广东,133××××××××)则是该记录型的一个记录值。

(2)概念模型的表示方法。

最常用的概念模型的表示方法是陈(P. P. Chen)于1976年提出的“实体-联系图(Entity-Relationship Approach)”,简称E-R模型。该模型是对现实世界的抽象表达,与计算机系统没有关系,是一种易于被用户理解的数据描述方式。用户通过E-R模型图可以了解系统设计者对现实世界的抽象是否符合实际情况。从某种程度上说E-R模型图也是用户与系统设计者进行交流的工具,E-R模型图已成为概念模型设计的一个重要设计方法。

E-R实体联系图包含了实体、联系、属性三个成分,其中实体用矩形框表示,在矩形框内写上实体的名称;属性用椭圆框表示,在椭圆框内写上属性名,并用无向边与其对应实体相连;联系用菱形表示,在菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边标上联系的类型(1∶1,1∶n, m∶n)。

下面先介绍一下两个实体型之间一对一(1∶1)、一对多(1∶n)、多对多(m ∶n)三种联系类型,需要注意的是联系属于哪种方式取决于客观实际本身。

一对一联系(1∶1):实体集E1中的每一个实体在实体集E2中最多只有一个实体与之联系;反之亦然。例如:电影院的座位和观众实体之间的联系,如图1.8所示。

图1.8 两个实体型之间一对一联系示例

一对多联系(1∶n):对于实体集E1中的每一个实体,实体集E2中有多个实体与之对应;反之,对于实体集E2中的每一个实体,实体集E1中只有一个实体与之对应。

例如:部门和职工两个实体集之间的联系。一个部门有多名职工,而一个职工只能属于一个部门,则实体部门和实体职工之间的联系是一对多的联系,如图1.9所示。

图1.9 两个实体型之间一对多联系示例

多对多联系(m∶n):表示实体集E1中的每个实体,实体集E2都有多个实体与之对应;反之,对于实体集E2中的每一个实体,实体集E1中也有多个实体与之对应。

例如:工程项目和职工两个实体集之间存在多对多联系,一名职工可以参与多个工程项目,而一个工程项目也可以被多名职工所选择,如图1.10所示。

图1.10 两个实体型之间多对多联系示例

一般地,两个以上的实体型之间也存在一对一、一对多、多对多联系。例如,有3个实体型:供应商、项目、零件,一个供应商可以供给多个项目、多种零件,而每个项目可以使用多个供应商供应的零件,每种零件可以由不同供应商供给,由此看出供应商、项目、零件三者之间是多对多的联系,如图1.11所示。

图1.11 三个实体型之间的联系示例

此外,同一个实体集内的各个实体之间也可以存着一对一、一对多、多对多联系。例如,职工实体型内部具有领导与被领导的联系,即某一个职工领导若干名职工,而每一个职工仅被另外一个职工直接领导,职工实体型就存在着领导这种一对多的内部联系,如图1.12所示。

图1.12 单个实体型内的一对多联系示例

联系实质上也是实体,所以联系也可以具有属性,如学生和课程之间的选修联系就有一个成绩属性,如图1.13所示。

图1.13 学生与课程的联系示例

下面看一个E-R模型图的应用实例。

【例1-1】用E-R模型图表示某个公交车公司车队管理的概念模型。其中实体包括司机、车辆和车队。

司机:司机编号、姓名、电话。

车辆:车牌编号、厂家、出厂日期。

车队:车队号、车队名。

实体之间的联系如下:

一个车队可以聘用多名司机,一名司机只能被聘用在某一个车队,车队和司机之间具有一对多的联系。

一名司机可以使用多个车辆,一个车辆可以供多名司机使用,司机和车辆之间具有多对多的联系。

图1.14为公交车公司车队管理E-R模型示例图。

图1.14 公交车公司车队管理E-R模型示例图

1.3.4 逻辑层数据模型

逻辑层是数据抽象的中间层,描述数据整体的逻辑结构。这一层的数据抽象称为逻辑层数据模型,也称为数据的逻辑模型(Logical Model)。它是用户通过数据库管理系统看到的现实世界,是基于计算机系统的观点来对数据进行建模和表示,是对概念数据模型进一步的分解和细化。因此,它既要考虑便于用户理解,又要考虑便于DBMS实现。

任何DBMS都是基于某种逻辑数据模型。其中,主要的逻辑数据模型有层次模型(Hierarchical Model)、网状模型(Network Model)、关系模型(Relationship Model)、面向对象模型(Object Oriented Model)等。这里只简要介绍这几类逻辑数据模型的基本概念,而基于关系模型的数据库,即关系型数据库,是本书学习的重点。

(1)层次模型。

层次模型亦即层次数据模型,是用树状结构来表示实体与实体之间的联系。在树中,每个结点表示一个记录类型,结点间的连线或边表示记录类型间的关系,每个记录类型可包含若干个字段,记录类型描述的是实体,字段描述的是属性。层次模型的特征如下:

①模型中有且仅有一个结点没有双亲,该结点就是根结点。

②根结点以外的其他结点有且仅有一个双亲结点,这就使得层次数据库系统只能直接处理一对多的实体关系。

③任何一个给定的记录值只有按照其路径查看时,才能显示它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。

【例1-2】如图1.15所示,以学校某个系的组织结构为例,说明层次数据模型的结构。

①记录类型系是根结点,其属性为系编号和系名。

②记录类型教研室和学生分别构成了记录类型系的子结点,教研室的属性有教研室编号和教研室姓名,学生的属性分别是学号、姓名和成绩。

③记录类型教师是教研室这一实体的子结点,其属性有教师的编号、教师的姓名、教师的研究方向。

优点:

①层次数据模型的结构简单、清晰、明朗,我们很容易看到各个实体之间的联系。

②操作层次数据类型的数据库语句比较简单,只需要几条语句就可以完成数据库的操作。

③查询效率较高,在层次数据模型中,结点的有向边表示了结点之间的联系,在DBMS中如果有向边借助指针实现,那么依据路径很容易找到待查的记录。

④层次数据模型提供了较好的数据完整性支持,正如上所说,如果要删除双亲结点,那么其下的所有子女结点都要同时删除;如图1.15,如果想要删除教研室,则其下的所有教师都要删除。

图1.15 院系人员层次数据模型

缺点:

①对数据的插入和删除的操作限制太多。

②层次数据模型只能表示实体之间的1∶n的关系,不能表示m∶n的复杂关系,因此现实世界中的很多事物之间的联系不能通过该模型方便地表示出来。

③查询子女结点必须通过双亲结点,因为层次模型对任一结点的所有子树都规定了先后次序,这一限制隐含了对数据库存取路径的控制。树中父子结点之间只存在一种联系,因此,对树中的任一结点,只有一条自根结点到达它的路径。

(2)网状模型。

网状模型亦即网状数据模型,其以网状结构表示实体与实体之间的联系。其实,网状数据模型可以看成是放松对层次数据模型约束性的一种扩展。网状数据模型中所有的结点允许脱离双亲结点而存在,也就是说,在整个模型中允许存在两个或多个没有根结点的结点,同时也允许一个结点存在一个或者多个的双亲结点,网状数据模型中的每个结点表示一个实体,结点之间的有向线段表示实体之间的联系。因此,网状数据模型可以用网状的有向图表示。由于结点之间的对应关系不再是1∶n,而是一种m∶n的关系,从而克服了层次状数据模型的缺点。网状数据模型的特征如下:

①存在一个以上的结点没有双亲结点。

②允许一个结点存在多个双亲结点。

【例1-3】同样是以教务管理系统为例,图1.16说明了院系的组成中,教师、学生、课程之间的关系。

图1.16 院系的网状数据模型

从图1.16中可以看出课程(实体)的双亲结点有专业、教研室和学生。以课程和学生之间的关系来说,它们是一种m∶n的关系,也就是说一个学生能够选修多门课程,一门课程也可以被多个学生同时选修。

优点:

①网状数据模型可以很方便地表示现实世界中很多复杂的关系。

②修改网状数据模型时,没有层次数据模型那么多的严格限制,可以删除一个结点的双亲结点而依旧保留该结点;也允许插入一个没有任何双亲结点的结点,这样的插入在层次数据模型中除非是根结点,不然是不被允许的。

③实体之间的关系在底层中可以借助指针实现,因此在这种数据库模型中执行操作的效率较高。

缺点:

①网状数据模型的结构复杂,不易使用,且随着应用环境的扩大,数据结构越来越复杂,数据的插入、删除涉及的相关数据太多,不利于数据库的维护和重建。

②数据独立性差,由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。

(3)关系模型。

以二维表的形式表示实体及实体之间的联系的模型称为关系模型。关系模型是建立在关系代数的基础上的,因而具有坚实的理论基础,与层次模型和网状模型相比,具有数据结构单一、理论基础牢固、易学易用的特点。

关系模型对应的数据库自然就是关系型数据库了,这是目前最流行且应用最多的数据库。支持关系数据模型的数据库管理系统称为关系型数据库管理系统。如MySQL就是一种流行的关系数据库管理系统。关系模型的特征如下:

①在关系数据模型中,无论是实体还是实体之间的联系都被统一映射成一张二维表。在关系模型中,操作的对象和结果也都是二维表。

②一个关系通常对应一张表,例如职工基本信息登记表(见表1.2)。

表1.2 职工基本信息登记

③表中的一行称为一个元组;表中的一列称为一个属性,例如表1.2所示的表有6列,对应6个属性(职工号,姓名,年龄,性别,部门,入职时间);元组中的一个属性值称为分量。表中的某个属性组可以唯一确定一个元组,该属性组称为码。例如表1.2中的职工号可以唯一确定一名职工,也就成为本关系的码。属性的取值范围称为域。例如,职工性别的域是(男,女),职工年龄的域是(18~60岁)。

④关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系来实现。如图1.17学生选课系统中,学生和课程之间表现出一种多对多的关系,那么我们需要借助第三张表,也就是选课表将二者联系起来。

⑤关系必须是规范化的,关系型数据库要求其每一个分量必须是不可分的数据项,即不允许表中表的存在。

【例1-4】下面以学生选课系统为例进行说明。学生选课系统的实体包括学生、教师和课程。其联系有学生与课程之间的多对多的关系,教师与课程之间多对多的关系。学生可以同时选修多门课程,一门课程也可以同时被多个学生选修;一位教师可以讲授多门课程,一门课程也可以由多个教师讲授。因此它们之间的联系如图1.17所示。

图1.17 学生选课系统示意图

我们将图1.17映射为关系数据模型中的表格,如图1.18所示。从图1.18中可以看到学生与课程之间的多对多联系以及教师和课程之间的多对多联系被分别映射成了二维表格。其中选课表中的stu_id和cour_id分别是引用学生表的stu_id和课程表的cour_id,教课表也与选课表类似。

图1.18【例1-4】中对应的表关系

优点:

①关系模型是建立在严格的数学概念基础上的,包括逻辑计算、数学计算等。

②关系模型的概念单一。无论实体还是实体之间的联系都用关系来表示。对数据库的检索和更新结果也是关系(表)。所以其数据结构简单、清晰,用户易懂易用。

③关系模型的存取路径对用户隐蔽,其数据语言的非过程化程度较高,用户只需要指出“干什么”或“找什么”,不必详细说明“怎么干”或“怎么找”,从而大大提高了数据的独立性和安全保密性,也减少了程序员的工作量和数据库开发的工作量。

缺点:

①查询效率低,由于存取路径对用户是隐蔽的,因此其查询效率往往不如层次模型和网状模型。

②由于其查询效率较低,因此需要数据库管理系统对查询进行优化,增加了开发DBMS的难度。

关系模型的数据操作主要包括查询、插入、删除和更新数据。这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括实体完整性、参照完整性和用户自定义的完整性。这些内容将在第二章中做详细介绍。

1.3.5 物理层数据模型

物理层数据模型也称为数据的物理模型(Physical Model),其描述数据在存储介质上的组织结构,是逻辑模型的物理实现,即每一种逻辑模型在实现时都有与其对应的物理模型。物理模型是数据库最底层的抽象,它确定数据的物理存储结构、数据存取路径,调整、优化数据库的性能。物理模型的设计目标是提高数据库性能和有效利用存储空间。物理层数据模型不但由DBMS的设计决定,而且与操作系统、计算机硬件密切相关。物理数据结构一般都不同用户公开,用户不必了解其细节。

概括而言,这三个不同的数据模型之间既相互独立,又相互关联。从现实世界到概念模型的转换是由数据库设计人员完成的;从概念模型到逻辑模型的转换可以由数据库设计人员完成,也可以用数据库设计工具协助设计人员完成;从逻辑模型到物理模型的转换主要是由数据库管理系统完成的。