对象关系型DBMS开发技术课件_第1页
对象关系型DBMS开发技术课件_第2页
对象关系型DBMS开发技术课件_第3页
对象关系型DBMS开发技术课件_第4页
对象关系型DBMS开发技术课件_第5页
已阅读5页,还剩127页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

对象关系型DBMS开发技术

鞠时光对象关系型DBMS开发技术1第一章绪论如何理解数据库这个名词?为什么研究DBMS?我们研究DBMS的目的?现在常用的几类商业数据库世界上研究数据库处于前沿的单位第一章绪论如何理解数据库这个名词?2如何理解数据库这个名词DBMSDBMS的体系结构,存储方法(数据模式datamodel),索引机制,查询机制,优化查询等。数据库理论数据源:NormalForm系统模型:ER图,数据完整性dataintegrity,数据安全性datasecurity,数据共享datasharing信息利用:activedata,datafusion,datadining数据库应用如何理解数据库这个名词DBMS3本课目的扩展关系DBMS到对象关系型DBMS研究如何设计对象关系型DBMS的体系结构,存储方法,索引机制,查询机制等本课目的扩展关系DBMS到对象关系型DBMS4为什么研究DBMS?新兴的应用领域的需求:计算机集成制造系统(CIMS)办公信息系统(OIS)多媒体系统(multimedia)高维数据应用系统为什么研究DBMS?新兴的应用领域的需求:5计算机集成制造系统(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基础上发展起来的高技术.CIMS对DBMS的新功能要求包括能定义新的面向工程环境的数据模型;能修改和重新定义已有的数据结构;能存储和有效地检索设计图形和工程数据;能管理设计过程中对象演变的历史.计算机集成制造系统(CIMS)CIMS是在CAD,6对象关系型DBMS开发技术课件7办公信息系统(OIS)

办公环境处理信息的多样性(图形、图像、报表、文字、声音)及存储介质的多样性(纸张、声音、录音、录像、磁盘、光盘等)信息类型丰富时间因素不规则交互式界面信息的过滤与综合优先级调度和触发器办公信息系统(OIS)办公环境处理信息的多样性(图形、图8多媒体系统现在世界上85%的有用信息还未转变成电子形式,大部分是多媒体信息,如胶片。多媒体系统现在世界上85%的有用信息还未转变成电子形式,大部9高维数据应用系统(1)高维数据对数据库管理系统提出了许多特殊的要求:一个对象不能用存储字符编码的方式来存储。检索图象也不像检索一个字符串或一个字符那样方便。用户查询或检索某个对象,有时需据空间关系来进行。如:拓扑操作:“包含”,“相联”等。几何操作:“靠近”,“远离”,“覆盖”等等。方位操作:“在┄┄右边”,“在┄┄上面这些操作基于实体间相互所处的空间位置之上。高维数据应用系统(1)高维数据对数据库管理系统提出了许多特殊10高维数据应用系统(2)数据库管理语言有能力描述高维信息和字符信息的处理过程,但由于两种过程在本质上的差异。在诸如DDL,DML、SQL中,描述两种过程的语义规则不能混合。高维数据应用系统(2)数据库管理语言有能力描述高维信息11(为什么研究DBMS?)结论这些新的特征,使得传统的关系型DBMS,或者面向对象型DBMS均难以有效的管理这些类型的数据。促使我们去研究、引入新型的DBMS系统。其中最重要的研究方向之一就是将面向对象技术与关系数据库技术相结合,构造新型的对象-关系型数据库管理系统(为什么研究DBMS?)结论这些新的特征,使得传统的12我们研究DBMS的目的数据库管理系统

(DBMS)的研究与开发

WEB数据库(电子商务、电子政务系统)安全数据库

数据挖掘数据拟合对象关系型DBMS可视化数据库查询语言

GIS系统

工程数据库

(如CAD数据库)我们研究DBMS的目的数据库管理系统

(DBMS)的研究与13常用的几类商业数据库

2

4

1

3有无查询功能

复杂简单简单复杂数据复杂度常用的几类商业数据库2413有无查询功能14区域1:表示处理的是简单数据常见的正文处理系统有word,Framemaker,wordperfect,vi等。这些正文系统可归类为最简单的DBMS软件系统。用名字打开文件,文件内容被拷贝到虚存中。在编辑正文时,更新虚存对象,对象被定期地保存到硬盘中。在结束正文处理时关闭文件,这时,虚存中的拷贝被存到文件系统中区域1:表示处理的是简单数据常见的正文处理系统有word15区域2:简单数据,复杂查询

关系数据库。目前常见的保险业务处理系统、企业的人事管理、生产管理、物资管理等信息管理系统都是基于这种RDBMS之上开发的。如Informix,Oracle,delph,VB,VF等。查询语言,国际标准组织相继推出SQL-86、SQL-89和SQL-92标准。为了方便数据库应用系统的开发,数据库厂商开发了各种客户工具,除了可以在SQL语句中嵌入第三代语言(如C,COBOL等),还提供4GL第四代语言区域2:简单数据,复杂查询关系数据库。目前常见的保险业16区域2:传统数据库不足之处(1)传统数据模型,特别是关系数据模型用来描述复杂的嵌套实体就显得过于简单。传统数据库系统也没有提供相应的机制去表达和管理这些实体。(2)传统数据库系统只支持有限的数据类型,它甚至不支持对较长的非结构化数据,如图形、图像和文本文档的存储和检索。(3)传统数据模型不含若干常用的语义概念,如像泛化(generalization)和聚集(aggregation)关系。(4)许多应用程序是用某种程序设计语言(FORTRAN、或C)嵌入到某个数据库语言(如SQL、DML)实现的。而程序设计语言与数据库语言无论在数据模型还是在数据结构上都是很不相同的.区域2:传统数据库不足之处(1)传统数据模型,特别是关系数据17区域3:复杂数据,简单查询本类应用与前两类应用最主要的不同在于增加了复杂数据。而与第二类应用相比,它又几乎没有查询要求.面向对象数据库产品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。这些产品在坚固性,可伸缩性,客户/服务器结构,应用开发工具等许多方面不如RDBMS产品。区域3:复杂数据,简单查询本类应用与前两类应用最主要的18区域3:面向对象数据库的不足

面向对象数据库产品在程序设计接口、实现方法(手段)、对查询的支持等等方面都存在许多差异。面向对象的数据库产品在一些方面仍然落后于关系数据库产品,例如,还没有OODB支持视图机制.OODB明显缺乏最终用户工具及应用开发工具.OODB的商业市场的增长速度比预想的要慢的多.区域3:面向对象数据库的不足面向对象数据库产品在程序19区域4:复杂数据,复杂查询(1)图象数据库,其结构定义如下:createtablephoto(idint;/*图象编号*/datedate;/*拍摄日期*/captiondocument;/*图象说明*/picturephoto_CD_image;/*图象编码*/);区域4:复杂数据,复杂查询(1)图象数据库,其结构定义如下:20被存储的对象具有复杂的数据结构按内容对图象进行查询还要求数据库管理系统允许用户自定义数据类型.并自定义这些数据类型上的函数和操作区域4:复杂数据,复杂查询(2)被存储的对象具有复杂的数据结构区域4:复杂数据,复杂查询(221(1)表达和管理复杂嵌套对象的能力,以允许逐步细化复杂实体。(2)存储和检索任意长数据的能力。(3)定义和管理任意数据类型的能力。(4)表达和管理数据库变化的能力,包括时间和时间间隔的表示法,单对象的版本,复杂嵌套对象的版本和模式实体的版本。(5)表达和操作各种有用的语义模型概念的能力。例如CAE、复合文档合成等等上下文中的装配部分层次就是这些概念之一。(6)指定规则和扩充制约的能力,以支持基于知识的应用。。(7)管理长协同事务的能力。下一代数据库系统的特征(1)表达和管理复杂嵌套对象的能力,以允许逐步细化复杂实体。22世界上研究数据库处于前沿的单位(1)Http://(2)PostgreSQL-Object-RelationalDBMS

(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究数据库处于前沿的单位(1)Http://www.23第二章对象关系数据库的基本特性ORDBMS的定义开发对象-关系DBMS的途径支持复杂对象基类扩充继承机制规则系统第二章对象关系数据库的基本特性ORDBMS的定义241990年,由Stonebraker等人组成的高级DBMS功能委员会发表的“第三代数据库系统宣言”:第三代对象关系型数据库系统必须具备的三条原则:原则1:除传统的数据管理服务外,第三代DBMS将支持更加丰富的对象结构和规则。原则2:第三代DBMS必须包含第二代(即关系的)DBMS的所有功能。原则3:第三代DBMS必须对其它子系统开放。ORDBMS的定义1990年,由Stonebraker等人组成的高级25对象关系型DBMS这种系统具备关系数据库管理系统的功能,同时又支持面向对象的特性。它是关系数据库技术与面向对象技术的融合。主要是扩充基类、支持动态数据类型、支持复杂对象和大对象、增加复杂对象继承机制及支持规则系统等。并支持SQL查询语言的超集ORSQL。它适合于具有高维数据、动态数据、复杂查询等工程应用领域。可用作开发CAD、多媒体、CIMS、GIS等应用系统。对象关系型DBMS这种系统具备关系数据库管理系统的功能,同时26实现这种系统需研究:通用存储机制。系统的存储机制必须能存储对象关系型数据。类属的索引机制。原有的关系型DBMS只为数字和字符串两种数据类型内置了B树代码。在ORDBMS中,B树代码必须是类属的。这样就可以在任何数据类型上建立B树索引。使得系统能在任何数据类型上提供高维存取方法。实现这种系统需研究:27必须提供用户自定义新的数据类型和函数的功能。这种可扩充性消除了传统的DBMS必须进行的对新数据类型和函数的繁琐模拟。规则系统。这些规则被数据库系统实施后,存储的数据变的更主动(active),使得它更具有自己的行为。即数据库中的数据能自己讲话。研究定义对象关系型数据库查询语言ORSQL

必须提供用户自定义新的数据类型和函数的功能。这种可扩充性消除28开发对象关系DBMS的途径(1)从头写一个ORDBMS(2)对ORDBMS进行功能扩充(要在源代码上进行)第一个采用增量式演变策略的是Ingres公司,1988年开始,将关系型引擎扩展为具有基本类型扩充功能和规则管理的系统(3)写一个包装层包装层就是在传统的关系型引擎上裹着一个模拟层。这个模拟层支持对象关系型API,其办法是将用户提交的对象关系型查询映像成关系型查询,然后在传统关系型引擎上执行。HP公司已采用包装层策略,把关系型引擎Allbase改造成关系-对象型引擎OpenODB。模拟效率是非常低的。因为在包装层中执行整个查询,就意味着包装层必须有第二个SQL分析器,第二个优化器和第二个执行器开发对象关系DBMS的途径(1)从头写一个ORDBMS29IBM的DB2/CSV2.0系统和CA-Ingres系统支持用户定义的基类、继承和视图等。Illustra是当前对象关系市场上功能相当完备的产品,提供基于抽象数据类型(ADT)、已经开发好的类型扩充软件包,用于管理诸如图象和正文等数据类型。这样的软件包有Illustra的DataBlade.IBM的DatabaseExtender等几个具有对象关系数据库特征的产品IBM的DB2/CSV2.0系统和CA-Ingres系统支30支持复杂对象特性1:丰富的复杂对象类型“组合”、“集合”和“指针”三种类型构造器。特性2:复杂对象类型上的函数特性3:复杂对象的大小对组合的成员总存储量大小不应有限制,对集合大小和成员数目也不应有限制。特性4.:SQL的超集支持复杂对象特性1:丰富的复杂对象类型31创建复杂对象(组合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t这种复杂对象类型,一个公司的职工信息表可以定义成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);创建复杂对象(组合)CREATEROWTYPEaddr32CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的职员表可以更简单的定义为:CREATETABLEemployeeOFTYPEemployee_t;把职工的所有信息定义为一个类型CREATEROWTYPEemployee_t(把33这样创建的表称为“类型表”,可见这种表并不满足1NF范式这样创建的表称为“类型表”,可见这种表并不满足1NF范式34集合集合SET:普通的集合类型,元素不能重复。多值集合MULTISET:元素可以重复的集合。列表LIST:有顺序的集合。集合集合SET:普通的集合类型,35指针指针类型的存在基于以下事实:数据库表中的一行或一个复杂对象的实例可以有一个唯一的内部标识――称作行标识(ROWID)或对象标识(OID).指针实际存储的是这种标识。这些标识是永久的,且绝对不会重复.例,可把公司中某一部门表的manager列改成指针类型:managerREF(employee-t)指针指针类型的存在基于以下事实:数据库表中的36综合利用指针的集合在部门表中直接包含部门的职员workersSET(REF(employee-t))引入复杂对象后的部门表定义如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));结构非常简明,并且完整的描述了一个部门的信息。

综合利用指针的集合在部门表中直接包含部门的职员37基类扩充SQL-92定义的基本数据类型只有以下几种:整数、实数、字符串(定长或可变长)、时间.基本数据类型上的操作符和函数也都是精确定义(有的是硬编码)的.所谓基类扩充,是指用户在SQL中能创建带有相应操作符和函数的新数据类型.创建一个新的基类需定义类型名、类型的存储信息和将该数据类型与ASCII字符互相转换的子程序。基类扩充SQL-92定义的基本数据类型只有以38创建一个新的基类创建基类需定义类型名、类型的存储信息和将该数据类型与ASCII字符互相转换的子程序:创建类型语句创建其上的输入函数创建其上的输出函数创建一个新的基类创建基类需定义类型名、类型39下面是IUS中创建OpaqueType的基类complex的例子创建类型语句:CREATEOPAQUETYPEcomplex(internallength=8,alighnment=4);创建其上的输入函数:CREATEFUNCTIONcomplex_in(lvarchar)RETURNINGcomplexWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEIMPLICITCAST(lvarcharascomplexwithcomplex_in);下面是IUS中创建OpaqueType的基类complex40创建其上的输出函数:CREATEFUNCTIONcomplex_out(complex)RETURNINGlvarcharWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEEXPLICITCAST(complexaslvarcharwithcomplex_out);创建其上的输出函数:41用户定义的类型,用户可以加入各种操作操作函数的定义:用通用的第三代编程语言如C等来编写函数。然后将函数注册到系统中去.如Informix的StoredProcedureLanguage(SPL)语言写函数。格式如下:CREATE[DBA]FUNCTION<函数名>[参数表]{RETURNS|RETURNING}<类型名>[SPECIFIC<特定名>][WITH(<修饰符表>)]<SPL语句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用户定义的类型,用户可以加入各种操作操作函数的定义:42我们定义一个函数increase_by_pct用来求一个数按某个百分比增长后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定义操作函数例我们定义一个函数increase_by_pct用来求一个数43使用定义操作函数的方法1。直接执行这个函数EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定义操作函数的方法1。直接执行这个函数442。在SQL语句中使用该函数例如,有一张表Inventory如下:part_id,description,quantity,price,total_price,last_shipHDW566,ClawHammer,10,10.00,NULL,NULL在select语句中使用该函数:SELECTincrease_by_pct(price,20)AShigher_priceFROMinventory;在update语句中使用该函数:UPDATEinventorySETprice=increase_by_pct(price,20);SELECT*FROMinventory;使用定义操作函数的方法2。在SQL语句中使用该函数使用定义操作函数的方法45定义操作符传统SQL支持相当多的操作符。例如,对整数和浮点数都有比较操作符(<,<=,=,>,<>).从语法上讲,每个操作符都是一个双参数函数,只不过函数名出现在二个参数之间。Illustra系统中用以下命令来注册操作符:createoperatorbindingopr-nameTOfunction-name;定义操作符传统SQL支持相当多的操作符。46以职工信息系统为例。现假设有一查询如下:selectfromemp,emprwhere=‘Ju’anddistance(emp.location,r.location)<1以上查询也可表示为:selectfromemp,emprwhere=‘Ju”andcontained(r.location,circle(emp.location,1);定义操作符例以职工信息系统为例。现假设有一查询如下:定义操作符例47我们将“<<”定义为对应于函数contained的操作符,则也可用操作符来写这个查询:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定义操作符例我们将“<<”定义为对应于函数contained的操作符,则48基类扩充模块DataBlade基类扩充模块是一种标准的软件模块,它可以被插入到数据库中,用以扩展其能力.Informix现在正在推出的基类扩充模块有二十多个,这里列举几个:1.二维/三维空间基类扩充模块对二维和三维空间对象(点、线、面等)进行存储和分析,并使用高性能的R树对数据进行访问。使用函数(overlap,area,containment等)对空间对象进行各种操作。2.图象基类扩充模块在单色或彩色模式下,对50多种格式(TIFF、GIF、JPEG等)的图象进行转换、存储、操作、加强和管理。还提供许多范例,包括旋转、边界加强和卷积等。基类扩充模块DataBlade基类扩充模块是一种493.正文基类扩充模块使用一个广泛的函数集,来处理基于内容的文档查找。4.时间序列基类扩充模块对任何类型(整数、浮点数、正文信息等)数据的有规律的重复性的时间进行定义和操作,这是金融分析中的一个关键性需求。5.Web基类扩充模块快速创建智能化的交互Web应用,可根据存储在数据库中的信息动态地生成HTML页。6.VIR(可视化的信息查询)基类扩充模块通过强有力的,基于内容的查询机制来对图象和影像信息进行查询。这一机制依据图象属性,例如颜色、形状、质地和组成成分等,来分析可视信息。基类扩充模块(DataBlade)23.正文基类扩充模块基类扩充模块(DataBlade)250继承机制支持子类对父类的继承是面向对象方法的重要特性之一。在实际的问题模型中,许多对象之间有着继承的关系。提供继承机制,可以更好的模拟实际问题,有利于软件的高内聚,低耦合的模块化,也有利于软件的一致性和可重用性.继承机制支持子类对父类的继承是面向对象方法的重要51继承分类一个子类对象(子类数据或子表)可以从父类对象中继承数据属性和行为。其中行为一般包括函数,操作符,约束条件定义,参照完整性,存取方法,存储策略以及触发器等。数据继承函数继承继承分类一个子类对象(子类数据或子表)可以从父52数据继承(1)假设某公司的雇员中有工程师,销售人员以及其他人员。我们可以定义雇员元组类型作为父类型,而定义工程师和销售人员元组类型作为他的子类型。数据继承(1)假设某公司的雇员中有工程师,销53我们可以用下面的语句定义公司职工的元组类型:CreateROWTYPEemp_t(namevarchar(30),base_salarynumeric(12,2),managerREF(emp_t));CreateROWTYPEengineer_t(skillsvarchar(20),bonusnumeric(12,2))UNDERemp_t;CreateROWTYPEsales_t(territoryvarchar(30),commisionnumeric(12,2),annual_salesnumeric(12,2))UNDERemp_t;这样,engineer_t和sales_t就继承了emp_t的数据属性数据继承(2)我们可以用下面的语句定义公司职工的元组类型:数据继承(2)54多重继承多重继承是指一个子类型可以从多个父类型继承。例如,销售工程师类型既是工程师的子类型,又是销售人员的子类型:如果它的两个父类型有重名属性,则它继承哪个属性就存在二义性。解决这种二义性有两种方法:一是用户在定义多重继承结构时,父类们不允许有重名属性,否则给出错误。二是有DBA定义处理二义性的规则,继承哪个属性由规则决定,但用户恐怕很难理解这些规则。当然,前者比后者简单得多。多重继承多重继承是指一个子类型可以从多个父类型55在IUS中,数据库权限增加了UNDER权限,定义表的用户必须对他所用到的父表有UNDER权限。而且,表中继承关系的定义应该和它们相对应的元组类型的继承关系相吻合。CREATETABLE empOFTYPEEMP_T;CREATETABLEengineerOFTYPEengineer_tUNDERemp;CREATETABLEengineerOFTYPEsales_tUNDERemp;多重继承例在IUS中,数据库权限增加了UNDER权限,定义表的用户必须56对象关系型DBMS开发技术课件57ORDBMS允许从表的继承层次系统中查询数据,也就是说,既可以从某一个表查询数据,又可以查询某一个表及其所有后代表中的数据。IUS提供了三种不同的SELECT语句来完成上述功能。(1)SELECT*FROMONLY(emp);只查询表emp中的记录;(2)SELECT*FROMemp不但查询emp表的记录,还要查询它的所有后代表engineer和sales表中的记录。但是,这个语句查询的仅仅是基表的字段,即只是三个字段:name,base-salary和manager。(3)SELECTempFROMemp;查询结果是三个表的所有记录,而三个表的所有字段都在查询结果之中。多重继承的查询ORDBMS允许从表的继承层次系统中查询数据,也就是说,多重58函数的继承是行为继承中重要的一种。定义在父类的函数可以被它的子类继承。一个函数定义在哪个类上是由它的参数的数据类型所决定的。比如,下面的语句分别在emp_t和engineer_t类上定义salary函数:createfunctionsalary(empemp_t)returningnumeric;return(emp.base_salary);endfunction;createfunctionsalary(empengineer_t)returningnumeric;return(emp.base_salary+emp.bonus);endfunction;函数继承函数的继承是行为继承中重要的一种。定义在父59sales-t类继承了其父类emp-t上定义的salary函数,但是,engineer-t也可以继承emp-t的salary函数,而又定义了自己的salary函数这时在对engineer-t类中。引用salary函数时,应该是在engineer-t上定义的那个版本。IUS在运行某段代码过程中需要计算某个函数时,如果它的实参数据类型上定义了这个函数,则引用这个版本;否则,则沿着实参数据类型的父类方向在继承层次中向上查找,直至找到它的一个祖先类型上定义了这个函数为止函数继承例sales-t类继承了其父类emp-t上定义的s60规则系统规则定义的格式一般如下:ONEVENTDOACTION规则分为四种基本类型:修改-修改规则;查询-修改规则;修改-查询规则;查询-查询规则规则系统61修改-修改规则事件是一个修改型操作(包括修改、增加、删除操作),而动作也是修改型操作的规则ONUPDATETOemp.base_salaryWHERE=’mike’DOUPDATEempSETbase_salary=new.base_salaryWHEREname=’jane’

将能使Jane的基本工资与Mike始终相同修改-修改规则事件是一个修改型操作(包括修改、增加、删除操作62查询-修改规则该规则是一个查询事件激活一个修改性的动作。例如:ONSELECTTOemp.base_salaryWHERE=’Mike’DOINSERTINTOauditVALUES(current.base_salary,user,current_time);这个规则在对Mike的基本工资进行查询时,将相同的信息存入audit表中,这样就可以维护一个查询Mike工资的事件踪迹表。查询-修改规则该规则是一个查询事件激活一个修改性的动作。例如63修改-查询规则ONUPDATETOemp.base_salaryWHERE=’Mike’DOmy-alert;当对Mike工资修改时,系统将会发出警报修改-查询规则ONUPDATETOemp.ba64查询-查询规则ONSELECTTOemp.base_salaryWHERE=’Jane’DOINSTEADSELECTbase_salaryFROMempWHEREname=’Mike’当查询Jane的工资时,返回Mike的工资。这样存储Jane工资的单元永远不会被访问。查询-查询规则ONSELECTTOemp.bas65第二章小结一个对象关系型DBMS所具有的特征。第二章小结一个对象关系型DBMS所具有的特征。66对象关系型DBMS开发技术

鞠时光对象关系型DBMS开发技术67第一章绪论如何理解数据库这个名词?为什么研究DBMS?我们研究DBMS的目的?现在常用的几类商业数据库世界上研究数据库处于前沿的单位第一章绪论如何理解数据库这个名词?68如何理解数据库这个名词DBMSDBMS的体系结构,存储方法(数据模式datamodel),索引机制,查询机制,优化查询等。数据库理论数据源:NormalForm系统模型:ER图,数据完整性dataintegrity,数据安全性datasecurity,数据共享datasharing信息利用:activedata,datafusion,datadining数据库应用如何理解数据库这个名词DBMS69本课目的扩展关系DBMS到对象关系型DBMS研究如何设计对象关系型DBMS的体系结构,存储方法,索引机制,查询机制等本课目的扩展关系DBMS到对象关系型DBMS70为什么研究DBMS?新兴的应用领域的需求:计算机集成制造系统(CIMS)办公信息系统(OIS)多媒体系统(multimedia)高维数据应用系统为什么研究DBMS?新兴的应用领域的需求:71计算机集成制造系统(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基础上发展起来的高技术.CIMS对DBMS的新功能要求包括能定义新的面向工程环境的数据模型;能修改和重新定义已有的数据结构;能存储和有效地检索设计图形和工程数据;能管理设计过程中对象演变的历史.计算机集成制造系统(CIMS)CIMS是在CAD,72对象关系型DBMS开发技术课件73办公信息系统(OIS)

办公环境处理信息的多样性(图形、图像、报表、文字、声音)及存储介质的多样性(纸张、声音、录音、录像、磁盘、光盘等)信息类型丰富时间因素不规则交互式界面信息的过滤与综合优先级调度和触发器办公信息系统(OIS)办公环境处理信息的多样性(图形、图74多媒体系统现在世界上85%的有用信息还未转变成电子形式,大部分是多媒体信息,如胶片。多媒体系统现在世界上85%的有用信息还未转变成电子形式,大部75高维数据应用系统(1)高维数据对数据库管理系统提出了许多特殊的要求:一个对象不能用存储字符编码的方式来存储。检索图象也不像检索一个字符串或一个字符那样方便。用户查询或检索某个对象,有时需据空间关系来进行。如:拓扑操作:“包含”,“相联”等。几何操作:“靠近”,“远离”,“覆盖”等等。方位操作:“在┄┄右边”,“在┄┄上面这些操作基于实体间相互所处的空间位置之上。高维数据应用系统(1)高维数据对数据库管理系统提出了许多特殊76高维数据应用系统(2)数据库管理语言有能力描述高维信息和字符信息的处理过程,但由于两种过程在本质上的差异。在诸如DDL,DML、SQL中,描述两种过程的语义规则不能混合。高维数据应用系统(2)数据库管理语言有能力描述高维信息77(为什么研究DBMS?)结论这些新的特征,使得传统的关系型DBMS,或者面向对象型DBMS均难以有效的管理这些类型的数据。促使我们去研究、引入新型的DBMS系统。其中最重要的研究方向之一就是将面向对象技术与关系数据库技术相结合,构造新型的对象-关系型数据库管理系统(为什么研究DBMS?)结论这些新的特征,使得传统的78我们研究DBMS的目的数据库管理系统

(DBMS)的研究与开发

WEB数据库(电子商务、电子政务系统)安全数据库

数据挖掘数据拟合对象关系型DBMS可视化数据库查询语言

GIS系统

工程数据库

(如CAD数据库)我们研究DBMS的目的数据库管理系统

(DBMS)的研究与79常用的几类商业数据库

2

4

1

3有无查询功能

复杂简单简单复杂数据复杂度常用的几类商业数据库2413有无查询功能80区域1:表示处理的是简单数据常见的正文处理系统有word,Framemaker,wordperfect,vi等。这些正文系统可归类为最简单的DBMS软件系统。用名字打开文件,文件内容被拷贝到虚存中。在编辑正文时,更新虚存对象,对象被定期地保存到硬盘中。在结束正文处理时关闭文件,这时,虚存中的拷贝被存到文件系统中区域1:表示处理的是简单数据常见的正文处理系统有word81区域2:简单数据,复杂查询

关系数据库。目前常见的保险业务处理系统、企业的人事管理、生产管理、物资管理等信息管理系统都是基于这种RDBMS之上开发的。如Informix,Oracle,delph,VB,VF等。查询语言,国际标准组织相继推出SQL-86、SQL-89和SQL-92标准。为了方便数据库应用系统的开发,数据库厂商开发了各种客户工具,除了可以在SQL语句中嵌入第三代语言(如C,COBOL等),还提供4GL第四代语言区域2:简单数据,复杂查询关系数据库。目前常见的保险业82区域2:传统数据库不足之处(1)传统数据模型,特别是关系数据模型用来描述复杂的嵌套实体就显得过于简单。传统数据库系统也没有提供相应的机制去表达和管理这些实体。(2)传统数据库系统只支持有限的数据类型,它甚至不支持对较长的非结构化数据,如图形、图像和文本文档的存储和检索。(3)传统数据模型不含若干常用的语义概念,如像泛化(generalization)和聚集(aggregation)关系。(4)许多应用程序是用某种程序设计语言(FORTRAN、或C)嵌入到某个数据库语言(如SQL、DML)实现的。而程序设计语言与数据库语言无论在数据模型还是在数据结构上都是很不相同的.区域2:传统数据库不足之处(1)传统数据模型,特别是关系数据83区域3:复杂数据,简单查询本类应用与前两类应用最主要的不同在于增加了复杂数据。而与第二类应用相比,它又几乎没有查询要求.面向对象数据库产品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。这些产品在坚固性,可伸缩性,客户/服务器结构,应用开发工具等许多方面不如RDBMS产品。区域3:复杂数据,简单查询本类应用与前两类应用最主要的84区域3:面向对象数据库的不足

面向对象数据库产品在程序设计接口、实现方法(手段)、对查询的支持等等方面都存在许多差异。面向对象的数据库产品在一些方面仍然落后于关系数据库产品,例如,还没有OODB支持视图机制.OODB明显缺乏最终用户工具及应用开发工具.OODB的商业市场的增长速度比预想的要慢的多.区域3:面向对象数据库的不足面向对象数据库产品在程序85区域4:复杂数据,复杂查询(1)图象数据库,其结构定义如下:createtablephoto(idint;/*图象编号*/datedate;/*拍摄日期*/captiondocument;/*图象说明*/picturephoto_CD_image;/*图象编码*/);区域4:复杂数据,复杂查询(1)图象数据库,其结构定义如下:86被存储的对象具有复杂的数据结构按内容对图象进行查询还要求数据库管理系统允许用户自定义数据类型.并自定义这些数据类型上的函数和操作区域4:复杂数据,复杂查询(2)被存储的对象具有复杂的数据结构区域4:复杂数据,复杂查询(287(1)表达和管理复杂嵌套对象的能力,以允许逐步细化复杂实体。(2)存储和检索任意长数据的能力。(3)定义和管理任意数据类型的能力。(4)表达和管理数据库变化的能力,包括时间和时间间隔的表示法,单对象的版本,复杂嵌套对象的版本和模式实体的版本。(5)表达和操作各种有用的语义模型概念的能力。例如CAE、复合文档合成等等上下文中的装配部分层次就是这些概念之一。(6)指定规则和扩充制约的能力,以支持基于知识的应用。。(7)管理长协同事务的能力。下一代数据库系统的特征(1)表达和管理复杂嵌套对象的能力,以允许逐步细化复杂实体。88世界上研究数据库处于前沿的单位(1)Http://(2)PostgreSQL-Object-RelationalDBMS

(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究数据库处于前沿的单位(1)Http://www.89第二章对象关系数据库的基本特性ORDBMS的定义开发对象-关系DBMS的途径支持复杂对象基类扩充继承机制规则系统第二章对象关系数据库的基本特性ORDBMS的定义901990年,由Stonebraker等人组成的高级DBMS功能委员会发表的“第三代数据库系统宣言”:第三代对象关系型数据库系统必须具备的三条原则:原则1:除传统的数据管理服务外,第三代DBMS将支持更加丰富的对象结构和规则。原则2:第三代DBMS必须包含第二代(即关系的)DBMS的所有功能。原则3:第三代DBMS必须对其它子系统开放。ORDBMS的定义1990年,由Stonebraker等人组成的高级91对象关系型DBMS这种系统具备关系数据库管理系统的功能,同时又支持面向对象的特性。它是关系数据库技术与面向对象技术的融合。主要是扩充基类、支持动态数据类型、支持复杂对象和大对象、增加复杂对象继承机制及支持规则系统等。并支持SQL查询语言的超集ORSQL。它适合于具有高维数据、动态数据、复杂查询等工程应用领域。可用作开发CAD、多媒体、CIMS、GIS等应用系统。对象关系型DBMS这种系统具备关系数据库管理系统的功能,同时92实现这种系统需研究:通用存储机制。系统的存储机制必须能存储对象关系型数据。类属的索引机制。原有的关系型DBMS只为数字和字符串两种数据类型内置了B树代码。在ORDBMS中,B树代码必须是类属的。这样就可以在任何数据类型上建立B树索引。使得系统能在任何数据类型上提供高维存取方法。实现这种系统需研究:93必须提供用户自定义新的数据类型和函数的功能。这种可扩充性消除了传统的DBMS必须进行的对新数据类型和函数的繁琐模拟。规则系统。这些规则被数据库系统实施后,存储的数据变的更主动(active),使得它更具有自己的行为。即数据库中的数据能自己讲话。研究定义对象关系型数据库查询语言ORSQL

必须提供用户自定义新的数据类型和函数的功能。这种可扩充性消除94开发对象关系DBMS的途径(1)从头写一个ORDBMS(2)对ORDBMS进行功能扩充(要在源代码上进行)第一个采用增量式演变策略的是Ingres公司,1988年开始,将关系型引擎扩展为具有基本类型扩充功能和规则管理的系统(3)写一个包装层包装层就是在传统的关系型引擎上裹着一个模拟层。这个模拟层支持对象关系型API,其办法是将用户提交的对象关系型查询映像成关系型查询,然后在传统关系型引擎上执行。HP公司已采用包装层策略,把关系型引擎Allbase改造成关系-对象型引擎OpenODB。模拟效率是非常低的。因为在包装层中执行整个查询,就意味着包装层必须有第二个SQL分析器,第二个优化器和第二个执行器开发对象关系DBMS的途径(1)从头写一个ORDBMS95IBM的DB2/CSV2.0系统和CA-Ingres系统支持用户定义的基类、继承和视图等。Illustra是当前对象关系市场上功能相当完备的产品,提供基于抽象数据类型(ADT)、已经开发好的类型扩充软件包,用于管理诸如图象和正文等数据类型。这样的软件包有Illustra的DataBlade.IBM的DatabaseExtender等几个具有对象关系数据库特征的产品IBM的DB2/CSV2.0系统和CA-Ingres系统支96支持复杂对象特性1:丰富的复杂对象类型“组合”、“集合”和“指针”三种类型构造器。特性2:复杂对象类型上的函数特性3:复杂对象的大小对组合的成员总存储量大小不应有限制,对集合大小和成员数目也不应有限制。特性4.:SQL的超集支持复杂对象特性1:丰富的复杂对象类型97创建复杂对象(组合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t这种复杂对象类型,一个公司的职工信息表可以定义成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);创建复杂对象(组合)CREATEROWTYPEaddr98CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的职员表可以更简单的定义为:CREATETABLEemployeeOFTYPEemployee_t;把职工的所有信息定义为一个类型CREATEROWTYPEemployee_t(把99这样创建的表称为“类型表”,可见这种表并不满足1NF范式这样创建的表称为“类型表”,可见这种表并不满足1NF范式100集合集合SET:普通的集合类型,元素不能重复。多值集合MULTISET:元素可以重复的集合。列表LIST:有顺序的集合。集合集合SET:普通的集合类型,101指针指针类型的存在基于以下事实:数据库表中的一行或一个复杂对象的实例可以有一个唯一的内部标识――称作行标识(ROWID)或对象标识(OID).指针实际存储的是这种标识。这些标识是永久的,且绝对不会重复.例,可把公司中某一部门表的manager列改成指针类型:managerREF(employee-t)指针指针类型的存在基于以下事实:数据库表中的102综合利用指针的集合在部门表中直接包含部门的职员workersSET(REF(employee-t))引入复杂对象后的部门表定义如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));结构非常简明,并且完整的描述了一个部门的信息。

综合利用指针的集合在部门表中直接包含部门的职员103基类扩充SQL-92定义的基本数据类型只有以下几种:整数、实数、字符串(定长或可变长)、时间.基本数据类型上的操作符和函数也都是精确定义(有的是硬编码)的.所谓基类扩充,是指用户在SQL中能创建带有相应操作符和函数的新数据类型.创建一个新的基类需定义类型名、类型的存储信息和将该数据类型与ASCII字符互相转换的子程序。基类扩充SQL-92定义的基本数据类型只有以104创建一个新的基类创建基类需定义类型名、类型的存储信息和将该数据类型与ASCII字符互相转换的子程序:创建类型语句创建其上的输入函数创建其上的输出函数创建一个新的基类创建基类需定义类型名、类型105下面是IUS中创建OpaqueType的基类complex的例子创建类型语句:CREATEOPAQUETYPEcomplex(internallength=8,alighnment=4);创建其上的输入函数:CREATEFUNCTIONcomplex_in(lvarchar)RETURNINGcomplexWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEIMPLICITCAST(lvarcharascomplexwithcomplex_in);下面是IUS中创建OpaqueType的基类complex106创建其上的输出函数:CREATEFUNCTIONcomplex_out(complex)RETURNINGlvarcharWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEEXPLICITCAST(complexaslvarcharwithcomplex_out);创建其上的输出函数:107用户定义的类型,用户可以加入各种操作操作函数的定义:用通用的第三代编程语言如C等来编写函数。然后将函数注册到系统中去.如Informix的StoredProcedureLanguage(SPL)语言写函数。格式如下:CREATE[DBA]FUNCTION<函数名>[参数表]{RETURNS|RETURNING}<类型名>[SPECIFIC<特定名>][WITH(<修饰符表>)]<SPL语句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用户定义的类型,用户可以加入各种操作操作函数的定义:108我们定义一个函数increase_by_pct用来求一个数按某个百分比增长后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定义操作函数例我们定义一个函数increase_by_pct用来求一个数109使用定义操作函数的方法1。直接执行这个函数EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定义操作函数的方法1。直接执行这个函数1102。在SQL语句中使用该函数例如,有一张表Inventory如下:part_id,description,quantity,price,total_price,last_shipHDW566,ClawHammer,10,10.00,NULL,NULL在select语句中使用该函数:SELECTincrease_by_pct(price,20)AShigher_priceFROMinventory;在update语句中使用该函数:UPDATEinventorySETprice=increase_by_pct(price,20);SELECT*FROMinventory;使用定义操作函数的方法2。在SQL语句中使用该函数使用定义操作函数的方法111定义操作符传统SQL支持相当多的操作符。例如,对整数和浮点数都有比较操作符(<,<=,=,>,<>).从语法上讲,每个操作符都是一个双参数函数,只不过函数名出现在二个参数之间。Illustra系统中用以下命令来注册操作符:createoperatorbindingopr-nameTOfunction-name;定义操作符传统SQL支持相当多的操作符。112以职工信息系统为例。现假设有一查询如下:selectfromemp,emprwhere=‘Ju’anddistance(emp.location,r.location)<1以上查询也可表示为:selectfromemp,emprwhere=‘Ju”andcontained(r.location,circle(emp.location,1);定义操作符例以职工信息系统为例。现假设有一查询如下:定义操作符例113我们将“<<”定义为对应于函数contained的操作符,则也可用操作符来写这个查询:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定义操作符例我们将“<<”定义为对应于函数contained的操作符,则114基类扩充模块DataBlade基类扩充模块是一种标准的软件模块,它可以被插入到数据库中,用以扩展其能力.Informix现在正在推出的基类扩充模块有二十多个,这里列举几个:1.二维/三维空间基类扩充模块对二维和三维空间对象(点、线、面等)进行存储和分析,并使用高性能的R树对数据进行访问。使用函数(overlap,area,containment等)对空间对象进行各种操作。2.图象基类扩充模块在单色或彩色模式下,对50多种格式(TIFF、GIF、JPEG等)的图象进行转换、存储、操作、加强和管理。还提供许多范例,包括旋转、边界加强和卷积等。基类扩充模块DataBlade基类扩充模块是一种1153.正文基类扩充模块使用一个广泛的函数集,来处理基于内容的文档查找。4.时间序列基类扩充模块对任何类型(整数、浮点数、正文信息等)数据的有规律的重复性的时间进行定义和操作,这是金融分析中的一个关键性需求。5.Web基类扩充模块快速创建智能化的交互Web应用,可根据存储在数据库中的信息动态地生成HTML页。6.VIR(可视化的信息查询)基类扩充模块通过强有力的,基于内容的查询机制来对图象和影像信息进行查询。这一机制依据图象属性,例如颜色、形状、质地和组成成分等,来分析可视信息。基类扩充模块(DataBlade)23.正文基类扩充模块基类扩充模块(DataBlade)2116继承机制支持子类对父类的继承是面向对象方法的重要特性之一。在实际的问题模型中,许多对象之间有着继承的关系。提供继承机制,可以更好的模拟实际问题,有利于软件的高内聚,低耦合的模块化,也有利于软件的一致性和可重用性.继承机制支持子类对父类的继承是面向对象方法的重要117继承分类一个子类对象(子类数据或子表)可以从父类对象中继承数据属性和行为。其中行为一般包括函数,操作符,约束条件定义,参照完整性,存取方法,存储策略以及触发器等。数据继承函数继承继承分类一个子类对象(子类数据或子表)可以从父118数据继承(1)假设某公司的雇员中有工程师,销售人员以及其他人员。我们可以定义雇员元组类型作为父类型,而定义工程师和销售人员元组类型作为他的子类型。数据继承(1)假设某公司的雇员中有工程师,销119我们可以用下面的语句定义公司职工的元组类型:CreateROWTYPEemp_t(namevarchar(30),base_salarynumeric(12,2),managerREF(emp_t));CreateROWTYPEengineer_t(skillsvarchar(20),bonusnumeric(12,2))UNDERemp_t;CreateROWTYPEsales_t(territoryvarchar(30),commisionnumeric(12,2),annual_salesnumeric(12,2))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论