- 数据库云平台理论与实践
- 马献章
- 1788字
- 2021-03-19 15:47:23
1.2 数据库的分类
根据数据库的数据模型(Data Model),可将数据库分为层次型(Hierarchical Model)、网状型(Network Model)和关系型(Relational Model)3种。根据数据库的关系与否,可将数据库分为关系型(SQL)和非关系型(NoSQL)数据库。
1.2.1 层次型数据库
层次模型是数据库系统中最早出现的数据模型,层次数据库系统采用层次模型作为数据的组织方式,程序通过树形结构对数据进行访问。20世纪60年代末,层次模型数据库系统较为流行。层次数据库系统的典型代表是IBM公司的IMS(Information Management System)数据库管理系统,这是1968年IBM公司推出的第一个大型的商用数据库管理系统,曾经得到广泛的使用。
层次模型用树形结构来表示各类实体以及实体间的联系。现实世界中许多实体之间的联系本来就呈现出一种很自然的层次关系(如图1-1所示),如家族关系、行政机构等。
图1-1 层次模型数据库示例图
这种结构,父记录(上层的记录)同时拥有多个子记录(下层记录),子记录只有唯一的父记录。任何一个给定的记录值只有按其路径查看时才能显出它的全部意义,没有一个子记录值能够脱离双亲记录值而独立存在。对于实体间联系是固定的,且预先定义好的应用系统,宜采用层次模型来实现。正因如此,这种非常简单的结构在碰到复杂数据的时候往往会造成数据的重复,出现数据的冗余问题(易产生不一致性)。
层次型数据库把数据通过层次表现出来,虽然这样的结构能够提高查询效率,但相应的,不理解数据结构也就无法实施高效查询。层次模型的数据结构组织使得它适应变化的能力非常差,当层次结构发生变化时,程序也需要进行相应的变化。
1.2.2 网状型数据库
现实世界中广泛存在的事物及其联系大多具有非层次的特点,若用层次结构来描述,既不直观,也难以理解,于是人们提出了另一种数据模型——网状模型,产生了网状型数据库。
网状模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系(称之为复合联系)。因而,网状模型可以更直接地去描述现实世界,而层次模型实际上是网状模型的一个特例。
网状数据库通过使子记录可以同时拥有多个父记录来表现数据之间的关系这一方法解决了层次型数据库只有通过父子关系来表现数据之间的关系导致的数据冗余问题(如图1-2所示)。
图1-2 网状模型数据库示例图
在网状数据库中,数据间比较复杂的网状关系使得数据结构适应外部变化的能力很低,而且随着应用环境的扩大,数据库的结构变得越来越复杂,不利于最终用户掌握。和层次结构数据库一样,网状型数据库对数据结构有很强的依赖性,不理解数据结构就无法进行相应的数据访问,加重了程序员编写应用程序的负担。
1.2.3 关系型数据库
关系模型是目前使用最广泛的一种数据模型。1969年,科德(Edgar Frank Codd)在IBM的内部刊物上发表了IBM Research Report(IBM研究报告)论文,首次提出了关系数据模型。这一划时代的论文当时并未引起人们的高度重视,外界反响平平。1970年6月,科德在美国计算机学会会刊Communication of the ACM上发表了A Relational Model of Data for Large Shared Data Bank(大型共享数据库的数据关系模型),终于引起了大家的关注。科德所提出的关系数据模型的概念成为了当今关系型数据库的基础。关系模型的数据结构示例如图1-3所示,虚线表示隐式联系。
关系型数据库把所有的数据以二维表的形式通过行和列表示出来,给人更直观的感受。关系型数据库不同于层次型数据库,可以使多条数据根据值来进行关联,这样就使数据可以独立存在,使得数据结构的变更简单易行,有效地解决了层次型数据库存在的数据结构变更困难的缺陷。关系型数据库不同于网状型数据库,它将作为操作对象的数据和操作方法(数据之间的关联)分离开来,消除了对数据结构的依赖性,让数据和程序的分离成为可能,有效地解决了网状型数据库难以克服的“不理解数据结构就无法对数据进行读取”的缺陷。这使得数据库可以广泛地应用于各个不同领域,进一步扩大了数据库的应用范围。
图1-3 关系模型的数据结构示例图
在用户看来,关系模型中数据的逻辑结构是一张二维表格,它由行和列组成。表1-1所示的是学生登记表。
表1-1 学生登记表
自20世纪80年代以来,计算机厂商新推出的数据库管理系统几乎都支持关系模型,非关系型系统的产品也都加上了关系接口。数据库领域当前的研究工作也都是以关系方法为基础。关系型数据库已成为目前应用最广泛的数据库系统,现在广泛使用的小型数据库系统Access、FoxPro、Dbase,大型数据库系统Oracle、SQL Server、Informix、Sybase、虚谷、珠峰、达梦等都是关系数据库系统。