Yiwei's profile我以维的世界PhotosBlogLists Tools Help

Blog


    April 02

    从DTD到数据库的映射——1

    DTD到数据库的映射    

    翻译:张以维  邮箱:vane914@126.com

    Copyright (c) 2000-2005 by Ronald Bourret

    来源:http://www.rpbourret.com/xml/DTDToDatabase.htm

    内容概要

    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的映射

    3.5.3     符号属性的映射

    3.5.4     ENTITY/ENTITIES属性的映射

    3.6          交替映射

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

    3.6.2     从复杂元素类型到XML列值的映射

    3.6.3     从标量特性到属性表的映射

    3.7          总结

    4           模式的生成

    4.1          DTD模式生成关系型数据库模式

    4.2          从数据库模式中生成DTD模式

    5           XML模式到数据库的映射

    6           相关文章

     

    1.         总述

    XML领域内有一个普遍的问题,那就是如何将XML映射到数据库中去。本文将讨论两种映射:基于表格的映射和关系对象型(基于对象)的映射。两种映射将数据模仿在XML文档中,而并非局限于文档本身。这样的映射为以数据为中心的文档提供了一个很好的选择,而对以文档为中心的文档则不然。(基于表格的映射根本不能应付复合内容,而复合内容的对象关系型映射又是极其没有效率的。)

    用于在XML文档与数据库间(特别是关系型数据库)转换数据的软件一般都是基于上述两种映射原理。这种关系的一种重要特性就是双向性。即,映射即可以将数据从XML文档中转移向数据库,又可以将数据从数据库中转移向XML文档。这一特性使得映射可以做为规范映射,作用于可以构建XML查询语言的非XML数据库。即,规范性映射将定义虚拟XML文档,该文档可以被诸如XQuery等语言查询。

    除了用于在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文档与关系型数据库间进行数据的转换)、网络应用服务器及支持XML的数据库(用于返回XML结果集)及很多自制应用中。该映射的一个重要用途是在关系型数据库中实现XQuery查询功能,每个基本表以虚拟的XML文档形式被处理,并通过XQuery语言被查询检索。

     

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://vane-zhang.spaces.live.com/blog/cns!15C6882C30119870!300.trak
    Weblogs that reference this entry
    • None