高级数据库技术之对象关系数据库.ppt
《高级数据库技术之对象关系数据库.ppt》由会员分享,可在线阅读,更多相关《高级数据库技术之对象关系数据库.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Chapter 9:对象对象-关系数据库关系数据库9.2Chapter 9:对象对象-关系数据库关系数据库n复杂数据类型与面向对象nSQL中的结构数据类型与继承n表继承nSQL中的Array与Multiset类型 nSQL中的对象标识及引用类型n实现O-R特性n持久化程序设计语言nO-O与O-R数据库的比较9.3对象对象-关系数据模型关系数据模型n扩展关系数据模型:引入面向对象及处理新增数据类型的构造.n允许元组属性具有复杂类型,包括非原子值(如嵌套关系).n保持关系基础,尤其是对数据的描述性存取,同时扩展建模能力.n与现有关系语言向上兼容.9.4复杂数据类型复杂数据类型n动机:l允许非原子域
2、(原子 不可分)4非原子域的例子:整数集合,元组集合l可对具有复杂数据的应用进行更直观的建模n直观定义:l所有允许使用原子(标量)值的地方可以使用关系 关系内的关系l保持关系模型的数学基础l违反第一范式9.5嵌套关系例嵌套关系例n例如:图书馆信息系统n每本书具有l书名 l作者集合l出版商l关键词集合n非1NF关系 books9.6嵌套关系的嵌套关系的1NF版本版本flat-booksflat-books9.7嵌套关系的嵌套关系的4NF分解分解n假设flat-books 上有下列多值依赖:ltitle authorltitle keywordltitle pub-name,pub-branchn
3、将flat-books分解到4NF模式:l(title,author)l(title,keyword)l(title,pub-name,pub-branch)9.8flatbooks的的4NF分解分解9.94NF 模式的问题模式的问题n4NF设计要求用户在查询中包含连接.n通过连接4NF关系而定义的1NF视图 flat-books:l使用户不必执行连接,l但丢失了元组与文档的一一对应.l具有大量冗余n嵌套关系表示法更自然.9.10复杂类型与复杂类型与SQL:1999/SQL:2003n为支持复杂类型而对SQL进行的扩充包括:l集合体与大对象类型4嵌套关系是集合体类型的例子l结构类型4类似符合属
4、性的嵌套记录结构l继承l面向对象4包含对象标识符和引用n我们主要基于SQL:1999和SQL:2003标准进行描述l在任何当前的数据库系统中都没有完全实现l但某些特性在每个主要商业数据库系统中都存在4请参阅你的数据库系统的手册9.11SQL中结构类型与继承中结构类型与继承nSQL中可声明并使用结构类型 create type Name as (firstname varchar(20),lastname varchar(20)finalcreate type Address as (street varchar(20),city varchar(20),zipcode varchar(20)n
5、ot finall注:final 和 not final 指示是否可以创建子类型n结构类型可用来创建具有复合属性的表 create table customer(nameName,addressAddress,dateOfBirth date)n使用点表示法来引用成员:name.firstname9.12结构类型结构类型(续续)n用户定义的行类型create type CustomerType as(name Name,address Address,dateOfBirth date)not finaln然后可以创建表,该表的行具有用户定义类型create table customer of
6、CustomerType9.13方法方法n可以为结构类型增加方法声明method ageOnDate(onDate date)returns interval yearn方法体单独定义create instance method ageOnDate(onDate date)returns interval yearfor CustomerTypebeginreturn onDate-self.dateOfBirth;endn现在可以求出每个客户的年龄:select name.lastname,ageOnDate(current_date)from customer9.14继承继承n假设有下列关
7、于人的类型定义:create type Person (name varchar(20),address varchar(20)n利用继承定义学生和教师类型 create type Student under Person (degree varchar(20),department varchar(20)create type Teacher under Person (salary integer,department varchar(20)n子类型可以在方法声明中通过用overriding method代替代替method来重定义方法9.15多重继承多重继承nSQL:1999和SQL:2
8、003 不支持多重继承n如果类型系统支持多值继承,可以如下定义助教类型:create type Teaching Assistant under Student,Teachern为避免两个department 之间的名字冲突,可以重命名 create type Teaching Assistant under Student with(department as student-dept),Teacher with(department as teacher-dept)9.16表继承表继承n表继承通过允许一个实体同时存在于多个表中,使得对象可具有多个类型.n例如 people 表:create
9、 table people of Personn可定义people 的子表students 和 teacherscreate table students of Student under peoplecreate table teachers of Teacher under peoplen子表的类型必须是父表类型的子类型.l因此people中的每个属性也存在于子表中.n子表中的每个元组隐含地存在于其父表中.l因此查询people不仅查到直接插入其中的元组,还能查到插入其子表students 和 teachers中的元组(仅返回people中存在的属性).l只查询people中独有的元组:使
10、用only peoplelonly还可用于delete和update语句,这时子表中的元组不受更新操作影响.n在概念上,多重继承对于表也是可能的.但SQL不支持.create table teaching-assistants of Teaching Assistant under students,teachers9.17对子表的一致性要求对子表的一致性要求对子表的一致性要求对子表的一致性要求n子表元组s对应父表元组t:s在所有继承属性上与t具有相同的值.ls和t表示的是同一实体n对子表的一致性要求l超表中的每条元组在每个直接子表中最多只能与一条元组对应.4例如:students 中不能有两
11、条元组对应于同一个people元组lSQL还有一条限制:相互对应的所有元组必须是由(插入到某个表中的)同一条元组派生的.4问:people中的元组p能同时对应于students中的s和teachers中的t吗?除非p、s和t都是因为向teaching-assistants 表插入了一条元组而隐含派生的.但SQL并不支持多重继承,因此上述限制实际上给出了否定答案.但可以不通过继承来表示TA,而是通过创建单独的表:people,students和 teachers,后两个表包含Person的键及自身的特殊属性.添加引用完整性约束来确保数据一致性:即students和teachers的元组必须出现在
12、people中.9.18SQL中的中的Array与与Multiset类型类型nSQL支持两种集合体类型:array和multisetlSQL:1999开始加入了array,SQL:2003开始加入了multisetlset是multiset的特例l支持E-R中的多值属性的建模narray与multiset声明的例子:create type Publisher as (name varchar(20),branch varchar(20)create type Book as (title varchar(20),author_array varchar(20)array 10,pub_date
13、 date,publisher Publisher,keyword_set varchar(20)multiset)create table books of Bookl类似于嵌套关系books,但用了作者array 而不是集合9.19创建及访问集合体类型的值创建及访问集合体类型的值nArray array Silberschatz,Korth,SudarshannMultisets multiset computer,database,SQLn创建books关系所定义的类型的元组:(Compilers,arraySmith,Jones,new Publisher(McGraw-Hill,Ne
14、w York),multiset parsing,analysis)l注意:构造子函数Publisher()需要显式创建n插入该元组到关系books insert into booksvalues (Compilers,arraySmith,Jones,new Publisher(McGraw-Hill,New York),multiset parsing,analysis)9.20查询具有集合体值的属性查询具有集合体值的属性n求所有具有关键词“database”的书select titlefrom bookswhere database in(unnest(keyword_set)l利用un
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 数据库技术 对象 关系 数据库
限制150内