对象关系数据库 全省一等奖_第1页
对象关系数据库 全省一等奖_第2页
对象关系数据库 全省一等奖_第3页
对象关系数据库 全省一等奖_第4页
对象关系数据库 全省一等奖_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

主讲教师:魏巍巍北京信息职业技术学院数据库技术与应用对象关系数据库创建采集任务01对象关系数据库01目录CONTENTS对象关系数据库01对象关系数据模型是关系数据模型和面向对象数据模型二者结合的产物。本次我们介绍SQL-1999和SQL-2003标准所采用的对象关系模型,大多数数据库产品只支持这里描述的SQL特征的子集。对象关系数据库对象关系数据模型的核心概念仍然是关系,关系数据库是关系的集合,但是作了一些扩充,主要的扩充有两点:

类型系统:关系模型中,属性的域只能是原子类型,使得处理某些问题显得不自然,处理效率低。SQL标准引入了row构造器(相当于Structures)、array和multiset构造器(相当于bag),multiset是由SQL-2003引入的。

关系:关系模型中,关系是元组的集合。SQL标准允许关系是元组的集合,或者是对象的集合,引入了对象的概念。对象关系数据库类型系统SQL-1999和/2003允许用户使用CREATETYPE语句创建新的类型。CREATETYPE的功能和C语言中的typedef一样,格式基本相同。CREATETYPE<typename>ASconstructor<final|notfinal>

对象关系数据库(1)结构类型[例]建立地址和名字类型。地址类型由属性street和city组成,名字类型由first_name和last_name组成。

CREATETYPEaddressTypeAS(streetVARCHAR2(50),cityVARCHAR2(50))NOTFINAL;结构构造器的语法只需要一一列出结构中每个字段的名字和类型即可。CREATETYPEnameTypeAS(first_nameVARCHAR2(30),last_nameVARCHAR2(30))FINAL;对象关系数据库[例]

定义person类型CREATETYPEpersonTypeAS(pno int,name nameType,adrress addressType,dayOfBirth date)NOTFINAL;person类型的name属性和address属性使用了例2中定义的类型。对象关系数据库[例]分别使用C和PSM书写age方法

CREATEINSTANCEMOTHODage(OnDatedate)FORPersonTypeLANGUAGECEXTERNALNAME'C:/SQLServer/bin'

CREATEINSTANCEMOTHODage(OnDatedate)FORPersonTypeLANGUAGESQLBEGINreturnonDate–self.dateOfBirth;END对象关系数据库LANGUAGE之句说明书写代码的语言。INSTANCE表明age方法在PersonType类型的实例上执行,self指代执行方法的实例。对象关系数据库(2)数组类型

相同类型元素的有序集合称为数组(array),这是SQL-1999新增的集合类型,它允许在数据库的一列中存储数组。数组的语法为:typearray[n]

其中,type是系统的类型或用户定义的类型,n是整数。typearray[n]定义了新的数据类型,该类型以数组的形式存放类型type的n个值。对象关系数据库[例]创建Sales表,记录商品12个月的销售量。

CREATETABLESales(ITEM_NOCHAR(20), --商品号QTYINTEGERARRAY[12], --整数数组,存放

--12个月销售额PRIMARYKEY(ITEM_NO) );SQL-1999的数组只能是一维的,而且数组中的元素不能再是数组。对象关系数据库向Sales表插入一个元组:

INSERTINTOSales(ITEM_NO,QTY) VALUES(‘T-shirt2000’,array[200,150,200,100,50,70,80,200,10,20100,200]);查找三月份销售额大于100的商品号:

SELECTITEM_NO FROMSales--从SALES表中选出满足下面条件的商品号 WHEREQTY[3]>100; --QTY数组第三个值大于100对象关系数据库(3)多重集合类型SQL-2003增加了多重集合类型multiset,多重结合即面向对象数据模型中的包(bag)。Multiset的使用方法和array相似:typemultiset

其中,type是系统的类型或用户定义的类型。typemultiset定义了新的数据类型,该类型存放类型type的一组值。对象关系数据库[例]建立Student表,与事例数据库相比多了PhoneList属性,该用于存放学生的电话号码,是多重集合类型。

CREATETABLEstudent(sno char(7),Sname char(8),Ssex char(2),Sage smallint,Sdept char(20),PhoneList varchar(20)multiset);对象关系数据库向表中插入一行数据:

INSERTINTOStudentVALUES(‘2000012’,‘王林’,‘男

',19,'计算机',multiset('12345678','139xxxxxxxx');

语句中的multiset是一个函数,用于将枚举类型的集合封装成multiset类型。multiset类型的值作为一个整体存放,如果要访问其中的元素,须使用unnest函数。对象关系数据库(4)参照类型SQL-1999提供了一种特殊的类型:参照类型,也称为引用类型,简称REF类型。因为类型之间可能具有相互参照的联系,因此引入了一个REF类型的概念:REF<类型名>REF类型总是和某个特定的类型相联系。它的值是OID。对象关系数据库[例]定义Student和Course类型,二者存在参照关系。 CREATETYPEStudentTypeAS( Sno char(7), Sname char(8), Ssex char(2), Sage int, Sdept char(20), Courses ref(CourseTypemultiset)) NOTFINAL;

CREATETYPECourseTypeAS(Cno char(4),Cname char(40),Cpno char(

温馨提示

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

评论

0/150

提交评论