第9章-面向对象和对象-关系数据库_第1页
第9章-面向对象和对象-关系数据库_第2页
第9章-面向对象和对象-关系数据库_第3页
第9章-面向对象和对象-关系数据库_第4页
第9章-面向对象和对象-关系数据库_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

第9章面向对象和对象一关系数据库用户可根据需要,自己定义新的数据类型及相应的约束和操作。面向对象数据模型可以通过下在传统的、非面向对象的数据库系统中,操作被设计为数据操纵的一部分。而在面向对象数据库系统中,操作被定义为数据的一部分,然后可以在任何必要的地方使用它们。数据以及在数据上的。一个对象包括三个部分:属性集合、方法集合和消息集合每一个对象都有各自的状态、组成和特性,称为对象的属性。属性可能是一组简单的值,也可能是其他对象,即对象的嵌套,并且这种嵌套可以继续下去,从而组成各种复杂的对象。每个对象有唯一的对象标识(OID:ObjectIdentity)。方法是对象的行为特性。方法可改变对象的状态,对对象进行各种操作。方法的定义包含对象是封装的,即每一个对象是其状态和行为的封装。所以外界与对象的通信一般只能借助于消息。方法是在数据定义的过程中定义的。为了真正执行一个方法中的步骤,用户必须向对象发送消息。消息传送给对象,调用对象的相应方法,进行相应的操作,最后,以消息形式一条消息是一个执行方法的请求。在用户发送的消息中,必须指明要执行的方法的名称以如果说类的概念相当于关系模型中的关系模式,那么类的实例类似于元组,类的实例之间一个类中往往会包含某些具有附加特性的对象,而这些特性并不和类的所有成员相关,这如果类D是类C的子类,则称类C是类D的超类,子类可继承其超类的所有特性(包括属性、方法和消息),同时又可具有超类所没有的特性。一个子类可以只继承一个超类的特性(单继承)也可以继承多个超类的特性(多重继承)。类。其类层次结构如图9—1所示。人人学生关系数关系数据模式现实世界对象数据模式抽象抽象<特性表>第四行说明属性sex,其类型是枚举型,枚举类型名字为sextype,sex的值从male或这就是employee类的说明,任何一个cmployee对象在这几个属性上均对应address(办公地址),其中address是一个结构,包括楼层和房间号:布尔型(boolean)和枚举型(enum)。为了得到对象与同类或不同类的其他对象的连接方式,需要在类的定义中说明类与类之间如职工类与部门类之间有联系。一个职工对象总与某个部门对象有关系(工作关系)。在Relationshipdepartmentworkin;该语句,说明在employee类中的每个对象,都有一个对department对象的引用,引用名为因为在职工类和部门类的联系中还有一层联系是一个部门对象中总包含了若干个职工对象,即从部门类中的每个对象,也应该能实现对职工类中的对象集的引用。那么这种引用如何实现Relationshipse在E-R模型中,没有反向联系的概念,因为E-R模型中的联系是双向的。所以E-R模型中的一个联系,在ODL中要用一对反向联系来表示。在ODL中关于联系的说明也就只有两种情要么和其他类中的一个对象有关,要么和其他类中的对象集合有关。{integerday,integermouth,integjoins部门joinby例9.4定义类manager(部门经理)为employee的子类。第二行表明所有的manager对象都有一个联系lead,表示该经理所管理的部门,并且一位在多重继承时,特性名之间可能会发生冲突。如两个或多个超类可能有同名的属性或联系,类的另一个特性是方法,方法是与类相关的函数。类中的每一个对象都能引用方法,同一调用方法时,可能会引起异常,即出现异常或非希望的情况,这种情况一般应由某个函数来处理(相当于出错处理)。在ODL的方法说明中,提供关键字raises(引发),在括号里列出例9.5类employee的扩充定义,增加了方法的说明:RelationshipdepartmentworkinInversedepartment:owns;Relationshipset<itOtheritem(initem,outset<employee>)rais第一个方法是Departname,该函数将产生一字符串型的返回值,假设(因为ODL定义中没有函数代码,所以只能假设)该方法的功能是返回应用该方法的对象所在的部门名,如果应用employee的对象集合。该方法可能是希望该职工参加了这个项目,如果不是,那么就会引发异(keyname)说明了employee码为name。当建立了现实世界的E-R模型以后,可将其转换为O-O模型。转换时,可按照以下的步(1)将E-R模型中的每个实体集生成一个类,实体集的属性转换为类的属性。(2)将E-R模型中具有Isa联系的实体集生成的类之间建立类/子类关系。(3)在转换得到的类中加入联系的说明:①对原E-R模型中有一对一联系的实体集,在其生成的类中,都加入联系说明,说明②对原E-R模型中有一对多联系的实体集,在一方生成的类中,加入联系说明,说明其和另一个类中的对象集合有关;在多方生成的类中,加入联系说明,说明其和另一个类中的③对原E-R模型中有多对多联系的实体集,在其生成的类中,都加入联系说明,说明虽然面向对象数据库系统在一些特定应用领域(如CAD等)较好地满足了其应用需要,但是,这种纯粹的面向对象数据库系统并不支持SQL,因而在通用性方面失去了优势,其应用领而同时,面向对象技术和数据库技术相结合的另一个产物——对象一关系数据库管理系统SQL,具有良好的通用性,又具有面向对象特性,支持复杂对象和复杂对象的复杂行为,适应了新应用领域的需要和传统应用领域发展的需要。正在制定中无杂对象↓ORDBMS先驱ORDBMS产目前的RDBMS中只支持固定的数据类型集、操作符和少量的函数。而ORDBMS中具有可Illustra把一组数据类型及其上的有关函数和操作符、访问方法进行封装,称为DataBlade(数据刀片)模块。创建一个新的数据类型需要指明类型名、类型的存储信息和该数据类型同ASCⅡ来回转换该SQL语句创建了用户自定义的数据类型Mytype,中Internallength指明存储该类的实例做。ORDBMS中既可以用SQL也可以用第三代编程语言(例如C等)编写函数,然后把函数注册到系统中以供调用。函数定义中必须指明函数名、参数、返回值类型以及函数的执行代码,CreateFunction函数名(类型1,类型2,…)例如:在职工表Employee中,假设有工资字段Salary,可定义一个函数,用来计算每个职CreateFunctionDiff_sal然后就可以在数据的操作中自由运用函数Diff_salary了。Selectname,Diff_salary(Salary)自定义函数也可以是C语言程序,在此不作介绍。说明中允许用户用任何符号作为操作符,并把它赋给一个指定的函数。复杂对象是由多种基本的或用户定义的类型构成的对象。在ORDBMS中创建复杂对象的构件有:组合、集合、引用、数组、列表、堆栈等,其中最基本的是前面三种。1.使用组合构造对象例:定义一组合phone-t,由国家号(country-num)、地区号(area-num)和电话号码(tele-CreateTypephone-t(country-nutele-numvarchar(8)组合类型的成分也可以是另一个组合类型,即组合类型可以嵌套使用。组合类型创建好后,就可以在创建表时使用:为了对组合进行操作,ORDBMS对标准SQL进行了扩充,提供多种方法使用组合或组合对象的属性。如路径表达式的使用:组合名.属性名例如:查询职工(如胡一民)的电话号码:Wherename="胡一民";2.使用集合构造对象在ORDBMS中任何一种数据类型值的集合也是一种数据类型,表示成:其中T可以是基本数据类型,也可以是组合数据类型。例如:查询所有杭州地区职工的电话号码:phone.area-num是一个集合,如果集合中有0571,则Where条件为真3.使用引用构造对象在ORDBMS中任何一种数据类型值的引用也是一种数据类型,表示成:其中T可以是组合或集合数据类型。引用可以作为任何表的任何列的数据类型。ORDBMS的第三个特性是支持子类对超类的各种特性的继承,包括数据继承和函数继承,单继承和多重继承。首先考虑类型的继承,假如在如图9-1所示的数据库中,有如下关于人的类型定义:namevarchar(10).人人图9-1学校数据库的类层次结构在数据库中需要对学生和教师分别存储一些信息。由于学生和教师同样是人,因而可以使用继承来定义学生和教师类型如下:Student和Teacher都继承了Person的属性,即identify和name。Student和Teacher称为假定要存储关于在职研究生的信息,这些研究生既是教师又是学生,甚至可能是不同的系。如果类型系统支持多重继承,可以为在职研究生定义类型如下:TeachStudent应该继承Student和Teacher的所有属性,这引起了另一个问题:Teacherwith(departm规则系统能保证数据库中数据的完整性。在RDBMS中,已经通过约束的定义和使用触发器对规则提供某些支持,但ORDBMS支持的规则系统要更强大、更灵活。CreateRule

温馨提示

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

评论

0/150

提交评论