还剩24页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第一章数据库系统概论本章目的在于使读者对数据库系统的根本知识能有一个较为全面的了解,为今后的学习和工作打下基础本章重点介绍了有关数据库结构和数据库系统组织的根本知识和根本概念,以及常见的三种类型的数据库系统的特点重点介绍关系数据库的有关知识数据管理技术开展史
1.1随着生产力的不断开展,社会的不断进步,人类对信息的依赖程度也在不断地增加数据作为表达信息的一种量化符号,正在成为人们处理信息时重要的操作对象所谓数据处理就是对数据的收集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列工作全部过程的概述数据处理的目的就是使我们能够从浩瀚的信息数据海洋中,提取出有用的数据信息,作为我们工作、生活等各方面的决策依据数据管理则是指对数据的组织、编码、分类、存储、检索和维护,它是数据处理的一个重要内容中心数据处理工作由来以久,早在1880年美国进行人口普查统计时,就已采用穿孔卡片来存储人口普查数据,并采用机械设备来完成对这些普查数据所进行的处理工作电子计算机的出现以及其后其硬件、软件的迅速开展,加之数据库理论和技术的开展,为数据管理进入一个革命性阶段提供有力的支持根据数据和应用程序相互依赖关系、数据共享以及数据的操作方式,数据管理的开展可以分为三个具有代表性的阶段,即人工管理阶段、文件管理阶段和数据库管理阶段[11人工管理阶段这一阶段发生于六十年代以前,由于当时计算机硬件和软件开展才刚刚起步,数据管理中全部工作,都必须要由应用程序员自己设计程序完成去完成由于需要与计算机硬件以及各外部存储设备和输入输出设备直接打交道,程序员们常常需要编制大量重复的数据管理根本程序数据的逻辑组织与它的物理组织根本上是相同的,因此当数据的逻辑组织、物理组织或存储设备发生变化时,进行数据管理工作的许多应用程序就必须要进行重新编制这样就给数据管理的维护工作带来许多困难并且由于一组数据常常只对应于一种应用程序,因此很难实现多个不同应用程序间的数据资源共享存在着大量重复数据,信息资源浪费严重
[2]文件管理阶段这一阶段发生于六十年代,由于当时计算机硬件的开展,以及系统软件尤其是文件系统的出现和开展,人们开始利用文件系统来帮助完成数据管理工作,具体讲就是数据以多种组织结构(如顺序文件组织、索引文件文件组织和直接存取文件组织等)的文件形式保存在外部存储设备上,用户通过文件系统而无需直接与外部设备打交道,以此来完成数据的修改、插入、删除、检索等管理操作;使用这种管理方式,不仅减轻进行数据管理的应用程序工作量,更重要地是,当数据的物理组织或存储设备发生变化时,数据的逻辑组织可以不受任何影响,从而保证了基于数据逻辑组织所编制的应用程序也可以不受硬件设备变化的影响这样就使得程序和数据之间具有了一定的相互独立性但由于数据文件的逻辑结构完全是根据应用程序的具体要求而设计,它的管理与维护完全是由应用程序本身来完成,因此数据文件的逻辑结构与应用程序密切相关,当数据的逻辑结构需要修改时,应用程序也就不可防止地需要进行修改;同样当应用程序需要进行变动时,常常又会要求数据的逻辑结构进行相应的变动在这种情况下,数据管理中的维护工作量也是较大的更主要的是由于采用文件的形式来进行数据管理工作,常常需要将一个完整的、相互关联的数据集合,人为地分割成若干相互独立的文件,以便通过基于文件系统的编程来实现来对它们的管理操作这样做同样会导致数据的过多冗余和增加数据维护工作的复杂性例如人事部门、教务部门和医务部门对学生数据信息的管理,这三个部门中有许多数据是相同的,如姓名、年龄、性别等,由于是各部门均是根据自己的要求,建立各自的数据文件和应用程序,这样不仅造成了大量的相同数据重
1.
3.1模型的组成我们都知道数据是表达信息的一种重要的量化符号,是信息存在的一种重要形式而所谓数据模型则是数据特征的一种抽象它不是描述个别的数据,而是描述数据的共性一般来讲,数据模型包含两方面内容,它们是
(1)数据的静态特性,这主要包括数据的根本结构、数据间的联系和数据中的相互约束等特性;
(2)数据的动态特性,这主要包括对数据操作的方法在数据库应用系统中,建立反映客观信息范畴的数据模型是数据库应用系统设计中最为重要的,也最根本的步骤之一,它是连接客观信息世界和数据库系统数据逻辑组织的桥梁也是计算机专业人员与非计算机专业的用户之间进行交流的共同基础这里我们将要介绍的数据模型就是实体联系数据模型(又称E—R数据模型),它与传统的数据模型有所不同E—R数据模型是面向现实世界,而不是面向实现方法的,它主要是用于描述现实信息世界中数据的静态特性而不涉及数据的处理过程但由于它简单易学,因而在数据库系统应用的设计中,得到了广泛应用E-R数据模型是在1976年提出的,它为数据库系统应用的设计人员提供了三个根本的模型描述成分,它们是实体、联系和属性E-R数据模型就是利用这三个成分来描述反映一个客观信息世界内容的数据模型在数据库应用系统设计中,通常还需要将这一数据模型转换为各数据库管理系统所支持的具体数据模型,即层次数据模型、网状数据模型和关系数据模型等由此我们也可以看出E-R数据模型是从现实信息世界到数据库系统中数据逻辑组织结构设计之间的一个中间阶段,只所以是这样,主要是因为如果直接将现实世界的信息,构造成某个DBMS所能接受的数据逻辑组织结构,其工作往往是十分复杂而且难度也很大,应用设计人员不仅要考虑现实世界各种信息及其内在的联系,以及各种具体应用对数据处理的要求,而且还要考虑采用某种特定的数据库系统后,所面临的各种条件限制,这样就大大增加了应用系统设计的复杂性下面我们就介绍一下E—R数据模型中的三个根本要素,即实体、联系和属性的有关根本知识
[1]实体数据是用来描述现实世界中各种事物的而要描述的对象是形形色色的,有具体的,也有抽象的;有物理上存在的,也有是概念性的;如张
三、汽车、运动、兴趣、神灵等这些对象的共同特征是可以相互有区别,否则就会被认为是同一种对象但凡可以相互区别开并可以被我们所识别的事、物、概念等对象均可认为是实体它是具有共同某些特征的一类具体实体,即可认为是一实体集合,对这一集合中所有实体共同特征的描述,称为实体型实体集中的各具体实体,称为该实体型的值或实体值对于同一实体集中的不同实体其特征值不完全相同,并由此可加以区分如学生实体集,其实体型可以通过学号、姓名、年龄等特征加以描述学生实体集中的不同的学生实体,通过其不同的学号又可加以区分例如学号为881001姓名为李平的学生是一个具体实体,显然不同于学号为881002姓名为王明的学生这个具体实体
[2]联系在现实世界中,任何事物都不是孤立存在的实体之间存在着各种相互联系,例如教师与学生之间至少存在一种联系,即“教学〃联系,商店与商品之间存在一种‘供给联系,这些都是不同类型的实体之间存在的联系还有一种联系是存在于同一类型实体之间的,例如学生实体型里,某一学生是班长,显然他和其他学生间也存在着一种“领导〃联系在E—R数据模型中,通常将不同实体型之间存在的联系归纳成三种不同类型,它们是
(1)一对一的联系其定义是对于实体型A中的一个实体,在实体型B中至多有一个实体与之对应,反之对于实体型B中的一个实体,在实体型A中至多有一个实体与之对应这样的联系被称为是一对一的联系例如两个实体型分别为国家和总统,显然,一个国家只有一个总统,而一个总统只能对应于一个国家;又如系和系主任两个实体型,一个系只能有一名系主任,而一个系主任只能领导一个系这些显然都是两种实体型之间一对一联系的情况通常又将这种联系记为1:1的联系
(2)一对多的联系其定义是对于实体型A中的一个实体,实体型B中可以有若干个实体与之对应;反之,对于实体B中的一个实体,则实体型A中只能有一个实体与之对应这样的联系被称为是一对多的联系,例如两个实体型分别为系和教师,一个系可以有若干教师,一个教师只能对应一个系,显然这是两种实体型之间一对多的联系通常将这种联系记为1N的联系1:1的联系有时可看成是1N的联系的一种特殊情况
(3)多对多的联系其定义是对于实体型A中的一个实体,实体型B中可以有若干个实体于之对应;反之,对于实体型B中的一个实体,则实体型A中也有若干个实体与之对应,这样的联系被称为是多对多的联系例如两个实体型分别为教师和课程,一个教师可以教若干门课,一门课又可以有若干个教师讲通常将这种联系记为M:N的联系以上介绍的三种类型的联系不仅可以用于描述二个不同类型的实体,还可以用于描述多个不同类型的实体如在现实世界中,存在着许多多个实体型相互之间都有联系的情况如教师、课程、学生三个实体型之间就存在一种联系,一个教师可以教若干门课,一门课又可以有若干个教师教授;一个教师可以教若干学生,一学生又可以有若干个教师教;一门课可以有若干学生选,一学生又可以选若干门课有时为了方便我们也可以将这三个实体型之间联系,分解成每两个实体型之间均存在一个多对多的联系最后我们再介绍一种较为特殊的联系,这就是同一实体型中的不同的具体实体之间也可以存在有某联系,如职工实体型,在这一实体型中的实体有普遍职工,也有经理,经理与职工之间有一种领导与被领导的关系在E—R数据模型中,通常我们将这种特殊的联系,称为I SA联系
[3]属性实体型是对实体集合中所有实体共同描述特征的集合,这些实体所共有的描述特征就称为实体的属性如学生实体型,其共有的描述特征通常有学号、姓名、年龄、性别等,它们都是学生实体型的属性这些属性的一组值就表示了一个具体的实体在一个具体的实体型中,其中的每一个属性都有其取值范围,这一范围称为属性的值域一个属性的值域可以是整数、浮点数、字符串等如学生实体型中的年龄属性的值域就是一定区间中的整数,而姓名属性的值域就是符合一定要求的字符串等实体型中的某个(些)属性的取值可以用来唯一区分实体型中具体实体,如学生实体型中的学号属性的取值就可以用来区分每一个学生这种属性又可称为该实体型的标识码不仅实体型有属性,联系也可以有属性,如学生和课程这两个实体型,“选课〃是它们之间的一种联系,学生选修某门课程取得了某个成绩,显然成绩描述是的一个属性,但它既不是学生实体型中的一个属性,也不是课程实体型中的一个属性而成绩属性的具体取值,既依赖于某个具体的学生,又依赖于某个具体的课程,所以我们将成绩属性定义为是学生和课程这两个实体型之间选课联系的属性又如机器和零件这两个实体型,“构造〃是它们之间的一种联系,数量这一属性,即需要多少数量的零件构造某一个机器,则是构造这一联系的属性充分认识和理解联系可以有属性这一概念,对于正确地建立或理解E—R数据模型,以及建立或理解数据库的数据逻辑组织结构都具有十分重要的意义实体、属性和联系三个根本要素的概念是有明确区分的,但是对于某个具体数据对象,究竟它应该被认为是实体,还是属性或联系,常常需要根据具体应用背景和用户的观点,方可确定
1.
3.2模型的表示前面,我们介绍E—R数据模型中的三个根本的要素,这里我们将介绍使用并描述E—R数据模型使用E—R数据模型来分析描述现实信息世界中的各种信息对象的主要分析步骤如下
(1)首先根据数据库系统应用的整体要求,确定所涉及的现实信息世界中的所有信息对象的范围
(2)根据第一步骤的结论,确定能够描述所耍求所有信息对象的各实体及属性
(3)根据
(1)、
(2)二个步骤的结论,确定能够描述所耍求所有信息对象的各实体间的联系
(4)根据
(3)步骤的结论,确定能够描述所要求所有信息对象的各实体间的联系的属性在完成了上述的分析步骤,就可以获得能够描述现实信息世界的E—R数据模型为了能够形象地描述出E—R数据模型,这里我们介绍一种E—R数据模型的表示方法,即用长方型来表示实体类型,联系用菱型框及与实体型相连的线表示,将联系的类型写在线上或线的附近,在长方形框内和菱形框内分别写上实体型名称和联系名称,用椭圆表示实体类型和联系的属性,将其与所描述的相应的实体类型或联系用线相连,在椭圆框内写上属性的名称这样我们就可以得到一个能够较好地描绘出实体、实体与实体之间相互联系以及有关实体和联系属性的结构图,这个图通常就被称为E—R图获得E—R图的全部过程通常就被称为E—R图方法最后为了说明上面我们所介绍的有关E—R图的建立和表示方法,这里我们介绍一个制造工厂数据库应用系统中所涉及的局部信息对象所构成的E—R图如下图图
1.5制造工厂信息的E—R图在图中,我们共描述了五个实体类型,它们分别是部门、职工、工程、供给商和零件实体型,这些实体型用长方形加以表示并描述了这五个实体型间的相互联系,这些联系分别是部门与职工实体型间一对多的“所属〃联系;职工与工程型实体间多对多的“工作〃和一对一“管理〃两种联系;工程与零件实体型间多对多的“所需〃联系;工程、供给商和零件三个实体型间相互多对多的“供给〃联系这些联系用菱形加以表示最后作为示意,我们分别给出了零件实体型的三个属性描述和职工与工程型实体间“工作〃联系的属性描述,这些属性用椭圆加以表示目前实体关系数据模型及其E-R图方法已被广泛地应用于数据库应用系统的概念设计由于E—R图直观易懂,通过它,计算机专业人员与非计算机专业人员可以进行直接地交流和合作,同时使用E—R图,可以很方便、真实和合理地描述出一个具体数据库应用系统的信息结构,并以此作为进一步设计数据库应用系统的基础因此R前实体关系数据模型及其E-R图方法还是很受欢送的数据模型与数据库系统
1.4本节主要介绍常用的三种数据库系统所支持的数据模型有关根本知识,以及与数据模型相对应的数据库的根本情况
1.
4.1层次数据模型层次数据模型是定义在E—R数据模型基础之上一种数据模型,它与层次数据库系统中数据逻辑组织结构是一致的其具体定义如下
(1)对E—R数据模型中的联系类型加以限制,只容许是一对多的联系(包括一对一联系),在此基础上,用实体、属性和联系这三个根本要素描述客观信息世界中的信息结构
(2)若将实体抽象表示为一结点,联系抽象表示为一有向线段,无视属性,所得到的E—R数据模型的抽象拓扑图,满足有向树的定义,即M=N—1;其中M为有向线段总数;N为结点总数该拓扑图有以下特点(A)有且仅有一个结点无双亲结点,此结点称为树的根(B)除根结点外,其它结点有且仅有一个双亲结点满足以上两条约束的E—R数据模型,就可称为是层次数据模型,在层次数据模型中,用长方形表示实体型;将长方形分为若干方块,表示实体型的各属性;用有向线段表示各实体型之间的联系这描述所得到的图形称为层次数据模型的结构图图
1.6学校行政管理机构的E—R图和层次数据模型结构图在现实世界中,有许多层次结构的例子,如在行政管理部门中,部下设许多局,局下设许多处,处下设许多科等这里我们给出一学校的行政管理机构的E—R图和层次数据模型结构图,作为例如,如下图在如下图的例子中,其数据模型结构图如图的右半部所示,显然它满足树的定义,而其中各实体型之间的相互联系均为一对多的联系,所以说这是个典型的层次数据模型结构
1.
4.2层次数据库系统层次数据库系统的应用流行于七十年代,目前已较少使用,但它在数据库的开展过程中,扮演过重要的角色在这一小节,我们将介绍层次数据库的数据描述,数据操纵的定义和根本过程重点介绍层次数据模型中的实体、属性和联系在层次数据库中是如何定义和操纵的这里以I BM公司的I MS层次数据库系统为例,来说明有关的情况[11层次数据库概念层数据逻辑组织结构的设计与描述在将现实世界的信息结构用E—R数据模型(E—R图)描述出来后,再将所获得的E—R数据模型转换成层次数据模型,这时就可以进行层次数据库概念层数据逻辑组织结构的设计了在设计概念层数据逻辑组织结构时,通常将实体型定义为片断型,实体型的属性定义为片断型的字断,并通过指定片断的双亲片断,定义片断型之间的联系,由此将层次数据模型的定义描述转换为层次数据库概念层数据逻辑组织结构并将这一数据模型结构,称为是I MS中的物理数据库记录型需要说明的是,这里讲的物理数据库并不是指存储在物理设备上的数据库,即与数据库的物理存储结构无关TEACHER图L7学校行政管理机构的逻辑组织结构我们以一个简单例子来说明有关情况,如下图,这是一学校行政管理机构的逻辑组织结构,若学校有若干系(DEPT),每个系有若干班级(CLASS),每个班有若干学生(STUDENT),每个系还有若干教师(TEACHER)o其中数据模型中的片断型有DEPT、CLASS、STUDENT、TEACHER,各片断型中的字断分别是DEPT(DNO-系编号,DNA-系名,DMA-系主任),CLASS(CNO-班级编号,CSK-专业),STUDENT(SNO-学生编号,SNA-姓名,SAG-年龄),TEACHER(TNO-教师编号,TNA-教师姓名,TAG-教师年龄)整个数据结构命名为DTCSo这里TEACHER和CLASS片断型称为是DEPT片断型的下属片断,同样STUDENR称为是CLASS的下属片断DEPT又可称为是TEACHER和CLASS的双亲片断(在这里它又是根片断),TEACHER和CLASS又可互称为兄弟片断整个数据模型结构DTCS称为是一物理数据库记录型,其每一个记录值是由根片断的一个值及其所有相应的下属片断的值所组成一个物理数据库有多少个根片断值,则它就有多少个物理数据库记录如学校有20个系,它的物理数据库就有20个记录每一条记录包含了某个系及其该系所有教师、班级和学生的全部信息通常一个IM S数据库是由若干这样的物理数据库记录所构成最后我们给出上述实例的物理数据库的定义描述该描述主要包括以下内容
(1)命名物理数据库,规定存储组织方法和存取方法,指定物理设备及块的大小
(2)命名各片断,指出使用的指针类型及其片断的双亲片断
(3)命名各片断中的字段名、数据类型和长度图的物理数据库的具体描述内容如下DBD NAME=DTCS,ACCESS=HDAMDATASET DD1=DTCSHDAM,DEVICE=3330,BL0CK=1024SEGM NAME=DEPT,BYTES=20,FREQ=20,PTR二TFIELD NAME=(DNO,SEQ,U),BYTES=4,STARTS,TYPE=CFIELD NAME=DNA,BYTES=8,START=5,TYPE=CFIELD NAME=DMA,BYTES=8,START=13,TYPE=CSEGM NAME二TEACHER,BYTES=14,FREQ=50,PTR=T,PARENT二DEPTFIELD NAME二(TNO,SEQ,U),BYTES=4,START=1,TYPE二CFIELD NAME;TNA,BYTES=8,START=5,TYPE=CFIELD NAME=TAG,BYTES=2,START=13,TYPE=CSEGM NAME=CLASS,BYTES=14,FREQ=60,PTR=T,PARENT二DEPTFIELD NAME=(CNO,SEQ,U),BYTES=4,START=1,TYPE=CFIELD NAME=CSK,BYTES=10,START=5,TYPE二CSEGM NAME=STUDENT,BYTES=15,FREQ=300,PTR=T,PARENT=DEPTFIELD NAME=(SNO,SEQ,U),BYTES=5,START=1,TYPE=CFIELD NAME=SNA,BYTES=8,START=6,TYPE=CFIELD NAME=SAG,BYTES=2,START=14,TYPE二CDBDGENFINISHEND现将上述描述中的局部语句的含义说明如下
①DBD语句给所要描述的物理数据库取名,规定其数据库的存取方法,在I MS中有四种存取方法,它们是(A)层次顺序存取方法(HSAM),即将数据库中的所有片断值,按照其层次数据结构从上而下、从左而右的顺序存放(B)层次索引存取方法(HISAM),即将数据库中的所有根片断值,用指针连接起来或单独存放,并建立其索引;其它下属片断值,按照其层次数据结构从上而下、从左而右的顺序存放(C)层次直接存取方法(HDAM),即将数据库中的所有片断值,按照其层次数据结构从上而下、从左而右的顺序用指针连接起来存放(D)层次索引直接存取方法(HIDAM),即将数据库中的所有片断值,按照其层次数据结构从上而下、从左而右的顺序用指针(PTR二H)连接起来存放,或用兄弟、子女指针(PTR二T)连接起来存放,并建立根片断值的索引
②DATASET语句命名数据库所对应的数据集合,指定物理设备及其物理存储块的大小
③SEGM语句定义片断名、一个片断值的长度、片断值可能的个数、采用连接指针的类型和双亲片断名
④FIELD语句定义片断中的各字段,如字段名、字段数据类型、字段长度及排序码
⑤DBDGEN语句指示模式编译器开始产生数据库模式定义
⑥FINISH语句指示模式编译器结束产生数据库模式定义,检验生成结果
⑦END语句指示说明模式描述结束这里需要注意的是片断描述的顺序必须是按照其层次数据结构从上而下、从左而右的顺序逐个进行
[2]层次数据库用户层数据逻辑组织结构的设计与描述在IMS数据库系统中,用户层数据逻辑组织结构所定义的子模式,称为IMS逻辑数据库,它是从物理数据库中派生出来的,数据库的应用程序只能使用逻辑数据库逻辑数据库有两种类型,一种是逻辑数据库仅仅从一个物理数据库中的局部片断所构成的数据结构;另一种是逻辑数据库从一个以上的物理数据库中的局部片断所构成的数据结构这里我们只介绍第一种情况下的逻辑数据库的定义和描述设计逻辑数据库时,必须遵守以下两条规则
(1)一个逻辑数据库中的根片断必须是某个物理数据库中的根片断
(2)一个逻辑子女片断必须有一个物理双亲片断和一个逻辑双亲片断即任何物理数据库中的根片断不能成为逻辑子女片断一个物理数据库记录型中,局部带根的片断型所组成的有序集合,称为逻辑数据库记录型实际上逻辑数据库记录型是物理数据库记录型的一个带根子集同样根片断值有几个,其逻辑数据库记录就有几个一个物理数据库可以根据应用要求构成多个逻辑数据库,在图3—3的例子中,就可以选取以下六个带根子集,作为逻辑数据库,它们分别是(DEPT)、(DEPT,TEACHER)、(DEPT,CLASS)、(DEPT,CLASS,STUDENT),(DEPT,TEACHER,CLASS)、(DEPT,TEACHER,CLASS,STUDENT)最后我们从图25所示物理数据库定义中,选取DEPT和TEACHER两个片断型来构成一个逻辑数据库,每个逻辑数据库的定义包含两方面内容
(1)一个程序通讯块(PCB),它描述逻辑数据库与物理数据库之间的映射关系
(2)若干个程序说明块(PSB),它描述特定用户的局部逻辑结构逻辑数据库的具体定义描述如下PCB TYPE二DB,DBDNAME=DTCS,KEYLEN=7SENSEG NAME=DEPT,PROCOPT=GSENSEG NAME=TEACHER,PARENT=DEPT,PROCOPT=IPSBGEN LANG=PL1,PSBNAME=DETEDBEND现将上述描述中的局部语句的含义说明如下
①PCB语句定义PCB的类型,DB代表数据库类型,给出它所对应的物理数据库名字;指出所描述的逻辑数据库层次结构中所有片断排序码总长
②SENSEG语句指出逻辑数据库所对应的物理数据库片断名,指出其双亲片断名,以及对该片断的处理方式(PROCOPT),处理方式有G容许读;I容许插入;R容许修改;D容许删除等
③PSBGEN语句指出PSB的应用程序所采用的主语言,并给出PSB的名字
④END语句指示说明子模式描述结束逻辑数据库记录型类似于子模式定义,当物理数据库结构发生变化时,如果对应的逻辑数据库不变,则应用程序将不受影响提高了用户应用程序的独立性同时由于逻辑数据库只涉及到物理数据库的一局部,用户应用程序只能对这些局部的片断进行存取,这样对数据的平安性提供了一定的控制
[3]层次数据库数据操纵方法I MS数据库系统中的数据操纵语言所提供的操作有四种类型,它们是查找、插入、删除、更新下面我们简单介绍一下这些的使用这里操作假定是基于图3-3的物理数据库所定义的一个逻辑数据库,它包含有DEPT、CLASS和STUDENT三个片断型
①GU GetUnique其功能是检索出满足条件的第一个片断值例如GU DEPTCLASSCSK=应用数学上述语句执行结果是,检索出第一个专业是应用数学的班级信息
②GN GetNext其功能是从当前位置开始,检索出满足条件的一个片断值例如GN DEPTCLASSCSK=应用数学’STUDENTNS GNSTUDENTGO TONS上述语句执行结果是,检索出第一个专业是应用数学的班级中的第一个学生及其之后的所有学生信息
③ISRT Insert其功能是将用户工作区中已建立的一个片断值,插入满足要求数据库记录中例如ISRT DEPTDNO=001CLASS CNO=9010STUDENT上述语句执行结果是,将用户工作区中已建立好的一个学生片断值,插入001系9010班级中@DLET Delete其功能是删除满足条件的一片断值及其下属的所有片断值例如GHU DEPTDNO001CLASS CN0=9010,DLET上述语句执行结果是,将001系9010班级及其板级中所有学生的片断值全部删除GHU的操作功能与GU类似,只是用GHU操作检索的片断值是用于删除或修改
⑤REPL Replace其功能是修改满足条件的一片断值例如GHU DEPTDN0=’001CLASS CN0=9010修改用户工作区中的CSK值REPL上述语句执行结果是,将001系C9010班级的专业修改应用数学由以上操作例子可以看出,层次数据库的数据操作是基于检索进行的;数据检索都是从根片断开始,按照数据库的层次数据结构进行查找的因此在使用层次数据库的数据操作命令时,使用者必须熟悉层次数据库的数据层次结构如同领航员一样,在树形的河道中航行最后我们要说明的是在层次数据库的数据逻辑组织定义中,层次数据模型中的实体被定义成片断,属性被定义成片断中的字段,而实体间的联系则没有被显式定义出来,这些联系被缺省地隐含在各片断定义的说明中
1.
4.3网状数据模型网状数据模型也是定义在E-R数据模型基础之上一种数据模型,它与网状数据库系统中数据逻辑组织结构是一致的其具体定义如下1对E—R数据模型中的联系类型加以限制,只容许是一对多的联系包括一对一联系),在此基础上,用实体、属性和联系这三个数据概念描述客观信息世界中的信息结构
(2)若将实体抽象表示为一结点,联系抽象表示为一有向线段,无视属性,所得到的数据模型抽象拓扑图,满足以下要求(A)可以有一个以上的结点无双亲结点(B)至少有一个结点可以有两个或两个以上的双亲结点满足以上两条约束的E—R数据模型,就可称为是网状数据模型,在网状数据模型中,用长方形表示实体型;将长方形分为若干方块,表示实体型的各属性;用有向线段表示各实体型之间的联系这描述所得到的图形称为网状数据模型的结构图如下图,它们均为网状数据模型SET2(b)(C)图L8网状数据模型的结构图网状数据模型与层次数据模型有两点不同
(1)层次数据模型从子女实体到其双亲实体之间的联系是唯一的即一个子女实体对应于一个双亲实体;而在网状数据模型中,从子女实体到其双亲实体之间的联系可以不是唯一的,如图
1.8(a)中,R4实体就有两个双亲R2和R3因此在网状数据模型中,就不能再用指定双亲的方式来定义联系了
(2)网状数据模型中容许有复合链即两个实体型之间可以有两种以上联系,如图
1.8(c)所示R1实体和R2实体之间有两种联系SET1和SET2如R1实体为工人,R2实体为机器,SET1为“使用〃联系,SET2为“保养〃联系为了描述网状数据模型中各实体型之间不同的联系,必须给每个联系明确的定义,在网状数据库中,每个联系被定义成一个系它是网状数据库中的重要内容网状数据模型对于层次或非层次结构的事物都能比较自然地模拟描述,从这一点上讲,它比层次数据模型功能要强
1.
4.4网状数据库系统网状数据库系统的应用开始于七十年代,目前仍有少量的系统还再运行同样它在数据库的开展过程中,曾起过重要的作用在这一小节,我们将介绍网状数据库的数据描述,数据操纵的一些根本知识这里以网状数据库方面著名的DBTG报告为基础,介绍有关的情况DBTG报告为网状数据库在数据模型的描述及其语言的定义制定了标准它主要包括三方面内容,它们是
(1)模式数据描述语言标准;
(2)子模式数据描述语言标准;
(3)数据操纵语言标准
[1]网状数据库概念层数据逻辑组织结构的设计与描述在将现实世界的信息结构用E—R数据模型(E—R图)描述出来后,再将所获得的E—R数据模型转换成网状数据模型,这时就可以进行网状数据库概念层数据逻辑组织结构的设计了在设计概念层数据逻辑组织结构时,通常将实体型定义为记录型,实体型的属性定义为记录型的数据项,并将实体型之间的联系用系加以描述,由此将网状数据模型的定义描述转换为网状数据库概念层数据逻辑组织结构同记录的概念类似,记录有型和值两种形式系也有型和值之分,系型是与系所描述的联系相关联的记录型的集合,通常一个系型是由一个首记录型和若干相关的属记录型组成首记录型的一个记录值和其属记录型相应的记录值所构成的集合即为系型的系值一个系型中的首记录型有几个记录,系型的系值就有几个SI S2S3S4Cl AB BBC2B CAC3A Cab c图
1.9学生选课网状模型下面我们以一个简单例子来说明上述有关概念,如图a所示,这是一个学生选课小例子,这里有两个实体型,他们是学生实体型S和课程实体型C,它们之间的“选课〃联系是多对多的联系,为了建立其网状数据模型,如图b所示还要建立一新的记录型,即学生选课记录型SC,这样学生记录型和学生选课记录型之间的联系为一对多的联系S-SC,课程记录型和学生选课记录型之间的联系也为一对多的联系C-SC,这三个记录型中的数据项分别是S S#—学号,SN一姓名,C C#—课号,CN一课名,SC S#—学号,C#一课号,G一成绩,表小两种联系的系型分别是S—SC首记录型为S,属记录型为SC,C—SC首记录型为C,属记录型为SC这里若假定学生选课情况如图
1.9c所示,贝IJC—SC系型的系值共有三个,它们是{Cl;S1C1A,S2C1B,S3C1B,S4C1B,{C2;S1C2B,S3C2C,S4C2A,{C3;S2C3A,S4C3C,而S—SC系型的系值共有四个,它们是SI;S1C1A,S1C2B,{S2;S2C1B,S2C3A},{S3;S3C1B,S3C2C},{S4;S4C1B,S4C2A,S4C3C}o由于网状数据库模式定义较为繁琐,这里我们只给出网状数据库模式定义描述所包括的主要内容1模式条目它的作用是标识一个模式,即标识一个网状数据库的概念层数据库,其格式为SCHEMA NAMEIS〈模式名〉2域条目它的作用是定义一个或若干域,其格式为AREA NAMEIS〈域名〉一个域对应于物理设备的一块存储空间,通过域可以将数据库划分成若干局部,使得数据库系统管理员可以按具体应用环境的需要,合理地分配物理存储空间,以使得数据库的管理和维护更为方便、灵活、高效3记录条目.一个记录描述条目对应一个记录型,它用来定义记录名、记录的存放方式、记录所在的域及记录中各数据项的类型、长度等如图b中学生记录型的描述如下RECORD NAMEIS SLOCATIONMODE ISCALC USINGS#DUPLICATES ARENOT ALLOWEDWITHINAREA—102S#TYPE IS CHARACTER302SN TYPEISCHARACTER15其中记录的存放方式有四种,它们是A计算方式CALC,记录的存放位置由指定的数据项作为参量计算确定B直接方式DIRECT,记录的存放位置由系统所给定每个记录的数据库码确定C经由方式VIA,根据首记录,确定属记录的存放位置D系统方式SYSTEM,由DBMS所提供的一种标准方式,确定记录的存放位置上述学生记录型描述说明,记录名为S,记录存放方式是计算方式,计算参量为数据项S#,不容许有相同S#值的记录存在,记录S存放于域名为AREA—1的域中4系条目一个系描述条目对应一个系型,它的内容有系名、系的实现方式、系的构成即指明首记录型和属记录型、属籍类别、系值的选择方式等如图27b中学生选课系型的描述主要内容如下SET NAMEIS S—SCMODE ISCHAINOWNER IS SMEMBER IS SC MANDATORYAUTOMATICSET SELECTIONIS THRUS—SC OWNER IDENTIFIED BYCALC—KEY其中这里有三个概念需要进一步解释一下(A)系的实现方式(MODE)有两种(i)链式(CHAIN),将一个系值中的首记录及其属记录用指针连接在一起(ii)指针阵列式(POINT ARRAY),将一个系值中的指向属记录的指针集中在一起,形成一张表,在首记录中存放这张表或存放指向这张表的指针(B)属籍类别是指属记录在插入或删除时,所具有的特性属籍类别分为参加系属籍和离开系属籍,(i)参加系属籍(INSERTION),它有两种情况,自动(AUTOMATIC)和手动(MANUAL)o自动意味着当一个属记录值插入到数据库后,由DBMS自动将其参加到一个系值中;手动则意味着参加到某一系值的工作将由用户自己完成(ii)离开系属籍(RETENTION),它有三种情况,固定(FIXED).强制(MANDATORY)和任选(OPTIONAL)固定意味着一个属记录删除前,它必须是某一系值中的成员;o强制意味着一个属记录在属于某个系值时,可以通过操作,使之成为另一系值的成员,但不容许离开这一系;任选则意味着一个属记录可以属于某个系值,也可以不附属任一系值而独立存在(C)系值的选择方式(SET SELECTIONIS THRU)常用的有二种,(i)由系当前值选择系值,由于应用程序运行时,当前状态指示可以得到一个系的当前值,无论当前系值中当前记录是首记录还是属记录其语句格式为SET SELECTIONIS THRU〈系名〉OWNERIDENTIFIEDBY CURRENTOF SET(ii)由首记录存放方式选择系值,其语句格式为SET SELECTIONISOWNER USING〈字段名表〉,在系的首记录是CALC计算方式时,通过这种方式,由当前记录中的CALC码,可确定首记录,进而确定系值
(5)模式描述结束语句,其作用是告诉模式编译程序,模式定义描述结束其语句为END SCHEMAL2]网状数据库用户层数据逻辑组织结构的设计与描述用户层数据逻辑组织结构的设计即为子模式的设计,由于DBTG系统支持子模式每一个子模式可供若干应用程序共享,但一个应用程序一次只能启用一个子模式子模式是模式的子集,不管是域、记录、系还是数据项都可以只取其一局部,以满足具体应用的需要子模式的定义描述与模式有所不同,它的描述主要有以下内容
(1)子模式标识局部,其作用是定义子模式名称及其所对应的模式
(2)换名描述,即将模式中的域名、记录名、系名还是数据项名用其它名称替换,以消除同主语言规则不一致的地方,同时提高描述的可读性如欲将记录名DEPT换成DEPARTMENT
(3)域的描述,列出子模式定义所涉及的域
(4)记录的描述,列出子模式定义所涉及的记录名若其中数据项有变化,还需列出有变化的数据项
(5)系的描述,列出子模式定义所涉及的系并可改变系值选择方式[3]网状数据库数据操纵方法在DBTG系统中,用户的应用程序是用主语言和DML语言混合编写而成,主语言用于操纵内存中的数据,进行某种运算等,DML语言则是对数据库中的数据进行操纵由于网状数据库的数据操纵比较复杂,这里仅列出几种常用的操作
(1)FIND(查找),它主要有(A)在某记录类型中查找;(B)在某系类型中查找;(C)在某系中查找属记录;(D)查找某系值的首记录;(E)在某系中按某数据项值查找;
(2)GET(取值),将当前的记录值或数据项的值读取到用户工作区,以供进一步操作
(3)STORE(存值),将当前用户工作区中的记录,存放到数据库中,并根据系属籍类型,将其插入到相应系值中
(4)MODIFY(修改),将用GET所获的记录值或数据项,在用户工作区进行修改后,用此语句将其回存到数据库中
(5)ERASE(删除),从数据库将当前所确定的记录删除
(6)CONNECT(参加属籍),将当前记录插入到指定的系型的系值中当然是要在系籍约束容许的情况下
(7)RECONNECT(改变属籍),将当前记录从包含它的某一指定系值中移走,然后参加到这个系的另一系值中当然也是要在系籍约束容许的情况下
(8)DISCONNECT(撤消属籍),将当前记录从包含它的全部或局部系型的系值中移走,在系籍约束容许的情况下
1.
4.5关系数据模型关系模型是由在1970年引入到数据库领域中来的之后,以及其它数据库的专家又定义了关系数据库的根本概念,引进了标准化理论,提出了关系代数和关系演算等数据操纵语言,为数据库的开展奠定了坚实的基础,由于关系数据库是建立在较完善的关系理论数学基础之上,同时它简单明了,便于用户理解和使用,自八十年代以来,关系数据库系统已成为数据库领域中最为活泼的一个分支关系数据模型是以集合论中的关系概念为基础而建立起来的数据模型,以下我们将介绍关系数据模型的根本知识.[1]关系的数学定义
(1)这里我们首先介绍笛卡尔乘积的定义给定一组集合…,则这组集合的笛卡尔乘积是集合X3X・・・X2={(44,・・・,4)I4£;,=12…M这其中笛卡尔乘积集合中的每一个元素称为元组,〃表示参与笛卡尔乘积中的集合个数,又称为笛卡尔乘积的度如现有集合A,B,其中A={al,a2},B={bl,b2,b3},则集合A,B的笛卡尔乘积为集合D,且有D={(al,bl),(al,b2),(al,b3),(a2,bl),(a2,b2),(a2,b3)}笛卡尔乘积D集合包含了六个o元组,每个元组有两个分量
(2)关系的数学定义笛卡尔乘积x3x・・・x2的一个子集就称为定义在集合J D之上的一个关系集合,…,〃r称为关系R的域例如现有集合NAME={李,王,张},集合AGE={21,22},集合SEX={M,F},其笛卡尔乘积的两个子集RI,R2如下图,子集RI,R2均是建立在集合NAME、AGE、SEX基础之上的关系关系R1表示三个人根本情况,而关系R2则无实际意义,因为一个人不可能有两个年龄和性别[2]关系数学模型从图所描述的关系R1和R2,可以看出用二维表格的形式,来描述关系的内容是非常直观形象的二维表格的第NAME AGENAMEAGE SEXSEX李21F李21F王22M王22M王22F张21F一行为构成关系的各属性集合名称,其余各行则是关系中各元组的具体值图
1.10关系R1和R2内容关系数据模型是定义在E—R数据模型和关系的数学定义基础之上一种数据模型,它将描述实体和联系的有关属性看成是集合,而将实体和联系认为是建立在这些集合之上的关系,如一个实体或联系的属性有4,4,・・・,4],这些属性的取值范围所构成的集合为2,2,…,D〃,则描述这一实体或联系的关系R可表示为R=(A,,・・・,4)或表示为R(4,4,・・・,从)它是笛卡尔乘积〃x2x・・・x2的一个子集集合Dp4,…,,又称为是属性4,4,・・・,4的域,在关系数据模型中,所有域都应是原子数据,即整数、字符串等不可再分的数据,而不能是组合数据,即数组、结构等可再分数据例如一学生实体型的关系数据模型可表示为学生(学号,姓名,性别,年龄,籍贯)而如(9110001,张三,男,21,安徽),是学生关系中的一个具体实体值,又称为元组,一个关系实际上是由若干元组所构成这里的关系与数学中的关系在概念上有所不同,在数学上,关系中元组值是有序的;而在关系数据模型中,其元组值是无序的即R(A,4)和R(4,A)是相同的关系复存储,而且在修改时,常常需要同时修改三个文件中的数据项,如修改学生年龄,此外若需要增加一个描述学生的数据项,如通讯地址,那么所有的应用程序就必须都要进行相应的修改除此之外,采用文件系统来帮助进行数据管理工作,在数据的平安和保密等方面,也难以采取有效的措施加以控制
[3]数据库管理阶段1在不断改良和完善文件系统的过程中,从六十年代后期开始,人们逐步研究和开展了以数据的统一管理和数据共享为主要特征的数据库系统即在数据在统一控制之下,为尽可能多的应用和用户效劳,数据库中的数据组织结构与数据库的应用程序相互间有较大的相对独立性等与以往前数据管理方法和技术相比,利用数据库系统来进行数据管理工作具有以下三个显著特点
(1)从整体角度组织数据数据库系统与文件系统的最大差异就在于前者在描述数据时,不仅仅是对数据本身进行描述,而且对数据之间的相互联系也进行了描述因此在组织数据时是从一个相对较高的整体角度进行的,而不是仅仅局限于个别的数据管理应用场合如前面提到的人事部门、教务部门和医务部门对学生数据的管理工作,在利用数据库系统来进行管理时,若从整体考虑,其数据的组织结构如下图学生信息数据公用部分I人事部门学生数据专用部分散务部r孽生数据专用部分医务部门学生数据专用部到图11学生信息数据组织结构采用这种数据组织不仅可以有效地解决了文件系统的数据组织中所存在的数据冗余以及数据一致性维护的问题更主要的是它可以使人们从更高的全局角度出发,合理地组织数据,从而有利于更大范围内的数据资源的共享,提高信息的使用效率
(2)数据可为多个应用效劳正因为数据库中的数据是从整体角度进行组织的,因此,数据库中所存储的数据往往就不仅局限于只为一二个应用提供效劳,而是在更大范围内为仅可能多的应用提供效劳,如下图的一个数据库中所存储的数据,就至少可以为三个部门的应用提供效劳而实际上如下图的数据组织结构仅仅只是一个学校数据管理数据库中的一小局部与此同时由于数据库系统是以多级(层)组织模式对数据进行组织的,各级(层)模式之间的映射是由数据库系统自己完成的,这就使得数据与程序之间可以具有较高的物理和逻辑相对独立性正是这一点,给数据库中的数据为多个应用提供效劳奠定了基础事实上数据库的规模越大,所能够提供的应用效劳就可以越多,也就越能表达出数据库在数据管理中的优势当然这只是相对而言,随着数据库中数据规模的扩大,数据库应用系统的制作和维护的工作也在迅速增加
(3)有一个数据库系统的管理软件任何数据库系统都包含一个管理软件,即数据库系统的管理软件,通常又称为数据库管理系统,它负责统一管理数据库系统中所有数据资源,是数据库系统与用户应用之间的接口,通过它,用户可以不必要了解过多的计算机硬件、软件和数据库本身许多专业知识,更不用去了解数据库系统是如何完成数据管理工作的具体细节,如文件如何翻开、关闭、读、写等等,就可以通过编写一些较为简单数据库应用程序,很方便地完成在较高级别逻辑组织基础上的数据管理工作除此之外,数据库管理系统还负责完成在对数据库进行并发访问时,保证数据一致性的并发控制工作;保证数据平安性的访问控制工作;以及在数据库系统出现故障时,提供保证数据一致性和完整性的恢复机制等诸多数据库系统本身的各种管理控制工作因此这里也可以看出,数据库管理系统功能的强弱及其各项性能指标的好坏,是衡量数据库系统质量的一个极其重要的因素利用数据库系统进行数据管理工作,不仅可以保证数据的物理组织结构和存储设备与数据库应用程序之间保持相互独立性;同时也可以保证数据的逻辑组织结构与数据库应用程序之间保持最大可能的相互独立性,即当数据的逻辑组织结构发生变化时,数据库应用程序的变动被限制在最小的范围内由此可大大地减少数据库应用程序的开发与维护的工作量在数据库管理阶段,根据数据库系统本身所支持的数据模型的特点及所采用的相应数据库系统技术,可以认为数据库管理到目前为止已开展经历了三代,即层次网状模型代、关系模型代和面向对象模型代为了形象地描述关系数据模型中各关系,通常都用一张简单的二维表格来描述一个关系,该表格分为二个不同局部,一是表头局部,它描述关系的名称,又称表名;以及关系中的各属性名称;二是表格内容,它描述关系中的具体元组值即表格中的每一行对应一个元组值,表格中的每一列对应一个属性如下图学生学号姓名性别年龄籍贯表头all al2al3al4al5a21a22a23a24a25表格a31a32a33a34a35图
1.11学生关系的二维表格表示关系数据模型与关系数据库系统中数据逻辑组织结构是一致的具体使用时丁可采用以下方法获得所需要的关系数据模型,具体内容是
(1)对E—R数据模型中的各实体类型分别用一个关系加以描述,构造出关系的根本集合就是相应实体的各属性集合,属性集合中各元素是相应实体该属性值关系集合中的每个元组就表示一个具体的实体内容
(2)对E—R数据模型中的各联系及其属性,也可用关系加以描述,构造出这样关系的根本集合除了包含表示联系的各属性集合之外,还包括相互有联系的两个(或多个)实体类型中的关键属性(标识码属性)集合,此关系集合中的每个元组就表示一个具体的实体间的联系内容这里我们给出一个学生选课例子来说明上述关系数据模型的内容学生选课的E—R数据模型如图
1.12(a)所示,建立在这一模型基础上的关系数据模型是由以下三个关系构成,它们是STUDENT关系、COURSE关系和SC关系,这三个关系内容如图
1.12(b)所示这里我们可以看出,STUDENT关系是有由SNO和SNAME两种属性集合构成;COURSE关系是有由CNO和CNAME两种属性集合构成;而SC关系是有由SNO、CNO和GRADE三种属性集合构成;最后我们说明一下在关系数据模型中,用关系来表示描述E—R数据模型中各实体和联图学生选课的实体联系模型和关系数据模型系以及用二维表格的形式,来描述关系时应注意的事项(A)关系列表中的列,其应是相同的数据类型;也就是它们都是取自同一值域(B)关系列表中的列的顺序是可以任意交换的(C)同一关系中,不能有两个或两个以上内容完全相同的元组存在(D)元组的关系列表中元组的顺序是可以任意交换的
1.
4.6关系数据库系统关系数据库系统的应用开始于八十年代,目前已成为最流行的数据库系统在关系数据库系统中,其数据库中的数据是基于关系进行逻辑组织的一个关系数据库是由若干个关系(即二维表格)所组成的通常在关系数据库系统中,这些关系又被称为关系表在关系数据库系统中,可以通过数据描述语言对其数据库中的各关系表进行描述这种描述通常包含两个局部,即对关系表本身以及关系表中所包含的各属性集合(又称为域)进行描述以下我们以图所示的描述学生选课数据的三个关系表进行例如描述,通过描述语言,这由这三RELATION TABLESTUDENT SNO TYPE=CHARACTER LENGTHS0PROPERTY=NOT NULL,个关系表所构成的关系数据库具体描述如下:SNAME TYPE=CHARACTER LENGTH=20,KEY SNORELATCINOANMETABLE COURSECNO TYPE=CHARACTEKREY LCENNOGTH=10PROPERTY=NOT NULLRELATION TABLE SC SNOTYPE二CHARACTER LENGTH=1O PROPERTY=NOT NULLCNOTYPE=CHARACTER LENGTH=10PROPERTY=NOT NULLGRADETYPE二NUMBERIC LENGTH*DECIMALS,KEY SNO,CNOTYPE=CHARACTER LENGTH=30,在上面描述中,RELATIONTABLE是系统描述字,表示对一个关系表进行描述,它其后的是关系表的名称;括号内的内容是对关系表中各属性名称、数据类型、数据长度及小数长度和输入属性的描述KEY也是系统描述字,表示相应关系表的关键字关于关键字概念我们稍候会详细讨论为了对数据库中的各关系表进行存取,就必须提供基于关系数据模型的操作语言从关系就是集合的角度出发,对关系的操作,理论上讲就是对集合进行操作,而对关系进行各种操作及运算的总和就是关系代数,自70年代提出关系代数以来,它在关系数据操作语言的开展与研究中,一直起着较为重要的作用这里我们着重介绍与关系数据库数据操作密切相关的关系代数运算它们是选择、投影和连接
(1)选择运算(SELECTION)选择运算是将关系作为元组的集合,从中选择出满足一定要求的元组,其运算结果是一个新的关系简单地说就是对关系表的行进行选择操作从中选择出满足一定要求的行组成一个新关系表选择运算可以表示为SELECT〈关系表名〉WHERE〈选择条件〉
(2)投影运算(PROJECTION)投影运算是从构成一个关系的若干根本属性集合出发,从中选取某些根本属性集合,o重新构造成出另一关系,因此其运算结果也是产生一个新的关系简单地说就是对关系表的列进行选择操作从中选择出若干列组成一个新关系表投影运算可以表示为PROJECT〈关系表名〉ON〈属性名〉
(3)连接运算(JOIN)o连接运算是对两个关系进行运算,从构成这两个关系的所有根本属性集合中,选择出满足一定要求的根本属性集合,重新构造一个新关系,因此其运算结果也是产生一个新的关系简单地说就是对两张关系表的行进行合并操作,从中选择出满足对列一定要求的行,组成一个新关系表连接运算可以表示为JOIN〈关系表名1〉AND〈关系表名2〉WHERE〈连接条件〉选择运算、投影运算和连接运算是关系代数中,最根本的数据操作运算,这些根本运算为建立关系数据库系统的操作语言奠定了基础无论要检索满足何种条件的数据,其检索过程涉及到几个关系(表),运用这三种运算操作,都可以实现目前实际上应用的关系数据库的数据操作语言都是基于这三种关系代数运算而构造的关系数据库理论基础
1.5本节主要介绍与建立关系数据库中的关系模式(即关系表结构)密切相关的关系数据库设计的理论基础,也就是关系范式的有关根本知识
1.
5.1问题的提出我们将关系定义为笛卡尔积子集,也讨论了关系数据库中数据库的根本描述和关系代数根本运算等但是还有一个很根本的问题尚未涉及,那就是当给定一组数据后,如何构造一个适合于它们的数据模式,使得它不仅能准确的反映现实世界,而且适合于具体的应用场合这就是数据库的逻辑设计问题由于关系数据模型是建立在严格的数学模型之上的,因此,人们就以关系数据模型为背景来讨论这个问题,从而形成了数据库逻辑设计的一个有力工具一一关系数据库标准化理论,标准化理论虽然是以关系数据模型为背景,但是它对于一般的数据库逻辑设计,同样具有理论上的指导意义在数据库设计中主要涉及关系的组成、各属性之间的一些联系性质,对于这些关系的性质描述,就被称为关系模式而一个关系数据库可以包括多个不同的关系模式,一个关系数据库的全部模式的集合,又被称为数据库模式前面我们已经介绍过,关系实质上就是一张二维表,表的每一行叫做一个元组,每一列称为一个属性,因此,一个元组就是关系所涉及的属性集的笛卡尔积的一个元素,因而,关系模式也就是这个元组集合在结构上的描述现实世界随着时间的不断变化,在不同的时刻关系模式的关系也会变化但是现实世界的许多事实却限定了关系模式所有可能的关系必须满足一定的约束这些约束或者通过对属性取值范围的限定,例如,职工年龄必须小于60岁,或者通过数据间的互相关联反应出来,后者就被称为数据依赖这种依赖极普遍的存在于现实生活中比方描述一个学生的关系可以有学号(S#),姓名(SN),所在系的名称(SD)等几个属性,由于一个学号只对应一个学生,一个学生只能在一个系,因此学号值确定之后,姓名和其所在系的值也就唯一确实定了,这就象自变量x定了之后,相应的函数值也唯一被确定了一样我们也可以说SN,SD函数依赖于S#;或者说S#函数决定了SN,SDo记为S#-SN了#-SD下面我们先通过一个例子来说明设计不好的关系模式会存在什么问题,分析这些问题产生的原因,从中寻找出设计一个好的关系模式方法当我们要建立一个数据库来描述学校中的情况时,所面临描述对象有学生(用学号S#描述),系(用系名SD描述),系负责人(用系负责人姓名DM描述),课程(用课程名CN描述)和成绩(用G描述),于是我们得到了这样一组属性U={S#,SD,DM,CN,G).现实世界的事实告诉我们
(1)一个系有若干学生,但每个学生只能属于一个系;
(2)一个系只有一名负责人;
(3)一个学生可以选修多门课程,而每门课程又可被若干学生同时选修;
(4)每个学生学习每门课程只有一个成绩;于是,我们得到了属性组U上的一组函数依赖F={S#-SD,SD-DM,(S#,CN)-G}因此一个关系模式O应当描述为R(U,D,DOM,F)o这其中
(1)R是关系名;
(2)U是一组属性,即组成R的全部属性的集合;
(3)D为域的集合,即属性取值范围的集合;
(4)D0M为U与D之间的映象;
(5)F是属性组U上的一组函数依赖由于域的定义对关系模式设计关系不大,
(3)和
(4)往往可以忽略,于是我们得到了学校数据库模式S(U,F)这个模式有下述3个缺点
(1)有较大的冗余度比方,每个系的负责人姓名,要与该系每个学生学习每一门课程的成绩出现的次数一样多,同一数据的重复存贮,不仅仅多占用了存贮空间,同时也为数据库的修改带来困难例如某系的负责人更换了,那就必须逐一修改有关这个系的每一个元组;
(2)插入异常如果一个系刚刚成立,尚没有学生,那么我们就无法把这个系及其负责人的信息存入到某个元组中去,可能有人会这样想,先存入系及负责人的信息,放一空值在这个元组的其他项上,但由于S#和CN是这个关系的关键字,就要用到带空值的关键字对元组的查找,而关键字为空值的元组是通常都是不容许在关系中存在的
(3)删除异常如果一个系的学生全部毕业了,我们在删除该系学生选修课程的信息的同时,也把这个系及其负责人的信息也丢了上述这些缺点非常不利于数据库的维护和应用,所以我们说,它是一个不好的数据库模式,一个好的模式应当不会发生插入和删除异常,而且冗余要尽可能少,在操作过程中不致产生信息的丧失和造成数据的不一致产生插入和删除异常的原因可以从对关键字的定义看出,一个关系中的两个元组,如果关键字相同,那么别的属性值也一定相同,也就是说这两个元组一定是同一元组,因而关键字是一个元组区别于其它元组的依据,同时也是一个元组赖以生存的依据,因为任何事物只有当它能区别于别的事物时,谈到它的存在才是有意义的,因而关键字或关键字的一局部为空值的元组是不可能在关系中存在的消除插入异常和删除异常的方法就是进行模式别离,例如,把上述关系模式分解成以下三个关系模式SD S#,SD,S#-SD,SG S#,CN,G,S#,CN-G,D SD,DM,SD-DM这时,一个关系只用来描述一个实体或实体之间的一种联系,下面介绍的标准化理论就是基于这一简单概念的在中我们曾提过关系中的每一个分量必须是不可再分的数据项,这就是一种最根本的标准化也称第一范式,并非这一简单的标准化关系都能很好的描述现实世界,必须作进一步的分析以确定如何设计一个好的、反映现实世界的模式通常是根据一个关系所具有属性之间的依赖情况来判定其是否具有某些不适宜的性质,按属性间依赖情况区分关系标准化的程度为第一范式,第二范式,第三范式,第四范式等,其中第
一、
二、三范式是Codd最早定义的后来人员又陆续提出了BC范式、第四范式和第五范式
1.
5.2函数依赖函数依赖是关系数据库设计中的一个重要概念,下面我们给出函数依赖的定义定义1设R U是属性集U上的一个关系模式,X,Y是U的子集若对于R U中任意可能关系r即对于每一时刻的数据库中对应于关系模式R的内容,r中不可能有两个元组在X的属性分量相等,而同时在Y的属性分量值却不等,则称“X函数决定Y〃,或称Y函数依赖于X记作X-〉Y将上述定义说得更明确一些,就是对于r中的属性或属性组X的每一个值,r中Y只有一个值与之对应例如,若X是R的关键字的属性集合,则对于这一关系的所有属性子集Y,都有X-Y成立,这是因为关键字唯一地决定一个元组当两个元组的关键字相等时,这两个元组内容也必相等,即它们所有的属性值都相等,因此不可能存在这样两个元组,它们在X关键字属性值上相等,而在Y值上却不等又如姓名和年龄,在没有同名的情况下,姓名-年龄,这里年龄对于姓名的函数依赖关系,必须是在没有同名的条件下成立,如果有相同的姓名,则年龄就不再函数依赖于姓名了对于函数依赖,必须说明几点的是1当我们在确定关系模式R中的某个函数依赖时,是指R的所有可能关系r都必须满足这个函数依赖;反之,如果R中只要有一个关系r不满足这个函数依赖,我们就认为R不存在这个函数依赖;2一个关系模式R上的函数依赖确实定,只能附属性的含义上来说明,而不能从数学上来说明,它仅是一个语义范畴的概念;3只有数据库的设计者才能确定是否存在函数依赖,例如,一旦确定SN-SD,则实际上规定一个学生只能在一个系中,排斥了他处在两个系的可能性若X-Y,而且VZX,则称X-Y是非平凡函数依赖,下面的讨论均基于此定义1若X-Y,X称作决定因素;2若乂-〉丫,丫-”,则记作水-〉丫;3若Y不依赖于X,则记作X=Y下面讨论函数依赖的一些性质假设R A,B,C是一个关系模式,A,B,C为属性,若在R中有A-B和B-C,则在R中必定有A-〉C关于这一点,可以用反证法来说明,假定在R的某一关系r中满足A-B,B-C,但不能满足A-〉C;即在r中存在两个元组u,v,它们在属性A的分量上取值相等,而在C的分量上取值不相等,u,v在属性B的分量上的值有两种可能,若相等,则违反了B-C;若不相等;则违反了A-B;这与假设矛盾,也就说明了在r中必满足A-C从这个例子中,我们可以看出函数依赖A-B,8-冗逻辑蕴涵了函数依赖人-〉仁定义2在R U中,若属性集合Y函数依赖于属性集合X,但Y函数不依赖于X的任一子集,则称Y对X完全函数依赖,记作X—反之,若依赖于x的某一个真子集,则称对x局部函数依赖,记作X—^丫这里举一个简单的Y Y例子,在关系S S#,SN,SD,SA中,S#-SD,S#-SA,S#-〉SN;而在关系SC S#,C#,G定义3在R U中,如果X—Y,〉X-Z,则称Z对Y传递依赖这里加上条件X=Y,是因为如果X-〉Y,Y—X,则Y〈-〉X,实际上是Y-〉Z,而不是传递函数依赖.定义4在R U中K为U的属性或属性组,若有则称K为R的一个候选关键字,若候选关键字多于一个,则选择其中之一为主关键字Primary Key.包含在一个候选关键字中的属性叫做主属性,不包含在任何一个候选关键字中的属性称为非主属性,最简单的情况,单个属性是关键字,最极端的情况,整个属性组是关键字,如在关系模式S S#,SN,SD,SA中,S#是关键字,如在关系模式SC S#,C#,G中,属性组S#,C#是关键字定义5在R U中,属性或属性组集合X并非它的关键字,但X是另一个关系模式的关键字,则称X是R的外部关键字例如SC S#,C#,G中,S#不是关键字,但S#是关系SS#,SN,SD,SA的关键字,则S#对于关系模式SC来说是外部关键字,主关键字与外部关键字提供了一条关系之间相互联系的途径,例如关系模式S与关系模式SC的联系就是通过S#
1.
5.3范式的定义关系数据库中的关系是要满足一定要求的,满足不同要求为不同范式,满足最低要求的叫第一范式,简称1NF,在第一范式基础上进一步满足一些要求的为第二范式,其余以此类推对于各种范式之间的联系有5N/u4NF uBCNF u3NF uINF uINF一个低一级范式的关系模式,通过投影运算可以转化为若干个高一级的关系模式集合,这种过程就叫标准化我们经常把某一关系模式R为第几范式记为〃RE册以下我们着重介绍常用的第一范式、第二范式和第三范式的定义,以及设计这些范式的根本方法
[1]1NF定义
6.如果一个关系模式R的所有属性都是根本的、不可分的,则R是第一范式STATUS CITYP#QTYs#20LONDON Pl300SISI20LONDON P2200SI20LONDON P3400SI20LONDON P4200SI20LONDON P5100SI20LONDON P6100S210PARIS Pl300S210PARIS P2400S310PARIS P2200S420LONDON P2200S420LONDON P4300S420LONDON P5400图L13FIRST关系表关系模式FIRST S#,STATUS,CITY,P#,QTY,该关系内容如下图,其函数依赖集为CITY STATUS显然关系模式是第一范式此关系模式的关键FIRST字为S#,P#,属性STATUS和CITY不完全函数依赖于S#,P#,QTY是完全函数依赖于S#,P#并且STATUS和CITY也不是相互独立的,而是也存在着函数依赖,这使得关系FIRST在插入,删除,修改三种存贮操作出现异常在供给商未供给零件时,我们不能登记某供给商位于某一城市的信息,例如不能登记供给商位于ATHENS这样一个信息,其原因是关键字的值在P#出现了空值当我们删除某一供给商时,若该供给商仅出现在一个元组中,那么我们不仅删除了该供给商该供给零件的信息,而且也删除了该供给商位于某一城市的信息例如我们删除了关键字为S3,P2的元组,则我们也删除了S3位于PARIS的信息如果要修改某一供给商的城市值,通常需要修改多个元组,这就容易产生不一致例如供给商S1从LONDON迁移到AMSTERDAM,就需要修改6个元组
[2]2NF为了解决上述问题,我们把关系模式FIRST分解成两个关系模式SECOND S#,STATUS,CITY和SP S#,Pit,QTY,如下图S#STATUS CITYP#QTYS#S120LONDON SI Pl300S210PARIS SIP2200S310PARIS SIP3400S4120LONDON SIP4200SIP5100S530ATHENSSECOND SIP6100S2Pl300S2P2400S3P2200S4P2200S4P4300S4P5400SP图
1.14SECOND和SP关系表这样处理后的结构,克服了S#和CITY存贮操作中的问题例如,我们可以把S5位于ATHENS的信息插入到SECOND关系中,即使S5没有提供任何零件如果我们在关系SP中删除S3,P2为关键字的元组,也不会丧失供给商S3位于PARIS的信息,当供给商S1从LONDON迁移到AMSTERDAM,只要对SECOND关系S1为关键字的元组作修改就可以了,仅仅修改一次,不会出现上述的不一致了将图与图作比较,在关系模式下作比T中属性STATUS和CITY是非关键字属性,它们只依赖于S#,P#的一局部,即只依赖于S#,也就是说关系模式FIRST中非关键字属性并不完全函数依赖于关键字属性;而改良之后,关系模式SECOND中,非关键属性完全依赖于关键字属性;定义
7.如果关系模式R是1NF,而且非关键的属性完全函数依赖于关键字的属性,那么,关系模式R是第二范式按照定义7,关系模式SECOND和SP都是2NF,如果一个关系模式是1NF而不是2NF,总可以通过适当投影化为一组等价的2NF关系模式集合,这种投影后的关系等价于原关系,即原关系能够通过这种投影关系的适当连接而恢复在上面的例子中,关系SECOND和SP是关系FIRST的投影,而关系FIRST可通过SECOND和SP连接得到可以看到,若一个关系模式是1NF,而不是2NF,则该关系模式的关键字一定由多于一个属性组成由于这种分解过程不丧失信息,故原关系中的任何信息能从这个新的关系中导出,但新的关系中包含了原关系中无法表示的某种信息例如S5位于ATHENS的信息从这个意义上来说,新的关系更好的反应了现实世界
[3]3NF关系模式SECOND在存贮操作上还存在异常现象,例如,我们不能把某个城市具有某一状态信息存入SECOND关系中,原因和上述一样,也没有恰当的关键字值在删除操作中,例如我们删去了SECOND关系中关键字为S5的元组,则我们也就失去了ATHENS状态为30的信息,在修改时,例如把LONDON的状态值由20修改为30,则要对元组S4和S1都作修改,否则可能出现不一致性出现上述问题的原因是属性STATUS关于属性S#的依赖性,它具有传递性,即S#-67斤,CITY tSTATUS为了解决上述问题,我们再将关系模式SECOND投影成两个关系模式,SCS#,CITY和CS CITY,STATUS,关系模式SC和CS中的函数依赖上面我们已给出了图表示了关系SC和CS显然,通过分解消除了非关键字的属性传S#CITYSI LONDONCITY STATUSS2PARISATHENS30S3PARIS LONDON20S4LONDON PARIS10S5ATHENS ROME50递依赖于关键字属性图L15SC和CS关系表定义
8.如果关系模式R是第二范式,并且每一个非关键字的属性,不是传递依赖于关键字,则称关系模式为第三范式关系模式SC和CS都是3NF,若一个关系模式是第二范式而不是第三范式,总可以通过投影转变为一组等价的3NF关系模式的集合,这个过程是可逆的,没有丧失信息,但是3NF的关系可能包含不能用原始2NF关系表示的信息,例如城市ROME状态为50的信息值得一提的是,我们讨论关系模式的标准化级别,是一个语义方面的问题,不能只从某一特定时间关系的值来看,因此数据库的设计者必须清楚了解数据的意义和语义,才能讨论它的标准化
[4]BCNF定义
9.关系模式R,X和Y为属性集的两个子集,且X和Y无公共属性,Y完全函数依赖于X,那么称X为R的决定因素定义
10.若关系模式R中的每个决定因素,是R的一个候选关键字,则称关系模式R是BC范式先来看看关系模式FIRST,它有3个决定因素S#,CITY,S#,P#其中只有S#,P#是候选关键字,而S#和CITY不能作候选关键字再来看关系模式SECOND,它有两个决定因素S#和CITY,但CITY不是候选关键字因此FIRST和SECOND都不是SBCNF,而在关系模式SP、CS和SC中,它们的决定因素分别是S#,P#,CITY和S#,它们都是候选关键字,因此SP、CS和SC是BCNF尽管例中SP、CS和SC关系模式既是3NF,也是BCNF,贝小必定是3NF,反之则不一定成立为了说明这个问题,再讨论一些例子关系模式SS#,SN,SD,SA,这里S#和SN都是候选关键字,其函数依赖如下图,这两个候选关键字都由单个属性组成,彼此不相交,其他属性不存在对候选关键字的传递依赖及其局部依赖,所以模式S是3NF,同时模式中除S#,SN外没有其他决定因素,所以模式S是BCNF关系模式设计的好坏直接影响数据库数据逻辑组织的合理性,而这又与数据的冗余度、数据的一致性以及数据库的维护等问题要设计出好的关系数据模式,其基础是了解各属性间的函数依赖特性,而函数依赖特性又取决于属性的具体语义作为数据库设计必须正确周到地理解和描述这些语义所包含的意思,而不能有具体关系中一些元组属性值而匆忙做出决定图
1.17关系模式S的函数依赖图在关系数据库中,对关系模式的根本要求就是要满足第一范式,这样的关系模式就是合法的、容许的在发现有些关系模式存在数据冗余、数据操作容易出现异常等问题时,就必须对这些关系模式进行标准化关系模式标准化过程就是采用投影分解的方法,将低一级的关系模式转换成高一级的关系模式,这种投影分解的结果不是唯一的,但必须保证关系模式在分解前后应具有等价性,分解后的关系模式应能更好地反映客观现实中对数据处理的要求在范式中,常用的是3NF和BCNF在设计数据库时要综合考虑,因为尽管分解关系模式可以减少数据冗余,也可以克服数据操作容易出现异常等问题,但随之而来的,将是数据库操作的复杂性被提高,系统在进行多关系表操作时所付出的开销也更大这一章,着重介绍了有关数据库系统的一些根本知识,具体地讲有以下几个方面的内容:1数据管理技术开展的三个阶段,以及各阶段的主要特点2数据库系统的根本知识,它的内涵和主要特点3数据库中数据的组织结构及其特点4数据库管理系统的组成以及各局部的功能,以及DBMS的工作过程5三种数据模型,及其相应数据库系统的特点6关系数据模式设计的方法,函数依赖和范式的根本知识1层次网状模型代:流行于六十至七十年代,在这一代中的数据库系统所支持的数据模型均是层次模型或网状模型世界上第一个数据库系统是于1964年由美国通用电气公司开发成功的IDS IntegratedData Store,它就是基于网状模型的数据库系统IBM公司于六十年代末推出了第一个商品化的层次数据库系统IMS InformationManagementSytem,它们的出现与应用为数据库技术的开展奠定了基础2关系模型代:流行于七十至八十年代,在这一代中的数据库系统所支持的数据的数据模型均是关系模型以关系表形式组织数据1970年Codd提出了关系数据模型,由于其具有严格的数学基础,抽象级别较高,且简单清晰,便于理解应用到了七十年代末,出现了不少关系数据库系统,其中具有代表性应首推IBM公司推出的SQL/DS和DB2两个商品化关系数据库系统进行八十年代以后,关系数据库系统已成为数据库系统开展的主流,几乎所有新推出的数据库系统产品都是关系型的,它们中不仅有用于大型机和小型机数据库产品,而且有可用于微机的数据库产品市场上开始出现关系数据库的系列产品,这其中发行量较大且在我国用得较多的有Oracle、Sybase SysbaseInformix、FoxPro等随着微机和计算机网络的广泛普及和应用,分布式数据库系统在八十年代后期,开始得到很大开展其理论和技术日趋成熟目前几乎所有分布式数据库系统均是关系型的,而且几乎所有主要关系数据库系统均已被扩充为分布式数据库系统3面向对象代:开始九十年代,在这一代中的数据库系统支持面向对象的数据模型它是数据库技术与面向对象程序设计方法相结合的产物作为新一代数据库系统,现在已有了一些商品化系统但其具体应用尚不多数据库系统
1.2本节主要介绍有关数据库结构和数据库系统组织的一些根本知识和概念,使读者对数据库系统的内涵有一个较为清楚的认识
1.
2.1数据库系统概念由于数据库系统是一个由许多根本概念、技术方法和其应用对象所组成的复杂的有机整体很难用一两句话将其描述清楚但为了使读者对它有一个总体的了解,首先这里我们试着给出一个关于数据库系统的定义,即数据库系统中的数据库是一个已被规格化和结构化且相互关联的数据集合,这些数据中不存在有害的或无意义的冗余;数据的组织与存储结构与使用这些数据的程序相互独立;数据库中的数据可同时为多个应用效劳;数据库中的数据定义、输入、修改和检索等所有操作均是按一种公用的且可控的方式进行根据这一数据库定义以及实际应用的具体数据库系统的情况,我们可以认为一个数据库系统实际上是由三局部内容组成,它们是数据库、多种应用和数据库管理系统这三局部之间的相互关系如下图1数据库相互关联的且具有最小冗余的数据在其中按照一定物理组织结构存放,并且从用户和数据库管理系统角度来看,这些数据又是按一定逻辑结构组织的这种物理组织结构和逻辑组织结构在最大程度上与用户所编制的应用程序相互独立⑵多种应用数据库中的数据,在数据库管理系统的控制与管理之下,可以同时为多种不同内容的应用提供效劳,即可以为多个不同目的用户效劳,各用户所操作使用的数据可以是相互交叉的用户的操作方式既可以按以数据输入/输出和数据维护为主的数据流量较大的批处理方式进行;也可以按以查询为主的数据流量较小的联机处理方式进行,必要时还可以通过编程来完成对数据库中数据的各种操作⑶数据库管理系统它一方面负责对数据库中的数据进行管理和维护;一方面为用户操作数据库中的数据提供一种公用的操作方法,接收用户的操作命令,帮助完成有关的对数据库的操作并保障数据库的平安根据对数据库的定义以及数据库系统根本组成及作用的描述,我们认为一个的数据库系统应该具有的以下五个根本特点
[1]由于数据库系统是从整体角度考虑数据的组织,因此它必须有能力描述能够反映客观事物及其相互联系的复杂数据模型,使用它能够对数据本身及相互间的各种关系进行充分描述,这也是人们为什么要采用数据库系3/27统来进行数据管理的主要原因之一目前数据库系统共提供了四种数据模型,它们是层次数据模型、网状数据模型、关系数据模型和对象数据模型,一种类型数据库系统通常只提供上述其中一种数据模型描述方法,即只支持其中一种数据模型的数据逻辑组织结构图
1.2数据库系统组成
[2]数据库中数据的独立性为了说明这一点,首先我们介绍两个概念,
(1)数据在物理存储设备上的组织结构被称为数据的物理组织;
(2)数据在用户或应用程序面前所表现出的组织结构被称为数据的逻辑组织;一种数据的逻辑组织,可以采用不同的物理组织来实现,物理组织的好坏影响着系统的性能和效率在运行阶段中,由于性能的要求或存储设备的改变,从而引起数据物理组织的改变,这种改变称为数据的再组织用户在编制应用程序时,则是根据数据的逻辑组织对数据进行操作的因此数据物理组织的变化,不会影响数据的逻辑组织,因而也就不会影响已有的应用程序,这种情况就被称为数据的物理独立性;而数据的逻辑独立性是指当数据的逻辑组织发生变化时,如数据模型中增加了新的记录类型,某一记录类型中增加了新的数据项等,原有应用程序的执行不受影响或影响最小数据的独立性,包括物理和逻辑的独立性,都是由数据库管理系统进行维护的
[3]数据共享,由于数据库是从整体的角度对数据进行组织的,并在保证数据一致性的情形之下,使数据库中的数据为尽可能多的用户提供给用效劳这些用户所使用的数据可以是交叉的,即数据可以共享如果数据不能共享,数据库中则必然会出现大量的冗余数据,这样不仅造成存储空间的浪费,更主要的是由此可能带来数据不一致的隐患
[4]数据库系统的平安可靠与完整,一个数据库系统的可靠性表达在它的软件系统运行故障率很小以及在数据库系统由于各种意外而出现故障时,数据库中的数据的损失最小;平安性是指数据库系统对其所存储的数据的保护能力,能够有效地防止数据有意无意地泄露或篡改,控制数据的授权访问等而数据库系统的完整性则是指在多用户操作数据情况下,数据能够保持一致性这些特性可以从以下几个方面进行说明〈1〉平安性控制平安性控制主要指的是数据库的保密性并不是每个用户都能够存取数据库中所有数据的,负责人和全体工作人员允许掌握的数据范围显然是有区别的,数据库系统把各用户存取数据的权利分成若干等级,如教学人员作为一个用户可以登录学生的成绩,而学生作为一个用户则仅可以查阅成绩而无法对它进行修改或删除通过对各个用户授于不同的使用权限,以确保数据库免遭损害和被非法使用,通常是通过采用口令密码以及数据库中数据访问授权等方法对使用者操作数据的合法权进行检验,以实现对数据库中数据平安性的保护控制〈2〉完整性控制所谓完整性包括数据的正确性、有效性和相容性正确的数据不一定是有效的如若用两位阿拉伯数字来表示月份,在输入14来代表月份时显然是无效的数据库系统应提供尽可能多的检验措施,以确保数据库中的数据满足用户所要求的各种约束要求〈3〉并发控制在多用户操作使用数据库系统的情况下,不同用户并行地操作数据库就可能引起对数据库的干扰,从而使得数据库中的数据发生不一致的问题如当甲用户从数据库中预定了仅剩的一张机票之后,若在数据库尚来不及将剩余的机票数改为零时,乙用户又请求订票时怎么办?显然对这种并发的操作要采取某种控制措施,最常用的方法是封锁技术,以排除和防止这种错误的发生,保证数据库中数据的操作能够正确完成执行〈4〉故障的发现与恢复由于数据库系统在运行过程中很难保证不产生故障、出现意义或受到破坏,而且往往这些情况的发生的时间都是随机的,如断电、用户误操作等,而重建一个数据库往往要花费很大的精力和代价,有时甚至是不可能的,因此数据库系统应提供给急保护设施,一旦系统的软硬件发生故障或用户误操作导致系统异常时,系统应能够以尽量小的代价,尽快地恢复数据库的内容和系统的正常运行
[5]良好的人机接口与性能,任何数据库系统最终都是要和用户打交道,系统所具有的各种功能最终都需要由用户来进行操作使用简单易学、操作简便和用户界面友好是任何一个数据库系统所必须的此外系统的响应速度,单位时间内数据的吞吐量也是衡量数据库性能重要指标
1.
2.2数据库结构在上一小节,我们介绍了数据库系统所涉及的三个根本成分以及数据库系统所应具有的五个特点,在这一小节中,我们将略为详尽地介绍数据库系统的主要组成之一,数据库的有关知识在数据库技术中,为了提高数据库中数据的逻辑独立性和物理独立性,采用了分级(层)方法,将数据库中数据的组织结构划分成多个级(层)根据美国国家标准协会(ANSI)所提出的报告,数据库的数据组织结构可以分为三个相互关联的层次,它们分别是概念层数据模式、用户层数据模式和物理层数据模式【1】概念层数据模式,又称为模式,它是对数据库中数据整体逻辑结构的描述,它是对数据库中所有数据项、记录类型以及各记录类型之间的相互关系的描述这里需要说明的是,这种描述仅仅是一种逻辑组织结构的描述,是面向用户需要而提出的而非是真正的数据存储组织结构提供这一层次的数据模式描述,主要是为了数据库应用系统的设计者,在对与应用有关的所有用户的需求进行统一综合考虑之后提出的,它能够从总体上,将这些需求所涉及到的数据及其它们间的相互联系,有机地结合成为一个逻辑整体概念层数据模式的设计是数据库设计的最根本也是最重要的任务
[2]用户层数据模式,又称为外模式或子模式,它是对以用户为对象使用数据库所涉及到的所有数据局部逻辑结构的描述它是模式一个子集或者是一个映射,一个数据库只有一个模式,但通常都对应着多个子模式子模式所包含的数据之间容许有重叠,也容许多个用户共用同一个子模式提供这一层次的数据模式描述,有以下优点〈1〉用户只要按照描述自己所使用数据的子模式编写应用程序或输入操作命令,就可以完成满足自己要求的数据库操纵工作而无需了解整体数据模式或数据的存储组织结构,从而是用户接口变得简单〈2〉保证了数据独立性由于用户的数据库应用编程仅仅是依据子模式的数据逻辑结构的描述,而子模式一般都是模式的一个真子集,因此若因需要而对模式所描述的数据逻辑结构进行局部修改或扩充时,如增加新的数据项或者增加新的记录类型等,只要不影响子模式从模式中的原有的映射关系,那么用户依据子模式所开发的应用程序,则就不受模式变动的任何影响所以提供模式与子模式这两层数据逻辑结构的描述,就可以较好地保证数据的逻辑独立性〈3〉数据能够被较好地共享由于同一模式可以产生许多不同的子模式,这些子模式所描述的数据可以来源于模式所描述的全局数据逻辑结构中各种数据项或记录类型,因此这样做,这样就可以很方便地实现数据的共享,也就大大减少了数据可能存在的冗余,从而有利于保证数据的一致性、完整性和正确性〈4〉有利于保证数据的平安和保密由于用户是通过其相应的应用程序对数据库中数据进行操作,因此他只能操作其子模式所描述范围内的数据,而无法接触到其它用户及其子模式所描述的数据,由此就可以保证数据库中的数据具有较好的平安性
[3]物理层数据模式,又称为内模式或物理模式它是对数据库中所有数据在物理设备上实际存储的组织结构的描述数据库数据根据这一层数据模式的描述,被存放到若干按各种组织方式建立起来的物理文件中,对这些物理文件的所有存取访问的控制都是由数据库管理系统统一控制的管理系统负责完成从概念层数据模式到物理层数据模式之间的数据映射,这样由于所有的数据库应用程序或效劳所涉及到数据又都是根据模式的数据描述得到的,因此当数据库数据的物理组织结构发生变化时,概念层数据模式描述通常无需修改,同样也就保证了与模式相关联的子模式和用户应用程序也无需修改,从而使得数据库系统中数据也具有的物理独立性图
1.3数据库结构各模式间关系由于一个数据库是采用上述的三个层结构方式对其中的数据组织进行描述的,从而较好地保证了数据的逻辑独立性和物理独立性,方便了用户对数据库中数据的操作使用,减少了数据冗余这三层模式之间的相互关系如下图由于数据库中数据,实际上是按照物理层数据模式进行存储的,而概念层数据模式和用户层数据模式都只是对物理层数据模式描述的数据的一种逐级(层)地逻辑抽象,用户在对数据库进行操作时,都必须通过数据库管理系统,来完成从用户层数据模式到概念层数据模式之间、概念层数据模式到物理层数据模式之间这两种映射,当然这两种映射是由管理系统自动完成的,对用户是透明的目前实际应用的中高档数据库系统的数据组织结构根本上是按照上述三层模式标准,来描述数据组织的也有一些中低档数据库系统,为了方便一般用户的操作使用,对上述三层模式标准进行了一些简化,它们往往采用一层或二层模式来描述数据组织结构,通常都略去了物理层的数据模式描述
1.
2.3数据库系统数据库系统的核心是数据库管理系统(DataBase ManagementSystem,简称DBMS),在它的控制和帮助下,用户可以建立、使用、修改和维护数据库中数据数据库管理系统是建立在操作系统之上的应用软件平台它一般具有以下三个主要功能
(1)提供操作数据库的用户高级接口具体讲就是(A)提供数据描述语言,供用户对整个数据库中的数据进行各种逻辑和物理组织结构描述,而这些组织结构的具体实现细节,则由DBMS完成,用户不必关心(B)提供数据操纵语言,供用户对数据库中数据按照其定义逻辑组织结构进行各种操作,如插入、删除、修改和查询等,这些操作的的具体实现细节,则也由DBMS完成,用户不必关心(C)同时还可能提供其它工具,如用户界面生成工具、报表生成工具等,帮助用户更加容易地对数据库的操纵进行编程
(2)管理数据库它主要包括以下功能(A)控制整个数据库系统的运行;(B)控制用户对数据库的并发性操作;(C)执行对数据库中数据的平安、保密、有效性和完整性检验;(D)实施对数据库中数据的检索、插入、删除、修改等操作(E)维护数据库数据组织结构的完整和一致
(3)维护数据库,主要包括(A)初始化时数据库数据的装入;(B)运行时记录下与用户、操作、系统状态和结果等信息的工作日志;(C)监视数据库性能;在性能变坏时,重新组织数据库;(D)在数据库系统的硬件或软件发生故障后,对数据库中受破坏的数据进行恢复这一小节,将略为详尽地介绍与数据库管理软件有关的一些根本情况(-)数据库系统语言数据库系统语言是用户与数据库系统进行交互操作的主要工具,是连接用户与数据库系统的桥梁数据库语言功能的强弱直接影响到用户使用数据库系统的方便程度数据库系统语言通常包括数据库数据描述语言DDL(DataDescription Language)和数据库数据操作语言DML(Data ManipulationLanguage)这两种语言数据描述语言用于描述数据库中各种模式的定义;而数据操作语言则是用于描述对数据库中数据所要进行的各种操作这里我们将概述这两种语言一些根本功能【1】数据描述语言数据描述语言是建立和使用数据库的重要工具,它是用于描述数据库各层数据模式描述的语言数据库管理系统将对用户用该语言所描述的各层数据模式,进行编译,产生可供数据库系统操作时所使用的目标模式对应着数据库的模式、子模式和内模式,数据描述语言又可分为模式描述语言、子模式描述语言和内模式描述语言它们各自的功能如下
(1)模式描述语言,它是用来描述数据库概念层数据模式的,即用于描述数据库中所有数据以及它们间相互关系的特性用模式描述语言写出的数据库全体数据的逻辑组织结构的全部语句的集合,通常就被称为一个模式,一个模式的主要内容有1给数据库总体数据的逻辑组织结构,即模式取名2描述模式中每个记录类型名称,以及其中各数据项的名称、数据类型(如字符型、数字型等)和数据长度等3描述模式中各记录类型之间的相互联系,如果存在有相互联系的话一个模式仅仅是对数据库概念层逻辑数据组织结构的一个描述,并非是概念层逻辑数据本身与其它程序语言一样,模式描述语言也有自己的一套清晰而又严格的语句和语法规则对应不同类型的数据库系统,如层次数据库系统和网状数据库系统,它们的模式描述语言也有很大差异,即使是同一类型数据库系统,如关系数据库系统,不同软件商推出的系统,其模式描述语言也不尽相同但有一点是一致的,这就是它们都必须是可对上面所说明的,描述一个模式所需要包括的三个根本方面进行定义说明
(2)子模式描述语言,它是用来描述数据库用户层数据模式的,即用于描述用户所使用的数据的逻辑数据组织结构的定义用子模式描述语言写出的用户局部数据逻辑组织结构的全部语句的集合,通常就被称为一个子模式,一个子模式的主要内容有1给用户使用数据库所涉及到局部数据的逻辑组织结构,即子模式取名2描述子模式中所包含的每个记录类型及其中的各数据项,这些记录类型的名称以及各数据项的名称和长度,可以与模式中的定义有所不同,但这里主要是描述子模式中的记录类型及其数据项与模式中记录类型及其数据项之间的对应映射关系,子模式中所描述的记录及其中的数据项必须是已在模式中定义过的3描述子模式中各记录类型之间的相互联系这里同样是描述子模式中的记录间相互联系与模式中记录间相互联系之间的对应映射关系子模式中所描述的记录间相互联系必须是已在模式中定义过的与模式描述语言不同,子模式描述语言有时与编写应用程序所采用的其它程序设计语言相关,因此根据子模式描述语言所适用的编写应用程序语言,子模式描述语言也可分为COBOL子模式描述语言、FORTRAN子模式描述语言和C子模式描述语言等
(3)内模式描述语言,它是用来描述数据库中数据在物理存贮介质上的组织结构和存放方式等,它与数据库系统所运行的硬件环境特性相关例如,系统建立了哪些物理文件?文件的存贮设备是什么?文件是以什么样的组织方式等等,这些都是由内模式描述语言来负责描述的上述内容仅仅是关于数据描述语言中一些最根本的局部通常各软件商生产出的数据库系统,往往都要根据自己的具体实现情况,提供出相应的一整套数据描述语言的标准,其中也有一些数据库系统,对上述的数据描述语言的标准进行了一些简化,只给出一种或二种描述语言定义,或干脆将数据描述语言与数据操作语言归并到了一起,以方便用户使用如FoxPro数据库系统,以及目前比较流行的基于SQL的多种数据库系统
[2]数据操作语言数据操纵语言是用户操纵数据库中数据的工具,用户借助它来实现从数据库中检索数据、向数据库中添加数据、删除数据库中没有保存价值的数据或修改某些发生变化的数据等操作数据操纵语言通常分为两种类型,即宿主式数据操纵语言和自含式数据操纵语言自含式数据操纵语言在数据库系统中可独立使用,是一种完整的语言,这类语言使用简单方便,很适合于在终端上使用这类语言的优点是系统运行效率较高且使用简单,缺点是它的应用范围常常受到限制,例如要提取出数据库中的一些数据进行某种复杂运算处理时,单靠数据库系统所提供的这类数据操纵语言有时就很难做到这一点自含式数据操纵语言通常包含以下根本操作功能(A)从数据库中选择满足一定要求的记录或联系;(B)增加新的记录或联系到数据库中;(C)修改数据库中的记录或联系;(D)删除数据库中的记录或联系;另一种是宿主式数据操纵语言,它不能单独使用,必须嵌入到某种程序设计语言(如C,COBOL,FORTRAN)之中方能进行数据库操作,这种数据操纵语言语句仅负责对数据库中数据的操作,其它复杂的数据处理工作均有主语言完成,有时这样做会使得用户的应用程序变得相当复杂由于这样的程序既包含了主语言语句,也包含了数据操纵语言语句,也就使得主语言原来的编译程序便不能完全编译应用程序了,解决这一问题有两种方法(A)重新设计和实现一个编译程序,使之能编译包括数据操纵语言和主语言的所有语句,这种方法不大现实经济;(B)不修改主语言编译程序,而是设计一个预编程序来对应用程序中的数据操纵语言进行预编译,将其首先转换成用主语言写的程序,然后再用主语言的编译程序来编译,以产生最后的目标程序这样做方法比较可行,目前已为许多数据库系统所采用实际上许多数据库系统除了提供上述两种数据操作语言之外,还提供了许多编程工具和或编程命令,以便帮助用户更加容易地编制数据库的应用程序,如用户界面生成工具、报表生成工具和数据库API接口等
(二)数据库系统运行管理与控制软件数据库系统运行管理与控制软件是数据库管理系统软件的实际组成,它主要包括语言编译处理程序、系统运行控制程序和数据库日常管理程序以及数据库工具等多种软件下面将概述这几种软件一些根本功能
(1)语言编译处理程序它主要包括(A)数据库系统中各种数据描述语言的编译处理程序,它们的作用是将各种采用模式描述语言所定义数据模式编译成DBMS所使用的内部定义目标模式(B)数据库系统各种数据操纵语言的处理程序,它们可将应用程序中采用数据操纵语言所写的数据操作语句转换成其宿主语言编译程序所能处理的语句(C)终端操作命令解释程序,它主要用于解释终端操作命令的意义,完成相应数据库系统命令的执行过程(D)数据库控制命令解释程序,它负责解释执行每一条数据库控制命令
(2)系统运行控制程序它主要包括(A)数据库系统的总控程序,它用于检查访问的合法性,以决定一个访问是否能使用数据库(B)并发控制程序协调多个应用程序对数据库的操作,保证数据库中数据的一致性(C)保密控制程序实现对数据库数据的平安保密控制(D)数据完整性控制程序核对数据库完整性约束条件,以决定对数据库的操作是否有效(E)数据库存取访问程序实施对数据库中数据的操作,如执行检索、插入、修改、删除等操作(F)通讯控制程序实现用户程序与DBMS之间的通讯
(3)数据库日常管理程序这主要包括(A)数据装入程序实现将初始数据装入数据库(B)系统恢复程序当软硬件出现故障时,利用恢复程序将数据库恢复到正确状态(C)工作日志程序负责记载进入数据库的所有访问,其内容包括用户名称、进入系统时间、进行何种操作、数据变更情况等等使每个用户每次访问都留下踪迹(D)性能监测程序监测操作执行时间与存贮空间占用情况,为数据库的再组织提供依据(E)重新组织程序当数据库系统性能变坏时,对数据库重新进行物理组织(F)转贮、编辑、打印程序、用于转贮数据库的局部和全部数据,或者编辑打印数据等
(4)数据库工具软件它主要是为了方便建立数据库系统的具体应用,而提供各种工具软件其中有数据库系统应用程序界面制作工具,报表制作工具等许多软件工具最后我们简单介绍一下建立数据库应用系统的根本知识数据库应用系统的设计方法我们将在第五章详细介绍与其它应用软件开发与应用过程一样,数据库系统的应用,也有一个生命周期,它主要由以下五个阶段构成
(1)数据库系统的规划它包括系统的应用范围和功能确实认、应用环境的分析、DBMS及其支撑环境的选择、硬件配置,人员的配备和培训,投资估算和效益分析等活动
(2)数据库系统的设计它包括了解应用系统的信息和处理需求,设计满足其要求的整体数据模型及处理流程,并结合具体所采用的数据库系统、硬件环境和系统软件平台的特点,设计出符合具体数据库系统应用要求的数据模型,及其应用软件的流程图选择适宜的商用数据库系统,来设计、建立、管理和维护数据库系统,使之能够为用户提供最正确效劳
(3)数据库系统的建立首先根据数据库系统的设计结果,定义数据模式,规定访问权限,设置完整性约束然后准备数据,对其进行正确性校验后,将其录入,与此同时,完成主要应用程序的编制工作
(4)数据库系统的管理它包括应用软件的编制与修改、数据库的重新组织、数据库系统中数据的备份与恢复等工作保证数据库系统的完好,为用户提供可靠的效劳
(5)数据库系统的调整由于应用数据库系统的用户所在的硬环境,如单位组织调整、人员变化等,软环境,如人员素质、应用要求等,发生变化,在数据库系统运行一段时间后,往往都需要进行扩充与重构,即需要对数据库系统的各种数据模式的定义和处理流程进行适当的修改和补充,使之适应新的形势一般与一个数据库系统的应用系统有关的人员,有以下四类,他们是(A)系统管理员,他的任务主要是定义数据库系统的物理存储模式,分配并管理各用户操作的权限,管理日常数据库系统的运行工作,以及维护数据库系统中的数据,保证其完整和平安、(B)系统分析员,他们的任务主要是,从整体上分析数据库系统应用所涉及的客观信息结构和内容,定义相应的数据库系统的全局数据模式;(C)应用程序员,他们的任务主要是分析具体用户的信息处理需要,定义数据库系统的子模式,编写具体数据库应用程序;(D)用户,他们具体的数据库应用程序和数据库的最终使用者三数据库系统访问例如这里,我们介绍一下普通用户读取数据库系统中数据时,数据库的工作过程如下图,以便使读者可以从中了解DBMS是如何来进行数据库系统的管理工作的用户访问数据库系统中数据的过程实际上就是用户与DBMS进行交互的过程其具体步骤如下1用户通过应用程序指明它使用的子模式名称,发出数据操作命令,DBMS通过处理用户的应用程序,接收该操作命令2DBMS按照应用程序中的子模式名称,调出相应的子模式,核对该用户的访问权利、操作合法性等,若检查通过则继续执行,否则拒绝执行并报告出错信息3DBMS按模式确定子模式中操作所涉及的记录类型,并通过模式到存储模式的映射,找出这些记录类型的相应存贮模式4DBMS查阅存贮模式,确定应从哪个物理文件、存贮设备以及调用哪个访问程序去读取所需的记录5DBMS的访问程序找到有关的物理数据地址,向操作系统发出读操作命令6操作系统收到DBMS发来的命令后,启动系统的输入/输出程序完成读操作,把要读取的数据块送到内存中的系统缓冲区7DBMS收到操作系统关于输入/输出操作结束答复后,按模式、子模式的定义,将已读入到系统缓冲区的内容映射为用户程序所要的逻辑记录,并送到用户的工作区中8DBMS向应用程序发送反映操作执行结果的状态信息由状态字描述,如“执行成功〃、“数据未找到〃等9记载DBMS系统的工作日志10应用程序检查状态信息,如执行成功,则可对程序工作区中的数据作正常处理,否则按出错类型决定程序的后续处理用户修改一个记录的操作步骤也是类似的首先读出所需记录,在程序工作区中修改好,而后再把修改好的记录写回数据库中原记录的位置上图
1.4数据库的工作过程实体联系模型
1.3本节主要介绍有关实体联系模型的概念和根本知识,使读者了解并掌握根本的实体联系模型的使用方法。
个人认证
优秀文档
获得点赞 0