




已阅读5页,还剩68页未读, 继续免费阅读
(论文)XML+SCHEMA模式转化成关系数据库模式的研究.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
把X M L S c h e m a 模式转化成关系数据库模式的研究 摘要 数据以X M L 文档存储可以更加广泛的应用于许多领域。 这是由于X M L 有大量 的相关技术对它支持, 其中就包括X M L S c h e m a 协议。X M L S c h e m a 可以通过指定 元素内容和属性值的数据类型来限制X M L 文档。 另一方面, 如果数据想要有某种 保护或使用事务处理功能时, 存入到某个关系数据库是十分理想的。由于 X M L S c h e m a 可以用来检查X M L 文档的有效性,所以如果可以把某个X M L S c h e m a 模式 转换到关系数据库的模式,那么符合这X M L S c h e m a 限定的X M L 文档就很容易地 加入到被转换成的关系数据库模式中去了。 这有助于数据的灵活存储。 本文着重 研究了如何将一个X M L S c h e m a 转换成关系数据库模式。 本文讨论的方式是自 下而上的,就是先讨论 X M L S c h e m a中简单的部分,然 后逐步讨论较为复杂的部分。 每个部分转换都给出了必要的步骤, 可以根据这些 步骤自 动实现这部分的转换。 在转化过程中,目 的是尽量保证X M L S c h e m a 信息 的完整性,对确实不能保证的, 采用某种变通的方式来实现。 先简单分析了X M L S c h e m a中主要组件的转换.研究了内置基础类型如何转 换到关系数据库模型中。 讨论了简单类型的元素是如何转换的: 分别对原子类型, 列表类型和联合类型的元素采用了 不同 地转换方法。 在此基础上进一步讨论了对 带有属性的元素的转换方法,并研究了复杂类型元素的内容模型的转换方法。 接下来研究了二级组件的转换。 着重讨论了模型组元素的转换,依次分析了 s e q u e n c e 模型组、 c h o i c e 模型组和a l l 模型组在 转换时采用的方法。 对带有一 致性约束的元素进行了比较详细的分析和讨论。其中着重讨论了对u n i q u e 限定 在转换时的分析,并根据不同情况给出不同的解决步骤。 最后重点研究了X M L S c h e m a数据类型对转换的影响。给出了每个刻面在转 换 时需 要考 虑的 步 骤。 提出了 两种 解决 模式“ R u l e + N e w T y p e ” 模式和“ C H E C K “ 模式。 此外还简单地讨论了命名规则和转换后关系模式的优化。 关键词:X ML , S G ML , D T D , X ML . S c h e m a ,关系数据库模式 R e s e a r c h o n T r a n s f o r mi n g f r o m X ML S c h e ma t o R e l a t i o n a l D a t a b a s e Mo d e l ABS T R AC T T h e D a t a s t o r e s b y t h e X M L d o c u m e n t s c a n b e v e r y w i d e l y a p p l i e d i n m a y f i e l d s . T h i s i s b e c a u s e t h a t t h e r e a r e m a n y r e l a t e d t e c h n o l o g i e s , i n c l u d i n g X M L S c h e m a , t o s u p p o r t X M L . X M L S c h e m a m a y s e t t h e e l e m e n t c o n t e n t a n d t h e a t t r i b u t e v a l u e d a t a t y p e t o l i m i t t h e X M L d o c u m e n t s . O n t h e o t h e r h a n d , i t i s v e r y i d e a l t o s t o r e t h e d a t a i n t h e r e l a t i o n a l d a t a b a s e i f d a t a n e e d s o m e k i n d o f p r e v e n t i n g o r u s e t r a n s a c t i o n p r o c e s s e s f u n c t i o n . X M L S c h e m a c a n c h e c k t h e v a l i d i t y o f t h e X M L d o c u m e n t , t h e r e f o r e i f i t i s p o s s i b l e t o t r a n s f o r m f r o m o n e X M L S c h e m a t o o n e r e l a t i o n a l d a t a b a s e m o d e l , t h e n t h e X M L d o c u m e n t v a l i d i t y b y X M L S c h e m a c a n b e v e r y e a s i l y a d d e d t o t h e r e l a t i o n a l d a t a b a s e m o d e l t h a t i s t r a n s f o r m e d . I t i s h e l p f u l t o s t o r e d a t a f l e x i b l y . T h i s p a p e r e m p h a s i z e s t o r e s e a r c h h o w t o t r a n s f o r m f r o m X M L S c h e m a t o r e l a t i o n a l d a t a b a s e m o d e l . T h i s a r t i c l e d i s c u s s e s t h e m o d e l i s f r o m b o t t o m t o t o p , t h a t i s t o s a y , d i s c u s s e s t h e s i m p l y p a r t o f t h e X M L S c h e m a f i r s t a n d t h e n d i s c u s s e s t h e m o r e c o m p l e x p a r t . E a c h p a r t i a l t r a n s f o r m a t i o n h a s a l l p r o d u c e d t h e e s s e n t i a l p r o c e s s , m a y a c t a c c o r d i n g t o t h e s e p r o c e s s e s a u t o m a t e d t o i m p l e m e n t t h i s p a r t o f t r a n s f o r m a t i o n . I n t h e t r a n s f o r m i n g p r o c e s s , t h e t a r g e t i s g u a r a n t e e d a s f a r a s p o s s i b l e t h e i n t e g r i t y o f X M L S c h e m a i n f o r m a t i o n , t o t r u l y c a n n o t g u a r a n t e e , s e l e c t s t h e m e t h o d w h i c h s o m e k i n d c a n b e i m p l e m e n t e d . F i r s t l y , i t s i m p l y a n a l y z e s t h e t r a n s f o r m a t i o n o f t h e p r i m a r y c o m p o n e n t s o f t h e X M L S c h e m a a n d r e s e a r c h e s h o w t o t r a n s f o r m f r o m t h e b u i l d - i n d a t a t y e t o r e l a t i o n a l d a t a b a s e . I t d i s c u s s e s h o w t o t r a n s f o r m t h e s i m p l e t y p e e l e m e n t :s e p a r a t e l y t o a t o m i c t y p e , l i s t t y p e a n d u n i o n t y p e e l e m e n t , e a c h o f t h e m u s e s t h e d i f f e r e n t l y t r a n s f o r m e d m e t h o d . I n t h i s f o u n d a t i o n , i t f u r t h e r d i s c u s s e s t h e t r a n s f o r m a t i o n t e c h n o l o g y o f a t t r i b u t e e l e m e n t a n d r e s e a r c h e s t h e t r a n s f o r m a t i o n m e t h o d o f c o m p l e x t y p e e l e m e n t c o n t e n t . S e c o n d l y , i t h a s s t u d i e d t h e t r a n s f o r m a t i o n o f s e c o n d a r y c o m p o n e n t s . I t e m p h a s i z e s t o d i s c u s s t h e m o d e l g r o u p d e f i n i t i o n s t r a n s f o r m a t i o n a n d a n a l y z e s t h e m e t h o d o f t h e s e q u e n c e m o d e l g r o u p , t h e c h o i c e m o d e l g r o u p a n d t h e a l l m o d e l g r o u p i n t u r n . I t i s v e r y q u i t e d e t a i l e d t o a n a l y z e a n d d i s c u s s e s t h e e l e m e n t t h a t h a v e t h e i d e n t i t y - c o n s t r a i n t d e f i n i t i o n s . A m o n g t h e m , i t e m p h a s i z e s t o d i s c u s s . t h e a n a l y s i s o f u n i q u e i d e n t i t y - c o n s t r a i n t d e f i n i t i o n s i n t h e p r o c e s s o f t r a n s f o r m a t i o n a n d g e t t h e d i f f e r e n t s o l u t i o n t o t h e d i f f e r e n t s i t u a t i o n . F i n a l l y , i t g i v e s e m p h a s i s t o r e s e a r c h t h e i n f l u e n c e o f t h e X M L S c h e m a d a t a t y p e . I t p r o d u c e s e a c h f a c e t t h e p r o c e s s w h i c h i s n e e d s t o c o n s i d e r i n t h e t r a n s f o r m a t i o n a n d p r o p o s e s t w o k i n d o f s o l u t i o n s m o d e l s : “ R u l e +N e w T y p e “ a n d “ C H E C K “.I n a d d i t i o n , i t a l s o s i m p l y d i s c u s s e s t h e n a m i n g r u l e a n d t h e o p t i m i z a t i o n o f t h e r e l a t i o n a l m o d e l a f t e r t h e t r a n s f o r m a t i o n . K E Y W O R D S : X M L , S G M L , D T D , X M L S c h e m a , R e l a t i o n a l D a t a b a s e M o d e l 第一章 绪论 X M L 作为一种标记语言,已 经在许多 领域中 得到广大地使用。 在数据交换领 域上,在消息处理能力上,在集成数据和文档的能力上,在灵活表现的内容上, X M L 都有得天独厚的优势。X M L 消息处理为应用程序通信提供了一种灵活的方法 0 1并且 它是实 现W e b 服务的S O A P 协议(1 的基础. X M L 的强大还得益于大量的相 关技术对它的 支持【:, , 其中 就包括X M L S c h e m a 协议。 最初, W 3 C ( W o r l d W i d e W e b C o n s o r t i u m ) 使用 D T D 来控制X M L 文档的结构,但由于D T D 在灵活性和可扩展 J性上不是很理想,所以W 3 C又推出了X M L S c h e m a规范来控制其结构。由于 X M L S c h e m a本身就是使用 X M L语言来书写的,所以它有良 好的扩展性。并月 卜 X M L S c h e m a规范中给出了许多内置类型,还允许使用者根据内置类型创建自己使用 的类型。 所以在验证X M L 文档有效性时, 一般都使用X M L S c h e m a 规范. X M L S c h e m a 可以通过指定元素内容和属性值的数据类型来限制X M L 文档, 这同关系数据库限 制字段中存储数据的类型是十分相似的。可以看到,在X M L S c h e m a 规范中有很 多特性可以很容易地转换到关系数据库中去。 1 . 1 X ML介绍 1 . 1 . 1 X ML的历史 在 1 9 9 6年,互联网相关技术的主要设计组织者W 3 C开创了一种可扩展的标 记语言, 它结合了S G M L 的灵活性并像H T M L 一样可以被广泛接受。 这种语言就是 X M L 语言。 在1 9 9 8 年2 月, X M L 1 . 0 的第一 版版产生了 , 它是一个推荐版本, 是一个非 正式的“ 标准” 。 随后, W 3 C 又对它进行修改 和更新,到2 0 0 0 年1 0 月, X M L 1 . 0 的第二版出台了。到了2 0 0 4 年2 月4日,W 3 C 推出了X M L 1 . 1 版。 1 . 1 . 2 什么是 X ML X M L 是一种可扩展标记语言 ( E x t e n s i b l e M a r k u p L a n g u a g e ) ,它是基于一种 成熟的标记语言一一标准通用标记语言 ( S t a n d a r d G e n e r a l i z e d M a r k u p L a n g u a g e , S G M L ) ,并且X M L 是S G M L 的子集。 X M L 把数据表示成为一个文本字符串, 在字符串中包括了用于描述数据的“ 标 记” ( t a g ) ,这些标记散布在整个文档中。每个标记采用尖括号 “ ”包 含字符的方式。 使用标记来区别字符数据, 即非标记 文本, 例如“ ” 就是 一个标记。 标记和字符数据组成元素 ( e l e m e n t ) 。元素以一个开始标记开始,以一个结 束标记结束。在开始标记 和结束标记之间就是数据。 “ H e l l o “ 就 是一个元素, 其中“ ” 就是一个开始标记, “ ” 就是一个结束标记, “ H e 1 1 o ”字符串就是这个元素表示的内容数据。每个开始标记和结束标记之间 的一个差别就是结束标记比开始标记多一个“ / ” 符号, 并且它一定在“ A l i c e S m i t h 1 2 3 M a p l e S t r e e t M i l l V a l l e y C A 9 0 9 5 2 R o b e r t S m i t h 8 O a k A v e n u e O l d T o w n P A 9 5 8 1 9 H u r r y , m y l a w n i s g o i n g w i l d ! L a w n m o w e r 1 1 4 8 . 9 5 C o n f i r m t h i s i s e l e c t r i c B a b y M o n i t o r 1 3 9 . 9 8 1 9 9 9 - 0 5 - 2 1 例子 1 . 1 . 2 . 1 在例子 1 . 1 . 2 . 1 中,可以看到根元素就是p u r c h a s e O r d e r , 它拥有四个子元 素: s h i p T o , b i l l T o , c o m m e n t 和i t e m s 。 其中 元素s h i p T o , b i 1 1 T o 和i t e m s 又 各自包含一些子元素口 在这个例子中,p u r c h a s e O r d e r元素在开始标记中包含了这样一个字符串 “ o r d e r D a t e=“ 1 9 9 9 - 1 0 - 2 0 “ “ ,这就是前面提到的属性。属性是附加在开始标 记中的一个名称一值对。 名称和值之间用等号分开。 值在这里不但可以用双引号 括起来,而且也可以用单引号。 每个元素可以包含多个属性, 每个属性之间用空 格分开。 1 . 2 X M L S c h e ma 简单介绍 X M L是一个缺乏良 好类型系统的语言。在 X M L的文档中找到的信息只能被当 做文本来对待, 这就要求开发人员事先知道“ 真正的类型“ ,以便在他们的代码中 采取必要的强制措施。 最初, 在传统 S G M L派系中. 文档规则的表示曾经是 D T D . 不过,有一些 D T D无法实现的相当常见的约束;D I D的主要限制在于它们缺乏 数据类型的表达。所以W 3 C又提出了 X M L S c h e m a 规范,为X M L 处理环境提供了 一种类型系统。 它可以描述打算使用的类型。 它可以在把X M L 文档中的信息传递 给应用之前,先检查X M L 文档的有效性。 X M L S c h e m a就是由一组 s c h e m a组件组成。在X M L S c h e m a中一共有 1 3 种组 件。分为3 个类; 1 .主要组件 ( P r i m a r y C o m p o n e n t s ) :简单类型和复杂类型的定义、元素和属性 的声明。 它包括:简单类型定义 ( S i m p l e t y p e d e f i n i t i o n s ) 复 杂类型定 义( C o m p l e x t y p e d e f i n i t i o n s ) , 属性声明( A t t r i b u t e d e c l a r a t i o n s ) ,元 素声明 ( E l e m e n t d e c l a r a t i o n s ) ; 2 .二级组件 ( S e c o n d a r y C o m p o n e n t s )包括:属性组定义 ( A t t r i b u t e g r o u p d e f i n i t i o n s ) 、一致性约束定义 ( I d e n t i t y - c o n s t r a i n t d e f i n i t i o n s ) 、模 型组定义 ( M o d e l g r o u p d e f i n i t i o n s )和表示法声明 ( N o t a t i o n d e c l a r a t i o n s ) ; 3 ,最后是 辅助组件 ( H e l p e r C o m p o n e n t s ) :它们不能 被命名或独立访问 。 它包 括: 注释 ( A n n o t a t i o n s ),模型组 ( M o d e l g r o u p s ) ,粒子 ( P a r t i c l e s ) 可以 分割的 元素组,通配符 ( W i l d c a r d s ) ,属性使用 ( A t t r i b u t e U s e s ) . X M L S c h e m a 使用X M L 语法,当 看到X M L S c h e m a 时, 感觉它和D T D 的 区别最 明显的地方就是X M L S c h e m a 是真正在X M L 中写的I5 , 。由于D T D的语法是用巴斯 科范式 ( E x t e n d e d B a c k u s N a u r F o r m , E B N F ) 定义的, 所以 一般不容易理 解。 而X M L S c h e m a 是使用X M L 来描述一个文档,使用者就用不着再去学习新的语法 和相关规则了。 X M L S c h e m a目前的版本为1 . 0 “ 0 1 . 3 关系数据库介绍 1 9 7 0 年,E d g a r C o d d 在I B M 的S a n J o s e 研究实 验室推出了一种新的 称之为 关系数据模型的数据表达框架【 o C o d d 提出了1 2 个关系数据库的规则,用 来验 证一个数据库是否是关系的s ) 。 在2 0 世纪8 0 年代末期推出的关系数据库查 询语 言S Q L 得到了标准化。从最初的S Q L - 8 6 到现在最新的S Q L - 2 0 0 3 版, S Q L 标准在 不断的得到更新和修改。 关系数据库是建立在关系模型上的。 在关系模型中表示数据的主要结构是关 系。关系模型用表的集合来表示数据和数据间的联系s ) 。 而数据库中 表这个概念 和数学上的关系这个概念是密切相关的, 这也是关系数据库名称的由来。 关系数 据库就是表的集合, 每个表有唯一的名字。 在关系模型中可以指定多种完整性约 束, 包括:主键约束, 外键约束和一般约束。 使用S Q L 语句我们可以方便地在关 系中查询各种数据。 一般的商用数据库,如D B 2 , O r a c l e 系列, S Q L S e r v e r 系列等等, 都是一个 关系数据库, 它们都支持S Q L 标准。 并且它们都提供了事务管理,安全管理, 数 据备份和恢复等等重要的功能,对数据有一个完整的保护功能。 1 .4 把X M L S c h e m a 模式转化成关系数据库模式的意义 目前, 绝大多数的信息是存储在关系数据库中的, 从数据库的内容转换到X M L 文档, 这在很多流行的商业数据库产品中己 经实现, 如O r a c l e . , M S S Q L S e r v e r (9 , D B 2 . 等等数据库(I. ) , 都可以 直接使用S Q L 语言 输出X M L 格式的文档。 其中 有 些数 据库甚至把内 置的数据类型直接映射到X M L S c h e m a 上,如可以使用X M L S c h e m a 将D B 2 数据完整性约束映 射至X M L 0 0 。 当 数据成为X M L 文档后就可以 利用X M L 的 各种优点。 但到目 前为止, 没有那种解析X M I 文档的解析器, 可以提供数据安全 性检查, 事务处理等等功能, 这却是绝大多数流行的关系数据库已经能够提供的 功能。 所以目前来说, 如果数据想要有某种保护或使用事务处理功能时, 存入到 某个关系数据库是十分理想的。 那么如何把X M L 文档的内容转到数据库中就是需 要进行研究的, 由于X M L 结构比关系结构具有更多的固有的灵活性, 所以如何把 一个X M L 文档转换到数据库中是有一定难度的。 X M L S c h e m a 最重要最确实的方面是,它可以 在应用软件之间或在应用软 件内 部之间指定一个契约16 1 。所以如果可以 把某个 X M L S c h e m a 模式转换到关系数据 库的模式, 那么符合这X M L S c h e m a 限定的X M L 文档就自 然而然地可以加入到被 转换成的任何关系数据库模式中去了。目 前有很多工具可以 解析X M L S c h e m a 文 档 12 7 , 所以 可以 先利用这些工具检查 X M L S c h e m a文档的有效性。当一个 X M L S c h e m a 模式已经通过某种X M L S c h e m a 解析器检查后,如果采用某种算法能自 动 的把这个有效的 X M L S c h a m e模式转化成关系数据库模式,那么符合这个 X M L S c h e m a 模式的X M L 文档将很容易地存储到数据库中了。 由 于本文只是对这种算法的 某些方面研究, 并没有给出 一个彻底而又 完整的 算法解决方案,例如本文没有讨论转换中如何对待 X M L S c h e m a中的命名空间, 多文档中的模式, 抽象元素和类型等等比较高级的内容。 只是着重讨论了一些在 转换中必须要考虑的问题, 如基础类型元素的转换, 一般简单类型和复杂类型元 素的转换等等内容。 本文讨论的方式是自 下而上的, 就是先讨论X M L S c h e m a 中 简单的部分, 然后逐步讨论较为复杂的部分。 每种部分的转换都基本给出了必要 的步骤, 可以根据这些步骤自 动实现这部分的转换。 在转化过程中,目 的是尽量 保证X M L S c h e m a 信息的完整性,对确实不能保证的,采用某种变通的方式来实 现。 第二章 技术背景 2 . 1 X ML与关系数据库的比较 正如前面提到的,X M L文档同关系型数据库相比它们各有优势。而且目 前大 多商用的关系型D B M S 都提供了X M L 接口。在能够对健壮数据库技术的访问的同 时,又可以进行 X M L 传输。 关系数据库中的数据表示是受限于关系。 而关系同X M L 元素之间是存在着某 些不匹配, 原因是X M L 元素比关系具有更多的灵活性。 一种关系是由固定数量的 列组成, 并且每个列是一个数据项组成, 但是一个X M L 元素可以包含任意数量的 子元素或者属性, 并且每个子元素可能包含不止一个数据项。 可以 看到关系可以 很容易的被X M L 元素表示出来, 但是把任意一个X M L 文档中的数据导入到关系型 数据库中将是很难的。 这也许要修改关系型模式, 以便在关系数据库中存储比平 常还要多的数据结构来表示X M L 文档中的元素。 例如, 为了获取具有相同元素类 型的子元素的多次出现位置,可能有必要创建一个独立的表来获取这个数据集, 并且通过外键的方式把它链接到原有的关系上。 这可能增加关系型数据库的复杂 度。 使用关系数据库的一个优点是复杂的查询可以用 S Q L来写,S Q L是关系型 D B M S的标准查询语言,对它的研究和优化己经十分成熟了。从 S Q L语句得到的 结果集可以 被格式化为X M L 文档, 为一 些基础数据提供多个视图。 X M L 最擅长表 示树型数据,S Q L 最擅长表示数组型数据。 特别的,当多个应用程序在某个关系 数据库上需要各自不同的视图时是十分有用的。 使用关系型数据库的其它优点还包括它容易与其它关系型数据库的互操作 能力、 精确的事务管理和恢复机制以及大量工具对它的支持。 在某个关系数据库 必须同其它关系型数据库进行互操作应用程序访问时, 使用到关系数据库的X M L 接口 就比 较合适 lal 。 X M L的优点就是它的结构比关系型数据库中使用的关系更具有表现力。一种 关系是一个无序元组集合, 集合中每个元组有一个固定的属性。 一个X M L 元素的 结构要比关系的结构更有表现力, 因为它可以包含其它元素, 并且允许它们变化 顺序和拥有属性, 而且可以包含具有相同元素类型的多个元素, 这使得它更容易 表示复杂的数据【 川 。 总的来说X M L 和关系数据库各有擅长, 所以 扬长避短是十分重要的。 数据从 一种形式转换到另一种形式, 完全是看使用者的要求。 所以灵活的把数据一种模 式转到另一种模式是十分重要的。 关系 型数据库中的内容转换到X M L 是十分方便的, 但X M L 到关系型数据库的 转换却是非常难的。 D T D 和X M I. S c h e m a 是目 前十分流行用来验证X M L 文档有效 性的规范, 而且也有许多工具已经实现了这两个规范。 如果有一个关系数据库模 式同某个 D T D 模式或者 X M L S c h e m a模式是等价的, 那么符合这个 D T D或 X M L S c h e m a 的X M L 文档就能够比较容易的转到那个关系数据库的模式中。 所以把X M L 文档转换到 关系数 据库就可以 分 两步走, 第一 步 先把一 个D T D 或X M L S c h e m a 转 换到关系数据库模式,第二步再把 X M L数据转入关系数据库中。但为什么选择 X M L S c h e m a而不是D T D作为第一步转换的 选择呢,下面一节是来阐述这个问 题 的。 2 . 2 X M L S c h e m a 与D T D模式的比较 最初 W 3 C提出X M L S c h e m a的目的是为了提供一种类似于 D T D的控制文档结 构的机制, 并且允许基于X M L 语法指定的标记结构和限制。 它要比D T D 提供更丰 富的数据类型集, 允许用户生成他们自己的 数据类型,允许对元素、 属性、 数据 类型定义的继承。虽然X M L S c h e m a 是一个十分有用的语言,但是它也是一个复 杂 的 语 言 u se 下面就从几个方面谈一谈X M L S c h e 。 比D T D 优势的地方: 1 .丰富的数据类型支持 这是X M L S c h e m a 最大的优点之一。 D T D 中几乎没有数据类型的定义。而 在 X M L S c h e m a中,却能够知道一个元素或者属性的内 容是字符串、整数、 布尔数、浮点数或是其它任何一种类型,这是一个很大的优势。从属性中读 取正确的数据类型,并且在应用处理之前把字符串转换成合适的数据类型。 利用 X M L S c h e m a的功能在模式中指定元素内容和属性值的数据类型,应用 程序可以使用有效性验证组件X M L S c h e m a 构造处理器, 这个组件不仅可 以保证文档是有效的,而且保证了其中的信息和预期的数据类型相匹配。符 合 X M L S c h e m a构造处理器可以确保我们输入到应用程序中的数据在正确的 类型范围之内,从而使得我们不用自己编写程序代码来完成这项任务。 X M L S c h e m a 的功能有助于减小使用X M L 标记文档和数据之间的鸿沟。可 以在X M L 文档中引入日期,数字,甚至可以定义自己的数据类型货币,等等 类型,由于数据有了更多的类型,我们就可以使用专门创建的搜索引擎来搜 索X M L 文档中的 特殊类型的数据。 X M L S c h e m a 还可以利用简单数据类型和其它的复杂类型来构造自己的复 杂类型, 这有点像面向对象方法中数据类型和结构继承的机制来生成可复用 的代码段。 2 .内容模型的支持 D T D的内 容模型是很弱的,只允许我们限制文档的次序或者选择列表, 而不能用来验证混合内容模型。文档元素只能包含 “ 零或一”、“ 零或多 个”、“ 一个或多个”。而另一方面, X M L S c h e m a 考虑到了更复杂和灵活的 内容模型,可以用它来验证混合内容的有效性,也可以用它来指定元素出现 的确切次数,还可以 用它来为元素组命名。 3 .结构的多样性 X M L S c h e m a 在内容模型中可以控制顺序和嵌套。还可以使用正则表达式 来指定某种的形式, 用以检查元素的内容或属性值的字符序列是否符合特定 样式。 4 可扩展的模式 D T D 作为描述X M L 的语言自 身却不是可以扩展的。 而X M L S c h e m a 是用X M L 书写的,所以它继承了X M L 的可扩展性。在可扩展性方面,主要表现为:在 一个模式中复用另一个模式部分功能的能力; 定义在不同模式中复用复杂结 构的能力;从己有数据类型出发制定自己的新数据类型的能力;在一个文档 实例中引用多个模式的能力。我们可以更容易的共享标准的词汇,可以依据 我们的要就修改己经存在的模式而不必每人都从头写起。 从以上比较可以发现, X M L S c h e m a 数据类型的多样性和对内容模型的有力支 持, 这可以保证更精确和更有效的描述某个X M L 文档。 这非常有利于转换到关系 数据库模式,因为关系数据库中一般也有很多特有的类型,它们同 X M L S c h e m a 提供的基础类型十分相似, 这可以有效的保留数据的一些固有的特性。 虽然可扩 展性也不是关系的 特长, 但关系也并不象D T D 那样不可 扩展, 只是相对X M L S c h e m a 而言不是十分方便。 通过X M L S c h e m a 与D T D 模式的比较,可以得出在转换中选择X M L S c h e m a 要 比选择D T D ,更能保证数据的特性,更方便转换,得出的关系数据库模式更能符 合数据原有的意思。 2 . 3 M S X M L 4 . 0 和 M i c r o s o ft S Q L S e rv e r 2 0 0 0 的介绍 在这里选择微软公司提供的M S X M L 4 . 0 组件( 后面简称M S X M L ) , 用来作为X M L S c h e m a 的构造处理器。在这个组建中不但提供了对X M L S c h e m a的比较完备的支 持, 而且它还提供了许多其它的X M L 组件, 包括: D O M 组件 ( 用来读取X M L文档 的) ,S O M组件,X S L T组件,X P a t h 组件,S A X 2 组件 ( 用来读取 X M L文档的) 。 这些组件在转换时可以给出许多帮助,例如在X M L S c h e m a 本身就是一个X M L 文 档所以 可以 用D O M 组 建件读 取, X M L S c h e m a 中 也 会使用P a t h “ “ , 这 样X P a t h 组 件就会对转换有所帮助。 关系数据库选择微然公司的S Q L S e r v e r 2 0 0 0 .( 后 面简称S Q L 2 0 0 0 ) ,主要 是因为它是一个比较流行的数据库系统,而且它支持绝大多数数据库方面的操 作。并且它用起来对系统的要求不是很高, 而且它也提供了某些对X M L 的支持。 S Q L 2 0 0 0 提 供 一 种 机 制 可以 容 易 地 和高 效 地 变 换 关 系 模 式 到 一 个 特定X M L 语言 ( 例如, X M L S c h e m a ) , 用 来 把 数 据 传 送 和 返 回 关 系 m 1 第三章把X M L S c h e m a 模式中的主要组件 转化成数据库模式的一般研究 这章主要讨论的内容是针对在转换中该如何处理 X M L S c h e m a模式中的主要 组件。先从一个简单X M L S c h e m a 模式分析,然后依次讨论了 每个主要组件在转 换时该如何处理。 3 . , 分析一个简单的X M L S c h e m a 模式 为了讨论X M L S c h e m a 模式到关系数据库模式的转换, 让我们考虑例 1 . 1 . 2 . 1 给出的X M L 文档。 它可能是描述了一个在美国发生的产品定购和付款应用产生购 买 订单。 而它可能的 一个X M L S c h e m a 模 式如 下cu P u r c h a s e o r d e r s c h e m a f o r E x a m p l e . c o m . C o p y r i g h t 2 0 0 0 E x a m p l e . c o m . A l l r i g h t s r e s e r v e d 9 来控制某个属性是否需要出现,或者仅仅是可选的。 1 .设置u s e 为r e q u i r e d , 就代表这个属性它必须出现。 如: “ “ 2 .设置u s e 为。 p t i o n a l , 就代表这个属性是可选的,即可以 给它赋值, 也 可以没有这个属性,u s e的默认值是 o p t i o n a l 。如: “ “ 3 .甚至可以 在u s e 属性中设置p r o h i b i t e d 来阻止这个属性在元素中出现。 如 : “ “ 在X M L S c h e m a 声明中除了可以加入u s e 属性外, 还可以使用f i x e d 和d e f a u l t 属性,为声明的属性提供固定的或默认的值。 下面表格显示u s e , f i x e d , d e f a u l t 的取值“ , ,和它们代表的意义 ( “ 一 ”代 U s ef i x e dd e f a u l t 意义 R e q u i r e d 属性必须只出现一次,但是它可以取任何值 R e q u i r e d 1 0 9属性必须只出现一次,但是它的值必须为1 0 9 O p t i o n a l 属性可能出现一次,但它可以取任何值 O p t i o n a l 1 0 9属性可能出现一次,如果它有值,那么必须是 1 0 9 ;即使不出现,它的值也是 1 0 9 O p t i o n a l 1 0 9属性可能出现一次,如果它没有出现,那么它 的值是1 0 9 ,否则就是给出的值 p r o h i b i t e d 属性一定不能出现 表 3 . 4 . 1 在转换过程中,由于属性是简单类型,所以它也可以按照简单类型元素那样 处理。即 是原子类型的属性, 可以在元素表中创建一个字段。 字段名可以根据前面的分析 的那样,以“ a t t r”为 前缀加上属性名称。 是列表类型的 属性, 需要创建一个表来存储这个属性值。 表的名称和结构可 以参照前面提到方法建立, 只不过把 “ e l e m ”的地方替换成 “ a t t r “ 。例如表名 就是“ l i s t a t t r属性名” , 存属性值的字段就是“ l i s t 一 a t t r属性名_ v a l u e “ a 是联合类型, 也是在元素表中增加一个n v a r c h a r ( 2 5 5 ) 字段, 名称为“ a t t r _ 属性名称” 。 再来看一看,转换过程中, 系数据库模式该怎么办: Use fixed defaultRequired - I- 遇到 属 性声明 使用u s e , f i x e d , d e f a u l t 时, 关 转 换时 采 j fl 亘 h )y 丛- 舀 一一一 属性类型为原子和联合类型:根据前面给出的 方法,创建一个属性字段,并设定它为 “ N O T N U L L “ . r e q u i r e d 1 0 9 属性类型为列表类型:为含有这个属性的元素 建立相关的属性表。但在关系数据库中没有什 么有效方法来保证属性表的外键值包含所有的 元素表的主键值。可能在强调必须要有这个属 性的情况下,把列表类型的属性直接存入一个 n v a r c h a r 2 5 5 ) 的字段可能是比较好的方法。 在这种情况下, 不管是原子, 联合和列表类型, 都是以下两种方法: 1 .在元素表中创建一个字段,给出缺省值为 1 0 9 。 并建立触发器保证不能修改这个字段。 2 .在元素表中不创建相关属性字段, 但利用元 素表创建一个视图, 包含这个属性名称, 并 月给它赋一个给出的固定值,在这里为 “1 0 9 “ a o p t i o n a l o p t i o n a l 1 1 0 9 o p t i o n a l 1 0 9 p r o h 丈 b i t e d 方法一,需要占用额外的空间,而且在数据库 模式除了用触发器,还不能控制对该字段的赋 值,事实上赋不是 f i x e d的值在这种情况下是 不允许的。 方法二,节省空间,也能控制赋值情况。 推荐第二种方法。 属性类型为原子和联合类型:创建一个属性字 段,并设定它可以 为 “ N U L L % 属性类型为列表类型:为含有这个属性的元素 建立相关的属性表。 同“ r e q u i r e , 1 0 9 , 一 ” 给出的方法一基本一样, 但触发 器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 机车检修合同协议
- 漫画制作合同协议
- 快递托管合同协议
- 膠水销售合同协议
- 南宁职业技术学院《钢与组合结构课程设计》2023-2024学年第二学期期末试卷
- 天府新区航空职业学院《初等数论拓扑学》2023-2024学年第一学期期末试卷
- 湖北开放职业学院《经济数学(1)》2023-2024学年第一学期期末试卷
- 教培入职合同协议
- 新乡学院《社会哲学》2023-2024学年第二学期期末试卷
- 深圳信息职业技术学院《外科止血包扎》2023-2024学年第一学期期末试卷
- 兰州铁路局招聘笔试冲刺题2025
- 2025银行协议存款合同
- 2023年高考英语试卷(新课标Ⅰ卷)含答案解析
- DB51T 2679-2020 钢轨被动式高速打磨技术规范
- DB32T 4878-2024居住区供配电设施建设标准
- 微专题含膜电池-2024高考化学一轮考点击破
- 《航模基础知识》课件
- 慢性高血压并发子痫前期病因介绍
- 存款保险知识培训
- 2025年中国汽车车灯行业市场现状、前景分析研究报告(智研咨询发布)
- 2024年湖北省中考语文真题(学生版+解析版)
评论
0/150
提交评论