§3.1 数据库技术基础
一、概述
数据库技术产生于20世纪60年代末,是信息社会的重要基础技术之一,也是当前社会应用最为广泛的计算机技术之一,数据库对于当今的任何部门都是至关重要的。数据库可以保存各种记录,并在WWW中向顾客和客户展示数据,数据库还支持许多其他的商务处理。同样,在许多科学研究的核心中也需要数据库,如天文学数据、生物信息数据等,还有许多其他的科学研究人员收集到的数据,都需要数据库存储和使用。现在,数据库的建设规模、数据库的信息量大小及使用程度均已成为一个国家信息化程度的标志。
数据库技术是应数据管理任务的需要产生的,数据的处理是指各种数据进行收集、存储、加工和传输的一系列活动的总和。数据管理技术经历了人工管理、文件系统和数据库系统三个阶段。同时,数据库技术的使用,也使得计算机应用从以科学计算为主转向以数据处理为主,并从而使计算机得以在各行各业乃至家庭普遍使用。数据管理的人工管理阶段主要是指计算机产生初期,没有操作系统、没有软件、数据的输入和输出主要是批处理为主的阶段,之后出现了操作系统和专门用于数据管理的文件系统,不过文件系统虽然也能处理持久数据,但是文件系统不提供对任意部分数据的快速访问,而这对数据量不断增大的应用来说是至关重要的。为了实现对任意部分数据的快速访问,就要研究许多优化技术。这些优化技术往往很复杂,是普通用户难以实现的,所以就由系统软件(数据库管理系统)来完成,而提供给用户的是简单易用的数据库语言。由于对数据库的操作都由数据库管理系统完成,所以数据库就可以独立于具体的应用程序而存在,从而数据库又可以为多个用户所共享。因此,产生了以数据的独立性和共享性为重要特征的数据库系统。数据共享节省了大量人力物力,为数据库系统的广泛应用奠定了基础。
40多年来,数据库在理论、实现技术上均有了很大的发展,不断有许多数据库管理系统(DBMS)问世,性能也越来越好,功能越来越强大。如,著名的Oracle、dBASEⅡ、Sybase、Informacs及SQL Sever等。数据库管理系统为多个层次的用户提供数据的安全性保护、数据的完整性检查、并发控制及数据库恢复等功能。
数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由应用系统、数据库、数据库管理系统、用户和数据管理员组成。
数据库应用系统是指直接面向用户的、由各种宿主语言编写而成的、具有某种功能的软件系统。数据库是指长期储存在计算机内的、有组织的、可共享的数据集合。这些数据为多个应用服务,独立于具体的应用程序。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。
数据库管理系统是一种系统软件,它建立在操作系统之上,主要功能是维护数据库并有效地访问数据库中任意部分数据,对数据库的维护包括保持数据的完整性、一致性和安全性。
数据管理员主要负责监督、管理和维护整个数据库系统,使数据能被任何有权使用的人有效使用。
数据库各组成部分的构成如图3.1所示。
图3.1 数据库系统组成
数据模型是数据库系统的核心和基础,各种机器上实现的数据库管理系统都是基于某个数据模型实现的,第一个数据库系统是由1969年美国的IBM公司开发了的,被称为IMS。这是一个层次数据库系统,在数据库系统发展史上有着重要的地位。同年,美国的数据系统语言委员会(CODASYL)下属的数据库任务组提出了著名的DBTG报告,并在1970年提出了该报告的修订版。这份报告定义了数据库操纵语言、模式定义语言和子模式定义语言的概念。数据库操纵语言用于编写操纵概念视图的应用程序,模式定义语言用来编写概念视图和内部视图相结合的模式程序。在20世纪70年代,开发了许多遵循DBTG报告的网状数据库系统,如:IDMS,IDS,DMSIIOO等。
到了20世纪70年代初,E.F.Codd提出了著名的关系数据模型的概念,这个概念提出了关系代数和关系演算的思想,从而也开创了关系数据库时代。在整个20世纪70年代,关系数据库从理论到应用都取得了辉煌成果。关系数据库从理论上确立了完整的关系理论、数据依赖理论以及关系数据库的设计理论等;而在应用方面,许多公司在这个理论的基础上推出了许多著名的关系数据库系统,如:System R,Igres,Oracle等。在1986年美国国家标准协会(ANSI)通过了关系数据库查询语言SQL的文本标准。进入20世纪80年代以后,数据库技术随着计算机的普及和深入应用,与相关领域结合产生了许多新的应用领域,如:计算机辅助设计、计算机辅助教学、计算机辅助制造、计算机辅助工程、计算机集成制造、办公自动化、地理信息处理、智能信息处理等。这些新的应用领域反过来又对数据库系统提出了新要求。如面向对象的要求、数据推理和演绎、模糊查寻、高度并行要求、多媒体存储和检索等,出现了许多新的思想,但由于没能设计出一个统一的数据模型来表示这些新型数据及其相互联系,所以只能是一种百家争鸣的局面,如产生了演绎数据库(逻辑数据库,知识库)、面向对象数据库、工程数据库、时态数据库、地理数据库、模糊数据库、积极数据库等新型数据库的研究。到20世纪80年代后期和90年代初期,出现了面向对象数据库系统,如:GemStone,VBASE,ORION,Iris等。到目前为止,真正的新一代数据库系统还没有出现。
二、数据模型
模型是现实世界特征的模拟和抽象。计算机不可能直接处理现实世界中的具体事物,所以人们必须实现把具体事物转换成计算机能够处理的数据。在数据中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。我们无论处理任何数据,都要先对此数据建立模型,然后在此基础上进行处理。
根据模型的应用目的,可将模型可以分为概念模型和数据模型,如图3.2所示。
图3.2 模型抽象过程
概念模型是指按用户的观点来对数据和信息建模,也可认为是用户对客户世界的反映和抽象,这个模型主要用于数据库设计。另一类是数据模型,主要指按计算机系统的观点对数据建模,即按计算机系统的要求组织和管理数据的模型,它包括网状模型、层次模型、关系模型等,主要用于DBMS的实现。
1.数据模型的组成要素
数据模型是严格定义的概念的集合,一个数据模型通常由数据结构、数据操作和完整性约束三部分组成。
(1)数据结构
数据结构是数据模型最基本的部分,它确定数据库的逻辑结构,研究构成数据模型的对象之间的关系,这些对象是数据库的组成成分,它们包括两类,一类是与数据类型、内容、性质有关的对象;一类是与数据之间联系有关的对象。
在数据库系统中,人们通常按其数据结构的类型来命名数据模型。数据结构是对系统静态特性的描述。
(2)数据操作
数据操作提供对数据库的操作手段,是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。
(3)数据的完整性规则
数据的完整性约束条件是一组完整性规则的集合,是对数据库有效状态的约束。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。
2.最常用的数据模型
目前,数据库管理系统所支持的数据模型有三种,它们是:层次模型、网状模型、关系模型。
其中层次模型和网状模型统称为非关系模型,或格式化模型,它们的共同点是与图论中的图对应。在非关系模型中,实体用记录表示,实体的属性对应记录的数据项(或字段)。实体之间的联系在非关系模型中转换成记录之间的两两联系。非关系模型中数据结构的单位是基本层次联系。所谓基本层次联系是指两个记录以及它们时间的一对多(包括一对一)的联系。
(1)层次模型
树是图的特殊形式,层次模型可用树形结构来表示各类实体以及实体间的联系,如图3.3所示。
层次数据模型的数据结构有以下特点:
①有且只有一个节点没有双亲节点,这个节点称为根节点。
②根以外的其他节点有且只有一个双亲节点。
根据层次模型的定义我们可以看到,这是一个典型的树状结构。在层次模型中,每个节点表示一个记录类型,记录(类型)之间的联系用节点之间的连线(有四边)表示,这种联系是父子之间的一对多的联系。现实世界中的联系靠父子之间的一对多联系来体现。这就使得层次数据库系统处理一对多的实体联系非常直接和方便,但对多对多联系的表示却非常困难。
层次模型的一个基本特点是,任何一个给定的记录值只有按其路径查看时,才能显示出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。
图3.3 层次模型
层次模型的数据操作主要可以完成查询、插入、删除和修改的操作。而对完整性约束,层次模型的数据结构将产生如下的约束:进行插入操作时,如果没有相应的双亲节点值就不能插入子女节点值。例如,如果新来一名医生,但尚未分配到某个科室时,这时就不能将新医生插入到数据库中。这样对于一些不明确父节点值的节点无法完成插入操作,对现实应用有一定限制。
进行删除操作时,如果删除双亲节点值,则相应的子女节点值也被同时删除。现实应用中,有时我们删除父节点,但并不希望其所有子节点都被删除。例如,撤销了一个科室,成立一个新的科室,但原来医生的记录并不希望删除。
进行修改操作时,应修改所有相应记录,以保证数据的一致性。
(2)网状模型
在现实世界中事物之间的联系更多的是非层次关系的,用层次模型表示非树形结构是很不直接的,我们可以用节点之间有多种联系方式的图来表示其中的关系,网状模型是以图为基础的数据模型,如图3.4所示。
图3.4 网状模型
在数据库中,把满足以下两个条件的基本层次联系集合称为网状模型:
①允许一个以上的节点无双亲;
②一个节点可以有多余一个的双亲。
从定义可以看出,层次模型中子女节点与双亲节点的联系是唯一的,而在网状模型中这种联系可以不唯一。网状模型更容易表示多对多的联系,数据的联系十分密切。网状模型的数据结构在物理上易于实现,效率也较高,但编写应用程序时比较复杂,程序人员必须熟悉数据库的逻辑结构,考虑存取路径问题,存取均缺乏灵活性。
如对患者就诊这一事件建立数据模型,一个患者在挂号时对医生有多个选择,而某一医生可以被多个患者选中,因此患者与医生之间是多对多的联系,可以考虑采用网状模型。
网状数据模型的完整性约束没有层次模型严格,如其操作和完整性约束有:①支持记录码的概念,码即唯一标志记录的数据项的集合。
②保证一个联系中双亲记录和子女记录之间是一对多的联系。
③可以支持双亲记录和子女记录之间的某些约束条件。例如,有些子女记录要求双亲记录存在才能插入,双亲记录删除时也连同删除。
(3)关系模型
关系模型是目前最重要的一种数据模型。关系数据库系统均采用关系模型作为数据库的组织方式,与其他两种数据模型相比,关系模型更易为编程人员和数据库管理人员所接受。
关系数据模型的数据结构,是建立在严格的数学概念的基础上的。关系模型是由若干个关系模式组成的集合。每个关系模式逻辑结构都是一张二维表,它由行和列组成,如表3.1所示。
表3.1 关系模型(二维表)
在非关系模型的层次和网状模型中,节点之间的联系主要通过指针来完成的,而在关系数据模型中,节点之间的联系是通过实体的属性之间的内在联系及关键码来实现的。但关系模型中的各个关系模式不是简单孤立的几张二维表,它必须在设计时满足一定的要求,如概念单一化要求,关系规范化要求等。这我们在下一节中将重点讲述。
下面是几个关系模型中的重要概念:
关系:一个关系对应通常说的一张表。
元组:表中的一行即为一个元组。
属性:表中的一列即为一个属性,给每一个属性起一个名称即为属性名。
主码:表中的某个属性组,它可以唯一确定一个元组。
域:属性的取值范围。
分量:元组中的一个属性值。
关系模式:对关系的描述,一般表示为: 关系名(属性1,属性2,…,属性n)
关系模型的操作是建立在有关系代数基础上的,关系模型的数据操作也是集合操作,即“一次一集合”,操作对象和操作结果都是关系,关系操作主要包括查询、插入、删除和修改数据,这些操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类,即实体完整性、参照完整性和用户定义的完整性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。