




已阅读5页,还剩39页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 目前 人脸识别技术及其应用已经渗透到多个学科 并在模式识别 智能控 制 机器视觉等领域取得了丰硕成果 如何利用数据库来管理人脸图像一直是研 究热点 随着数据库技术的发展 对象关系数据库技术产生以满足新应用领域的 需求 它既具有管理复杂数据的能力 又提供复杂查询的功能 它是在继承关系 数据库技术的基础上 增加面向对象特性 使面向对象技术与关系数据库技术紧 密结合 因此 本文结合人脸识别过程中的预处理及特征提取和对象关系数据库 的基本特征 提出利用对象关系数据库来管理人脸图像及提供查询 该方法先对 每一幅人脸图像做预处理和特征提取 然后把人脸图像及其特征向量一起存储在 对象关系数据库中 提取特征向量的目的是为后续人脸图像查询做准备 当进行 人脸图像查询时 通过计算人脸图像间特征向量的欧氏距离作为查询匹配依据 最终完成人脸查询过程 通过本文研究表明采用对象关系数据库来管理复杂数 据 提供复杂查询等相关问题是一种有效的解决方案 关键字 对象关系数据库 人脸查询 模式识别 特征向量 欧氏距离 s u m m a r y a tp r e s e l l t f a c er e c o g n i t i o ni sac h a l l e n g i n gt a s ks i n c ei n v o l v e se x c e s s l v e 妣l l i l i q u e s s u c h 舔p a t t 锄r e c o g n i t i o n i n t e l l i g e n tc o n t r o l m a c h i n ev i s i o na n ds o0 1 1 h o w t ou s et h ed a 协b a s et o m 觚a g ef h c ci m a g eh a sb e e nah o t s p o t w i t ht h ed e v e l o p m e n to fd a t a b a s et e c h n o l o g y m o r d e rt o m e e tm en e e d so fn e wa p p l i c a t i o nf i e l d s a no b j e c t r e l a t i o n a ld a t a b a s et e c h n o l o g y h a sa p p e a 硼 n n o t0 n l yc a i lm a i l a g ec o m p l e xd a t a b u t a l s oc a np r o v i d et h ec o m p l e xq u e r yf u n c t i o 璐 i ti s i n h 酣t e d胁t h er e l a t i o n a l d a t a b a s et e c h n o l o g y a n di n c r e a s e st h ec h a i n c t e r i s f i c s o t o b i e c t 帕r i 饥t e d s ot h a tt h eo b j e c t o r i e n t e dt e c h n o l o g ya n d r e l a t i o n a ld a t a b a s e 眦l l l l o l o g yc l o s e l y n e g r a t 鼢t h i sa r t i c l e i sb a s e do nt h ed e e ps t u d yo fo b j e c t r e l a t i o n a l d a 讪a s e 觚df 弑 t c c o 画t i o n脚锄e n ta n d 佗a m r ee x t r a c t i o n b ym a k i n g f u l lu s eo fn l e允n d a i i l e i l t a i c h 锄c t 舐s t i c so fo b j e c t r e l a t i o n a ld a t a b a s e i tp r o p o s e s am e t h o dw h i c hu s e s o b j e c t r e l a t i 伽a l d a 诎a s et 9m a n a g ea n dq u e r yh u m a nf a c ei m a g e s t h i sm e t h o df i r s t l yp r e t r e a t s a n de x 仃a c t s 勋t l l r e 脚e a c hh u m a l lf a c ei m a g e t h e ns t o r e sh u m a n f a c ei m a g e sa n dt h e i r 啦洲 m o b i e c t r e l a t i o n a l a t a b a s e t h ep u r p o s eo fe x t r a c t i n ge i g e n v e c t o r s i st om a k ep 唧a r cf o r 也e f o l l o w i n ge n q u i r i e so ff a c ei m a g e s w h e nq u e r y i n gh u m a nf a c e i m a g e s w ec a i l 椭 t h e e u c l i d e a nd i s 住m c eb e 附e e i lh u m a n f a c ei m a g e s e i g e n v e c t o r s a n dt a k e st h ed i s t a n c e sa st h eb a s l s f o rm a t d l i n g 1 1 1 r o u 曲t h i sa r t i c l e ss t u d y i ts h o w s t h a tu s i n go b j e c t r e l a t i o n a ld a t a b a s et 0m a i l a g e c 0 瑚 p l e xd a t aa n dp r o v i d ec o m p l e xq u e r i e si sv e r ye f f e c t i v e k e yw r d s o b j e c t r e l a t i o n a l d a t a b a s e f a c ee n q u i r y p a t t e r nr e c 鲥t i o n e i g 朋懈 鸭 e u c l i d e a n d i s t a n c e n 原创性声明 原创性声明 本人郑重声明 所呈交的学位论文 是本人在导师的指导下 独立进行研究所取得的成果 除文中已经注明引用的内容外 本 论文不包含任何其他个人或集体已经发表或撰写过的科研成果 对本文的研究在做出重要贡献的个人和集体 均已在文中以明确 方式标明 本人完全意识到本声明的法律责任由本人承担 论文作者签名 毖壶 日 期 2q q 生 旦 关于学位论文使用授权的声明 本人完全了解贵州大学有关保留 使用学位论文的规定 同 意学校保留或向国家有关部门或机构送交论文的复印件和电子 版 允许论文被查阅和借阅 本人授权贵州大学可以将本学位论 文的全部或部分内容编入有关数据库进行检索 可以采用影印 缩印或其他复制手段保存论文和汇编本学位论文 保密论文在解密后应遵守此规定 论文作者签名 瑟蕴导师签名 e l 期 2q q 绽翁 贵州大学硕士学位论文 1 1 研究目的及意义 第一章引言弟一早jii 自从2 0 世纪6 0 年代末世界上第一个数据库系统问世以来 数据库技术已经 有了突飞猛进的发展 尤其是8 0 年代以来 随着计算机技术的普及 数据库应 用正在向各方面渗透 应用需求始终是推动技术进步的动力 近年来 随着计算 机辅助设计 c a d 计算机辅助制造 c a m 计算机辅助软件工程 c a s e 全球 信息系统 g i s 办公信息系统 o i s 多媒体系统 3 5 m u l t i m e d i a 图像处理 超 文本应用 巨型复杂数据库应用等领域的飞速发展及其在传统领域中应用的深 化 要求数据库管理系统 d a t a b a s em a n a g e m e n ts y s t e m d b m s 能够有效地管理 复杂对象和支持复杂对象的复杂查询 在工程应用领域 一个客观复杂实体往往 由数十个 甚至成百上千个简单实体组成 为了减小数据库应用系统的设计复杂 度 提高其执行效率 要求d b m s 不但能根据实体丰富的语义进行建模 提供 有效的存储与操作手段 以及模拟复杂实体的复杂行为 而且在逻辑上还要将一 个复杂实体的表示和操纵作为一个整体看待 在操纵数据的同时考虑实体间的复 合语义 即各简单实体的存在方式以及实体间的引用方式 传统的数据库在存储多媒体数据时 由于多媒体数据量大 非结构化 因此 在进行数据存储及查询时 将会遇到很多困难 而且也很费时问 这些新的特征 使得传统的关系型d b m s 或面向对象型d b m s 均难以有效地管理这些类型的数 据 因此 本文提出采用对象关系型数据库系统来进行人脸图像管理及查询 对 象关系型数据库管理系统 2 o b j e c tr e l a t i o n a ld a t a b a s em a n a g e m e n ts y s t e m 是面 向对象技术与数据库技术的结合走向成熟的产物 它提供对于复杂数据进行复杂 查询的支持 从而能够更好地满足迅速发展的多媒体应用 这就是本文研究的意 义所在 1 2 对象关系型数据库管理系统的由来 新兴的数据库应用需求要求数据库系统能够提供 存储和处理各种复杂对 象 支持新的数据类型和操作 需要有更多的语义概念 支持动态模式修改 4 1 时态数据 基于高维关系上的查询功能 对象关系数据库技术是在继承传统的关 系数据库技术的基础上 增加面向对象特性 使面向对象技术与关系数据库技术 紧密结合 可满足新应用领域的需求而发展起来的一种新型数据库技术 它既具 有管理复杂数据的能力 又能提供强有力的查询功能 而在复杂数据方面 通常 要求提供创建复杂类型的类型构造器 如组合 集合和引用 对象关系数据库系 统提供的查询语言将是s q l 的一种自然发展 如目前已经出台的s q l 1 9 9 9 目前的关系数据库 面向对象数据库 对象关系数据库是有区别的 从 m i c h a e ls t o n e b r a k e r 对数据库管理系统的划分中可以看得更为清楚 他根据所支 持的数据类型及查询能力的不同 将现有的数据库管理系统分为如图1 一l 所示四 类1 3 u j 在这个矩阵中 横坐标表示被处理数据的复杂程度 在此分成简单和复杂 两类 纵坐标表示查询命令的复杂程度 分成简单和复杂查询两类 这样任一个 第一章引言 d b m s 按照其应用特性 至少会落入该图中4 个区域中的某一个 有无查询功能 复杂 简单 l 2 4 l 3 l 简单复杂 数据复杂度 图1 1d b m s 的分类矩阵 在5 0 年代后期到6 0 年代中期 数据管理功能主要由正文处理系统实现 图 1 1 中 区域l 即表示的足正文处理系统 常见的正文处理系统有w o r d f r a m e m a k e r w o r dp e r f e c t v i 等等 这一类应用系统处理的是简单数据 且只需 要一些简单查询或无需什么查询 它是最简单的d b m s 软件系统 各个文件之 间相互独立 系统对数据文件提供打开文件 关闭文件 从文件中读 写一个记 录等操作 不能反映和处理文件之间在内容方面的联系 此时 程序和系统间的 接口停留在文件系统这一层次上 这一层次上的应用接口比较低级 数据文件与 应用程序紧密关联 相互问的独立性差 数据的共享性差 各应用程序中的许多 代码在低水平上重复 因此 对于此类应用 操作系统厂商提供的文件系统就可 以满足其功能要求 由此可见 正文处理系统难以有效管理人脸图像 1 2 1 关系数据库管理系统 19 7 0 年e e c o d d 在 c o m m u n i c a t i o no ft h ea c m 上发表了 大型共享数据 库数据的关系模型 的论文 l9 1 在此篇论文中首次提出了关系模型 开创了数据 库关系方法和关系数据理论的研究 为关系数据库技术莫定了理论基础 在图 1 1 中 区域2 表示正是关系数据库系统 关系数据库系统具有数据结构化 数 据的共享性高 冗余度低 易扩充 数据独立性高 数据由d b m s 统一管理和 控制等特点 同时还具有数据的安全性保护 数据的完整性检查 并发控制 数 据库恢复 事务处理等功能 关系数据库系统采用关系模型作为数据的组织方式 在用户观点下 关系模式中数据的逻辑结构是一张二维表 它由行和列组成 关 系数据模型是建立在严格的数学概念的基础上的 关系模型的概念单一 关系模 型的存取路径对用户透明 然而 传统关系数据库管理系统 r d b m s 由于采用满足第一范式 1 n f 的关 系模型 在面对各种新的应用领域时存在以下不足 1 不能完整地描述复杂实体 对一个逻辑上作为整体的复杂实体只能采用分解 成多个关系的方法进行描述 从而内部数据库结构和由这种结构所描述的外部实 体之间缺乏一对一的对应关系 在查询时这将导致系统效率的严重降低 2 缺乏稳定的元组标识 r d b m s 中完全由关键字属性值作为元组的唯一标识 当关键字值不稳定时 引用时会产生数据的一致性问题 给维护带来很大困难 3 缺乏数据抽象 在关系模型中只有一个非常简单的结构构造概念一关系 缺 乏诸如聚合 概化与特化等在许多实际应用中非常重要的抽象概念 2 贵州大学硕士学位论文 4 缺乏丰富的类型系统 由此可见 关系数据库虽然提供复杂查询的功能 但是也难以有效地管理人 脸图像 1 2 2 面向对象技术 传统关系型数据库技术在面临新的应用领域时遇到了困难 而这个时候面向 对象程序设计方法在计算机的各个领域 包括程序设计语言 人工智能 软件工 程 信息系统设计以及计算机硬件设计等都产生了深远的影响 给遇到挑战的数 据库技术带来了机会和希望 面向对象概念中的封装 继承 对象标识等重要概 念的引入 对计算机软件各方面产生了重要影响 用对象可以较自然 直观表达 工程领域复杂结构对象和用操作封装增强数据处理能力 这一观点得到了相当程 度的认可 面向对象方法是软件工程方面的重要成就之一 它吸收了传统方法的 数据抽象 信息隐蔽 模块化等思想 强调以对象作为问题分析 系统设计的主 体 使软件系统与客观世界之间有自然的对应关系 面向对象方法按照人们习惯 的思维方式建立模型和构造系统 使软件系统更易于理解和维护 它的继承和多 态等技术为软件复用和扩充创造了条件 面向对象方法学的其基本思想是 对问题空间进行自然分割 以更接近人类 思维的方式建立问题域模型 以便对客观实体进行结构模拟和行为模拟 从而使 设计出的软件尽可能直接地描述现实世界 构造出模块化的 可重用的 维护性 好的软件 面向对象方法中 对象作为描述信息实体的统一概念 把数据和对数 据的操作融为一体 通过方法 消息 继承 封装和实例化等机制构造软件系统 并为软件重用提供强有力的支持 人们发现 把面向对象程序设计方法和数据库 技术相结合能够有效地支持新一代数据库应用 1 2 3 面向对象技术与数据库技术结合的方法 2 0 多年来 国内外学术界 工业界努力探索数据库技术与面向对象技术的 结合 不同的研究组在探索着不同的方法 这些方法大致分为以下三种 6 1 一 以面向对象的程序设计语言为基础 研究持久的程序设计语言 支持o o 模 型 该方法采用一种面向对象的程序设计语言 例如s m a l l t a l k c 等 的类型系 统和编程模式 增加新的功能 使它的数据成为持久的 可共享的 并使它的程 序执行成为原子的 二 以建立新的面向对象数据库系统支持o o 数据模型 这是一种将数据库系统 的特性与面向对象设计语言的特性结合起来 产生面向对象的数据库系统 o b j e c t o r i e n t e dd a t a b a s es y s t e m 在图1 1 中 区域3 表示的是面向对象的数据 库管理系统 2 3 1 关于o o d b 的数据模型 查询方式 查询语言等都没有统一的 定义 o o d b t 博j 的研究的问题包括许多方面 数据模型 查询语言 索引技术 查询技术 查询优化 处理技术 系统结构 版本管理 用户界面等等 三 以关系数据库和s q l 为基础 进行演化的方法 该方法主要是将关系数据库 系统的类型系统开放 允许将新的 用户定义的抽象数据类型 2 9 力 进来 用户定 义新的a d t 时需要实现这个类型 然后这个新的类型就登记到数据库中 就可 以像内部构造的类型一样被使用 在图1 1 中 区域4 表示处理的是复杂数据 需要进行复杂查询 对象关系型数据库管理系统正是适于具有这种特性的应用 3 第一章引言 1 3 对象关系型数据库研究进展 1 3 1 对象关系型数据库的萌发 2 0 世纪9 0 年代以国际著名的数据库专家 美国加州大学伯克利分校教授 m i c h a e ls t o n e b r a k e r 为首的高级d b m s 功能委员会发表了 第三代数据库系统 宣言 的文章 2 2 将面向对象技术与关系数据库技术相结合的新型数据库管理 系统 对象关系数据库管理系统 3 第三代数据库系统应该具备以下三条基 本原则 具体为 原则一 除传统的数据管理服务外 第三代d b m s 将提供丰富的对象结构 和规则的支持 原则二 第三代d b m s 必须保持或继承第二代的主要技术 如保持第二代 的非过程化存取方式和支持数据独立性 原则三 第三代数据库系统应向其他系统开放 o r d b m s 由于支持已被广泛使用的s q l 具有良好的通用性 同时又具备 面向对象特性 能支持复杂对象及其复杂行为 从近几年的发展趋势看 应用领 域要求新的d b m s 不但要有强大的建模能力 而且必须要有高级的查询手段 使得新型对象 关系技术的研究要同时具有理论价值和长远的应用前景 s t o n e b r a k e r 认为一个完整的对象关系数据库系统应该实现图1 1 区域4 中的所有 需求 它将是d b m s 的发展趋势和潮流 因为那些不断增长的新兴数据库应用 正是这种既有复杂数据管理 又有复杂查询功能的应用 1 3 2 对象关系数据库的现状 就目前来看 对象关系数据库系统最能满足数据库应用的需求 它在传统 r d b 的基础上扩展了几乎所有的面向对象思想 如丰富的类型系统 继承性 函 数与封装 唯一标识 规则一触发器等 同时又保持了r d b 的各种优点 如描述 性查询语言 视图机制 客户机胡艮务器体系结构 授权机制 模式演变等 由 于它建立在比较成熟的关系数据库技术基础之上 并且可以利用和借鉴关系数据 系统 面向对象数据库系统和数据库系统工具包这三个方向上的研究成果 因此 在数据库界涌现了诸如p o s t g r e s l l l u s t r a u n i s q l 等原型系统和商用系统 近两 年来 各大r d b m s 厂商也已推出了其产品的对象 关系版本 如i n f o r m i x u n i v e r s a ls e r v e r i b md b 2 t z 4 1 u d b t 引1 以及o r a c l e 8 t 叫1 等 在数据库市场上最近还出现了一种新方法一面向对象的客户包装层 其基本 思想是在关系数据库之上再加一个对象包装层 以支持开发在传统数据库之上运 行的面向对象的客户端应用 p e r s i s t e n c es o t t w a r e o n t o l o g i c h p n e x t 等厂商 都提供了这样的产品 这些产品一般都生成c 或s m a l l t a l k 类 并以之作为底 层数据库中数据的代表 使得程序设计员能以一种更加自然的方式与底层数据库 中的数据打交道 1 3 3 对象关系数据库面临的挑战 由于对象关系数据库比关系数据库 面向对象数据库更加复杂 因此对象关 系数据库设计 1 7 比关系数据库 面向对象数据库设计面临更大的挑战 4 贵州大学硕士学位论文 1 对象关系数据库优化技术 由于对象关系数据库模型不同于关系模型的一些特点 关系优化技术需要做 许多扩充和改进 如支持类属的b 树 支持用户定义的比较操作符 选中率函数 等 支持基于函数的数据存取方法 对高价函数的特殊优化 用户定义的存取方 法等等 2 对象关系数据库服务器功能的完善 对象关系服务器将在现在的关系服务器及以前的对象关系服务器的基础上 进一步发展 s q l 的查询处理将得到进一步加强 并对目前的系统做更多的改 进 但是 作为其中的s q l 语言如何以最好的方式对象化 其工作也有待研究和 加强 如何支持视图 对象修改 各种完整性限制 触发器等等 另外 对象关 系数据库还应从面向对象数据库那里吸收养分和研究成果 如路径索引 对象聚 集 在抽象数据类型方面 一个很重要的问题是对可扩展存取方法的支持 这个 由来已久的问题仍没有找到一个好的解决办法 3 并行处理技术的引入及相关问题 对象关系数据库中的并行处理 在这方面基本上还没做什么工作 原因之一 是对象关系数据库发展的主要动力在于对它的数据模型的表达能力和查询处理 能力的增强 所以 对象关系数据库还不能很好适应并行处理技术 综上所述 对象关系数据库技术还处于研究发展阶段 但由于其强大的优势 必将会成熟 并最终提供可扩展 伸缩 的和健壮的数据库产品 同样 也会提供 对于行类型 r o wt y p e 的面向对象的完全支持 把s q l 在此方面的扩展特性与 s q l 的其它重要特性 包括面向对象的视图 授权 触发器 完整性限制等功能 完整集成 并行处理将得到进一步加强 性能将会有更大的提高 目前 对象关 系数据库技术中的一个问题是厂商产品的差异仍然很大 但s q l 3 将会在消除这 种差异方面起到积极作用 所以 对象关系数据库有着美好的发展前景 1 4 本文的组织 本文的组织结构安排如下 第一章阐述本文的研究目的及意义 通过介绍数据库管理系统的分类 引入 对象关系数据库管理系统的产生 以及对象关系数据库研究现状和面临的挑战 第二章深入研究对象关系数据库的语言 基本数据类型扩充 用户自定义的 函数及操作符 支持复杂对象 数据和函数继承 规则等基本特性 第三章深入研究对象关系数据库的体系结构 类 对象实例 对象关系型记 录的存储 类型管理机制 查询处理过程和优化等关键技术 第四章研究人脸图像的预处理方法 该方法包括人脸图像灰度变换 二值化 归一化 自动定位等 对人脸图像进行预处理后 利用几何特征的方法提取人脸 图像特征值 第五章设计人脸图像对象在对象关系数据库中的存储和查询函数 并提出查 询结果评价和分析方法 最后对所做工作进行总结和展望 5 第二章对象关系数据库的基本特性 第二章对象关系数据库的基本特性 对象关系数据库是面向对象技术与数据库技术的结合走向成熟的产物 它提 供对于复杂数据进行复杂查询的支持 从而能够更好地满足迅速发展的新的商业 应用的需求 本章将从对象关系数据库语言 扩充基类 支持复杂对象 继承机 制 规则系统等五个方面 来深入研究对象关系数据库所必须具有的基本特性n 们 2 1 对象关系数据库语言 从2 0 世纪7 0 年代s q l 语言发明以来 由于它在数据库操作方面的强大功 能 使它成为数据库领域广泛遵循的标准之一 s q l 发展至今的三代标准是 s q l 8 9 s q i 9 2 s q l 9 9 虽ps q l 3 s q l 3 是a n s i x 3 h 2 幂i ii s o i s o i e c j t c l s c 2 1 w g 3 的s q l 标准委员会在s q l 一9 2 标准基础之上 于1 9 9 9 年推出的 第三代s q l 标准 故称为s q l 一9 9 或s q l 3 它涵盖了所有s q l 9 2 标准的特点 并在事务处理 查询等方面都有新的改进 同时新增了许多对于面向对象技术的 支持 如用户自定义类型 封装 继承等 使s q l 3 语言成为支持对象关系数据 库管理系统的结构化查询语言 对于s q l 3 面向对象的特性本文将从命名行类型 用户自定义抽象数据类 型 封装 继承 引用类型和用户自定义函数与过程等方面来介绍 1 命名行类型 n a m e dr o wt y p e d 是由用户定义的具有特殊名称的类型 类似于 c 语言的结构或c 抖的类 它可以包含基本类型 扩充基类或其他复杂对象类型 的成员 行类型由类型构造符r o w 创建 命名格式如下 c r e a t er o wt y p er o wn a m e 每个组成成分的名字和数据类型1 2 抽象数据类型 a d t 是s q l 3 程序设计提供一种新的复杂数据类型 这在一 定程度上类似于面向对象语言中类的概念 通过它用户可以创建指定的带有自身 行为说明和内部结构的用户自定义类型 a d t 定义格式如下 c r e a t et y p e 成员属性列表 函数声明 3 继承性 i n h e r i t a n c e s q l 3 弓i 入的继承不仅限于抽象的数据类型 数据库的基 本组成元素 表也具有可继承性 继承由u n d e r 创建 继承定义格式 c r e a t er o wt y p e 子类名称 每个组成成分的名字和数据类型 u n d e r 父类名称 4 引用类型 r e f 它类似于高级程序设计语言中的指针概念 它指向于带有r e f 属性的类型或者表 5 用户自定义的函数 f u n c t i o n 和过程 p r o c e d u r e 用户自定义的函数和过程后 就可以像系统提供的函数一样使用 而且也支持重载 定义格式如下 c r e a t ef u n c t i o nf u n c t i o n n a m e p a r a m e t e r l p a r a m e t e m r e t u r n s 类型名a s 文件名或s q l 表达式 c r e a t ep r o c e d u r e p r o c e d u r e n a m eb e g i n e n d 6 聚合类型 是由零个或多个特定数据类型的元素构成的复合数值 类似于c 或 p a s c a l 中的数组类型 这种构成聚合类型的特定数据类型称为元素类型 7 大对象 在s q l 3 中 提供了一种称为大对象 1 a r g eo b j e c t l o b 的数据类型 6 贵州人学硕士学位论文 专门用于存储对尺寸比较大的数据 大对象可以分为两类 字符大对象 c h a r a c t e r l o b c l o b 和二进制流大对象 b i n a r yl o b b l o b 2 2 基本数据类型扩充 关系s q l 9 2 定义的基本数据类型只有整数 实数 字符串 时间 数值和 小数 这些基本数据类型上的操作符和函数也都是精确定义的 由于这种传统的 数据类型和操作集合很多 许多实际问题很难用它来解决或者解决的效率不高 所以 用户需要系统能够支持基本数据类型扩充 9 1 所谓基类扩充是指用户在 s q l 中能创建带有相应操作符和函数的新数据类型 2 2 1 创建基本数据类型 在o r d b m s 中 创建一个新的基本数据类型需要定义类型名 类型的存储 信息和将该数据类型与a s c i i 字符相互转换的子程序 例如 创建一个新的基本 数据类型m y t y p et 的例子 c r e a t e t y p em y t y p e t i m e m a l l e n g t h 8 i n p u t m y t y p e l n p u t o u t p u t m y t y p o u t p u t 其中m y t y p e 是新定义类型名 是指存储该类的实例时分配给 t i n t e r n a l l e n g t h 它的8 个字节 两个函数名m y t y p e l n p u t 和m y t y p o u t p u t 分别在该数据类型的实 例同a s c i i 之间来回转换时调用 对象关系系统中 数据类型作为特定的一类信息的存储表示以及对该类信息 适用的操作符和函数来定义 也就是说 数据类型既是信息又是操作 对象关系 的类型系统以其灵活性成为复杂数据库应用建模的极其强大的手段 但是只有把 操作在类型实例上运用起来 该新数据类型才能真正有用 2 2 2 用户定义的函数和操作符 用户定义的类型 用户应该可以加入各种操作 这样定义的数据类型才真正 有用 o r d b m s 中既可以用s q l 也可以用通用的第三代编程语言如c 语言等来 编写函数 然后将函数注册到系统中去 用s q l 编写函数 2 0 的命令形式如下 c r e a t ef u n c t i o n 函数名 类型名1 类型名k r e t u r n s 类型名a s 文件名或s q l 表达式 文件名或s q l 表达式 传统s q l 支持相当多的操作符 从语法上讲 每个操作符都是一个双参数 函数 只不过函数名出现在两个参数之间 在i l l u s t r a 系统中 用以下命令来注 册操作符 c r e a r eo p e r 盯o r b m d i n g 操作符 t o函数名 这一说明允许用户用任何符号作为操作符 然后把它赋给一个指定的函数 并且符号的名字不一定要和函数说明中用的相同 从定义看以看出 对象关系数 7 第二章对象关系数据库的基本特性 据库中的用户自定义函数则可以出现在s q l 环境中 完全对象关系化的基类扩充系统还应具有动态链接 客户方或服务器方启动 函数 安全性 回调 用户自定义访问方法 任意长度类型 2 3 复杂对象 在s q l 中支持复杂对象 2 5 是对象关系d b m s 的第二个基本需求 复杂对 象是由多种基本的或用户定义的类型构成的对象 最常用的复杂对象有三类 组 合 记录 集合和引用 指针 它们都是用类型构造符创建的 类型构造符是为 支持复杂对象而扩充的s q l 语法 2 3 1 组合 组合也称为行类型 3 4 它类似于c 语言的结构或c 的类 它可以包含基 本类型 扩充基类或其他复杂对象类型的成员 在i u s 中 组合由类型构造符 r o w 创建 创建一个组合类型 应指明该类型的名字 以及每个组成成分的名 字和数据类型 组合类型的成分也可以是组合类型 形式化地说 如果 t 1 t 2 t n 是任意数据类型 那么组合是这样一种数据类型 它的一个实例是 由t 1 t 2 t n 的各一个实例所组成的 可以创建一个表 用以存放一个组合类型的实例 例如 c r e a t er o wt y p ee m p l o y e et v a r c h a r 3 0 d a t e i n t v a r c h a r 30 v a r c h a r 3 0 c h a r 2 i n t c r e a t et a b l ee m p l o y e eo f t y p ee m p l o y e e t 第一个语句构造了一个组合类型 锄p l o y e e j 接着第二个语句构造了表 e m p l o y e e 用来存储这个类型的实例 可以把表想象为放置组合类型实例的容器 2 3 2 集合 集合是由一组相同类型的元素组成的复杂对象 集合的元素类型可以是基本 类型 扩充的基本类型或其他复杂对象类型 形式化地说 如果t 是任意类型 那么s e t t 也必然是一种数据类型 不仅有基本数据类型的值的集合 也有组 合数据类型的值的集合 在i u s 中可以创建三种集合 集合 普通的结合类型 元素不能重复 类型构造符s e t 创建 多值集合 元素可以重复的集合 类型构造符m u l t i s e t 创建 列表 有顺序的集合 类型构造符l i s t 创建 2 3 3 弓i 用 引用用来指示表中的一行或一个复杂对象类型的实例 引用类型矧用类型构 8 淼怨盏删 贵州大学硕士学位论文 造符r e f 创建 和集合类型一样 不必给指针类型定义专门的名字 形式化地 说 如果t 是一种类型 那么r e f t 必然也是一种数据类型 并且可以用作任 何表的任何列的类型 因此 可以存在以下的数据类型 对组合的引用 对集合 的引用和对基本数据类型的引用 引用利用了这个事实 i l l u s t r a 数据库的每一行 都有个唯一标识 叫做对象标识 o i d 一个o i d 是个6 4 位的唯一标识 一旦 赋予 永不改变 实际上o i d 由两部分组成 2 4 位的表标识和4 0 位的表中行标 识 例如 可以把公司中某一部门表的m a n a g e r 列改成引用类型 m a n a g e r r e f e m p l o y e et 这样 即使有重名的职员 也不会搞错 而且由于指针是内 部标识 进行参照时要比原来的外码快得多 为支持引用 对s q l 的扩充使得 有两个特殊函数d e r e f 和r e f d e r e f 函数 参数是个引用 返回该引用实 际指向的组合 r e f 函数执行与d e r e f 函数相反的操作 它返回对引用实例的 o i d 在复杂对象方面 作为一个完全的对象关系系统所必须支持的以下特征 必 须支持丰富的复杂类型 这样才能真实的表达问题 对所有的复杂类型都能定义 函数 不能对复杂类型的大小有限制 对集合成员数目或空间大小的限制将带来 使用的困难 s q l 应支持复杂类型 对组合 应可以用级联点注来引用 返回 集合的函数 包括用s q l 写的函数 应该可以出现在s q l 查询中表可以出现的 任何位置 最好还能支持其他的类型构造器 例如 列表 堆栈 队列 数组和 可插入数组等等 因此 本文主要采用数组类型构造器 2 4 继承 支持子类对父类的继承是面向对象方法的重要特性之一 在实际问题模型 中 许多对象之间有着继承的关系 提供继承机制 可以更好地模拟实际问题 也有利于软件的高内聚 低耦合的模块化 软件的一致性和可重用性 2 4 1 数据继承 对象关系d b m s 只支持组合类型上定义的数据库表的继承 要使用继承机 制 8 在定义数据库表之前 必须先定义元组类型以及它们之间的继承层次关系 一个子类对象 子类数据或子表 可以从父类对象中继承数据属性和行为 其中行 为一般包括函数 操作符 约束条件定义 参照完整性 存取方法 存储策略以 及触发器等等 在i u s 中 数据库权限增加了u n d e r 权限 使用该权限就可以 定义继承关系 下面通过一个例子 介绍元组类型以及数据库表的定义 假设某公司的雇员 中有工程师 销售人员以及其他人员 可以定义雇员元组类型作为父类型 而定 义工程师和销售人员元组类型作为它的子类型 如图2 一l 所示 图2 1 单继承 用下面的语句定义公司职工的元组类型 9 第二章对象关系数据库的基本特性 c r e a t er o wt y p ec r o p t n 锄e b a s e s a l a r y m a n a g e r v a r c h a r 3 0 n u m e r i c 12 2 r e f e m p t 工程师和销售人员元组类型作为雇员元组类型的子类定义如下 c r e a t er o wt y p ee n g i n e e r t s k i l l s v a r c h a r 2 0 b o n u s n u m e r i c 12 2 u n d e re m p t c r e a t er o wt y p es a l e s t t e r r i t o r yv a r c h a r 3 0 c o m m i s s i o n n u m e r i c 12 2 a n n u a l s a l e sn u m e r i c 12 2 u n d e re m p t 这样e n g i n e e rt 和s a l e st 就继承了e m pt 的数据属性 e n g i n e e r 有5 个属 t 性 s a l e st 有6 个属性 还可以定义工程师的子类型高级工程师和助理工程师类 型等 构成继承的多层次结构 多重继承是指一个子类型可以从多个父类型继承 例如 销售工程师类型既 是工程师的子类型 又是销售人员的子类型 如图2 2 所示 对于多重继承来说 如果它的两个父类型有重名属性 则它继承的哪个属性就存在二义性 解决这种 二义性有两种方法 一是用户在定义多重继承结构时 父类们不允许有重名属性 否则给出错误 二是有d b a 定义处理二义性的规则 继承哪个属性由规则决定 但用户很难理解这些规则 一般来说 前者比后者简单得多 图2 2 多继承 当要使用继承机制时 应该注意 表中继承关系的定义应该和它们相对应的 元组类型的继承关系相吻合 对象关系d b m s 通过使用保留字o n l y 来区分操 作范围是一个表还是连带它的所有后代表 o r d b m s 实现表继承的方法一般来讲分为两种 最自然的实现方法是每个 表存储各自所有的记录属性 包括继承的属性 而另外一种方法是将子表中继承 的属性字段数据和父表存放在一起 而子表中仅存放其他的属性字段数据 用这 种方法应注意必须有一种机制将子表中的记录与其在父表中相应的记录连接起 来 以便使子表中记录的所有字段都可以被访问 继承的不同实现方法有不同的 性能特点 因此应该选择适合自己特点的继承实现方法 2 4 2 函数继承 函数继承是行为继承中的重要的一种 定义在父类的函数可以被它的子类继 承 一个函数定义在哪个类上是由它的参数的数据类型决定的 例如 分别在 l o 贵州大学硕士学位论文 e m p t 和e n g i n e e r t 类上定义s a l a r y 函数 如图2 3 所示 c r e a t e f u n c t i o ns a l a r y e m pe m p t r e t u r n i n g n u m e r i c r e t u r n e m p b a s e s a l a r y e n d f u n c t i o n c r e a t e f u n c t i o ns a l a r y e m pe n g i n e e r t r e t u r n i n gn u m e r i c r e t u r n e m p b a s e s a l a r y e m p b o n u s e n df u n c t i o n 图2 3 函数继承 定义的第一个s a l a r y 函数的参数属于e m pt 类型 所以是定义在e m p 类上 t 的 第二个s a l a r y 函数是定义在e n g i n e 眵t 类上的 s a l e st 类继承了其父类e m pt 上定义的s a l a r y 函数 即对象关系d b m s 计算某个函数时 如果没有具有正确 的名字和实参的函数 则系统沿着类型层次寻找一个定义了这个函数和合适的实 参的超类 如果找到就使用这个函数 e n g i n e e rt 类继承了其父类e m pt 上定义 的s a l a r y 函数 而且还定义了自己的s a l a r y 函数 这时在对e n g i n e e rt 类中引用 s a l a r y 函数时 应该使用哪个版本的s a l a r y 函数 即产生函数的多重继承也可以 造成二义性 解决方法和数据继承类似 对象关系d b m s 支持一个对象从它的祖先对象继承数据属性和行为 继承 可以应用在数据类型和数据表上 多重继承可能产生二义性 应该避免它的产生 表继承的层次结构决定了操作的范围 可以指定范围是一张还是连及它的所有后 继代表 2 5 规则 对象关系d b m s 支持的规则系统要比r d b m s 的规则系统要强大而且灵活 得多 一个完善的对象关系d b m s 应该提供功能强大 通用性强的规则系统 这将大大有利于对数据完整性的维护 规则 5 定义的一般格式如下 o ne v e n t 事件 d o a c t i o n 动作 它的语 义就是要求d b m s 监测所描述的事件的发生 然后执行相应的动作 规则系统 能提供让用户指定在事件发生前或发生后执行动作的功能 一般在缺省情况下是 事件发生后执行 对象关系d b m s 支持的规则系统主要分为更新 更新规则 查 询 更新规则 更新一查询规则 查询 查询规则四种 2 5 1 更新 更新规则 更新 更新规则的事件是一个更新性操作 而动作是另一个更新性操作 考 虑下面的规则 它监测对j o h n 工资的更新 然后产生对m a r k 的改变 c r e a t er u l eu p d a t e u p d a t ea s o nu p d a t et oe m p s a l a r yw h e r ec u r r e n t n a m e j o h n d o u p d a t ee m p 第二章对象关系数据库的基本特性 s e ts a l a r y n e w s a l a r y w h e r en a m e m a r k 其中保留字c u r r e n t 指向事件发生前要修改的记录 保留字n e w 指向事件发 生后已经被修改的记录 所以 当更新j o h n 的工资时 m a r k 的工资也将被修改 为和j o h n 的新工资相同 一般来讲 在d b m s 中更新 更新规则也被称作触发器 它对保持数据库的参照完整性有很大作用 当一个破坏数据完整性的事件发生 时 相应的更正性动作可以在更新一更新规则的动作部分被执行 2 5 2 查询一更新规则 查询 更新规则的事件是一个查询 所执行的动作是一个更新 下面的规则 监测对m a r k 的基本工资进行查询的事件 如果这种事件发生 就执行一个插入 a u d i t 表的动作 指明谁在什么时间提出查询要求 c r e a t er u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旗城学校九年级数学试卷
- 光伏制造企业员工心理辅导与支持体系考核试卷
- 影视制作侵权责任法律问题考核试卷
- 2025年学历类自考专业(护理)生物化学(三)-护理学基础参考题库含答案解析
- 2025年学历类自考专业(护理)护理教育导论-护理学基础参考题库含答案解析
- 农业智能设备标准化与认证考核试卷
- 村委文员面试题目及答案
- 资源循环经济与职业教育考核试卷
- 2025年特岗教师招聘笔试初中音乐考试高频考点梳理
- 投标技术方案创新应用考核试卷
- 《交通事故车辆及财物损失价格鉴证评估技术规范》
- 我和我的祖国混声四部合唱简谱
- LYT 2085-2013 森林火灾损失评估技术规范
- GB/T 26527-2024有机硅消泡剂
- 信息安全技术 电信领域数据安全指南
- 新人教版高中物理必修3-1全册导学案
- 青岛版科学 二年级《天气与动植物》
- 儿科系列常见病中药临床试验设计与评价技术指南-变应性鼻炎
- 《养老护理员》-课件:协助老年人穿脱简易矫形器
- 影视艺术欣赏课程(教案)
- 动物的行为发育与行为遗传
评论
0/150
提交评论