999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于XML Schema的XML文檔到關(guān)系數(shù)據(jù)庫(kù)的映射方法

2013-12-06 06:49:34
大眾科技 2013年2期

賈 穎

(山東工商學(xué)院 計(jì)算機(jī)基礎(chǔ)教學(xué)部,山東 煙臺(tái) 264005)

XML是W3C組織推出的一種半結(jié)構(gòu)化的、自描述的數(shù)據(jù)描述語(yǔ)言,目前已成為Web上數(shù)據(jù)表示的標(biāo)準(zhǔn),并為各種跨平臺(tái)、用不同編程語(yǔ)言編寫(xiě)的應(yīng)用程序提供了數(shù)據(jù)交流與分享的工具,同時(shí)還成為各種異構(gòu)數(shù)據(jù)(關(guān)系數(shù)據(jù)庫(kù)、Excel數(shù)據(jù)表、文本文件)進(jìn)行數(shù)據(jù)交換的中間橋梁??梢哉f(shuō),XML技術(shù)已經(jīng)得到了非常廣泛的應(yīng)用和支持。

隨著XML技術(shù)的廣泛應(yīng)用,XML文檔大量涌現(xiàn)出來(lái)。然而,XML文檔本身不是一個(gè)數(shù)據(jù)庫(kù)[1],缺乏成熟數(shù)據(jù)庫(kù)技術(shù)中關(guān)于并發(fā)訪問(wèn)、完整性約束、安全控制等關(guān)鍵技術(shù)。并且以文檔方式存儲(chǔ)的XML數(shù)據(jù)支持的關(guān)鍵字查詢,查詢方式簡(jiǎn)單,查詢能力低,不能滿足復(fù)雜條件查詢的需要[2]。所以,XML文檔在存儲(chǔ)和查詢機(jī)制上都缺乏系統(tǒng)支持。而關(guān)系數(shù)據(jù)庫(kù)仍是目前為止最成熟的數(shù)據(jù)管理技術(shù)。所以,已經(jīng)有很多學(xué)者對(duì)XML文檔的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)做出了研究,提出了結(jié)構(gòu)映射和模式映射兩種主要的方法。由于結(jié)構(gòu)映射保留了 XML文檔的結(jié)構(gòu)和語(yǔ)義信息,成為了XML文檔在關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)的主流技術(shù)。結(jié)構(gòu)映射要分析XML文檔的模式信息(DTD或XML Schema)。目前,基于XML Schema的結(jié)構(gòu)映射方法中最具代表性的是Bohannon[3]的提出的P_Schema(Physical XML schema)。P_Schema是從XML Schema變化而來(lái),將原始的XML Schema中的多值元素(元素屬性maxOccurs為unbounded的元素)提取出來(lái),生成同名的新類(lèi)型,同時(shí),在該元素的父元素中保留對(duì)該元素的引用。P_Schema可以直接轉(zhuǎn)換為關(guān)系模式。然而,P_Schma僅進(jìn)行了對(duì)多值元素的提取,沒(méi)有考慮其它形式復(fù)雜元素的提取,如遞歸嵌套結(jié)構(gòu)、被不同父元素重復(fù)引用的元素、可選元素的映射問(wèn)題,本文將進(jìn)一步探討對(duì)這些類(lèi)型元素的映射。

1 P-schema的改進(jìn)

改進(jìn)的P_Schema模式將XML文檔存儲(chǔ)到關(guān)系數(shù)據(jù)庫(kù)的步驟分為三步:第一步,將XML模式轉(zhuǎn)換為改進(jìn)過(guò)的P_Schema++模式;第二步,將P-Schema++模式用DOM樹(shù)表示;第三步,將DOM樹(shù)映射為關(guān)系數(shù)據(jù)庫(kù)。

1.1 生成P_schema++模式

本文的實(shí)例文檔為T(mén)he Purchase Order ,po.xml[4],對(duì)應(yīng)的XML Schema為po.xsd。[4]數(shù)據(jù)來(lái)源于www.w3.org。表 1給出了 po.xsd的類(lèi)型標(biāo)識(shí)模式(即 XML Query Algebra ),這種模式因其準(zhǔn)確指定了元素和屬性類(lèi)型,非常有利于XML數(shù)據(jù)的存儲(chǔ),將之稱(chēng)為原始模式。P_schema++模式是基于此模式,進(jìn)行改進(jìn)和擴(kuò)充得到。

從原始的XML Schema類(lèi)型定義到P_Schema++類(lèi)型定義的轉(zhuǎn)換遵循以下幾個(gè)原則:

(1)提取用<ComplexType>…</ ComplexType >標(biāo)識(shí)定義的復(fù)雜類(lèi)型為新類(lèi)型(如PurchaseOrder);

(2)提取元素屬性maxoccurs=unbounded的多值元素為新類(lèi)型(如items);

(3)提取被多個(gè)父元素重復(fù)引用的元素為新類(lèi)型(如USAdress和 comment);

(4)提取用<choice>…</choice>標(biāo)識(shí)的可選元素為新類(lèi)型(本實(shí)例不涉及)。

表1

1.2 DOM樹(shù)表示

DOM(Document Object Model)全稱(chēng)文檔對(duì)象模型,是一種與平臺(tái)和語(yǔ)言無(wú)關(guān)的編程接口。[5]一個(gè) XML文檔使用XML分析器分析之后,其中的信息就會(huì)被轉(zhuǎn)化成一棵對(duì)象節(jié)點(diǎn)樹(shù)。在這棵樹(shù)中,有且只有一個(gè)根節(jié)點(diǎn),其它所有節(jié)點(diǎn)都是根節(jié)點(diǎn)的后代節(jié)點(diǎn)。節(jié)點(diǎn)樹(shù)生成之后,就可以通過(guò)DOM接口訪問(wèn)、修改、添加、刪除和創(chuàng)建樹(shù)中的節(jié)點(diǎn)和內(nèi)容。將P_Schema++轉(zhuǎn)換為DOM樹(shù)表示。在DOM樹(shù)中,用符號(hào)○表示簡(jiǎn)單類(lèi)型元素的節(jié)點(diǎn),用符號(hào)◎表示復(fù)雜類(lèi)型元素的節(jié)點(diǎn),用符號(hào)△表示屬性節(jié)點(diǎn)。Po.xsd的 P_Schema++轉(zhuǎn)換為 DOM樹(shù)如圖1所示:

圖1 P_Schema++ DOM樹(shù)

得到DOM樹(shù)后,尋找DOM樹(shù)中子樹(shù)的根節(jié)點(diǎn),又叫分級(jí)節(jié)點(diǎn)[3]。一個(gè)節(jié)點(diǎn)成為分級(jí)節(jié)點(diǎn),必須滿足以下幾個(gè)條件之一:①不能由其他節(jié)點(diǎn)到達(dá);②復(fù)雜類(lèi)型的節(jié)點(diǎn);③節(jié)點(diǎn)的入度>1。根據(jù)以上規(guī)則,PurchaseOder,items,comment,USAdress為分級(jí)節(jié)點(diǎn),要單獨(dú)映射為關(guān)系。其中Comment節(jié)點(diǎn)是簡(jiǎn)單類(lèi)型元素節(jié)點(diǎn),可以分成兩個(gè)節(jié)點(diǎn),分別內(nèi)聯(lián)到PurchaseOrder子樹(shù)和items子樹(shù)中。但考慮到在po.xsd中,PurchaseOrder和Items中對(duì)comment的定義都是minoccurs=0,如果將comment作為PurchaseOrder表和items表中的屬性列,應(yīng)允許NULL值。而comment元素中的數(shù)據(jù)內(nèi)容一般比較多,需要為comment列設(shè)置較大的字符串長(zhǎng)度,而如果有大量的空值,就會(huì)造成很大的存儲(chǔ)浪費(fèi)。所以,本文將comment元素單獨(dú)建表,并建立Pid字段作為外鍵,指向父節(jié)點(diǎn)。

1.3 映射為關(guān)系數(shù)據(jù)庫(kù)

將DOM樹(shù)中分級(jí)節(jié)點(diǎn)映射為關(guān)系數(shù)據(jù)庫(kù)中的表,映射的方法為:

(1)為每一棵子樹(shù)T創(chuàng)建關(guān)系R,把滿足以下條件的節(jié)點(diǎn)Y作為R的屬性:Y是T可達(dá)到,從T到Y(jié)的路徑中不包含任何生成獨(dú)立關(guān)系的分級(jí)節(jié)點(diǎn)。

(2)為每個(gè)關(guān)系R創(chuàng)建Id字段作為主鍵。若T與其他分級(jí)節(jié)點(diǎn)存在父子關(guān)系,則在關(guān)系R中添加Pid 字段作為外鍵,記錄其父節(jié)點(diǎn)的Id。

根據(jù)上面的方法,把DOM樹(shù)轉(zhuǎn)換為4張表:

表2 PurchaseOrde r

表3 comment

表4 items

表5 USAdress

另外,在PurchaseOrder表中,Bill to_id和ship to_id字段分別指向其孩子節(jié)點(diǎn),與USAdress表中Id字段相對(duì)應(yīng)。

2 實(shí)驗(yàn)驗(yàn)證

為了驗(yàn)證P_Schema++的有效性和可行性,采用 Microsoft Visual Studio2003和C#語(yǔ)言在Windows內(nèi)部組件之一的.NET Framework代碼庫(kù)中進(jìn)行XML文檔到SQL Server 2003關(guān)系數(shù)據(jù)庫(kù)的轉(zhuǎn)化。對(duì)其存儲(chǔ)代價(jià)和查詢代價(jià)進(jìn)行評(píng)估,結(jié)果發(fā)現(xiàn),該算法生成的關(guān)系數(shù)據(jù)表數(shù)目相對(duì)較少,表的規(guī)模合理,查詢時(shí)連接運(yùn)算少,查詢效率較高。

[1] Bourrent R. XML Data Binging[EB/OL].http://www.rpborrent.com/xml/XMLDataBingding.htm,2010-12-21.

[2] 曾慶玲.基于模式的復(fù)雜 XML文檔到關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)的研究[D].桂林:廣西師范大學(xué),2011

[3] Bohannon P, Freire J, Roy P et al.,From XML schema to relations: a cost based approach to XML storage[C].Proc of the18th International Conference on Data Engineering.2002:64 75.

[4] The Purchase Order[EB/OL] .http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/.

[5] 岳歡.XML文檔在數(shù)據(jù)庫(kù)中存儲(chǔ)方案的研究[D].重慶:重慶大學(xué),2003.

主站蜘蛛池模板: 日本午夜视频在线观看| www中文字幕在线观看| 97青草最新免费精品视频| 巨熟乳波霸若妻中文观看免费| 欧美在线免费| 亚洲成在线观看| 日韩欧美国产三级| 尤物精品视频一区二区三区| 国产精品亚洲一区二区三区在线观看 | 亚洲国产第一区二区香蕉| 成人福利视频网| 乱色熟女综合一区二区| 欧美一区福利| 国产资源站| 午夜日韩久久影院| 亚洲AV无码久久精品色欲| 国产内射一区亚洲| a毛片在线播放| 欧美色视频在线| 自拍偷拍一区| 国产va在线| 日韩午夜福利在线观看| 无码国内精品人妻少妇蜜桃视频 | 亚洲色偷偷偷鲁综合| 日韩精品资源| 国产精品无码一区二区桃花视频| 亚洲日本一本dvd高清| 国产亚洲精品自在久久不卡| 免费激情网址| 国产电话自拍伊人| 99久久人妻精品免费二区| 亚洲天堂精品视频| 久久亚洲日本不卡一区二区| 国产精品久久久久鬼色| 国产综合精品日本亚洲777| 丰满人妻被猛烈进入无码| 嫩草影院在线观看精品视频| 中文字幕乱码二三区免费| 伊伊人成亚洲综合人网7777| 在线免费观看AV| 久操中文在线| 一本大道香蕉中文日本不卡高清二区 | 久久精品人妻中文系列| 色综合天天视频在线观看| 少妇精品网站| 成色7777精品在线| 亚洲欧美成人在线视频| 国产在线专区| 亚洲欧美激情另类| 国产粉嫩粉嫩的18在线播放91| 久久毛片基地| 亚洲天堂久久新| 国产成人亚洲无码淙合青草| 国产成人超碰无码| 欧美日本激情| 综合久久久久久久综合网| 五月天香蕉视频国产亚| 8090成人午夜精品| 日韩亚洲高清一区二区| 人妻少妇乱子伦精品无码专区毛片| 国产AV毛片| 国产日韩精品欧美一区喷| 丁香亚洲综合五月天婷婷| 色悠久久久| 99精品免费在线| 亚洲欧美激情小说另类| 美女内射视频WWW网站午夜| 欧美精品xx| 日本免费精品| 88av在线| 午夜福利亚洲精品| 国产波多野结衣中文在线播放| 亚洲欧美成人综合| 99re热精品视频国产免费| 亚洲国产精品日韩欧美一区| 国产成人精品第一区二区| 亚洲综合婷婷激情| 美女国产在线| 亚洲午夜18| 精品国产亚洲人成在线| 国产美女无遮挡免费视频| 亚洲第一色网站|