对象关系数据库
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回作者总数 超过1个的文档
函数
允许使用程序设计语言(C或C++)来定义函数
好处: 更高效、更强的表达能力。
缺点: 函数的实现代码必须装入数据库系统中。 增加了对数据库内部结构的破坏风险。 增加了安全性风险(旁路问题)。
用嵌入式SQL书写的代码不会访问数据库本身
复杂值和复杂对象的创建
对象-关系数据库
复杂数据类型、查询、高保护性。
作业
比较关系数据库、面向对象数据库和对象关 系数据库
作业
一家汽车租赁公司为其当前车队中的所有车辆维护 着一个车辆数据库。对于所有的车辆,数据库中包 括的信息有车辆识别号、牌照号、制造商、型号、 购买日期以及颜色,对于某些类型的车辆还包括有 特殊的数据:
表级继承:一致性要求
父表与子表之间的完整性约束
父表(people)中的一个元组至多与它的每一个子 表(students和teachers)中的一个元组相对应(不 能有两个student对应同一个people)。
子表(students teachers)中的每个元组恰好与它的 父 表 ( people) 中 的 一 个 元 组 相 对 应 ( 不 能 出 现 student 不 是 people 的 情 况 , 也 不 能 出 现 一 个 student是多个people的情况)。
在扩展建模能力的同时,保留关系的基本特征, 如说明性查询。
提高与现有关系语言的兼容性。
嵌套关系
动机
允许非原子域的存在。 允许以更自然直接的方式对应用建模。
直觉定义
允许关系出现在原子值出现的地方——在关系中 出现关系。
保留关系模型的数学基础 违反了1NF
嵌套关系
子表可以不必存储的所继承的父表的属性(除主 码外)。
引用类型
类型引用
类型的属性可以是对属于指定类型的对象的应 用。 如声明:author-list setof (ref(Person)) 表 明 author-list 是 一 个 对 Person 对 象 引 用 的 集 合。
表引用
对SQL的扩展
SQL3 XSQL(Illustra)
有结构的类型和集合体类型
doc关系的重定义
新的数据类型
多值属性和 复合属性可 以直接表示
类型继承
Student继承 Person的属性
类型继承
create type TeachingAssistant under Student, Teacher
创建doc关系的一个元组
集合值属性在() 内枚举它们的元素 并在前面加上set
复合属性的 各个属性在 ()内列出
复杂值和复杂对象的创建
向doc关系中插入 一个复杂值元组
在查询中使 用复杂值
OO数据库与OR数据库比较
关系数据库系统
简单数据类型、查询、高保护性。
面向对象数据库系统
复杂数据类型、与编程语言集成、高性能。
对象关系数据库定义
设计和实现ORDBMS会遇到的特殊问题
对复杂对象和大对象的存储和查询 索引结构必须是类属的 提供用户自定义的数据类型和函数的功能 规则系统(数据语义知识:数据特殊列有效值的
规则、各数据值相互间的关系、某条件测定能自 动激活触发器事件的规则) 支持继承:提高软件的一致性和可重用性 ORSQL语法分析器:SQL3/SQL99 查询优化
create type Vehicle
(vehicle-id integer,
//车辆识别号
license-number char(15), //牌照号
manufacturer char(30), //制造商
model char(30),
//型号
purchase-date MyDate, //购买日期
嵌套关系
flat-doc的4NF分解
嵌套关系
4NF分解带来的问题
4NF设计要求用户的查询中包含对关系的连接。 1NF不要求用户的查询中包含对连接操作,但失
去了元组与文档之间的一一对应。 嵌套关系是更自然的表示。
复杂类型与面向对象
对关系模型的扩展
嵌套关系 复杂类型 特殊化 继承 对象标识
支持复杂对象
复杂对象对系统的要求
丰富的复杂对象类型(组合、集合、指针) 复杂对象类型上的函数 复杂对象的大小 SQL的超集
创建复杂对象
组合 集 指针
对象-关系数据来自百度文库型
通过增加面向对象特征和处理新建数据类型来扩 展关系模型。
允许元组的属性域为复杂类型,包括如嵌套关系 等非原子性的值。
表级继承为角色建模提供了便利
允许对象有多重类型,而不必象类型继承那样要 求具有一个最明确类型。 如 一 个 对 象 可 以 同 时 在 students 和 teachers 子 表 里,表示一个身为学生的助教,不必再为它创建 一个继承students与teachers的子表。
对象可以获得或失去角色——通过向子表里插入 或删除对象。
多重继承
消除属性冲突
如何使每个实体恰好有一个最明确类 型?
表级继承
允许一个实体同时存在于多于一个的表中
students 与 teachers 继 承 了 people 的 所 有 属性,不必为同时是 students 与 teachers 的实体再创建新的子 表,除非它有额外属 性。
表级继承:角色
第3章 对象关系数据库
主 讲: 薛 安 荣
江苏大学计算机学院计算机科学系
E-mail:xuear@ujs.edu.cn
主要内容
对象关系数据库定义 支持复杂对象 基类扩充 继承机制 规则系统
对象关系数据库定义
三代数据库
第一代数据库:层次和网状数据库 第二代数据库:关系数据库 第三代数据库:对象关系数据库
嵌套关系示例
文档检索系统
嵌套关系
doc的1NF版本
嵌套关系
flat-doc中的多值依赖
title→→author title→→keyword title→→day month year
flat-doc的4NF分解
(title,author) (title,keyword) (title,day,month,year)
author-list setof (ref(people)) 用表的主码或元组的标识符来实现对元组的引 用。
与复杂类型有关的查询
以关系为值的属性
允许用于计算关系的表达式出现在任何关系名可 以出现的地方
与复杂类型有关的查询
查找关键字中含有 “database”的文档
给出“文档名,作者 名”
color Color)
//颜色
作业
create table vehicle of type Vehicle create table truck (cargo-capacity integer) under vehicle create table sportsCar (horsepower integer renter-age-requirement integer) under vehicle create table van (num-passengers integer) under vehicle create table offRoadVehicle (ground-clearance real driveTrain DriveTrainType) under vehicle
第三代数据库具备的三条原则
原则1:支持更加丰富的对象结构和规则 原则2:必须包含RDBMS的所有功能 原则3:必须对其它子系统开放
对象关系数据库定义
对象关系数据库管理系统(ORDBMS)定义
具备关系数据库管理系统的功能 支持面向对象的特性(能扩充基类、支持复杂对
象、增加复杂对象继承机制及支持规则系统)
定义
将一个嵌套关系转换为1NF的过程称为解除嵌套。
将doc转化为 单个平面关系
嵌套
定义
将一个1NF关系转换为嵌套关系。 可以通过SQL分组的扩展来实现。
在keyword上 对flat-doc嵌套
函数
对象-关系系统允许用户使用数据操纵语言 (SQL)来定义函数。
返回给定文档 的作者总数
给出文档名及作者人数
与复杂类型有关的查询
路径表达式
点号不但用来引用复合属性,还可以用于引用类型。 使用引用隐藏了表之间的连接操作,简化了查询。
路径表达式
select phd-students.advisor.name
from phd-students
路径表达式中的属
性可以是集合体
解除嵌套
卡车:载货容量。 跑车:马力,对出租者的年龄限制。 厢式货车:乘客人数。 越野车:离地距离,驱动类型(四轮驱动或两轮
驱动)。 为这个数据库构造一个面向对象数据库的模式定 义,适当的地方使用继承。
作业
对于这个问题,我们使用表一级的继承,假
定 MyDate,Color和DriveTrainType 是已定 义的类型.则
函数
允许使用程序设计语言(C或C++)来定义函数
好处: 更高效、更强的表达能力。
缺点: 函数的实现代码必须装入数据库系统中。 增加了对数据库内部结构的破坏风险。 增加了安全性风险(旁路问题)。
用嵌入式SQL书写的代码不会访问数据库本身
复杂值和复杂对象的创建
对象-关系数据库
复杂数据类型、查询、高保护性。
作业
比较关系数据库、面向对象数据库和对象关 系数据库
作业
一家汽车租赁公司为其当前车队中的所有车辆维护 着一个车辆数据库。对于所有的车辆,数据库中包 括的信息有车辆识别号、牌照号、制造商、型号、 购买日期以及颜色,对于某些类型的车辆还包括有 特殊的数据:
表级继承:一致性要求
父表与子表之间的完整性约束
父表(people)中的一个元组至多与它的每一个子 表(students和teachers)中的一个元组相对应(不 能有两个student对应同一个people)。
子表(students teachers)中的每个元组恰好与它的 父 表 ( people) 中 的 一 个 元 组 相 对 应 ( 不 能 出 现 student 不 是 people 的 情 况 , 也 不 能 出 现 一 个 student是多个people的情况)。
在扩展建模能力的同时,保留关系的基本特征, 如说明性查询。
提高与现有关系语言的兼容性。
嵌套关系
动机
允许非原子域的存在。 允许以更自然直接的方式对应用建模。
直觉定义
允许关系出现在原子值出现的地方——在关系中 出现关系。
保留关系模型的数学基础 违反了1NF
嵌套关系
子表可以不必存储的所继承的父表的属性(除主 码外)。
引用类型
类型引用
类型的属性可以是对属于指定类型的对象的应 用。 如声明:author-list setof (ref(Person)) 表 明 author-list 是 一 个 对 Person 对 象 引 用 的 集 合。
表引用
对SQL的扩展
SQL3 XSQL(Illustra)
有结构的类型和集合体类型
doc关系的重定义
新的数据类型
多值属性和 复合属性可 以直接表示
类型继承
Student继承 Person的属性
类型继承
create type TeachingAssistant under Student, Teacher
创建doc关系的一个元组
集合值属性在() 内枚举它们的元素 并在前面加上set
复合属性的 各个属性在 ()内列出
复杂值和复杂对象的创建
向doc关系中插入 一个复杂值元组
在查询中使 用复杂值
OO数据库与OR数据库比较
关系数据库系统
简单数据类型、查询、高保护性。
面向对象数据库系统
复杂数据类型、与编程语言集成、高性能。
对象关系数据库定义
设计和实现ORDBMS会遇到的特殊问题
对复杂对象和大对象的存储和查询 索引结构必须是类属的 提供用户自定义的数据类型和函数的功能 规则系统(数据语义知识:数据特殊列有效值的
规则、各数据值相互间的关系、某条件测定能自 动激活触发器事件的规则) 支持继承:提高软件的一致性和可重用性 ORSQL语法分析器:SQL3/SQL99 查询优化
create type Vehicle
(vehicle-id integer,
//车辆识别号
license-number char(15), //牌照号
manufacturer char(30), //制造商
model char(30),
//型号
purchase-date MyDate, //购买日期
嵌套关系
flat-doc的4NF分解
嵌套关系
4NF分解带来的问题
4NF设计要求用户的查询中包含对关系的连接。 1NF不要求用户的查询中包含对连接操作,但失
去了元组与文档之间的一一对应。 嵌套关系是更自然的表示。
复杂类型与面向对象
对关系模型的扩展
嵌套关系 复杂类型 特殊化 继承 对象标识
支持复杂对象
复杂对象对系统的要求
丰富的复杂对象类型(组合、集合、指针) 复杂对象类型上的函数 复杂对象的大小 SQL的超集
创建复杂对象
组合 集 指针
对象-关系数据来自百度文库型
通过增加面向对象特征和处理新建数据类型来扩 展关系模型。
允许元组的属性域为复杂类型,包括如嵌套关系 等非原子性的值。
表级继承为角色建模提供了便利
允许对象有多重类型,而不必象类型继承那样要 求具有一个最明确类型。 如 一 个 对 象 可 以 同 时 在 students 和 teachers 子 表 里,表示一个身为学生的助教,不必再为它创建 一个继承students与teachers的子表。
对象可以获得或失去角色——通过向子表里插入 或删除对象。
多重继承
消除属性冲突
如何使每个实体恰好有一个最明确类 型?
表级继承
允许一个实体同时存在于多于一个的表中
students 与 teachers 继 承 了 people 的 所 有 属性,不必为同时是 students 与 teachers 的实体再创建新的子 表,除非它有额外属 性。
表级继承:角色
第3章 对象关系数据库
主 讲: 薛 安 荣
江苏大学计算机学院计算机科学系
E-mail:xuear@ujs.edu.cn
主要内容
对象关系数据库定义 支持复杂对象 基类扩充 继承机制 规则系统
对象关系数据库定义
三代数据库
第一代数据库:层次和网状数据库 第二代数据库:关系数据库 第三代数据库:对象关系数据库
嵌套关系示例
文档检索系统
嵌套关系
doc的1NF版本
嵌套关系
flat-doc中的多值依赖
title→→author title→→keyword title→→day month year
flat-doc的4NF分解
(title,author) (title,keyword) (title,day,month,year)
author-list setof (ref(people)) 用表的主码或元组的标识符来实现对元组的引 用。
与复杂类型有关的查询
以关系为值的属性
允许用于计算关系的表达式出现在任何关系名可 以出现的地方
与复杂类型有关的查询
查找关键字中含有 “database”的文档
给出“文档名,作者 名”
color Color)
//颜色
作业
create table vehicle of type Vehicle create table truck (cargo-capacity integer) under vehicle create table sportsCar (horsepower integer renter-age-requirement integer) under vehicle create table van (num-passengers integer) under vehicle create table offRoadVehicle (ground-clearance real driveTrain DriveTrainType) under vehicle
第三代数据库具备的三条原则
原则1:支持更加丰富的对象结构和规则 原则2:必须包含RDBMS的所有功能 原则3:必须对其它子系统开放
对象关系数据库定义
对象关系数据库管理系统(ORDBMS)定义
具备关系数据库管理系统的功能 支持面向对象的特性(能扩充基类、支持复杂对
象、增加复杂对象继承机制及支持规则系统)
定义
将一个嵌套关系转换为1NF的过程称为解除嵌套。
将doc转化为 单个平面关系
嵌套
定义
将一个1NF关系转换为嵌套关系。 可以通过SQL分组的扩展来实现。
在keyword上 对flat-doc嵌套
函数
对象-关系系统允许用户使用数据操纵语言 (SQL)来定义函数。
返回给定文档 的作者总数
给出文档名及作者人数
与复杂类型有关的查询
路径表达式
点号不但用来引用复合属性,还可以用于引用类型。 使用引用隐藏了表之间的连接操作,简化了查询。
路径表达式
select phd-students.advisor.name
from phd-students
路径表达式中的属
性可以是集合体
解除嵌套
卡车:载货容量。 跑车:马力,对出租者的年龄限制。 厢式货车:乘客人数。 越野车:离地距离,驱动类型(四轮驱动或两轮
驱动)。 为这个数据库构造一个面向对象数据库的模式定 义,适当的地方使用继承。
作业
对于这个问题,我们使用表一级的继承,假
定 MyDate,Color和DriveTrainType 是已定 义的类型.则