面向对象数据库精选文档.ppt
《面向对象数据库精选文档.ppt》由会员分享,可在线阅读,更多相关《面向对象数据库精选文档.ppt(100页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、面向面向对对象数据象数据库库本讲稿第一页,共一百页第第13章章面向对象数据库面向对象数据库n对复杂数据类型的需求对复杂数据类型的需求n面向对象数据模型面向对象数据模型n面向对象语言面向对象语言n持久性程序设计语言持久性程序设计语言n持久性持久性C+系统系统n持久性持久性JAVA系统系统本讲稿第二页,共一百页对复杂数据类型的需求对复杂数据类型的需求n数据处理中的传统数据库应用具有简单数据类型数据处理中的传统数据库应用具有简单数据类型相对较少的数据类型相对较少的数据类型,第一范式成立第一范式成立n近年来复杂数据类型越来越重要近年来复杂数据类型越来越重要例如例如:地址可处理为地址可处理为单个字符串单
2、个字符串,或者或者为每个子部分用一单独的属性为每个子部分用一单独的属性,或者或者复合属性复合属性(不属于第一范式不属于第一范式)例如例如:允许直接存储多值属性而不是创建单独的第一范式关系存储通允许直接存储多值属性而不是创建单独的第一范式关系存储通常更方便常更方便n应用应用CAD,CASE多媒体与图像数据库多媒体与图像数据库,文档文档/超文本数据库超文本数据库本讲稿第三页,共一百页面向对象数据模型面向对象数据模型(略讲略讲)n对象对象大体上对应于大体上对应于E-R模型中的实体模型中的实体n面向对象是基于将与一对象有关的代码与数据面向对象是基于将与一对象有关的代码与数据封装封装成一成一个单位的思想
3、个单位的思想.n面向对象数据模型是一个逻辑数据模型面向对象数据模型是一个逻辑数据模型(类似类似E-R模型模型).n使面向对象程序设计风格使面向对象程序设计风格(e.g.,Smalltalk,C+)适应适应数据库系统数据库系统本讲稿第四页,共一百页对象结构对象结构n对象具有对象具有:变量变量集合集合:包含对象的数据包含对象的数据.变量值本身也是对象变量值本身也是对象.消息消息集合集合:对象对消息进行反应对象对消息进行反应;消息可具有零消息可具有零,一个或一个或多个多个参数参数.方法方法集合集合:实现消息的代码体实现消息的代码体;方法返回一个值作为对消息的方法返回一个值作为对消息的反应反应n数据的
4、物理表示仅对对象的实现者可见数据的物理表示仅对对象的实现者可见n消息与反应提供了对象的唯一的外部界面消息与反应提供了对象的唯一的外部界面n消息这个词不必意味着物理上的消息传递消息这个词不必意味着物理上的消息传递.消息可消息可以实现为过程以实现为过程调用调用本讲稿第五页,共一百页消息与方法消息与方法n方法是用通用语言写的程序方法是用通用语言写的程序,具有下列特性具有下列特性变量仅在对象本身内部可以直接引用变量仅在对象本身内部可以直接引用其他对象的数据只能通过发送消息引用其他对象的数据只能通过发送消息引用.n方法分为方法分为read-only和和update方法方法只读方法不改变对象的值只读方法不
5、改变对象的值n严格地说严格地说,实体的每个属性都必须表示为一个变量和两个方法实体的每个属性都必须表示为一个变量和两个方法,一个用于读属性一个用于读属性,另一个用于更新另一个用于更新例如例如,属性属性address可用变量可用变量address与两条消息与两条消息get-address和和set-address表示表示为方便起见为方便起见,许多面向对象数据模型都允许直接存取其他对象的变量许多面向对象数据模型都允许直接存取其他对象的变量.本讲稿第六页,共一百页对象类对象类n相似对象组成相似对象组成类类;每个对象称为它的类的每个对象称为它的类的实例实例n一个类中所有对象具有相同的一个类中所有对象具有
6、相同的具有相同类型的变量具有相同类型的变量,消息接口消息接口方法方法赋给变量的值可能不同赋给变量的值可能不同n例如例如:所有人对象组成所有人对象组成person类类n类与类与E-R模型中的实体集相似模型中的实体集相似本讲稿第七页,共一百页类定义例类定义例class employee/*Variables*/stringname;stringaddress;datestart-date;int salary;/*Messages*/int annual-salary();stringget-name();stringget-address();intset-address(stringnew-a
7、ddress);intemployment-length();n在严格的封装中还需要用来读与设置其他变量的值的方法n方法单独定义如:int employment-length()return today()start-date;int set-address(string new-address)address=new-address;本讲稿第八页,共一百页继承继承n例如例如,银行客户类与银行雇员类相似银行客户类与银行雇员类相似,尽管有不同之处尽管有不同之处两者可以共享某些变量和消息两者可以共享某些变量和消息,如如name与与address.两者也各有特殊变量和消息两者也各有特殊变量和消息,如
8、雇员的如雇员的salary 和客户的和客户的credit-rating.n每个雇员是人每个雇员是人;所以所以employee是是person 的特例的特例n同样同样,customer 也是也是person 的特例的特例.n创建类创建类person,employee andcustomer对所有人都适用的变量对所有人都适用的变量/消息与类消息与类person关联关联.雇员所特有的变量雇员所特有的变量/消息与类消息与类employee关联关联客户所特有的变量客户所特有的变量/消息与类消息与类customer 关联关联本讲稿第九页,共一百页继承继承n类组织成一个特化类组织成一个特化/IS-A层次层次
9、属于类属于类person的变量的变量/消息被类消息被类employee 和和customer继承继承结果构成一个结果构成一个类层次类层次注意与E-R模型中的ISA层次的相似性本讲稿第十页,共一百页类层次定义类层次定义class personstringname;stringaddress:;class customer isa person int credit-rating;class employee isa person date start-date;int salary;class officer isa employee int office-number,int expense-
10、account-number,;.本讲稿第十一页,共一百页类层次例类层次例n类类officer 的对象的完整变量列表的对象的完整变量列表:office-number,expense-account-number:局部定义局部定义start-date,salary:从从employee 继承继承name,address:从从person 继承继承n同变量一样还继承方法同变量一样还继承方法.n可替换性可替换性 类的任何方法可以被属于其子类的任何对象调用类的任何方法可以被属于其子类的任何对象调用.n类外延类外延(extent):类中所有对象的集合类中所有对象的集合.两种选择两种选择:1.类类empl
11、oyee 的外延包含所有的外延包含所有officer,teller 和和secretary 对象对象.2.类类employee 的外延仅包含不属于子类的外延仅包含不属于子类officer,teller 或或secretary的的雇员对象雇员对象H这是这是OO系统通常的做法系统通常的做法H可访问子类的外延求所有子类对象可访问子类的外延求所有子类对象本讲稿第十二页,共一百页多重继承多重继承n多重继承使一个类可有多个超类多重继承使一个类可有多个超类.类类/子类联系可表示为子类联系可表示为有向无圈图有向无圈图(DAG)当对象有多种相互独立的分类方式时尤其有用当对象有多种相互独立的分类方式时尤其有用E.
12、g.临时临时/永久独立于永久独立于Officer/secretary/teller为每一种子类组合创建一个子类为每一种子类组合创建一个子类不必为数据库中不可能出现的子类组合创建子类不必为数据库中不可能出现的子类组合创建子类n类从它的所有超类继承变量和方法类从它的所有超类继承变量和方法n存在歧义的可能存在歧义的可能:当从两个超类当从两个超类A和和B继承同名变量继承同名变量/消息消息N时时若该变量若该变量/消息是在共享的超类中定义的则没有问题消息是在共享的超类中定义的则没有问题否则否则,采用如下方法之一采用如下方法之一标志为出错标志为出错,重命名变量重命名变量(A.N和和B.N)选择其一选择其一.
13、本讲稿第十三页,共一百页多重继承例多重继承例银行例的类DAG本讲稿第十四页,共一百页多重继承例多重继承例n一个对象可以同时属于多个子类一个对象可以同时属于多个子类一个一个person可以具有可以具有student,teacher或或footballPlayer等角色等角色,或者任何组合或者任何组合例如例如,踢足球的学生助教踢足球的学生助教n可用多重继承建模对象的可用多重继承建模对象的“角色角色”即即,允许对象具有多个类型允许对象具有多个类型n但许多系统坚持对象必须具有但许多系统坚持对象必须具有最具体类最具体类即即,若某对象属于多个类若某对象属于多个类,则必须存在这些类的一个共同子类则必须存在这
14、些类的一个共同子类创建子类创建子类student-teacher与与student-teacher-footballPlayer当有许多可能的组合时当有许多可能的组合时,为每种组合创建子类会很麻烦为每种组合创建子类会很麻烦本讲稿第十五页,共一百页对象标识对象标识n即使某些或全部变量的值或方法定义随时间改变即使某些或全部变量的值或方法定义随时间改变,对对象仍保持其身份象仍保持其身份.n对象标识是一个比非面向对象的程序语言或数据模型中对应对象标识是一个比非面向对象的程序语言或数据模型中对应概念更强的标识概念概念更强的标识概念.值值数据值数据值;例如关系系统中所用的主键值例如关系系统中所用的主键值.
15、名名由用户提供由用户提供;用于过程中的变量用于过程中的变量.内建内建数据模型或程序语言内建的标识数据模型或程序语言内建的标识.不需用户提供标识不需用户提供标识.面向对象系统采用的标识形式面向对象系统采用的标识形式本讲稿第十六页,共一百页对象标识对象标识n对象标识对象标识用于唯一标识对象用于唯一标识对象对象标识是对象标识是唯一的唯一的:没有两个对象具有相同的标识没有两个对象具有相同的标识每个对象只有一个标识每个对象只有一个标识例如例如,person对象的对象的spouse字段可以是另一个字段可以是另一个person对象的标识对象的标识.可保存为一对象的字段可保存为一对象的字段,用来引用另一对象用
16、来引用另一对象.可以是可以是系统生成的系统生成的(由数据库创建由数据库创建),或或外部的外部的(如社会安全号如社会安全号)系统生成的标识系统生成的标识:更易用更易用,但不能跨数据库系统使用但不能跨数据库系统使用如果已存在唯一标识则冗余如果已存在唯一标识则冗余本讲稿第十七页,共一百页对象包含对象包含n设计中的每个部件可以包含其他部件设计中的每个部件可以包含其他部件n可建模为对象包含可建模为对象包含.包含其他对象的对象称为包含其他对象的对象称为复合对象复合对象.n多层次的包含形成了多层次的包含形成了包含层次包含层次连线解释为连线解释为is-part-of,而非而非is-a.n允许数据被不同用户在不
17、同粒度上观察允许数据被不同用户在不同粒度上观察本讲稿第十八页,共一百页面向对象语言面向对象语言n面向对象概念在数据库系统中有多种用法面向对象概念在数据库系统中有多种用法面向对象可被用作设计工具面向对象可被用作设计工具类似于用类似于用E-R图建模再转换成关系图建模再转换成关系面向对象概念可与操作数据库的程序设计语言结合面向对象概念可与操作数据库的程序设计语言结合.对象关系系统对象关系系统在关系语言中增加复杂类型和面向对象在关系语言中增加复杂类型和面向对象.持久性程序设计语言持久性程序设计语言通过增加持久性和集合之类的概通过增加持久性和集合之类的概念来扩展面向对象程序设计语言以便处理数据库念来扩展
18、面向对象程序设计语言以便处理数据库.本讲稿第十九页,共一百页持久性程序设计语言持久性程序设计语言n持久性程序设计语言允许创建对象并存储在数据库中持久性程序设计语言允许创建对象并存储在数据库中,并且可在程并且可在程序设计语言中直接使用序设计语言中直接使用允许从程序设计语言直接操作数据允许从程序设计语言直接操作数据不必通过不必通过SQL.不必有显式的格式不必有显式的格式(类型类型)改变改变格式改变由系统透明地完成格式改变由系统透明地完成若没有持久性程序设计语言若没有持久性程序设计语言,格式改变成为程序员的负担格式改变成为程序员的负担要写更多的代码要写更多的代码更多的出错机会更多的出错机会允许对象在
19、内存中处理允许对象在内存中处理不必有显式的从数据库加载或存储到数据库不必有显式的从数据库加载或存储到数据库节省代码节省代码,节省加载节省加载/存储大量数据的开销存储大量数据的开销本讲稿第二十页,共一百页持久性程序设计语言持久性程序设计语言n持久性程序设计语言的缺点持久性程序设计语言的缺点由于多数程序设计语言的表达能力由于多数程序设计语言的表达能力,很容易造成编程很容易造成编程错误而破坏数据库错误而破坏数据库.语言的复杂性使得自动的高级优化更加困难语言的复杂性使得自动的高级优化更加困难.不支持描述性查询和关系数据库不支持描述性查询和关系数据库本讲稿第二十一页,共一百页对象的持久性对象的持久性n使
20、临时对象持久化的途径使临时对象持久化的途径类持久类持久声明某个类的所有对象是持久的声明某个类的所有对象是持久的;简单但不简单但不灵活灵活.创建持久创建持久扩展创建对象的语法以声明对象是持久的扩展创建对象的语法以声明对象是持久的.标记持久标记持久在程序中止之前将对象标记为持久的在程序中止之前将对象标记为持久的.可达性持久可达性持久声明声明(根根)持久对象持久对象;被根对象直接或间接引被根对象直接或间接引用的对象也是持久的用的对象也是持久的.对程序员更容易对程序员更容易,但对数据库系统有更多开销但对数据库系统有更多开销类似类似Java中的垃圾收集中的垃圾收集,要检查可达性要检查可达性本讲稿第二十二
21、页,共一百页对象标识与指针对象标识与指针n持久对象被赋予持久的对象标识持久对象被赋予持久的对象标识.n标识的永久程度标识的永久程度过程内过程内标识仅在单个过程执行期间持续标识仅在单个过程执行期间持续程序内程序内标识仅在单个程序或查询执行期间持续标识仅在单个程序或查询执行期间持续程序间程序间标识在多个程序的执行之间持续标识在多个程序的执行之间持续,但随存储组织改变而改变但随存储组织改变而改变持久的持久的标识在程序执行之间和数据的结构重组之间持久标识在程序执行之间和数据的结构重组之间持久这是面向这是面向对象系统要求的对象系统要求的本讲稿第二十三页,共一百页对象标识与指针对象标识与指针n在在O-O语
22、言语言(如如C+)中中,对象标识实际上是内存指针对象标识实际上是内存指针n持久性指针持久性指针在程序执行之间持久在程序执行之间持久可看作是指向数据库内对象的指针可看作是指向数据库内对象的指针E.g.指明文件标识和文件内偏移指明文件标识和文件内偏移本讲稿第二十四页,共一百页持久对象的存储与存取持久对象的存储与存取n命名对象命名对象(同命名文件一样同命名文件一样)不能用于大量对象不能用于大量对象.通常只对类外延及其他对象集合命名通常只对类外延及其他对象集合命名,而非对象而非对象.n暴露对象标识或指向对象的持久指针暴露对象标识或指向对象的持久指针可在外部保存可在外部保存.所有对象都有对象标识所有对象
23、都有对象标识n存储对象集合存储对象集合,并允许程序在该集合上迭代以找到所需对象并允许程序在该集合上迭代以找到所需对象将对象集合建模为将对象集合建模为汇集类型汇集类型类外延类外延 属于类的所有对象的集合属于类的所有对象的集合;通常为具有持久对象的类维通常为具有持久对象的类维护外延护外延.如何在数据库中找到对象如何在数据库中找到对象:本讲稿第二十五页,共一百页持久性持久性C+系统系统nC+语言允许增加对持久性的支持而不修改语言语言允许增加对持久性的支持而不修改语言声明一个类声明一个类Persistent_Object来支持持久性来支持持久性重载重载在新类型中重定义标准函数名及运算符在新类型中重定义
24、标准函数名及运算符(如如+,指针去引用运算指针去引用运算)的能力的能力模板类模板类有助于构建一个类型安全的支持汇集和持久类型的类型系统有助于构建一个类型安全的支持汇集和持久类型的类型系统.n不必扩展不必扩展C+语言而提供对持久性的支持语言而提供对持久性的支持相对容易实现相对容易实现但难以使用但难以使用n与避免改变语言的系统一样与避免改变语言的系统一样,向向C+语言增加新特性的持语言增加新特性的持久性久性C+系统已被构建系统已被构建本讲稿第二十六页,共一百页ODMGC+对象定义语言对象定义语言nObjectDatabaseManagementGroup是一致力于标准化面向是一致力于标准化面向对象
25、数据库的工业协会对象数据库的工业协会尤其是持久性程序设计语言尤其是持久性程序设计语言包括包括C+,Smalltalk和和Java标准标准ODMG-93ODMG-2.0and3.0(whichis2.0plusextensionstoJava)我们的描述基于我们的描述基于ODMG-2.0nODMGC+标准避免改动标准避免改动C+语言语言通过模板类和类库提供功能通过模板类和类库提供功能本讲稿第二十七页,共一百页ODMG类型类型n模板类模板类d_Ref用于声明引用用于声明引用(持久性指针持久性指针)n模板类模板类d_Set用于定义对象集合用于定义对象集合.方法包括方法包括insert_element
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 数据库 精选 文档
限制150内