SQLServer教程第15章_对象关系数据库系统_第1页
SQLServer教程第15章_对象关系数据库系统_第2页
SQLServer教程第15章_对象关系数据库系统_第3页
SQLServer教程第15章_对象关系数据库系统_第4页
SQLServer教程第15章_对象关系数据库系统_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、An Introduction to Database System,数据库系统概论 An Introduction to Database System 第十五章 对象关系数据库系统,An Introduction to Database System,对象关系数据库系统,对象关系数据库系统(Object Relational Database System,ORDBS)是面向对象数据模型(Object Oriented Data Model,简称OO模型)和关系数据模型相结合的产物 三条研究路线 以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型; 建立新的面向对象数据库

2、系统OODBS,支持OO数据模型; 以关系数据库和SQL为基础,把面向对象技术融入数据库系统的ORDBS,An Introduction to Database System,第十五章 对象关系数据库系统,15.1 面向对象数据模型 15.2 对象-关系数据库 15.3 小结,An Introduction to Database System,15.1 面向对象数据模型,面向对象数据库系统支持OO模型 面向对象数据库系统:一个持久的、可共享的对象库的存储和管理者 对象库:由一个OO模型所定义的对象的集合体,An Introduction to Database System,15.1 面向对

3、象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,An Introduction to Database System,15.1.1 OO模型的核心概念,1.对象 定义:对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。 组成部分 属性(Attribute)集合 属性描述对象的状态、组成和特性 方法(Method)集合 描述了对象的行为特性,An Introduction to Database System,OO模型的核心概念(续),2. 对象标识OID(Object IDentifier) 概念

4、:面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID) 特点: 永久持久性 独立于值的、系统全局唯一的,An Introduction to Database System,OO模型的核心概念(续),3. 封装(Encapsulation) 每一个对象是其状态与行为的封装 封装是对象的外部界面与内部实现之间实行清晰隔离的一种抽象,外部与对象的通信只能通过消息 对象封装之后查询属性值必须通过调用方法,An Introduction to Database System,OO模型的核心概念(续),4. 类(Class) 对象类(简称类):共享同样属性和方法集的所有对象构成了一个

5、对象类 实例:一个对象是某一类的一个实例(instance) 在OODB中,类是“型”,对象是某一类的一个“值”,An Introduction to Database System,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,An Introduction to Database System,类层次(结构)(续),教员、行政人员、工人中只有本身的特殊属性和方法 同时它们又继承教职员工类和人的所有属性和方法 逻辑上它们具有人、教职员工和本身的所有属性和方法,图15.1 学校数据库的类层次结构图,An

6、 Introduction to Database System,类层次(结构)(续),超类/子类之间的关系体现了“IS A”的语义 超类是子类的抽象(Generalization)或概括 子类是超类的特殊化(Specialization)或具体化 类层次可以动态扩展,一个新的子类能从一个或多个已有类导出,An Introduction to Database System,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,An Introduction to Database System,15.1.3

7、继承,单继承:一个子类只能继承一个超类的特性(包括属性和方法) 层次结构图是一棵树 多重继承:一个子类能继承多个超类的特性 层次结构图是一个带根的有向无回路图,An Introduction to Database System,继承(续),多重继承,具有多继承的类层次结构图,An Introduction to Database System,继承(续),继承性的优点 第一,建模的有力工具,提供了对现实世界简明而精确的描述 第二,提供了信息重用机制 子类与超类的冲突 子类在定义自己特殊属性和方法时可能与继承下来的超类的属性和方法发生冲突 由系统解决,An Introduction to Da

8、tabase System,15.1 面向对象数据模型,15.1.1 OO模型的核心概念 15.1.2 类层次(结构) 15.1.3 继承 15.1.4 对象的嵌套,An Introduction to Database System,15.1.4 对象的嵌套,对象嵌套: 一个对象的属性可以是一个对象,这样对象之间产生一个嵌套层次结构 设Obj1和Obj2是两个对象。如果Obj2是Obj1的某个属性的值,称Obj2属于Obj1,或Obj1包含Obj2。 复杂对象 子对象 嵌套层次结构,An Introduction to Database System,对象的嵌套(续),汽车的嵌套层次图,An

9、 Introduction to Database System,对象的嵌套(续),对象嵌套层次结构和类层次结构形成了对象横向和纵向的复杂结构 各种类之间具有层次结构 某一个类内部也具有嵌套层次结构,An Introduction to Database System,关系模型与OO模型的比较,表15.1 关系数据模型与OO模型的比较,An Introduction to Database System,第十五章 对象关系数据库系统,15.1 面向对象数据模型 15.2 对象-关系数据库 15.3 小结,An Introduction to Database System,15.2 对象-关系

10、数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,An Introduction to Database System,对象关系数据库系统中扩展的关系数据类型,扩展的类型: LOB BOOLEAN 集合类型ARRAY 用户定义的DISTINCT类型等 面向对象的数据类型 行类型ROW TYPE 抽象数据类型(Abstract Data Type),An Introduction to Database System,ORD

11、BS中扩展的关系数据类型(续),大对象LOB(Large OBject )类型 LOB可存储多达十亿字节的串。 LOB分类 二进制大对象BLOB(Binary Large OBject) BLOB用于存储音频、图像数据 字符串大对象CLOB(Character Large OBject)。 CLOB用于存储长字符串数据,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),2. BOOLEAN类型 布尔类型,支持3个真值:true、false和unknown 操作符:NOT、AND、OR、EVERY、ANY 例如 WHERE EVERY(Q

12、TY200) 或WHERE ANY(QTY200) QTY列为空值:返回unknown; QTY列为非空: 当该列的每一个值都使(QTY200)为true时,EVERY返回true,否则为false; 当该列的每一个值都使(QTY200)为false时,ANY返回false,否则为true。,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),3.集合类型(Collection Type)ARRAY 相同类型元素的有序集合称为数组ARRAY SQL3新增的集合类型 允许在数据库的一列中存储数组 SQL3的数组只能是一维的 数组中的元素不能

13、再是数组,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),例2 CREATE TABLE SALES ( ITEM_NO CHAR(20),/*商品号*/ QTY INTEGER ARRAY12,/*整数数组,存放销售额*/ PRIMARY KEY(ITEM_NO) );,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),向SALES表插入一个元组: INSERT INTO SALES(ITEM_NO,QTY)VALUES (T-shirt2000,ARRAY200,150,2

14、00,100,50,70, 80,200,10,20,100,200); 查找三月份销售额大于100的商品号: SELECT ITEM_NO FROM SALES WHERE QTY3100;,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),4. DISTINCT类型 SQL3新加了一种DISTINCT类型 定义DISTINCT数据类型语法 CREAT TYPE AS FINAL ;,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),没有使用DISTINCT类型 例如,职工的智

15、商字段(IQ)和鞋号字段(SHOE_SIZE)定义成INTEGER类型 WHERE SHOE_SIZE IQ,An Introduction to Database System,ORDBS中扩展的关系数据类型(续),使用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 是非法的 如果在定义类型时设置了选项,下面用法也是合法的

16、:WHERE MY_SHOE_SIZE CAST (MY_IQ AS SHOE_SIZE),An Introduction to Database System,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,An Introduction to Database System,ORDBS中扩展的对象类型及其定义,在ORDBMS中,类型(TYPE)具有类(CLASS)的特征,可以看成类 1.行对象与行

17、类型 定义行类型(ROW TYPE) : CREATE ROW TYPE ();,An Introduction to Database System,ORDBS中扩展的对象类型及其定义(续),创建行类型 例3 CREATE ROW TYPE Person_type (pnoNUMBER, nameVARCHAR2(100), addressVARCHAR2(100) );,An Introduction to Database System,ORDBS中扩展的对象类型及其定义(续),创建基于行类型的表 CREATE TABLE OF ; 例4 CREATE TABLE person_exte

18、nt OF Person_type (pno PRIMARY KEY );,An Introduction to Database System,ORDBS中扩展的对象类型及其定义(续),2.列对象与对象类型 可以创建一个对象类型,表的属性可以是该对象类型。 创建列对象语句如下: CREATE TYPE AS OBJECT ();,An Introduction to Database System,ORDBS中扩展的对象类型及其定义(续),例5 CREATE TYPE address_objtyp AS OBJECT (streetVARCHAR2(50), cityVARCHAR2(50)

19、 ); CREATE TYPE name_objtyp AS OBJECT (first_nameVARCHAR2(30), last_nameVARCHAR2(30) ) ;,An Introduction to Database System,ORDBS中扩展的对象类型及其定义(续),创建表,定义其中的属性是对象类型 例6 CREATE TABLE people_reltab (IdNUMBER(10), name_objname_objtyp,address_objaddress_objtyp);,An Introduction to Database System,ORDBS中扩展的对

20、象类型及其定义(续),3. 抽象数据类型(Abastract Data Type,ADT) 概念:SQL3允许用户创建指定的带有自身行为说明和内部结构的用户定义类型称为抽象数据类型 定义ADT的一般形式为 CREATE TYPE ( 所有属性名及其类型说明, 定义该类型的等于和小于函数, 定义该类型其他函数(方法);,An Introduction to Database System,ADT的特点,(1) ADT的属性定义和行类型的属性定义类同。 (2) 在创建ADT的语句中,通过用户定义的函数比较对象的值。 (3) ADT的行为通过方法(methods)、函数(functions)实现。

21、(4) SQL3要求抽象数据类型是封装的,而行类型则不要求封装。 (5) ADT有3个通用的系统内置函数 (6) ADT可以参与类型继承,An Introduction to Database System,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,An Introduction to Database System,15.2.3 参照类型(Reference Type),REF类型(参照类型、

22、引用类型) 引入的原因: 类型之间可能具有相互参照的联系 形式 REF 特点: REF类型总是和某个特定的类型相联系。 它的值是OID,An Introduction to Database System,参照类型(续),创建两个表:Employee和Company,两表之间存在相互参照关系,即某个职工在某个公司工作 (1)创建行类型 例7 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER ); CREATE ROW TYPE Comp_ type( compname VARCHAR(20), location VARCH

23、AR(20) );,An Introduction to Database System,参照类型(续),(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

24、中某一个元组的employee属性值是某个职工的OID company属性值是该职工所在公司的OID,An Introduction to Database System,参照类型(续),例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;,An Introduction to Database Sy

25、stem,参照类型(续),建立参照属性: REF()SCOPE IS 例10 CREATE TABLE address_objtab OF address_objtyp ; 例11 CREATE TABLE people_reltab2 ( id NUMBER(4) PRIMARY KEY, name_obj name_objtyp, addresss_ref REF(address_objtyp) SCOPE IS address_objtab ),An Introduction to Database System,参照类型(续),例12 CREATE INDEX address_ref_

26、idx ON people_reltab2(address_ref) ; 例13 SELECT id FROM people_reltab2 p WHERE p.address_ref.city=北京 and p.address_ref.street=牛街;,An Introduction to Database System,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,An Introducti

27、on to Database System,15.2.4 继承性,ORDBMS应该支持继承性 一般是单继承性 例14 CREATE TYPE emp_type UNDER person_type AS( emp_id INTEGER, salary REAL ) NOT FINAL; NOT FINAL:表示不是类层次结构中最后的“叶结点” FINAL:该类型是类层次结构的叶结点,An Introduction to Database System,15.2 对象-关系数据库,15.2.1 对象关系数据库系统中扩展的关系数据类型 15.2.2 对象关系数据库系统中扩展的对象类型及其定义 15.

28、2.3 参照类型(Reference Type) 15.2.4 继承性 15.2.5 子表和超表,An Introduction to Database System,15.2.5 子表和超表,超表、子表、子表的子表构成一个表层次结构 表层次和类型层次的概念十分相似,An Introduction to Database System,子表和超表(续),例15 对于下面的类型层次,先定义这些类型TYPE,然后创建基于这些类型的表,类型层次示例,An Introduction to Database System,子表和超表(续),CREATE TYPE person /*创建person 类型

29、,根类型*/ (id INTEGER, name VARCHAR(20), birthyear INTEGER, address VARCHAR(40) NOT FINAL; /*NOT FINAL表示可以有子类型*/ CREATE TYPE employee /*创建person的子类型employee*/ UNDER person /*类型employee继承person的属性*/ (salary INTEGER) /* employee定义自己的属性*/ NOT FINAL;,An Introduction to Database System,子表和超表(续),CREATE TYPE

30、executive/*创建employee的子类型executive*/ UNDER employee (bonus INTEGER) FINAL; CREATE TYPE student/*创建person的子类型student */ UNDER person (major VARCHAR(10),wage DECIMAL) FINAL,An Introduction to Database System,子表和超表(续),例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 executiv

温馨提示

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

评论

0/150

提交评论