当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 原著作者:Ronald BourretMay 09, 2001翻译:寒蝉退士译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任和义务。
 

 

 ·组合算法概论(2)    »显示摘要«
    摘要:堆排序也是选择排序的一种,其特点是,在以后各趟的“选择”中利用在第一趟选择中已经得到的关键字比较的结果。 堆的定义: 堆是满足下列性质的数列{r1, r2, …,rn}: 或 若将此数列看成是一棵完全二叉树,则堆或是空树或是满足下列特性的完全二叉树:其左、右子树分别是堆,并且当左/右子树不空时,根结点的值小于(或大于)左/右子树根结点的值。 由此,若上述数列是堆......
    摘要:数据结构大学教程 the complete data structure training course 第一章 数据结构及其基本概念 chapter 1 data structure and it’s basic concepts1.1什么是数据结构(what is data structure) 如果你问一个木匠学徒:你工作的工具要用什么,他可能会回答你:“我只要一把锤......


映射 DTD 到数据库[上]
原著作者:ronald bourret

【程序编程相关:查询数据库中的N条记录,然后,对这N条记

【推荐阅读:直接用WinSock API 发E-ma

may 09, 2001 【扩展信息:日期转换

翻译:寒蝉退士

译者声明:译者对译文不做任何担保,译者对译文不拥有任何权利并且不负担任何责任与义务.

原文:http://www.xml.com/pub/a/2001/05/09/dtdtodbs.html

目录

1. 概述

2. 基于表的映射

3. 对象-关系映射

  3.1. 基本映射

    3.1.1. 映射 dtd 到对象模式

    3.1.2. 映射对象模式到数据库模式

    3.1.3. 杂记

  3.2. 映射复杂内容模型

    3.2.1. 映射序列

    3.2.2. 映射选择

    3.2.3. 映射重复子元素

    3.2.4. 映射可选子元素

    3.2.5. 映射子组

  3.3. 映射混合内容

  3.4. 映射次序

    3.4.1. 同级次序, 层次次序, 与文档次序

    3.4.2. 映射同级次序

      3.4.2.1. 次序属性与列

      3.4.2.2. 在映射中存储次序

  3.5. 映射属性

    3.5.1. 映射单值与多值属性

    3.5.2. 映射 id/idref(s) 属性

    3.5.3. 映射注记属性

    3.5.4. 映射 entity/entities 属性

  3.6. 可供选择的映射

    3.6.1. 映射复杂元素类型到标量类型

    3.6.2. 映射标量类属性到属性表

  3.7. 结论

4. 生成模式

  4.1. 从 dtd 生成关系数据库模式

  4.2. 从数据库模式生成 dtd

5. 映射 xml 模式到数据库

6. 有关的话题

1. 概述

    在 xml 社团中一个常见的问题是如何把 xml 映射到数据库.本文讨论两种映射: 基于表的映射与对象-关系(基于对象)的映射.这两种映射都建模在 xml 文档中的数据.而不是文档自身.这使得这些映射对于以数据为中心的文档是良难≡瘢杂谝晕牡滴行牡奈牡凳瞧斗φ难≡瘛;诒淼挠成渫耆荒艽砘旌夏谌荩旌夏谌莸亩?关系映射是非常低效的.

    这两种映射通常用做在 xml 文档与数据库.特别是关系数据库之间传输数据的软件的基础.它们在这方面的一个重要特征是双向的.就是说,它们可以用来从 xml 文档向数据库.从数据库向 xml 文档传输数据. 结果之一是它们可用做规范映射,在它顶上的 xml 查询语言可以被建造在非 xml 数据库上.规范映射将定义可以用类似 xquery 的某种东西来查询的虚拟 xml 文档.

    除了在 xml 文档与数据库之间传输数据之外,对象关系映射首要角色是用在“数据绑定”之中,这是在 xml 文档与对象之间的数据集结与解散.

2. 基于表的映射

    在下面的 xml 文档与表之间有明显的映射:

   <a>

      <b>

         <c>ccc</c>             table a

         <d>ddd</d>             -------

         <e>eee</e>          c     d     e

      </b>                  ---   ---   ---

      <b>             <=>   ...   ...   ...

         <c>fff</c>         ccc   ddd   eee

         <d>ggg</d>         fff   ggg   hhh

         <e>hhh</e>         ...   ...   ...

      </b>

   </a>

    它叫做基于表的映射.它把文档看成一个单一的表或一组表.文档的结构必须是

   <table>

      <row>

         <column_1>...</column_1>

         ...

         <column_n>...</column_n>

      </row>

      ...

      <row>

         <column_1>...</column_1>

         ...

         <column_n>...</column_n>

      </row>

   </table>

或者是

   <tables>

      <table_1>

         <row>

            <column_1>...</column_1>

            ...

            <column_n>...</column_n>

         </row>

         ...

      </table_1>

      ...

      <table_n>

         <row>

            <column_1>...</column_1>

            ...

            <column_m>...</column_m>

         </row>

         ...

      </table_n>

   </tables>

    同这个限制在一起的还有,列数据可以被表示为唯 pcdata 元素(可显示的)或属性.

    这种映射的明显的优点是它的简单性.因为它匹配在关系数据库中的表与结果集的结构,基于这种映射写代码很容易.快速.缩放自如,并对特定应用非常有用,比如在数据库之间一次一个表的传输数据.

    这种映射有许多缺点;首先,它只能处理 xml 文档的非常小的子集.此外,它不保存物理结构(比如字符与实体引用,cdata 段,字符编码,与孤立的声明)或文档信息(比如文档类型或 dtd),注释,或处理指令.

    基于表的映射通常被中间件用来在 xml 文档与关系数据库之间传输数据.它还在某些 web 应用服务器中用来把结果集数据返回为 xml.

3. 对象-关系映射

    由于基于表的映射只能处理 xml 文档的一个有限的子集,一些中间件工具.多数启用 xml 的关系数据库.与多数启用 xml 的对象服务器使用一个更加完善的映射,它叫做对象-关系映射.它把 xml 文档建模为特定于在文档中数据的对象的一个树,接着把这些对象映射到数据库.

    (名字“对象-关系”实际上是用词不当的 -- 更好的名字是基于对象的映射.这是因为对象可以被映射到非关系数据库,比如面向对象数据库或层次数据库, 或者简单的不去管它,在数据绑定系统中就是这么做的.但是,由于对象-关系是一个熟知的术语而且这种映射通常与关系数据库一起使用,所以这里用了这个术语.此外,所有例子都使用关系表.)

    要理解对象-关系映射,最好先看一下一些简单的例子.作为开始,注意在下面 xml 文档.对象.与在表中的行之间有明显的映射:

        xml                    对象                     表

   =============           ============           ===============

                                                     table a

   <a>                     object a {                 -------

      <b>bbb</b>              b = "bbb"            b     c     d

      <c>ccc</c>    <=>       c = "ccc"    <=>    ---   ---   ---

      <d>ddd</d>              d = "ddd"           ...   ...   ...

   </a>                    }                      bbb   ccc   ddd

                                                  ...   ...   ...


...   下一页
    摘要: 倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:“我只要一把锤子和一个锯”。但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你“我需要一些精确的工具”。由于计算机所解决的问题都是从生活中抽象出来的问题,其复杂性不言而喻,所以我们需要这样精确有效的工具去解决现实生活中的复杂问题。算法、数据结构都是程序设计中必不可少的精确工具......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE