购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3 组织层数据模型

组织层数据模型是从数据的组织形式的角度来描述信息的,目前,在数据库技术发展过程中用到的组织层数据模型主要有:层次模型(hierarchical model)、网状模型(network model)、关系模型(relational model)、面向对象模型(object oriented model)和对象关系模型(object relational model)。组织层数据模型是按组织数据的逻辑结构来命名的,比如层次模型采用树形结构。各数据库管理系统是按其所采用的组织层数据模型来分类的,比如层次数据库管理系统就是用层次模型来组织数据,而网状数据库管理系统就是用网状模型来组织数据。

1970年美国IBM(国际商业机器)公司研究员E.F.Codd首次提出了数据库组织层数据模型的关系模型,开创了关系数据库和关系数据理论的研究,为关系数据库技术奠定了理论基础。关系模型从20世纪70—80年代开始到现在已经发展得非常成熟,本书的重点也是介绍关系模型。20世纪80年代以来,计算机厂商推出的数据库管理系统几乎都支持关系模型。

一般将层次模型和网状模型统称为非关系模型。非关系模型的数据库管理系统在20世纪70年代至20世纪80年代初非常流行,在数据库管理系统的产品中占主导地位,但现在已逐步被采用关系模型的数据库管理系统所取代。20世纪80年代以来,面向对象的方法和技术在计算机各个领域,包括程序设计语言、软件工程、信息系统设计、计算机硬件设计等方面都产生了深远的影响,也促进了数据库中面向对象模型的研究和发展。

2.3.1 层次模型

层次模型(也称为层次数据模型)是数据库管理系统中最早出现的数据模型。层次数据库管理系统采用层次模型作为数据的组织方式。层次数据库管理系统的典型代表是IBM公司的IMS(Information Management System),这是IBM公司1968年推出的第一个大型的商用数据库管理系统。

层次模型用树形结构表示实体和实体之间的联系。现实世界中许多实体之间的联系本身就呈现出一种自然的层次关系,如行政机构、家族关系等。

构成层次模型的树由结点和连线组成,结点表示实体,结点中的项表示实体的属性,连线表示相连的两个实体间的联系,这种联系是一对多的。通常把表示“一”的实体放在上方,称为父结点;把表示“多”的实体放在下方,称为子结点。将不包含任何子结点的结点称为叶结点,如图2-4所示。

图2-4 层次模型示意图

层次模型可以直接、方便地表示一对多的联系。但在层次模型中有以下两点限制:

1)有且仅有一个结点无父结点,这个结点即为树的根。

2)其他结点有且仅有一个父结点。

层次模型的一个基本特点是,任何一个给定的记录值只有从层次模型的根部开始按路径查看时,才能明确其含义,任何子结点都不能脱离父结点而存在。

图2-5所示为一个用层次结构组织的学院数据模型,该模型有4个结点,“学院”是根结点,由学院编号、学院名称和办公地点三项组成。“学院”结点下有两个子结点,分别为“教研室”和“学生”。“教研室”结点由教研室名、室主任和室人数三项组成,“学生”结点由学号、姓名、性别和年龄四项组成。“教研室”结点下又有一个子结点“教师”,因此,“教研室”是“教师”的父结点,“教师”是“教研室”的子结点。“教师”结点由教师号、教师名和职称三项组成。

图2-5 学院的层次模型

图2-6所示为学院的层次模型对应的一些值。

图2-6 学院的层次模型对应的一些值

层次模型只能表示一对多的联系,不能直接表示多对多的联系。但如果把多对多联系转换为一对多联系,又会出现一个子结点有多个父结点的情况(如图2-7所示,学生和图书原本是一个多对多联系,在这里将其转换为两个一对多联系),这显然不符合层次模型的要求。一般常用的解决办法是把一个层次模型分解为两个层次模型,如图2-8所示。

层次数据库是由若干个层次模型构成的,或者说它是一个层次模型的集合。

图2-7 有两个父结点的结构

图2-8 将图2-7分解成两个层次模型

2.3.2 网状模型

在现实世界中事物之间的联系更多的是非层次的,用层次模型表达现实世界中存在的联系有很多限制。如果去掉层次模型中的两点限制,即允许一个以上的结点无父结点,并且每个结点可以有多个父结点,便构成了网状模型。

用图的结构表示实体和实体之间的联系的数据模型就称为网状模型,也称为网状数据模型。在网状模型中,同样使用父结点和子结点这样的术语,并且同样一般把父结点放置在子结点的上方。图2-9所示为几种不同形式的网状模型形式。

图2-9 网状模型示意图

从图2-9可以看出,网状模型父结点与子结点之间的联系可以有多个,因此,就需要为每个联系命名。在图2-9a中,结点R3有两个父结点R1和R2,可将R1与R3之间的联系命名为L1,将R2与R3之间的联系命名为L2。图2-9b、c与此类似。

由于网状模型没有层次模型的两点限制,因此可以直接表示多对多联系。但在网状模型中多对多联系实现起来太复杂,因此一些支持网状模型的数据库管理系统对多对多联系还是进行了限制。例如,网状模型的典型代表CODASYL(Conference On Data System Language)就只支持一对多联系。

网状模型和层次模型在本质上是一样的,从逻辑上看,它们都是用连线表示实体之间的联系,用结点表示实体;从物理上看,层次模型和网状模型都是用指针来实现文件以及记录之间的联系,其差别仅在于网状模型中的连线或指针更复杂、更纵横交错,从而使数据结构更复杂。

网状模型的典型代表是CODASYL,它是CODASYL组织的标准建议的具体实现。层次模型是按层次组织数据,而CODASYL是按系(set)组织数据。所谓“系”可以理解为已命名的联系,它由一个父记录型和一个或若干个子记录型组成。图2-10所示为网状模型的一个示例,该示例中包含四个系,S-B系由学生和借阅记录构成,B-B系由图书和借阅记录构成,B-W系由图书和图书编写记录构成,W-B系由作者和图书编写记录构成。实际上,图2-7所示的具有两个父结点的结构也属于网状模型。

图2-10 图书借阅的网状模型示例

2.3.3 关系模型

关系模型(也称为关系数据模型)是目前最重要的一种数据模型,关系数据库就是采用关系模型作为数据的组织方式。关系模型源于数学,它把数据看成二维表中的元素,而这个二维表在关系数据库中称为关系。关于关系的详细讨论将在第3章进行。

用关系(表格数据)表示实体和实体之间的联系的模型称为关系模型。在关系模型中,实体本身以及实体和实体之间的联系都用关系来表示,实体之间的联系不再通过指针来实现。

表2-1和表2-2所示分别为“学生”和“借阅”关系模型的数据结构,其中“学生”和“借阅”间的联系是通过“学号”列实现的。

表2-1 学生

表2-2 借阅

在关系数据库中,记录值仅仅构成关系,关系之间的联系是靠语义相同的字段(称为连接字段)值表达的。理解关系和连接字段(即列)的思想在关系数据库中是非常重要的。例如,要查询“李勇”的借阅情况,则首先要在“学生”关系中得到“李勇”的学号值,然后根据这个学号值再在“借阅”关系中找出该学生的所有借阅情况。

对于用户来说,关系的操作应该是简单的,但关系数据库管理系统本身是很复杂的。关系操作之所以对用户很简单,是因为它把大量的工作交给了数据库管理系统来实现。尽管在层次数据库和网状数据库诞生之时,就有了关系型数据库的设想,但研制和开发关系数据库管理系统却花费了比人们想象的要长得多的时间。关系数据库管理系统真正成为商品并投入使用要比层次数据库和网状数据库晚十几年。但关系数据库管理系统一经投入使用,便显示出了强大的活力和生命力,并逐步取代了层次数据库和网状数据库。现在耳熟能详的数据库管理系统,几乎都是关系数据库管理系统,比如Microsoft SQL Server、Oracle、MySQL、Access等都是关系型的数据库管理系统。

关系模型易于设计、实现、维护和使用,它与层次模型和网状模型的最根本区别是,关系模型采用非导航式的数据访问方式,数据结构的变化不会影响对数据的访问。 Z8yl9of1l4LWnjLDMhMyUUBdbWJCS+LPvHd83mHFho9Ykzb0+DDHJd9KoBbplT3I

点击中间区域
呼出菜单
上一章
目录
下一章
×