版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统概论 An Introduction to Database Systems,陈慧萍 ,数据库系统概论 An Introduction to Database System 第十五章 对象关系数据库系统,对象关系数据库系统,对象关系数据库系统(Object Relational Database System,ORDBS)是面向对象数据模型(Object Oriented Data Model,简称OO模型)和关系数据模型相结合的产物 三条研究路线 以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型; 建立新的面向对象数据库系统OODBS,支持OO数据模型; 以关系
2、数据库和SQL为基础,把面向对象技术融入数据库系统的ORDBS,第十五章 对象关系数据库系统,15.1 面向对象数据模型 15.2 对象-关系数据库 15.3 小结,15.1 面向对象数据模型,面向对象数据库系统支持OO模型 面向对象数据库系统:一个持久的、可共享的对象库的存储和管理者 对象库:由一个OO模型所定义的对象的集合体,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,15.1.1 OO模型的核心概念,1.对象 定义:对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。 组成
3、部分 属性(Attribute)集合 属性描述对象的状态、组成和特性 方法(Method)集合 描述了对象的行为特性,OO模型的核心概念(续),2. 对象标识OID(Object IDentifier) 概念:面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID) 特点: 永久持久性 独立于值的、系统全局唯一的,OO模型的核心概念(续),3. 封装(Encapsulation) 每一个对象是其状态与行为的封装 封装是对象的外部界面与内部实现之间实行清晰隔离的一种抽象,外部与对象的通信只能通过消息 对象封装之后查询属性值必须通过调用方法,OO模型的核心概念(续),4. 类(Cl
4、ass) 对象类(简称类):共享同样属性和方法集的所有对象构成了一个对象类 实例:一个对象是某一类的一个实例(instance) 在OODB中,类是“型”,对象是某一类的一个“值”,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,类层次(结构)(续),教员、行政人员、工人中只有本身的特殊属性和方法 同时它们又继承教职员工类和人的所有属性和方法 逻辑上它们具有人、教职员工和本身的所有属性和方法,图15.1 学校数据库的类层次结构图,类层次(结构)(续),超类/子类之间的关系体现了“IS A”的语义 超类是子
5、类的抽象(Generalization)或概括 子类是超类的特殊化(Specialization)或具体化 类层次可以动态扩展,一个新的子类能从一个或多个已有类导出,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,15.1.3 继承,单继承:一个子类只能继承一个超类的特性(包括属性和方法) 层次结构图是一棵树 多重继承:一个子类能继承多个超类的特性 层次结构图是一个带根的有向无回路图,继承(续),多重继承,具有多继承的类层次结构图,继承(续),继承性的优点 第一,建模的有力工具,提供了对现实世界简明而精确
6、的描述 第二,提供了信息重用机制 子类与超类的冲突 子类在定义自己特殊属性和方法时可能与继承下来的超类的属性和方法发生冲突 由系统解决,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,15.1.4 对象的嵌套,对象嵌套: 一个对象的属性可以是一个对象,这样对象之间产生一个嵌套层次结构 设Obj1和Obj2是两个对象。如果Obj2是Obj1的某个属性的值,称Obj2属于Obj1,或Obj1包含Obj2。 复杂对象 子对象 嵌套层次结构,对象的嵌套(续),汽车的嵌套层次图,对象的嵌套(续),对象嵌套层次结构和
7、类层次结构形成了对象横向和纵向的复杂结构 各种类之间具有层次结构 某一个类内部也具有嵌套层次结构,关系模型与OO模型的比较,表15.1 关系数据模型与OO模型的比较,第十五章 对象关系数据库系统,15.1 面向对象数据模型 15.2 对象-关系数据库 15.3 小结,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,对象关系数据库系统中扩展的关系数据类型,扩展的类型: LOB BOOLEAN 集合类型A
8、RRAY 用户定义的DISTINCT类型等 面向对象的数据类型 行类型ROW TYPE 抽象数据类型(Abstract Data Type),ORDBS中扩展的关系数据类型(续),大对象LOB(Large OBject )类型 LOB可存储多达十亿字节的串。 LOB分类 二进制大对象BLOB(Binary Large OBject) BLOB用于存储音频、图像数据 字符串大对象CLOB(Character Large OBject)。 CLOB用于存储长字符串数据,ORDBS中扩展的关系数据类型(续),2. BOOLEAN类型 布尔类型,支持3个真值:true、false和unknown 操作
9、符:NOT、AND、OR、EVERY、ANY 例如 WHERE EVERY(QTY200) 或WHERE ANY(QTY200) QTY列为空值:返回unknown; QTY列为非空: 当该列的每一个值都使(QTY200)为true时,EVERY返回true,否则为false; 当该列的每一个值都使(QTY200)为false时,ANY返回false,否则为true。,ORDBS中扩展的关系数据类型(续),3.集合类型(Collection Type)ARRAY 相同类型元素的有序集合称为数组ARRAY SQL3新增的集合类型 允许在数据库的一列中存储数组 SQL3的数组只能是一维的 数组中的
10、元素不能再是数组,ORDBS中扩展的关系数据类型(续),例2 CREATE TABLE SALES ( ITEM_NO CHAR(20),/*商品号*/ QTY INTEGER ARRAY12,/*整数数组,存放销售额*/ PRIMARY KEY(ITEM_NO) );,ORDBS中扩展的关系数据类型(续),向SALES表插入一个元组: INSERT INTO SALES(ITEM_NO,QTY)VALUES (T-shirt2000,ARRAY200,150,200,100,50,70, 80,200,10,20,100,200); 查找三月份销售额大于100的商品号: SELECT ITE
11、M_NO FROM SALES WHERE QTY3100;,ORDBS中扩展的关系数据类型(续),4. DISTINCT类型 SQL3新加了一种DISTINCT类型 定义DISTINCT数据类型语法 CREAT TYPE AS FINAL ;,ORDBS中扩展的关系数据类型(续),没有使用DISTINCT类型 例如,职工的智商字段(IQ)和鞋号字段(SHOE_SIZE)定义成INTEGER类型 WHERE SHOE_SIZE IQ,ORDBS中扩展的关系数据类型(续),使用DISTINCT类型 重新定义这两字段类型 CREAT TYPE SHOE_SIZE_TYPE AS INTEGER F
12、INAL; 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),15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,ORD
13、BS中扩展的对象类型及其定义,在ORDBMS中,类型(TYPE)具有类(CLASS)的特征,可以看成类 1.行对象与行类型 定义行类型(ROW TYPE) : CREATE ROW TYPE ();,ORDBS中扩展的对象类型及其定义(续),创建行类型 例3 CREATE ROW TYPE Person_type (pnoNUMBER, nameVARCHAR2(100), addressVARCHAR2(100) );,ORDBS中扩展的对象类型及其定义(续),创建基于行类型的表 CREATE TABLE OF ; 例4 CREATE TABLE person_extent OF Perso
14、n_type (pno PRIMARY KEY );,ORDBS中扩展的对象类型及其定义(续),2.列对象与对象类型 可以创建一个对象类型,表的属性可以是该对象类型。 创建列对象语句如下: CREATE TYPE AS OBJECT ();,ORDBS中扩展的对象类型及其定义(续),例5 CREATE TYPE address_objtyp AS OBJECT (streetVARCHAR2(50), cityVARCHAR2(50) ); CREATE TYPE name_objtyp AS OBJECT (first_nameVARCHAR2(30), last_nameVARCHAR2(
15、30) ) ;,ORDBS中扩展的对象类型及其定义(续),创建表,定义其中的属性是对象类型 例6 CREATE TABLE people_reltab (IdNUMBER(10), name_objname_objtyp,address_objaddress_objtyp);,ORDBS中扩展的对象类型及其定义(续),3. 抽象数据类型(Abastract Data Type,ADT) 概念:SQL3允许用户创建指定的带有自身行为说明和内部结构的用户定义类型称为抽象数据类型 定义ADT的一般形式为 CREATE TYPE ( 所有属性名及其类型说明, 定义该类型的等于和小于函数, 定义该类型其
16、他函数(方法);,ADT的特点,(1) ADT的属性定义和行类型的属性定义类同。 (2) 在创建ADT的语句中,通过用户定义的函数比较对象的值。 (3) ADT的行为通过方法(methods)、函数(functions)实现。 (4) SQL3要求抽象数据类型是封装的,而行类型则不要求封装。 (5) ADT有3个通用的系统内置函数 (6) ADT可以参与类型继承,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子
17、表和超表,15.2.3 参照类型(Reference Type),REF类型(参照类型、引用类型) 引入的原因: 类型之间可能具有相互参照的联系 形式 REF 特点: REF类型总是和某个特定的类型相联系。 它的值是OID,参照类型(续),创建两个表:Employee和Company,两表之间存在相互参照关系,即某个职工在某个公司工作 (1)创建行类型 例7 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER ); CREATE ROW TYPE Comp_ type( compname VARCHAR(20), locat
18、ion VARCHAR(20) );,参照类型(续),(2)创建基于行类型的表: CREATE TABLE Employee OF employee_type; CREATE TABLE Company OF Comp_ type (3)描述参照关系 CREATE ROW TYPE Employment _type ( employee REF (employee_type), company REF (Comp_ type) ); CREATE TABLE Employment OF Employment _type 表Employment中某一个元组的employee属性值是某个职工的OI
19、D company属性值是该职工所在公司的OID,参照类型(续),例8 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER, emp_id REF(employee_type) ); 例9 CREATE TABLE Employee OF employee_type VALUES FOR emp_id ARE SYSTEM GENERATED;,参照类型(续),建立参照属性: REF()SCOPE IS 例10 CREATE TABLE address_objtab OF address_objtyp ; 例11 CREAT
20、E TABLE people_reltab2 ( id NUMBER(4) PRIMARY KEY, name_obj name_objtyp, addresss_ref REF(address_objtyp) SCOPE IS address_objtab ),参照类型(续),例12 CREATE INDEX address_ref_idx ON people_reltab2(address_ref) ; 例13 SELECT id FROM people_reltab2 p WHERE p.address_ref.city=北京 and p.address_ref.street=牛街;,1
21、5.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,15.2.4 继承性,ORDBMS应该支持继承性 一般是单继承性 例14 CREATE TYPE emp_type UNDER person_type AS( emp_id INTEGER, salary REAL ) NOT FINAL; NOT FINAL:表示不是类层次结构中最后的“叶结点” FINAL:该类型是类层次结构的叶结点,15.2 对象-关
22、系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,15.2.5 子表和超表,超表、子表、子表的子表构成一个表层次结构 表层次和类型层次的概念十分相似,子表和超表(续),例15 对于下面的类型层次,先定义这些类型TYPE,然后创建基于这些类型的表,类型层次示例,子表和超表(续),CREATE TYPE person /*创建person 类型,根类型*/ (id INTEGER, name VARCHAR(20), bir
23、thyear INTEGER, address VARCHAR(40) NOT FINAL; /*NOT FINAL表示可以有子类型*/ CREATE TYPE employee /*创建person的子类型employee*/ UNDER person /*类型employee继承person的属性*/ (salary INTEGER) /* employee定义自己的属性*/ NOT FINAL;,子表和超表(续),CREATE TYPE executive/*创建employee的子类型executive*/ UNDER employee (bonus INTEGER) FINAL; C
24、REATE TYPE student/*创建person的子类型student */ UNDER person (major VARCHAR(10),wage DECIMAL) FINAL,子表和超表(续),例16Department类型和employee具有相互参照的联系,使用REF来表示这种联系 CREATE TYPE department (ID INTEGER, manager REF(employee), Budget INTEGER); ALTER TYPE employee ADD ATTRIBUTE dept REF(department);,子表和超表(续),定义基于这些类型的基本表和表层次: CREATE TABLE person_table OF person (name WITH OPTIONS NOT NULL);,employee_table是 person_table的子表,CREATE TA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天津市河东区中小学教师招聘考试参考题库及答案详解
- 初升高完美衔接教材 英语教学 书面表达
- 2026年福建省漳州市法检系统书记员招聘笔试模拟试题及答案详解
- 2026年西藏自治区拉萨市街道办人员招聘笔试参考题库及答案详解
- 2026年11月私域朋友圈年终营销深耕运营计划
- 2027届安徽省六安市三年级数学第一学期期末考试模拟试题含解析
- 2026年广州市天河区中小学教师招聘笔试参考题库及答案详解
- 2025年商州区街道办人员招聘笔试试题及答案详解
- 2026年佛山市顺德区中小学教师招聘考试模拟试题及答案详解
- 2026四川省川康资产经营有限责任公司财务室专员招聘1人笔试备考题库及答案详解
- 2025年新公务员考试公共基础知识统招题库及答案
- 2026年网络安全考试题库及答案
- 五升六暑假英语重点语法 每日一练小纸条(可直接打印打卡)
- 防排烟系统基础知识课件
- T-CALC 007-2025 重症监护病房成人患者人文关怀规范
- 沪科版九年级物理14-2让电灯发光课件
- 第六届全国农业行业职业技能大赛(农业经理人赛项)理论参考试题库-上(单选题)
- 3-费希尔DVC6000系列定位器的调校
- 代订机票合同
- 高考必备文学常识
- 2023年十堰市竹溪县事业单位笔试真题
评论
0/150
提交评论