




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 中国人民大学信息学院 数据库系统概论An Introduction to Database System第十五章 对象关系数据库系统An Introduction to Database System对象关系数据库系统对象关系数据库系统(Object Relational Database System,ORDBS)是面向对象数据模型(Object Oriented Data Model,简称OO模型)和关系数据模型相结合的产物 三条研究路线 以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型;建立新的面向对象数据库系统OODBS,支持OO数据模型;以关系数据库和SQL为基
2、础,把面向对象技术融入数据库系统的ORDBS An Introduction to Database System第十五章 对象关系数据库系统15.1 面向对象数据模型15.2 对象-关系数据库15.3 小结An Introduction to Database System15.1 面向对象数据模型面向对象数据库系统支持OO模型面向对象数据库系统:一个持久的、可共享的对象库的存储和管理者对象库:由一个OO模型所定义的对象的集合体 An Introduction to Database System15.1 面向对象数据模型15.1.1 OO模型的核心概念15.1.2 类层次(结构)15.1.
3、3 继承15.1.4 对象的嵌套An Introduction to Database System15.1.1 OO模型的核心概念1.对象定义:对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。组成部分属性(Attribute)集合属性描述对象的状态、组成和特性方法(Method)集合描述了对象的行为特性An Introduction to Database SystemOO模型的核心概念(续)2. 对象标识OID(Object IDentifier)概念:面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID) 特点:永久持久性 独立于值的、系统全局
4、唯一的An Introduction to Database SystemOO模型的核心概念(续)3. 封装(Encapsulation)每一个对象是其状态与行为的封装 封装是对象的外部界面与内部实现之间实行清晰隔离的一种抽象,外部与对象的通信只能通过消息 对象封装之后查询属性值必须通过调用方法 An Introduction to Database SystemOO模型的核心概念(续)4. 类(Class)对象类(简称类):共享同样属性和方法集的所有对象构成了一个对象类实例:一个对象是某一类的一个实例(instance)在OODB中,类是“型”,对象是某一类的一个“值” An Introdu
5、ction to Database System15.1 面向对象数据模型15.1.1 OO模型的核心概念15.1.2 类层次(结构)15.1.3 继承15.1.4 对象的嵌套An Introduction to Database System类层次(结构)(续)教员、行政人员、工人中只有本身的特殊属性和方法同时它们又继承教职员工类和人的所有属性和方法逻辑上它们具有人、教职员工和本身的所有属性和方法 图15.1 学校数据库的类层次结构图 An Introduction to Database System类层次(结构)(续)超类/子类之间的关系体现了“IS A”的语义超类是子类的抽象(Gene
6、ralization)或概括子类是超类的特殊化(Specialization)或具体化类层次可以动态扩展,一个新的子类能从一个或多个已有类导出 An Introduction to Database System15.1 面向对象数据模型15.1.1 OO模型的核心概念15.1.2 类层次(结构)15.1.3 继承15.1.4 对象的嵌套An Introduction to Database System15.1.3 继承单继承:一个子类只能继承一个超类的特性(包括属性和方法)层次结构图是一棵树 多重继承:一个子类能继承多个超类的特性层次结构图是一个带根的有向无回路图 An Introduct
7、ion to Database System继承(续)多重继承 具有多继承的类层次结构图 An Introduction to Database System继承(续)继承性的优点第一,建模的有力工具,提供了对现实世界简明而精确的描述第二,提供了信息重用机制 子类与超类的冲突子类在定义自己特殊属性和方法时可能与继承下来的超类的属性和方法发生冲突由系统解决An Introduction to Database System15.1 面向对象数据模型15.1.1 OO模型的核心概念15.1.2 类层次(结构)15.1.3 继承15.1.4 对象的嵌套An Introduction to Datab
8、ase System15.1.4 对象的嵌套对象嵌套:一个对象的属性可以是一个对象,这样对象之间产生一个嵌套层次结构 设Obj1和Obj2是两个对象。如果Obj2是Obj1的某个属性的值,称Obj2属于Obj1,或Obj1包含Obj2。复杂对象子对象嵌套层次结构An Introduction to Database System对象的嵌套(续)汽车的嵌套层次图 An Introduction to Database System对象的嵌套(续)对象嵌套层次结构和类层次结构形成了对象横向和纵向的复杂结构各种类之间具有层次结构某一个类内部也具有嵌套层次结构 An Introduction to D
9、atabase System关系模型与OO模型的比较表15.1 关系数据模型与OO模型的比较内容关系数据模型面向对象数据模型基本数据结构二维表类数据标识符码OID静态性质属性属性动态行为关系操作方法抽象数据类型无有封装性无有数据间关系主外码联系,数据依赖继承、组合模式演化能力弱强An Introduction to Database System第十五章 对象关系数据库系统15.1 面向对象数据模型15.2 对象-关系数据库15.3 小结An Introduction to Database System15.2 对象-关系数据库15.2.1 对象关系数据库系统中扩展的关系数据类型15.2.2
10、 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type)15.2.4 继承性15.2.5 子表和超表An Introduction to Database System对象关系数据库系统中扩展的关系数据类型扩展的类型:LOBBOOLEAN集合类型ARRAY用户定义的DISTINCT类型等面向对象的数据类型行类型ROW TYPE抽象数据类型(Abstract Data Type) An Introduction to Database SystemORDBS中扩展的关系数据类型(续)大对象LOB(Large OBject )类型LOB可存储多达十亿字节
11、的串。LOB分类二进制大对象BLOB(Binary Large OBject)BLOB用于存储音频、图像数据字符串大对象CLOB(Character Large OBject)。CLOB用于存储长字符串数据 An Introduction to Database SystemORDBS中扩展的关系数据类型(续)2. BOOLEAN类型 布尔类型,支持3个真值:true、false和unknown操作符:NOT、AND、OR、EVERY、ANY 例如 WHERE EVERY(QTY200) 或WHERE ANY(QTY200)QTY列为空值:返回unknown;QTY列为非空:当该列的每一个值都
12、使(QTY200)为true时,EVERY返回true,否则为false;当该列的每一个值都使(QTY200)为false时,ANY返回false,否则为true。An Introduction to Database SystemORDBS中扩展的关系数据类型(续)3.集合类型(Collection Type)ARRAY 相同类型元素的有序集合称为数组ARRAYSQL3新增的集合类型允许在数据库的一列中存储数组SQL3的数组只能是一维的数组中的元素不能再是数组An Introduction to Database SystemORDBS中扩展的关系数据类型(续)例2CREATE TABLE
13、SALES(ITEM_NO CHAR(20),/*商品号*/QTY INTEGER ARRAY12,/*整数数组,存放销售额*/PRIMARY KEY(ITEM_NO) );An Introduction to Database SystemORDBS中扩展的关系数据类型(续)向SALES表插入一个元组: INSERT INTO SALES(ITEM_NO,QTY)VALUES (T-shirt2000,ARRAY200,150,200,100,50,70, 80,200,10,20,100,200);查找三月份销售额大于100的商品号: SELECT ITEM_NO FROM SALES W
14、HERE QTY3100;An Introduction to Database SystemORDBS中扩展的关系数据类型(续)4. DISTINCT类型 SQL3新加了一种DISTINCT类型 定义DISTINCT数据类型语法 CREAT TYPE AS FINAL ;An Introduction to Database SystemORDBS中扩展的关系数据类型(续)没有使用DISTINCT类型例如,职工的智商字段(IQ)和鞋号字段(SHOE_SIZE)定义成INTEGER类型WHERE SHOE_SIZE IQAn Introduction to Database SystemORD
15、BS中扩展的关系数据类型(续)使用DISTINCT类型重新定义这两字段类型CREAT TYPE SHOE_SIZE_TYPE AS INTEGER FINAL;CREAT TYPE IQ_TYPE AS INTEGER FINAL;SHOE_SIZE_TYPE和IQ _TYPE成为两种不同的数据类型 表达式:WHERE SHOE_SIZE IQ 是非法的如果在定义类型时设置了选项,下面用法也是合法的:WHERE MY_SHOE_SIZE CAST (MY_IQ AS SHOE_SIZE) An Introduction to Database System15.2 对象-关系数据库15.2.1
16、 对象关系数据库系统中扩展的关系数据类型15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type)15.2.4 继承性15.2.5 子表和超表An Introduction to Database SystemORDBS中扩展的对象类型及其定义在ORDBMS中,类型(TYPE)具有类(CLASS)的特征,可以看成类1.行对象与行类型定义行类型(ROW TYPE) : CREATE ROW TYPE ();An Introduction to Database SystemORDBS中扩展的对象类型及其定义(续)创建行类型例3 CREATE
17、ROW TYPE Person_type (pnoNUMBER, nameVARCHAR2(100), addressVARCHAR2(100) ); An Introduction to Database SystemORDBS中扩展的对象类型及其定义(续)创建基于行类型的表 CREATE TABLE OF ;例4 CREATE TABLE person_extent OF Person_type (pno PRIMARY KEY );An Introduction to Database SystemORDBS中扩展的对象类型及其定义(续)2.列对象与对象类型 可以创建一个对象类型,表的属
18、性可以是该对象类型。创建列对象语句如下: CREATE TYPE AS OBJECT ();An Introduction to Database SystemORDBS中扩展的对象类型及其定义(续)例5 CREATE TYPE address_objtyp AS OBJECT (streetVARCHAR2(50), cityVARCHAR2(50) ); CREATE TYPE name_objtyp AS OBJECT (first_nameVARCHAR2(30), last_nameVARCHAR2(30) ) ;An Introduction to Database SystemO
19、RDBS中扩展的对象类型及其定义(续)创建表,定义其中的属性是对象类型例6 CREATE TABLE people_reltab (IdNUMBER(10), name_objname_objtyp,address_objaddress_objtyp); An Introduction to Database SystemORDBS中扩展的对象类型及其定义(续)3. 抽象数据类型(Abastract Data Type,ADT)概念:SQL3允许用户创建指定的带有自身行为说明和内部结构的用户定义类型称为抽象数据类型 定义ADT的一般形式为 CREATE TYPE ( 所有属性名及其类型说明,
20、定义该类型的等于和小于函数, 定义该类型其他函数(方法);An Introduction to Database SystemADT的特点(1) ADT的属性定义和行类型的属性定义类同。(2) 在创建ADT的语句中,通过用户定义的函数比较对象的值。(3) ADT的行为通过方法(methods)、函数(functions)实现。(4) SQL3要求抽象数据类型是封装的,而行类型则不要求封装。(5) ADT有3个通用的系统内置函数(6) ADT可以参与类型继承An Introduction to Database System15.2 对象-关系数据库15.2.1 对象关系数据库系统中扩展的关系数
21、据类型15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type)15.2.4 继承性15.2.5 子表和超表An Introduction to Database System15.2.3 参照类型(Reference Type)REF类型(参照类型、引用类型)引入的原因: 类型之间可能具有相互参照的联系形式 REF 特点:REF类型总是和某个特定的类型相联系。它的值是OIDAn Introduction to Database System参照类型(续)创建两个表:Employee和Company,两表之间存在相互参照关系,即某个职工在某
22、个公司工作(1)创建行类型例7 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER ); CREATE ROW TYPE Comp_ type( compname VARCHAR(20), location VARCHAR(20) ); An Introduction to Database System参照类型(续)(2)创建基于行类型的表: CREATE TABLE Employee OF employee_type; CREATE TABLE Company OF Comp_ type(3)描述参照关系 CREATE
23、ROW TYPE Employment _type ( employee REF (employee_type), company REF (Comp_ type) ); CREATE TABLE Employment OF Employment _type 表Employment中某一个元组的employee属性值是某个职工的OIDcompany属性值是该职工所在公司的OID An Introduction to Database System参照类型(续)例8 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER, emp
24、_id REF(employee_type) ); 例9 CREATE TABLE Employee OF employee_type VALUES FOR emp_id ARE SYSTEM GENERATED;An Introduction to Database System参照类型(续)建立参照属性: REF()SCOPE IS 例10 CREATE TABLE address_objtab OF address_objtyp ;例11 CREATE TABLE people_reltab2 ( id NUMBER(4) PRIMARY KEY, name_obj name_objty
25、p, addresss_ref REF(address_objtyp) SCOPE IS address_objtab )An Introduction to Database System参照类型(续)例12CREATE INDEX address_ref_idx ON people_reltab2(address_ref) ;例13SELECT id FROM people_reltab2 p WHERE p.address_ref.city=北京 and p.address_ref.street=牛街;An Introduction to Database System15.2 对象-关
26、系数据库15.2.1 对象关系数据库系统中扩展的关系数据类型15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type)15.2.4 继承性15.2.5 子表和超表An Introduction to Database System15.2.4 继承性ORDBMS应该支持继承性一般是单继承性例14 CREATE TYPE emp_type UNDER person_type AS( emp_id INTEGER, salary REAL ) NOT FINAL;NOT FINAL:表示不是类层次结构中最后的“叶结点”FINAL:该类型是类层次
27、结构的叶结点An Introduction to Database System15.2 对象-关系数据库15.2.1 对象关系数据库系统中扩展的关系数据类型15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type)15.2.4 继承性15.2.5 子表和超表An Introduction to Database System15.2.5 子表和超表超表、子表、子表的子表构成一个表层次结构表层次和类型层次的概念十分相似An Introduction to Database System子表和超表(续)例15 对于下面的类型层次,先定义这些类
28、型TYPE,然后创建基于这些类型的表 类型层次示例 An Introduction to Database System子表和超表(续)CREATE TYPE person /*创建person 类型,根类型*/ (id INTEGER, name VARCHAR(20), birthyear INTEGER, address VARCHAR(40) NOT FINAL; /*NOT FINAL表示可以有子类型*/CREATE TYPE employee /*创建person的子类型employee*/ UNDER person /*类型employee继承person的属性*/ (salar
29、y INTEGER) /* employee定义自己的属性*/ NOT FINAL;An Introduction to Database System子表和超表(续)CREATE TYPE executive/*创建employee的子类型executive*/ UNDER employee (bonus INTEGER) FINAL;CREATE TYPE student/*创建person的子类型student */ UNDER person (major VARCHAR(10),wage DECIMAL) FINALAn Introduction to Database System子
30、表和超表(续)例16Department类型和employee具有相互参照的联系,使用REF来表示这种联系 CREATE TYPE department (ID INTEGER, manager REF(employee), Budget INTEGER); ALTER TYPE employee ADD ATTRIBUTE dept REF(department);An Introduction to Database System子表和超表(续)定义基于这些类型的基本表和表层次:CREATE TABLE person_table OF person (name WITH OPTIONS NOT NULL);employee_table是person_table的子表CREATE TABLE exec_table of executive UNDER empl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025网站开发合作合同书
- 2025年土地增值合同范本
- 2025外贸代理合同范本
- 2025资金信托合同(B)信托合同
- 2025高空作业车租赁合同协议
- 2025房产赠与合同范本
- 2025年版个人借款合同范本
- 2025普通班的店面租赁合同书
- 电池成品采购合同协议
- 现场调试合同协议书模板
- DB3301∕T 65.28-2024 反恐怖防范系统管理规范 第28部分:硬质隔离设施
- 混凝土楼盖课程设计讲解
- 北京版小学英语1至6年级词汇
- 3-1-立体表面上点的投影
- (正式版)QB∕T 2761-2024 室内空气净化产品净化效果测定方法
- GB/T 44193-2024全国一体化政务服务平台一网通办基本要求
- 专题10非负性的应用(原卷版+解析)
- NB-T+31045-2013风电场运行指标与评价导则
- 北京市海淀区2023-2024学年八年级下学期期末物理试卷
- 《无人机测绘技能训练模块》课件-模块8:像片控制点测量
- JBT 14732-2024《中碳和中碳合金钢滚珠丝杠热处理技术要求》
评论
0/150
提交评论