《第2章对象关系数据库优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第2章对象关系数据库优秀PPT.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第2章对象关系数据库现在学习的是第1页,共25页2.1 嵌套关系嵌套关系是表示现实数据一种最自然的方式,它是对象关系模型的基础例子:文档检索系统,文档信息包括*文档的标题:原子属性*作者:非原子属性*日期:非原子属性(年、月、日)*关键词:非原子属性现在学习的是第2页,共25页2.1 嵌套关系1NF关系flatDoc现在学习的是第3页,共25页2.1 嵌套关系嵌套关系NestedDoc现在学习的是第4页,共25页2.1 嵌套关系在关系flatDoc中存在以下多值依赖关系title authortitle keywordtitle day month year可以分解为满足4NF范式的关系模式(
2、title,autor)(title,keyword)(title,day,month,year)现在学习的是第5页,共25页2.1 嵌套关系分解后的关系现在学习的是第6页,共25页2.2 对象关系模型-SQL32.2.1结构类型和集合类型create type MyString char varyingcreate type MyDate(day integer,month char(10),year integer)create type Document(name MyString,autohr-list setof(MyString),date MyDate,keyword-list
3、setof(MyString)create table doc of type Documentcreate table doc(name MyString,author-list setof(MyString),date MyDate,keyword-list setof(MyString)现在学习的是第7页,共25页2.2 对象关系模型-SQL32.2.1结构类型和集合类型(续)允许将一个属性定义为一个集合:如关系表doc中的属性author-list和keyword-list允许将一个属性定义为一个结构:如doc中的属性date类型定义要被记录在数据库模式中,而在持久性编程语言种类型定义
4、不被保存在数据库中聚集属性类型:setof,array,multiset,list-author-array MyString10-print-runs multiset(integer)现在学习的是第8页,共25页2.2.2 继承-类型继承类型继承 create type Person(name MyString,social-security integer)create type Student(degree MyString,department MyString)under Person create type Teacher(salary integer,department My
5、String)under Person类型Student和Teacher是类型Person的子型(subtype),而类型Person是类型Student和Teacher的超型(Supertype)现在学习的是第9页,共25页2.2.2 继承-(2)多继承create type TeachingAssitant under Student,Teacher继承冲突问题类型Person中的属性name和social-security:由于来自相同的超型,不会发生冲突类型Student和Teacher中继承的属性department:发生冲突,因为一个TA可能是计算机系的学生,但是自动化系的教学助手
6、解决手段:换名子句 create type TeachingAssitant under Student with(department as student-dept),Teacher with(department as teacher-dept)现在学习的是第10页,共25页2.2.2 继承-(3)表级继承表级继承语句-create table people(name MyString,social-secrity integer)-create table students(degree Mystring,department Mystring)under people-create
7、table teachers(salary integer,department MyString)under peoplestudents和teachers称 之 为people的 子 表,people称 之 为students和teachers的超表超表people中的每个元组对应于子表student和teachers中的至多一个元组(对于所有的继承属性具有相同属性值)在子表students和teachers中的每个元组必须对应于超类people中的一个元组(对于所有继承属性来讲具有相同值)定义一个teaching-asitants子表 create table teaching-assi
8、tants under students with(department as student-dept),teachers with(department as teacher-dept)现在学习的是第11页,共25页2.2.3 引用类型*引用类型:面向对象系统提供对对象的引用功能,对象的属性类型可以是对一个特定类型对象的引用。-author-list setof(ref(Person):是一个Person对象引用的集合-author-list setof(Person )-两者间的区别:前一个是引用语义,而后一个是拷贝语义现在学习的是第12页,共25页2.2.3 引用类型head ref(
9、Person)scope people引用限制在people表中的元组,与外码类似 insert into department values(CS,null)update departmentsset head=(select ref(p)from people as p where name=John)where name=CS通过查询得到元组的标识符的值,设置给事先创建好的空引用的元组。现在学习的是第13页,共25页2.2.3 引用类型create table people of Person ref is oid system generated 或 ref is oid user g
10、enerated自引用属性(self-referential attribute)类型create type Person(name varchar(20)primary key,address varchar(20)ref from(name)create table people of Personref is oid derived使用主码值作为标识符,可在类型定义中使用ref from子句现在学习的是第14页,共25页2.3 基于复杂类型的查询 基于关系值属性的查询 路径表达式 Nesting(聚组)Unnesting(析组)函数和过程现在学习的是第15页,共25页(1)基于关系值属性
11、的查询例子模式 create table pdoc(name MyString,author-list setof(ref(people),date MyDate,keyword-list setof(MyString)查找含有”database”的所有文档(where子句中包含关系值属性)select name from pdoc where “database”in keyword-list-关系值属性找出每个文档的名字和作者(from子句中包含关系值属性)select B.name,Y.name from pdoc as B,B.author-list as Y找出每个文档的名字和作者数
12、目(select子句中包含关系值属性)select name,count(author-list)from pdoc现在学习的是第16页,共25页(2)路径表达式例子模式 create table master-students(advisor ref(people)under people查找所有研究生导师名字(select子句使用路径表达式)select master-students.advisor.name from master-students查找所有文档的所有作者的名字(from子句使用路径表达式)select Y.name select pdoc.author-list.nam
13、e from pdoc.author-list as Y from pdoc查找导师为“Zhang”的所有研究生名字(where子句使用路径表达式)select name from master-students where master-students.advisor.name=“Zhang”现在学习的是第17页,共25页(3)聚组与析组析组:将一个嵌套关系转换为一个非嵌套关系 select name,A as author,date.day,date.month,date.year,K as keyword from doc.author-list as A,doc.keyword-li
14、st as K聚组:将一个非嵌套关系转换为一个嵌套关系 select title,author,(day,month,year)as date,set(keyword)as keyword-list from flat-doc groupby title,author,date现在学习的是第18页,共25页(4)函数和过程使用SQL来定义函数 create function author-count(one-doc Document)returns integer as select count(author-list)from one-doc使用编程语言来定义函数效率高、功能强需使用外部编译
15、器,并通过数据库系统来装载和运行如果在函数中存在Bug的话,则可能破坏数据库的内部结构,它绕过了数据库系统的存取控制功能用编程语言编写的函数不同于嵌套SQL:嵌套SQL的查询是通过用户程序传递到数据库系统来运行的,然后结果被一次一个元组地返回到用户程序,这样的话,用户编写的代码从来也不必存取数据库当一个SQL查询调用一个编程语言编写的函数时,或者是函数代码被数据库系统本身运行,或者是函数所需的数据被拷贝到一个独立的数据空间中。后者引起非常高的开销,而前者将产生潜在的安全性和完整性问题。现在学习的是第19页,共25页(4)函数和过程SQL函数定义举例:create function author
16、-count(title varchar(20)returns integerbegindeclare a-count integer;select count(author)into a-countfrom authorswhere authors.title=titlereturn a-count;endSQL函数调用举例:select titlefrom books4where author-count(title)1现在学习的是第20页,共25页(4)函数和过程SQL过程定义举例:create procedure author-count-proc(in title varchar(2
17、0),out a-count integer)beginselect count(author)into a-countfrom authorswhere authors.title=titleendSQL过程调用举例:declare a-count integer;call author-count-proc(Database System Concepts,a-count);现在学习的是第21页,共25页2.4 基于复杂元组的操作 复杂值元组的表示 (“salesplan”,set(“Smith”,“Jones”),(1,”April”,89),set(“profit”,”strategy
18、”)插入 insert into doc values(“salesplan”,set(“Smith”,“Jones”),(1,”April”,89),set(“profit”,”strategy”)查询 select title,date from doc where title in set(“salesplan”,“opportunities”,“risks”)修改 update doc set author-list=set(“Smith”,“Jones”)where title=“salesplan”现在学习的是第22页,共25页2.5 面向对象和对象关系数据库的比较基于持久性编程语
19、言的面向对象数据库系统面向对象数据库系统语言的过程性(目前仍不能很好支持说明性查询语言)、难以进行高层优化、查询能力弱强大的计算能力安全性问题:程序的错误造成数据库破坏持久性数据的存取效率高建立在关系模型之上的对象关系数据库系统对象关系数据库系统语言的说明性、高效的查询优化、查询能力强受限的语言功能保护数据不受程序的破坏由于存在数据格式与类型转换,数据存取效率相对要低现在学习的是第23页,共25页2.5 面向对象和对象关系数据库的比较(续)DBMS矩阵数据查询简单 复杂强弱1234第一象限:简单数据、没有查询文件系统:COBOL第二象限:简单数据、有查询关系数据库系统:商业数据处理年营业额:8
20、0亿美元,25%速度递增第三象限:复杂数据、没有查询面向对象的数据库系统和持久性编程语言系统:工程管理现在的年营业额:8000万美元,50%速度递增第四象限:复杂数据、有查询对象关系数据库系统:多媒体2005年市场规模(见左图)1100150现在学习的是第24页,共25页讨论题假设你受聘为顾问,为你的客户选择一个数据库系统。对于下面这些应用中,声明你将推荐哪种类型的数据库(RDB,OODB,ORDB,不要指定某个商业产品),并且说明你的推荐是正确的。一个为飞机制造商开发的计算机辅助设计系统。一个为政府机关设计的对为候选人做的捐进行跟踪的系统。一个支持电影制作的信息系统。现在学习的是第25页,共25页