版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章数据库系统概论1.1数据库系统应用
1.2数据库系统与文件系统
1.3数据视图
1.4数据模型简介1.5数据库语言1.6数据库系统体系结构1.7数据库管理系统
1.8数据库系统习题1.1数据库系统应用数据库技术是一门既传统而又年轻的计算机科学技术,说其传统是因为它已经有几十年的发展历史,说其年轻是因为Internet时代赋予其新的使命和新的要求。数据库系统是存储、管理和提供数据服务的系统,它以一种简单、规范、便捷的方式存储管理数据。数据库的应用领域非常广泛,它已经成为当今企业信息建设的重要组成部分。其典型的应用领域如下:
(1)金融业:用于存储管理债券、股票等金融票据的持有、销售信息等等。
(2)销售业:存储管理客户、产品、销售、供应等信息。
(3)制造业:用于管理供应链,追踪产品的产量、库存及客户的订单信息。
(4)大学:存储管理学生的信息、课程及成绩,图书管理信息等。
(5)航空业:用于存储订票和航班的信息。航空业是最早使用地理上分布的方式应用数据库的行业之一,通过各个终端或其他数据网络来访问中央数据库系统。
(6)电信业:用于存储管理通话记录,生成账单报表,维护预付电话卡余额信息等。从20世纪60年代开始,数据库逐步进入社会应用的各个领域。早期的人们很少直接与数据库打交道,但是通过月底的工资表、银行的账单却间接地与数据库打交道。后来随着数据库应用范围的进一步扩大,人们开始直接和数据库进行交互。比如用户通过浏览器查询航班数据库、了解航班的起降时间和票价;学生通过校园网络查询课程数据库,确定新学期的选课情况。大多数信息系统提供了友好的应用界面,它隐藏了数据库的内部细节,使得大多数用户没有意识到自己正在和数据库打交道。今天,访问数据库已经成为人们生活中最基本的组成部分。1.2数据库系统与文件系统对大量数据的管理最初是采用文件管理方式,即将成批数据单独组织成文件存储在外部存储设备上。假设银行储蓄系统要保存所有客户和储蓄账户的信息,在没有出现数据库系统前保存信息常用的方法就是将它们保存为操作系统中的文件。为了便于用户对这些客户信息进行操作,系统程序员必然根据用户的需求设计一系列的文件操作程序,包括处理账户存款、贷款的程序;创建新账户、注销账户的程序;查询账户余额的程序以及打印报表的程序等。但是用户的需求是变化的,比如系统要求增加支票类型的账户。除了要增加新的文件来保存支票账户,还要修改程序或增加新的应用程序。比如储蓄账户不存在的透支问题出现在支票账户中了,必须增加新程序来解决需求的变化。这导致更多的数据文件和处理数据的程序增加到系统中。这个应用实例是典型的文件处理系统,该系统由传统的操作系统支持,信息存储到不同文件中,通过不同的应用程序将信息从适当文件中取出或放回适当文件中。文件系统存在许多弊端:
(1)数据冗余和不一致。银行系统的软件要运行很长时间,在这个过程中需求会发生变化,程序开发人员也会有调整。因此不同的数据可能采用不同的文件格式保存,使用不同的程序存取必然导致相同的信息可能在多个文件中重复存储。例如,客户的个人信息既出现在储蓄账户文件中又出现在支票账户文件中。这种信息冗余不仅导致了存储和访问工作开销增大,还可能出现数据不一致性。比如工作人员在储蓄账户记录中修改了某客户的地址而没有修改支票账户的内容。
(2)数据孤立。 在文件系统中由于信息保存在不同的文件中,因此很难看到全局的信息,比如银行的高级管理人员想了解当前所有的储蓄账户和支票账户的转账情况,应用程序员也很难编写检索这类多种文件格式的新程序。
(3)数据访问困难。如果银行管理人员想查询某一地区开户人员中小于30岁的储蓄账户的信息,而这种新的查询任务以前从来没有过。因此只能有两种办法解决,一种办法是这个管理员在所有客户的巨大列表中努力寻找,这是个繁杂、易错的过程;另一种办法是要求数据处理部门编写新的应用程序来解决,这需要一定的等待时间。这两个方案都令人失望。如果几天后,这个管理人员需要储蓄账户和支票账户的信息,查询条件不改变,则上述问题又再次出现。
(4)完整性问题。文件中保存的数据必须满足某些特定的一致性约束。比如银行新增账户时要提供身份证号码,应用程序中增加相应的代码来保证信息的约束。当没有身份证的客户开户时将给予提示。如果加入新的约束时,必须修改应用程序,当涉及多个不同文件时,这种修改过程是个噩梦。
(5)原子性问题。计算机系统如同其他的系统一样可能出现故障。例如客户A要把自己储蓄账户的钱转账到客户B的支票账户中。如果转账过程中计算机系统出现了故障,A账户的钱减去了而B账户的钱没有增加,这是现实中绝对不能允许的事情,可见文件系统不能保证数据的一致性,这就需要账户的“加”和“减”这两种操作必须是要么做、要么不做的原子性操作。可是在文件系统处理阶段,保持原子性是很难实现的。
(6)并发访问异常。现实世界是个并发的世界,经常出现多个用户修改同一数据的事情。例如账户A中原来已有5000元,此时两个客户同时向账户A转账,他们分别向账户A转入500元和1000元。假设转账操作是先读取账户A的余额,然后在其上增加或减少金额,最后将结果写回。如果两个转账程序并行执行,开始读到账户A的余额都是5000元,然后分别加上自己的转账数,再分别写回5500元和6000元。由于没有并发控制,后写入的数据将覆盖前面写入的数据,导致账户A最后的结果要么是5500元要么是6000元,但是本转账过程真正的结果应该是账户A拥有6500元。正是由于文件系统存在很多不足,加速了数据库系统的发展。数据库系统很好地解决了文件系统中存在的问题,并能提供以下特性:
(1)数据独立性(DataIndependence)。所谓的独立性,是指应用程序独立于数据的逻辑表示和物理存储。将文件系统中定义的数据文件从应用程序中抽取出来,由数据库系统统一实现和管理,因此当数据逻辑结构和物理存储结构发生变化时无需对应用程序进行修改。
(2)有效访问数据(EfficientDataAccess)。数据库系统中采用复杂的技术,通过优化系统资源配置和合理分布数据等工作来提高大规模数据量的存储与检索效率。
(3)数据完整性与安全性(DataIntegrityandSecurity)。数据库管理系统利用数据完整性约束或限制来保证数据库的数据不受系统故障和用户误操作而导致的数据破坏。同时,数据库系统采用安全认证、数据加密、访问控制等技术来实现数据的安全性要求。
(4)并发访问与故障恢复(ConcurrentAccessandCrashRecovery)。多用户同时访问同一数据的时候,产生了并发访问,这可能导致数据的冲突。数据库系统可保证并发访问的顺利进行,解决并行化所带来的问题,同时还会让用户感觉到好像自己在独享系统。1.3数据视图视图(View)从最原始的意义上可以理解为一个人看(既“视”)某个物体所得到的图像。如果将这个概念引申到数据库领域中,则认为不同的用户对同一数据库不同部分的理解,称为该数据库的一个视图,或数据视图。这里的用户可以是普通计算用户或是不同的应用程序,他们对同一数据库所关心的数据可能是不同的,就如同很多人对同一事物有不同的视角。数据视图不仅是一个重要的概念,也是数据库系统中的一个实用的工具。例如,对于学生信息数据库来说,档案管理部门、教务管理部门和卫生保健部门各自关心不同的数据,档案管理人员一般只想查看学生的基本档案信息;教务管理人员只关心学生的成绩和课程信息;卫生保健人员关心的是与学生健康有关的数据。因此有了3个不同的局部数据视图。如果想同时观察学生的全部数据记录,就得把3个不同的数据视图合并形成学生的全局数据视图。局部数据视图和全局数据视图都是学生数据的一种逻辑表示结构,这种结构易于实现计算机的访问操作。数据库中的所有数据最终是存储在物理磁盘上的,如何在磁盘上存储数据、如何将数据分布在多个磁盘上或网络存储介质上、使用什么样的底层文件系统等都是数据库系统要解决的问题。从物理存储角度来看,数据有不同的存储结构。这些存储结构又叫数据库的物理视图。因此在数据库中存储的数据具有物理视图和逻辑视图两个侧面。而逻辑视图又有局部数据视图和全局数据视图。1.3.1数据抽象数据抽象(DataAbstraction)是指人们对现实事物属性的一种数据抽取的过程。数据库系统必须能够快速检索用户所需要的数据,因此设计者必须使用复杂的数据结构来表示现实的数据。而数据库用户大部分不具备专业的计算机知识,因此系统通过多个层次的抽象来隐藏复杂性。数据抽象采用多层抽取的思想,每一层都是其上一层的基础,这个过程是将复杂变简单的渐进过程。最后用户面对最高层的抽象结果,也就是最简单的数据形式而不用关心复杂的细节。首先,物理层抽象是抽象的最低层,它描述数据库中的数据是如何在硬盘上保存的。物理层详细描述了存储的数据结构。在物理层之上,以物理层为基础抽取一个逻辑层,在逻辑层中描述数据库中存储数据的类型及相互的关系。视图层抽象是抽象的最高层次,只描述了数据库中某一部分的数据及其关系。例如企业员工信息数据库中保存了全部员工的数据,财务部人员只关心在职人员的信息,人事退休管理部门只关心退休人员信息等。视图层抽象提供了同一数据库的多个视图。数据抽象的3个层次如图1.1所示。图1.1数据抽象层次结构1.3.2实例与模式数据库所包含的数据往往是一个应用部门、集团或领域中各方面的数据,其涉及若干个现实中的对象,包括人员信息、资产信息、财务信息、物流信息、销售信息等等。这些信息存在固有的数据属性,同时信息之间也存在着天然的关联。数据库的设计与实现必须把这些属性和关联用计算机可以支持的模型表示出来。在一个数据库应用系统内描述对象的数据属性以及对象之间关联的数据框架的集合称为数据库模式。数据库设计工作就是要构建有效的数据库模式。数据库模式构建完成之后,就要向其中添加数据,随着时间的推移,数据操作会引起信息动态变化,但每一时刻数据库中的数据都会保持一个一致性状态。特定时刻存储在数据库中的所有数据的总和称为数据库模式在这一时刻的一个实例。数据库模式和实例的区别可通过计算机程序设计中的概念加以类比说明。模式对应于程序设计语言中的变量声明,而每个变量在特定时刻都有特定的值,程序中变量在某一时刻的值是模式的一个实例。例如银行账户数据库的模式固定后,某一天的账户数据就是该模式的一个实例,第二天就有新的客户建立新账户或者老客户注销账户,因此数据的实例很容易变化,而模式也会发生改变,但是相对固定。数据库系统根据抽象的层次不同存在几种不同的模式。在物理层描述数据库的物理存储设计是物理模式;逻辑模式是在逻辑层描述数据库的全部框架设计;数据库在视图层有子模式的概念,子模式描述了数据库不同的视图。根据分层设计的思想,程序员使用逻辑模式来设计应用程序,不直接操作模式,因此逻辑模式隐藏了物理模式的复杂性,同时也解除了应用程序与物理模式的耦合性。当物理模式改变时应用程序无需修改,这就是物理数据独立。1.4数据模型简介数据是反映客观世界的事实并可以区分其特征的符号,包括字符、数字、文本、声音、图形、图像、图表、图片等,都是现实世界中客观存在的,可以输入到计算机中进行存储和管理的数据。数据可以描述现实世界中一个客观对象,如一个企业员工的情况:工号、姓名、性别、年龄、部门等。数据通过对客观事物特性的定量化描述来支持计算机系统对客观事物的存储、加工和处理。数据模型是描述数据、数据之间关系、数据语义及一致性约束的概念集合,也是构建数据库系统的基础。下面介绍常见的几种数据模型。1.4.1实体-关联模型实体-关联模型(E-R,Entity-Relationship)是分析现实世界抽象关系的有效工具之一。该模型认为现实世界是由被称为实体(Entity)的元素和实体之间的联系构成的。实体是现实世界中存在的可以相互区别的事物或者活动的数据抽象。比如员工信息管理中,职工、经理、部门、账户等都是实体。关联(Relationship)是指实体之间的相互关系,反映了现实中事物之间的联系,通常表示一种活动。比如一张订单、一场比赛、一种选题、一种销售等都是联系。属性(Attribute)是描述实体或关联特征的单元,一个实体或关联通常具有多个特征,需要多个相应的属性来描述。比如描述“课程”这个实体具有课程名称、任课教师、开设专业、学分等属性。实体集(EntitySet)是指同一类实体的集合。例如一个班级的全体学生是一个实体集。实体型(EntityType)是对同类实体的共用特征的抽象定义。例如人的共有特征为:姓名、年龄、性别、籍贯、学历等,这5个特征就定义了人这个实体型。实体值(EntityValue)就是符合实体型定义的每个具体的实体。例如人的实体型使用“姓名、年龄、性别、籍贯、学历”5个特征定义,而“李明,33,山东,教师,硕士”就是该实体型的一个实体值,它所描述的是现实中具体的人。E-R模型可以用E-R图进行描述,E-R图由以下几个元素构成。
(1)矩形:代表实体集。
(2)椭圆:代表属性。
(3)菱形:代表实体集之间的关联。
(4)线段:链接属性与实体集或链接实体集与关联的连线。作为例子,我们看一下高校学生管理数据库中学生选课的部分,对应的E-R图如图1.2所示。在图中有学生和课程两个实体,每个实体包括一些属性,而这些属性并不是实体的全部属性,只是与该系统相关的部分。两个实体之间还存在“选课”的联系。图1.2E-R图示例1.4.2关系模型关系模型是一种简单的二维表格结构,概念模型中的实体及实体之间的联系都可以转换为二维表形式。每个二维表称为一个关系,一个二维表的表头,即表的所有列的标题称做关系的型或者是关系的结构,二维表内容称做关系的值。关系中的每一行数据(记录)称做元组,而它的每一列数据称做一个属性,列标题称做属性名。例如表1.1展示了银行系统中的客户表,它被称为客户关系。客户代码、姓名、地址、电话称为客户关系的属性,(09001001,张明,上海市杨浦区翔殷路ABC号,1234567890)是客户关系的一个元组。表1.2描述了账户信息表,表1.3描述的存款表是账户与客户之间的联系。表1.1客户表(customer)表1.2账户表表1.3存款表从这3个表中可以看出,张明和李亮共用一个账户,可能是合作关系;而客户季新芳开了两个账户,账户余额分别为700和900。关系模型是当前商用数据库的主导数据模型,有着坚实的理论支持,建立在集合论、数理逻辑、关系理论等严格的数学基础上。此外,关系数据模型结构简单,符合人的思维方式,大多数数据库系统都是基于这种关系模型的。1.4.3对象模型对象数据模型是数据库系统中一种新型的逻辑数据模型,是数据库技术和面向对象设计思想相结合的产物。传统的数据模型主要用于存储数值和文本等由若干数据项构成的数据,因此这些数据以记录为基本形式就能满足需要。随着数据类型越来越复杂,以及图形、图像、声音、视频等多媒体数据类型的应用普及,基本的记录形式已经无法满足应用需要,因此出现了对象数据模型。对象数据模型表达信息的基本单位是对象,对象不仅描述实体的状态特征,而且还包含对象的行为特征。比如描述学生实体的对象,不仅包含学号、姓名、年龄、性别、专业等表示学生状态的属性特征,而且还包含显示学生姓名、入学、注册、修改专业等行为特征。对象具有封装性、继承性和多态性。这些特性都是传统数据模型所不具备的,也是对象数据模型的本质特征。封装性是指将对象的属性和行为隐藏在一起,一个对象只能发送消息给另一个对象,另一个对象收到消息后做出响应,执行封装在内部的方法,把操作结果返回给该对象。继承性是指某一类型的对象可以继承另一种或一些类型对象的部分或全部特征,这里的特征包括对象的属性和方法。图1.3展示了对象的继承结构。图1.3对象继承结构图1.3所展示的继承关系中,最上面的人员是父对象模型,下端的均为子对象模型。学生对象和教师对象都继承人员对象的姓名、性别、年龄等特征,同时它们可以增加自己的新的特征,例如在学生对象中增加年级、奖学金等新特征;而在教师对象中增加职称、工龄等特征。继承性提高了软件的复用性,能够加快软件更新周期和缩短研发时间。对象数据模型符合人类认识世界的规律,但是目前还不很成熟完善,对象数据库实现比较复杂,效率还有待提高,还需要不断发展。1.5数 据 库 语 言数据库语言包括数据库系统的数据描述、操纵和控制语言。它是数据库管理系统为用户提供的定义、操纵、控制、维护数据库的工具,是数据库管理系统的重要组成部分。它主要包括两大部分:
(1)数据定义语言,用来定义数据库的模式;
(2)数据操纵语言,用来表达数据库的查询和更新操作。这两种类型的语言在形式上不是分离的语言,而是统一结构的数据库语言,例如目前应用最广的SQL语言。1.5.1数据定义语言数据定义语言(DDL,DataDefinitionLanguage)是建立数据库模式的工具,数据库模式是由一系列DDL表达式建立的。例如,用下面的SQL语言定义一个保存学生信息的表:
CREATETABLEstudent(idchar(10),namechar(20),ageinteger);数据库中底层复杂的存储结构和访问方式都被隐藏起来,用户不用关心这些数据模式实现的细节,而只需要掌握简单的DDL语句就能完成数据库模式的建立任务。同时DDL语言提供了数据库存储的一致性约束,例如学生年龄不能小于10岁。1.5.2数据操纵语言数据操纵语言(DML,DataManipulationLanguage)方便用户访问或操作某种特定数据模式的数据。DML数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据。常见的操作有查询操作(对数据库信息进行检索)、插入操作(向数据库插入数据)、删除操作(从数据库删除数据)、更新操作(修改数据库的已有数据)。例如从数据库的客户表customer中找出客户号是09001001的客户姓名,可以使用如下SQL语句获得:
SELECETnameFROMcustomerWHEREcustomer-id='09001001';这个查询指定了客户表中这个特定数据模式的检索操作,取出customer-id为09001001的行,并且把这些行的数据显示出来。1.5.3应用程序访问数据库机制应用程序中的DML或DDL表达式需要结合宿主语言(如C、C++、Java等)来执行,目前常用两种结合方式。第一种方式是通过提供应用程序接口(过程集)来将DML和DDL的表达式发送给数据库,执行完毕后再取回结果。开放数据库互联标准(ODBC,OpenDatabaseConnectivity)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。该标准可以支持C、C++ 等高级程序设计语言来完成对数据库系统的访问,其可以支持目前主流的数据库系统,如SQLServer、Oracle、Infomix、MySQL等等。Java数据库连接(JDBC,JavaDataBaseConnectivity)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。第二种方式是通过扩展宿主语言的语义,使得嵌入其中的DML或DDL可以运行在宿主语言的程序中。通常用一个特殊字符作为DML调用的开始,并且通过预处理将DML表达式转化为宿主语言中的过程调用;也可以构建全新的可视化开发环境来支持数据库应用系统的开发,这种方式的典型代表有微软的ADO.NET开发环境和Oracle的DEVELOPER2000系列等。1.6数据库系统体系结构1.6.1数据库的分层结构三级分层结构的组织形式是一个典型的数据库的组织结构,如图1.4所示。这个结构是于1975年在美国ANSI/X3/SPARC(美国国家标准协会的计算机与信息处理委员会中的标准计划与需求委员会)数据库小组的报告中提出的。
1.三级数据视图数据抽象的3个级别又称为三级数据视图,是不同层次用户(人员)从不同角度所看到的数据组织形式。
(1)外部视图。这是第一层的数据组织形式,是应用程序员开发应用程序时所使用的数据组织形式。外部视图是应用程序员所看到的数据的逻辑结构,是用户数据视图。外部视图可有多个。这一层的最大特点是以各类用户的需求为出发点,构造满足其需求的最佳逻辑结构。
(2)全局视图。这是第二层的数据组织形式,是面向全局应用的全局数据的组织形式,是数据库管理人员所看到的全体数据的逻辑组织形式。
(3)存储视图。这是第三层的数据组织形式,是面向存储的即按照物理存储最优的策略的数据库组织形式,是系统维护人员所看到的数据结构。外部视图是全局视图的逻辑子集,全局视图是外部视图的逻辑汇总和综合,存储视图是全局视图的具体实现。三级视图之间的联系由二级映射实现。外部视图和全局视图之间的映射称为逻辑映射,全局视图和存储视图之间的映射称为物理映射。
2.三级模式为了在计算机系统中实现数据库的三级组织形式,必须用计算机能识别的语言对其进行描述。DBMS提供的DDL可以精确定义数据视图的模式(Scheme),与三级视图对应的是三级模式。数据库系统的三级模式结构是指数据库系统由外模式、模式和内模式三级构成,如图1.4所示。图1.4数据库的三级模式结构
(1)模式(Schema)。定义全局视图的模式称为逻辑模式,简称模式,是对数据库中全体数据的逻辑结构和特征的描述。它是数据库系统模式结构的中间层,它既完全独立于数据的物理存储细节也完全独立于具体的应用程序。一个数据库只有一个模式。定义模式既要定义数据的结构,还要定义数据间的联系,更要定义与数据有关的安全性和完整性约束。
(2)外模式(ExternalSchema)。定义外部视图的模式称为外模式,也称子模式。它是数据库用户看到的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。外模式是模式的一个子集。一个数据库可以有多个外模式。不同的数据库用户都拥有自己的外模式。外模式通过对不同用户开放不同数据的方式提供了保证数据库安全性的手段。每个用户只能访问其所对应的外模式中的数据,而数据库中的其余部分都是不可见的。
(3)内模式(InternalSchema)。定义存储视图的模式称为内模式,又称物理模式。它是对数据库的全体数据的物理存储结构和存储方式的描述。用DBMS提供的内模式DDL定义。存储结构的描述包括记录值的存储方式(顺序存储、Hash方法、B树结构等)、索引的组织方式等。
3.二层映像数据库系统的三级模式是对数据的3个级别的抽象,而这些层次间的联系和转换则由数据库系统的模式映像机制来完成。数据库系统在这三级模式间提供了二层映像:(1)外模式/模式映像;(2)模式/内模式映像。二层映像如图1.4所示。
1)外模式/模式映像模式描述的是数据库的全局逻辑结构,外模式描述的是数据库的某个局部逻辑结构。一个模式对应多个外模式。多个外模式可能具有共同的局部数据。所有外模式都按照一定规则定义在同一模式上。那么如何定义模式与外模式间的关系呢,这需要外模式/模式映像机制。当模式发生改变时,只需修改相应的外模式/模式映像,而外模式保持不变。应用程序是根据外模式所定义的逻辑结构开发书写的,由于有外模式/模式映像,所以当模式发生改变时不会影响应用程序的改变。同理,当应用程序和外模式改变时,也不会影响模式的变化。
2)模式/内模式映像数据库只有一个模式,也只有一个内模式。模式/内模式映像定义了模式所描述的全局逻辑结构与内模式所描述的存储结构之间的关系。模式所定义的全局逻辑结构可以存储在一个磁盘上、多个磁盘上、甚至是多个计算机上。数据库存储在数据库运行阶段也可以调整,如把数据存放在磁盘阵列上。有了模式/内模式映像,不管数据库物理存储环境如何改变,只需修改模式/外模式映像的定义即可适应,而不用修改数据库模式。同理,数据库模式的改变也不会影响内模式的改变。1.6.2体系结构中的关键要素数据库系统往往由不同的功能模块构成,这些模块一起协同工作来完成数据库的功能。下面分别介绍这些关键部件。
1.存储管理器存储管理器是数据库中管理存储底层数据并负责与文件管理器进行交互的模块。原始数据通过文件系统存储在磁盘上,这部分功能由操作系统的文件管理器来实现。存储管理器将不同的DML语句翻译成底层文件系统命令提交给文件系统完成。存储管理器通过这种方式负责数据库中数据的存储、检索和更新。存储管理器包括:
(1)权限及完整性管理器。负责检测是否满足完整性约束,检查试图访问数据的用户权限等。
(2)事务管理器。它负责保证即使发生了故障,数据库也能保证数据的正确性或者一致性的状态;保证并发事务的正确执行而不会发生冲突。
(3)文件管理器。负责磁盘空间的分配,管理用于表示数据库存储信息的数据结构。
(4)缓冲区管理器。负责将数据从磁盘上提取到内存中,保证数据库系统可以处理比内存容量大很多的数据。除此之外,存储管理器还实现了以下几种数据结构,作为系统物理实现的组成部分:
(1)数据文件。负责保存数据库自身数据。
(2)数据字典。负责存储数据库结构的元数据,尤其是数据库模式。
(3)索引。用于加快对特定数据项的访问速度。
2.查询处理器查询处理器负责将用户的查询表达式编译成一个查询方案,再进行查询优化,并选择代价最小的方案编译成低级指令,然后执行这些指令并将结果返回。它主要包括如下模块:
(1) DDL解释器。负责解释DDL语句并将其保存在数据字典中。
(2) DML编译器。将查询语言中的DML语句翻译为一个查询方案。通常同一个查询请求可以解释为多种查询方案,DML编译器负责查询优化,寻求代价最小的方案执行。
(3)查询求值引擎。负责执行由DML编译器生成的低级指令。图1.5展示了这些部件的关系。图1.5关键要素之间的关系1.6.3数据库的独立性数据库系统的发展独立于应用系统和物理存储系统的限制,按照自己特有的技术发展,同时它又为应用系统和底层存储系统提供统一的标准供相关研究机构和企业使用。这样,在IT业界独立地并行运作了3个行业:应用程序开发环境企业(如微软、SUN公司)、数据库管理系统开发厂商(如Oracle、Sybase公司)、专业存储企业(如EMC、HDS等)。3个行业的产品相互配合在一起用于实现数据库应用系统,并且它们各自的发展变化不会影响其他合作伙伴的核心技术的发展。从这些角度来看数据库应该具备独立性。数据库的独立性可以从内部和外部两个角度来看。数据库内部的独立性体现在其数据独立性(DataIndependence)。数据独立性可以用三级模式和二层映像结构来解释说明。数据独立性是指数据库的某级模式(内模式、模式、外模式)的变化不会影响其相邻模式的改变,因为这些变化被它们之间的映像所屏蔽。由于数据库存在二层映像,所以数据库具有两个数据独立性:
(1)数据的逻辑独立性是指修改模式而无需修改外模式或应用程序,保证了数据与应用程序之间的独立性。应用程序是根据外模式所定义的逻辑结构而开发书写的,由于有外模式/模式映像,所以当模式发生改变时不会影响应用程序的改变。
(2)数据的物理独立性是指修改内模式而无需修改模式,进而根据数据的逻辑独立性,也无须修改外模式和应用程序,从而保证了数据和应用程序之间的物理独立性。数据库外部的独立性体现在数据库系统的独立存在架构。当今,随着信息社会的飞速发展,数据呈爆炸性趋势发展,数据库系统管理着各个领域的海量信息。一个数据库系统可能服务于多个应用系统、甚至服务于未来的某些新的应用,因而数据库系统的建设应该具有独立的运行机制和扩展机制。另一方面,随着数据规模的增加,势必要增加存储设备、甚至使用网络存储设备,这也要求数据库的构建必须适应存储环境的改变,而这种改变不会影响数据库系统的效率。机群数据库技术是这一方面的主要代表之一。1.6.4集中式体系结构与C/S体系结构数据库系统的集中体系结构是指使用大型机(或高性能服务器)来提供系统的所有功能,包括用户应用程序、操作界面、应用业务逻辑服务及所有的DBMS功能。数据库系统的用户通过计算机终端访问集中在一个地点上的中央计算机系统,所有的数据处理都要在中央计算机系统中完成,只有显示信息和控制信息从远程中央计算机发送至用户终端。数据库集中式体系结构如图1.6所示。图中所示的终端往往没有独立的计算资源,只有简单的通信、显示和输入模块。数据库集中式体系结构在数据库应用的早期阶段较为流行,其存在许多缺点,如中央计算机系统造价昂贵、终端距离有限、可支持的用户数目有限和可扩展性差等。图1.6集中式体系结构客户/服务器体系结构C/S(Client/Server)是一种分布式计算模式,与传统的集中式体系结构相比,具有较好的可伸缩性和较优的性价比。 C/S体系结构中分为前端和后端两个部分。前端由客户机担任,负责用户界面的处理以及向服务器发送用户请求和接收服务器返回的处理结果;后端为服务器,主要承担数据库的管理,根据前端用户请求进行数据处理并返回处理结果。图1.7显示了多级逻辑分层C/S体系结构。图中所示客户端和服务器端通过计算机网路互联。在服务器端分布多台服务器以便更高效地完成服务工作。应用逻辑服务器用于负责与具体业务相关的服务,如财务分析、数据汇总、帐务整理等。数据库系统服务器负责数据库的访问、事务的并发控制、数据的维护、数据库的备份与恢复、数据库安全性完整性保护等工作。当应用逻辑服务器接受了用户对数据库的访问时,将向数据库系统服务器发送服务请求。C/S结构通过计算机网络连接客户端和数据库服务端,增加了系统的灵活性和可扩展性,通过多个小型服务器实现服务系统具有良好的性能价格比。C/S结构的主要缺点是要在客户端安装应用程序,并且客户端的应用程序比较庞大,因而影响了系统应用的方便性。一种改进的应用模式是B/S结构(Browser/Server),这种结构的主要思想是把所有应用程序配置在应用逻辑服务器上,客户端仅仅配置通用的支撑软件,如浏览器。客户端通过Web访问应用逻辑服务器,应用逻辑服务器负责所有的应用计算服务。图1.7C/S体系结构1.6.5分布式体系结构数据库分布式体系结构是把计算机网络中物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库。每个被连接起来的数据库单元称为站点或结点。分布式体系结构中有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。如图1.8所示,在分布式体系结构中数据是存储在计算机网络中的多个场地,各个场地具有一定的自治性,能够完成本场地的局部应用。而分布在各个场地的物理数据在逻辑上映射为一个整体,可以被所有用户共享,并由一个统一的DBMS进行管理。图1.8分布式体系结构1.6.6异构数据库体系结构异构数据库系统是与应用相关的多个数据库系统的集合,可以实现数据的共享和透明访问,每个数据库系统在加入异构数据库系统之前本身就已经存在,拥有自己的DMBS。异构数据库的各个组成部分具有自身的自治性,实现数据共享的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制。异构数据库系统的异构性主要体现在以下几个方面:
(1)计算机体系结构的异构。各个数据库可以分别在大型机、小型机、工作站、PC或嵌入式系统中运行。
(2)基础操作系统的异构。各个数据库系统的基础操作系统可以是Unix、WindowsNT、Linux等。
(3) DMBS本身的异构。构成异构数据库系统的部分可以是同为关系型数据库系统的Oracle、SQLServer等,也可以是不同数据模型的数据库,如关系、模式、层次、网络、面向对象,函数型数据库共同组成的一个异构数据库系统。1.6.7其他数据库体系结构并行数据库(PDBS,ParallelDatabaseSystem)是以并行计算机为基础,以高性能和可扩展性为目标,利用多处理器结构提供比大型机系统高得多的性能价格比和可用性的数据库系统。并行数据库存在3种基本的结构:共享内存结构(Shared-Memory)、共享磁盘结构(Shared-Disk)和无共享资源结构(Shared-Nothing)。并行数据库的一个特例是机群数据库系统,它利用计算机机群技术来支撑数据库系统,以便实现海量信息的高效访问和存储管理。目前机群数据库已经有成熟的产品可用,如Oracle11g以后版本推出的OracleRAC技术。面向对象是一种认识方法学,也是一种新的程序设计方法学。把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。在数据库中提供面向对象的技术是为了满足特定应用的需要。随着许多基本设计应用(如MACD和ECAD)中的数据库向面向对象数据库的过渡,面向对象思想也逐渐延伸到其他涉及复杂数据的应用中,其中包括辅助软件工程(CASE)、计算机辅助印刷(CAP)和材料需求计划(MRP)。这些应用如同设计应用一样在程序设计方面和数据类型方面都是数据密集型的,它们需要能识别这类数据的存储技术,并能对相近数据备份进行调整。现在主流的数据库产品已经开始支持面向对象的特征。1.7数据库管理系统数据库管理系统DBMS(DataBaseManagementSystem)是对数据库中的数据进行存储和管理的软件系统。DBMS包括存储、管理、检索和控制数据库中数据的各种语言和工具,是一套系统软件。现在世界上已经有很多成熟的DBMS软件,例如,大家熟悉的FOXPRO、dBASE等是小型DBMS软件;大型的DBMS软件如IBM的DB2、Oracle公司的Oracle11g、微软的SQLServer,以及Informix、Sybase公司的数据库产品等等。
DBMS的主要功能如下:
(1)数据库的定义功能。DBMS提供模式DDL(描述概念模式的数据定义语言)定义数据库的三级结构、二级映像、数据的完整性约束、安全保密限制等约束。
(2)数据库的操纵功能。DBMS提供DML(数据操纵语言)以实现对数据的操作。基本的数据操作有两类:检索(查询)和更新(包括插入、删除、更新)。在DBMS中应包括DML的编译程序或解释程序。依照语言的级别,DML又可分成过程性DML和非过程性DML两种。
(3)数据库的保护功能。DBMS对数据库的保护主要通过以下4个方面实现:①数据库的恢复。在数据库被破坏或数据不正确时,系统有能力把数据库恢复到正确的状态。②数据库的并发控制。在多个用户同时对同一个数据进行操作时,系统应能加以控制,防止破坏数据库中的数据。③数据的完整性控制。用于保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作。④数据安全性控制。用于防止未经授权的用户存取数据库中的数据,以避免数据的泄露、更改或破坏。
(4)数据库的维护功能。包括数据库的数据载入、转换、转储,数据库的改组以及性能监控等功能。
(5)数据字典。数据库系统中存放三级结构定义的数据库称为数据字典(DD)。对数据库的操作都要通过数据字典才能实现。DD中还存放数据库运行时的统计信息,例如记录个数、访问次数等。上面是一般DBMS所具备的功能,通常在大、中型计算机上实现的DBMS功能较强、较全,在微型计算机上实现的DBMS功能较弱。1.8数 据 库 系 统数据库系统(DBS,DataBaseSystem)是一个实际可运行的存储、维护和向应用系统提供数据的软件系统,它是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。1.8.1DBS构成数据库系统由如下部分构成:
(1)数据库。即存储在磁带、磁盘、光盘或其他外存介质上,按一定结构组织在一起的相关数据的集合。数据库中的数据,按照一定的数据模型组织、描述和存储,具有比较小的冗余度、较高的数据独立性和扩展性,并可以被多个用户所共享。
(2)数据库管理系统(DBMS)。它是一组能完成描述、管理、维护数据库的程序系统。它能对数据库进行有效的管理,实现存储管理、安全性管理、完整性管理,为数据的访问和保护提供强大的处理功能,同时也为用户提供一个方便、快捷的管理和操作平台。
(3)人员。人员包括应用程序员、数据库管理员(DBA)和用户3部分。应用程序员负责设计和编写具体的应用程序模块,并进行调试和安装。数据库管理员(DBA)负责全面管理和控制数据库系统,决定数据库中的信息内容和结构;决定存储结构和存取策略;定义数据的安全性要求和完整性约束条件;监控数据库的使用和运行;负责对数据库进行改进和重构。用户是数据库系统的使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024事业单位专业技术岗位设置与职称评定管理合同3篇
- 《情境教学法在高中《哲学与文化》教学中的运用对策研究》
- 《南海西北部陆架海域内孤立波特征及机理研究》
- 2024年版防汛储备物资采购及仓储服务合同3篇
- 2023年郑州大学第五附属医院招聘工作人员笔试真题
- 2024版土地一级开发与投资合作合同3篇
- 2024年度企业生产流程优化服务合同3篇
- 2023年清华大学公管学院干部教育中心招聘笔试真题
- 2024年度物业管理委托招标合同3篇
- 2024年度南京大学与XX企业合作研究合同3篇
- 2024至2030年中国肉食鹅数据监测研究报告
- 中国高血压防治指南(2024年修订版)核心要点解读
- 花道-插花技艺养成学习通超星期末考试答案章节答案2024年
- 工程质量安全手册-住建部编
- 部编版二年级语文上册第七单元质量评价试卷(含答案)
- 2024网络数据安全管理条例全文解读课件
- 2024年2024婚内财产协议书模板正规范本
- 《县级(区域)医疗资源集中化运行规范 第1部分:集中审方中心(征求意见稿)》编制说明
- 现浇混凝土桩板墙施工方案
- 分布式光伏发电项目EPC总承包 投标方案(技术方案)
- 纺织设备科技创新与产业升级考核试卷
评论
0/150
提交评论