(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究_第1頁
(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究_第2頁
(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究_第3頁
(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究_第4頁
(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費閱讀

(論文)XML+SCHEMA模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究.pdf 免費下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

把X M L S c h e m a 模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的研究 摘要 數(shù)據(jù)以X M L 文檔存儲可以更加廣泛的應(yīng)用于許多領(lǐng)域。 這是由于X M L 有大量 的相關(guān)技術(shù)對它支持, 其中就包括X M L S c h e m a 協(xié)議。X M L S c h e m a 可以通過指定 元素內(nèi)容和屬性值的數(shù)據(jù)類型來限制X M L 文檔。 另一方面, 如果數(shù)據(jù)想要有某種 保護或使用事務(wù)處理功能時, 存入到某個關(guān)系數(shù)據(jù)庫是十分理想的。由于 X M L S c h e m a 可以用來檢查X M L 文檔的有效性,所以如果可以把某個X M L S c h e m a 模式 轉(zhuǎn)換到關(guān)系數(shù)據(jù)庫的模式,那么符合這X M L S c h e m a 限定的X M L 文檔就很容易地 加入到被轉(zhuǎn)換成的關(guān)系數(shù)據(jù)庫模式中去了。 這有助于數(shù)據(jù)的靈活存儲。 本文著重 研究了如何將一個X M L S c h e m a 轉(zhuǎn)換成關(guān)系數(shù)據(jù)庫模式。 本文討論的方式是自 下而上的,就是先討論 X M L S c h e m a中簡單的部分,然 后逐步討論較為復(fù)雜的部分。 每個部分轉(zhuǎn)換都給出了必要的步驟, 可以根據(jù)這些 步驟自 動實現(xiàn)這部分的轉(zhuǎn)換。 在轉(zhuǎn)化過程中,目 的是盡量保證X M L S c h e m a 信息 的完整性,對確實不能保證的, 采用某種變通的方式來實現(xiàn)。 先簡單分析了X M L S c h e m a中主要組件的轉(zhuǎn)換.研究了內(nèi)置基礎(chǔ)類型如何轉(zhuǎn) 換到關(guān)系數(shù)據(jù)庫模型中。 討論了簡單類型的元素是如何轉(zhuǎn)換的: 分別對原子類型, 列表類型和聯(lián)合類型的元素采用了 不同 地轉(zhuǎn)換方法。 在此基礎(chǔ)上進一步討論了對 帶有屬性的元素的轉(zhuǎn)換方法,并研究了復(fù)雜類型元素的內(nèi)容模型的轉(zhuǎn)換方法。 接下來研究了二級組件的轉(zhuǎn)換。 著重討論了模型組元素的轉(zhuǎn)換,依次分析了 s e q u e n c e 模型組、 c h o i c e 模型組和a l l 模型組在 轉(zhuǎn)換時采用的方法。 對帶有一 致性約束的元素進行了比較詳細的分析和討論。其中著重討論了對u n i q u e 限定 在轉(zhuǎn)換時的分析,并根據(jù)不同情況給出不同的解決步驟。 最后重點研究了X M L S c h e m a數(shù)據(jù)類型對轉(zhuǎn)換的影響。給出了每個刻面在轉(zhuǎn) 換 時需 要考 慮的 步 驟。 提出了 兩種 解決 模式“ R u l e + N e w T y p e ” 模式和“ C H E C K “ 模式。 此外還簡單地討論了命名規(guī)則和轉(zhuǎn)換后關(guān)系模式的優(yōu)化。 關(guān)鍵詞:X ML , S G ML , D T D , X ML . S c h e m a ,關(guān)系數(shù)據(jù)庫模式 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 作為一種標記語言,已 經(jīng)在許多 領(lǐng)域中 得到廣大地使用。 在數(shù)據(jù)交換領(lǐng) 域上,在消息處理能力上,在集成數(shù)據(jù)和文檔的能力上,在靈活表現(xiàn)的內(nèi)容上, X M L 都有得天獨厚的優(yōu)勢。X M L 消息處理為應(yīng)用程序通信提供了一種靈活的方法 0 1并且 它是實 現(xiàn)W e b 服務(wù)的S O A P 協(xié)議(1 的基礎(chǔ). X M L 的強大還得益于大量的相 關(guān)技術(shù)對它的 支持【:, , 其中 就包括X M L S c h e m a 協(xié)議。 最初, 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 文檔的結(jié)構(gòu),但由于D T D 在靈活性和可擴展 J性上不是很理想,所以W 3 C又推出了X M L S c h e m a規(guī)范來控制其結(jié)構(gòu)。由于 X M L S c h e m a本身就是使用 X M L語言來書寫的,所以它有良 好的擴展性。并月 卜 X M L S c h e m a規(guī)范中給出了許多內(nèi)置類型,還允許使用者根據(jù)內(nèi)置類型創(chuàng)建自己使用 的類型。 所以在驗證X M L 文檔有效性時, 一般都使用X M L S c h e m a 規(guī)范. X M L S c h e m a 可以通過指定元素內(nèi)容和屬性值的數(shù)據(jù)類型來限制X M L 文檔, 這同關(guān)系數(shù)據(jù)庫限 制字段中存儲數(shù)據(jù)的類型是十分相似的??梢钥吹?,在X M L S c h e m a 規(guī)范中有很 多特性可以很容易地轉(zhuǎn)換到關(guān)系數(shù)據(jù)庫中去。 1 . 1 X ML介紹 1 . 1 . 1 X ML的歷史 在 1 9 9 6年,互聯(lián)網(wǎng)相關(guān)技術(shù)的主要設(shè)計組織者W 3 C開創(chuàng)了一種可擴展的標 記語言, 它結(jié)合了S G M L 的靈活性并像H T M L 一樣可以被廣泛接受。 這種語言就是 X M L 語言。 在1 9 9 8 年2 月, X M L 1 . 0 的第一 版版產(chǎn)生了 , 它是一個推薦版本, 是一個非 正式的“ 標準” 。 隨后, 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 把數(shù)據(jù)表示成為一個文本字符串, 在字符串中包括了用于描述數(shù)據(jù)的“ 標 記” ( t a g ) ,這些標記散布在整個文檔中。每個標記采用尖括號 “ ”包 含字符的方式。 使用標記來區(qū)別字符數(shù)據(jù), 即非標記 文本, 例如“ ” 就是 一個標記。 標記和字符數(shù)據(jù)組成元素 ( e l e m e n t ) 。元素以一個開始標記開始,以一個結(jié) 束標記結(jié)束。在開始標記 和結(jié)束標記之間就是數(shù)據(jù)。 “ H e l l o “ 就 是一個元素, 其中“ ” 就是一個開始標記, “ ” 就是一個結(jié)束標記, “ H e 1 1 o ”字符串就是這個元素表示的內(nèi)容數(shù)據(jù)。每個開始標記和結(jié)束標記之間 的一個差別就是結(jié)束標記比開始標記多一個“ / ” 符號, 并且它一定在“ 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是一個缺乏良 好類型系統(tǒng)的語言。在 X M L的文檔中找到的信息只能被當 做文本來對待, 這就要求開發(fā)人員事先知道“ 真正的類型“ ,以便在他們的代碼中 采取必要的強制措施。 最初, 在傳統(tǒng) S G M L派系中. 文檔規(guī)則的表示曾經(jīng)是 D T D . 不過,有一些 D T D無法實現(xiàn)的相當常見的約束;D I D的主要限制在于它們?nèi)狈?數(shù)據(jù)類型的表達。所以W 3 C又提出了 X M L S c h e m a 規(guī)范,為X M L 處理環(huán)境提供了 一種類型系統(tǒng)。 它可以描述打算使用的類型。 它可以在把X M L 文檔中的信息傳遞 給應(yīng)用之前,先檢查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 ) :簡單類型和復(fù)雜類型的定義、元素和屬性 的聲明。 它包括:簡單類型定義 ( S i m p l e t y p e d e f i n i t i o n s ) 復(fù) 雜類型定 義( 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 的 區(qū)別最 明顯的地方就是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 來描述一個文檔,使用者就用不著再去學(xué)習(xí)新的語法 和相關(guān)規(guī)則了。 X M L S c h e m a目前的版本為1 . 0 “ 0 1 . 3 關(guān)系數(shù)據(jù)庫介紹 1 9 7 0 年,E d g a r C o d d 在I B M 的S a n J o s e 研究實 驗室推出了一種新的 稱之為 關(guān)系數(shù)據(jù)模型的數(shù)據(jù)表達框架【 o C o d d 提出了1 2 個關(guān)系數(shù)據(jù)庫的規(guī)則,用 來驗 證一個數(shù)據(jù)庫是否是關(guān)系的s ) 。 在2 0 世紀8 0 年代末期推出的關(guān)系數(shù)據(jù)庫查 詢語 言S Q L 得到了標準化。從最初的S Q L - 8 6 到現(xiàn)在最新的S Q L - 2 0 0 3 版, S Q L 標準在 不斷的得到更新和修改。 關(guān)系數(shù)據(jù)庫是建立在關(guān)系模型上的。 在關(guān)系模型中表示數(shù)據(jù)的主要結(jié)構(gòu)是關(guān) 系。關(guān)系模型用表的集合來表示數(shù)據(jù)和數(shù)據(jù)間的聯(lián)系s ) 。 而數(shù)據(jù)庫中 表這個概念 和數(shù)學(xué)上的關(guān)系這個概念是密切相關(guān)的, 這也是關(guān)系數(shù)據(jù)庫名稱的由來。 關(guān)系數(shù) 據(jù)庫就是表的集合, 每個表有唯一的名字。 在關(guān)系模型中可以指定多種完整性約 束, 包括:主鍵約束, 外鍵約束和一般約束。 使用S Q L 語句我們可以方便地在關(guān) 系中查詢各種數(shù)據(jù)。 一般的商用數(shù)據(jù)庫,如D B 2 , O r a c l e 系列, S Q L S e r v e r 系列等等, 都是一個 關(guān)系數(shù)據(jù)庫, 它們都支持S Q L 標準。 并且它們都提供了事務(wù)管理,安全管理, 數(shù) 據(jù)備份和恢復(fù)等等重要的功能,對數(shù)據(jù)有一個完整的保護功能。 1 .4 把X M L S c h e m a 模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式的意義 目前, 絕大多數(shù)的信息是存儲在關(guān)系數(shù)據(jù)庫中的, 從數(shù)據(jù)庫的內(nèi)容轉(zhuǎn)換到X M L 文檔, 這在很多流行的商業(yè)數(shù)據(jù)庫產(chǎn)品中己 經(jīng)實現(xiàn), 如O r a c l e . , M S S Q L S e r v e r (9 , D B 2 . 等等數(shù)據(jù)庫(I. ) , 都可以 直接使用S Q L 語言 輸出X M L 格式的文檔。 其中 有 些數(shù) 據(jù)庫甚至把內(nèi) 置的數(shù)據(jù)類型直接映射到X M L S c h e m a 上,如可以使用X M L S c h e m a 將D B 2 數(shù)據(jù)完整性約束映 射至X M L 0 0 。 當 數(shù)據(jù)成為X M L 文檔后就可以 利用X M L 的 各種優(yōu)點。 但到目 前為止, 沒有那種解析X M I 文檔的解析器, 可以提供數(shù)據(jù)安全 性檢查, 事務(wù)處理等等功能, 這卻是絕大多數(shù)流行的關(guān)系數(shù)據(jù)庫已經(jīng)能夠提供的 功能。 所以目前來說, 如果數(shù)據(jù)想要有某種保護或使用事務(wù)處理功能時, 存入到 某個關(guān)系數(shù)據(jù)庫是十分理想的。 那么如何把X M L 文檔的內(nèi)容轉(zhuǎn)到數(shù)據(jù)庫中就是需 要進行研究的, 由于X M L 結(jié)構(gòu)比關(guān)系結(jié)構(gòu)具有更多的固有的靈活性, 所以如何把 一個X M L 文檔轉(zhuǎn)換到數(shù)據(jù)庫中是有一定難度的。 X M L S c h e m a 最重要最確實的方面是,它可以 在應(yīng)用軟件之間或在應(yīng)用軟 件內(nèi) 部之間指定一個契約16 1 。所以如果可以 把某個 X M L S c h e m a 模式轉(zhuǎn)換到關(guān)系數(shù)據(jù) 庫的模式, 那么符合這X M L S c h e m a 限定的X M L 文檔就自 然而然地可以加入到被 轉(zhuǎn)換成的任何關(guān)系數(shù)據(jù)庫模式中去了。目 前有很多工具可以 解析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 模式已經(jīng)通過某種X M L S c h e m a 解析器檢查后,如果采用某種算法能自 動 的把這個有效的 X M L S c h a m e模式轉(zhuǎn)化成關(guān)系數(shù)據(jù)庫模式,那么符合這個 X M L S c h e m a 模式的X M L 文檔將很容易地存儲到數(shù)據(jù)庫中了。 由 于本文只是對這種算法的 某些方面研究, 并沒有給出 一個徹底而又 完整的 算法解決方案,例如本文沒有討論轉(zhuǎn)換中如何對待 X M L S c h e m a中的命名空間, 多文檔中的模式, 抽象元素和類型等等比較高級的內(nèi)容。 只是著重討論了一些在 轉(zhuǎn)換中必須要考慮的問題, 如基礎(chǔ)類型元素的轉(zhuǎn)換, 一般簡單類型和復(fù)雜類型元 素的轉(zhuǎn)換等等內(nèi)容。 本文討論的方式是自 下而上的, 就是先討論X M L S c h e m a 中 簡單的部分, 然后逐步討論較為復(fù)雜的部分。 每種部分的轉(zhuǎn)換都基本給出了必要 的步驟, 可以根據(jù)這些步驟自 動實現(xiàn)這部分的轉(zhuǎn)換。 在轉(zhuǎn)化過程中,目 的是盡量 保證X M L S c h e m a 信息的完整性,對確實不能保證的,采用某種變通的方式來實 現(xiàn)。 第二章 技術(shù)背景 2 . 1 X ML與關(guān)系數(shù)據(jù)庫的比較 正如前面提到的,X M L文檔同關(guān)系型數(shù)據(jù)庫相比它們各有優(yōu)勢。而且目 前大 多商用的關(guān)系型D B M S 都提供了X M L 接口。在能夠?qū)褦?shù)據(jù)庫技術(shù)的訪問的同 時,又可以進行 X M L 傳輸。 關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)表示是受限于關(guān)系。 而關(guān)系同X M L 元素之間是存在著某 些不匹配, 原因是X M L 元素比關(guān)系具有更多的靈活性。 一種關(guān)系是由固定數(shù)量的 列組成, 并且每個列是一個數(shù)據(jù)項組成, 但是一個X M L 元素可以包含任意數(shù)量的 子元素或者屬性, 并且每個子元素可能包含不止一個數(shù)據(jù)項。 可以 看到關(guān)系可以 很容易的被X M L 元素表示出來, 但是把任意一個X M L 文檔中的數(shù)據(jù)導(dǎo)入到關(guān)系型 數(shù)據(jù)庫中將是很難的。 這也許要修改關(guān)系型模式, 以便在關(guān)系數(shù)據(jù)庫中存儲比平 常還要多的數(shù)據(jù)結(jié)構(gòu)來表示X M L 文檔中的元素。 例如, 為了獲取具有相同元素類 型的子元素的多次出現(xiàn)位置,可能有必要創(chuàng)建一個獨立的表來獲取這個數(shù)據(jù)集, 并且通過外鍵的方式把它鏈接到原有的關(guān)系上。 這可能增加關(guān)系型數(shù)據(jù)庫的復(fù)雜 度。 使用關(guān)系數(shù)據(jù)庫的一個優(yōu)點是復(fù)雜的查詢可以用 S Q L來寫,S Q L是關(guān)系型 D B M S的標準查詢語言,對它的研究和優(yōu)化己經(jīng)十分成熟了。從 S Q L語句得到的 結(jié)果集可以 被格式化為X M L 文檔, 為一 些基礎(chǔ)數(shù)據(jù)提供多個視圖。 X M L 最擅長表 示樹型數(shù)據(jù),S Q L 最擅長表示數(shù)組型數(shù)據(jù)。 特別的,當多個應(yīng)用程序在某個關(guān)系 數(shù)據(jù)庫上需要各自不同的視圖時是十分有用的。 使用關(guān)系型數(shù)據(jù)庫的其它優(yōu)點還包括它容易與其它關(guān)系型數(shù)據(jù)庫的互操作 能力、 精確的事務(wù)管理和恢復(fù)機制以及大量工具對它的支持。 在某個關(guān)系數(shù)據(jù)庫 必須同其它關(guān)系型數(shù)據(jù)庫進行互操作應(yīng)用程序訪問時, 使用到關(guān)系數(shù)據(jù)庫的X M L 接口 就比 較合適 lal 。 X M L的優(yōu)點就是它的結(jié)構(gòu)比關(guān)系型數(shù)據(jù)庫中使用的關(guān)系更具有表現(xiàn)力。一種 關(guān)系是一個無序元組集合, 集合中每個元組有一個固定的屬性。 一個X M L 元素的 結(jié)構(gòu)要比關(guān)系的結(jié)構(gòu)更有表現(xiàn)力, 因為它可以包含其它元素, 并且允許它們變化 順序和擁有屬性, 而且可以包含具有相同元素類型的多個元素, 這使得它更容易 表示復(fù)雜的數(shù)據(jù)【 川 。 總的來說X M L 和關(guān)系數(shù)據(jù)庫各有擅長, 所以 揚長避短是十分重要的。 數(shù)據(jù)從 一種形式轉(zhuǎn)換到另一種形式, 完全是看使用者的要求。 所以靈活的把數(shù)據(jù)一種模 式轉(zhuǎn)到另一種模式是十分重要的。 關(guān)系 型數(shù)據(jù)庫中的內(nèi)容轉(zhuǎn)換到X M L 是十分方便的, 但X M L 到關(guān)系型數(shù)據(jù)庫的 轉(zhuǎn)換卻是非常難的。 D T D 和X M I. S c h e m a 是目 前十分流行用來驗證X M L 文檔有效 性的規(guī)范, 而且也有許多工具已經(jīng)實現(xiàn)了這兩個規(guī)范。 如果有一個關(guān)系數(shù)據(jù)庫模 式同某個 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 文檔就能夠比較容易的轉(zhuǎn)到那個關(guān)系數(shù)據(jù)庫的模式中。 所以把X M L 文檔轉(zhuǎn)換到 關(guān)系數(shù) 據(jù)庫就可以 分 兩步走, 第一 步 先把一 個D T D 或X M L S c h e m a 轉(zhuǎn) 換到關(guān)系數(shù)據(jù)庫模式,第二步再把 X M L數(shù)據(jù)轉(zhuǎn)入關(guān)系數(shù)據(jù)庫中。但為什么選擇 X M L S c h e m a而不是D T D作為第一步轉(zhuǎn)換的 選擇呢,下面一節(jié)是來闡述這個問 題 的。 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的控制文檔結(jié) 構(gòu)的機制, 并且允許基于X M L 語法指定的標記結(jié)構(gòu)和限制。 它要比D T D 提供更豐 富的數(shù)據(jù)類型集, 允許用戶生成他們自己的 數(shù)據(jù)類型,允許對元素、 屬性、 數(shù)據(jù) 類型定義的繼承。雖然X M L S c h e m a 是一個十分有用的語言,但是它也是一個復(fù) 雜 的 語 言 u se 下面就從幾個方面談一談X M L S c h e 。 比D T D 優(yōu)勢的地方: 1 .豐富的數(shù)據(jù)類型支持 這是X M L S c h e m a 最大的優(yōu)點之一。 D T D 中幾乎沒有數(shù)據(jù)類型的定義。而 在 X M L S c h e m a中,卻能夠知道一個元素或者屬性的內(nèi) 容是字符串、整數(shù)、 布爾數(shù)、浮點數(shù)或是其它任何一種類型,這是一個很大的優(yōu)勢。從屬性中讀 取正確的數(shù)據(jù)類型,并且在應(yīng)用處理之前把字符串轉(zhuǎn)換成合適的數(shù)據(jù)類型。 利用 X M L S c h e m a的功能在模式中指定元素內(nèi)容和屬性值的數(shù)據(jù)類型,應(yīng)用 程序可以使用有效性驗證組件X M L S c h e m a 構(gòu)造處理器, 這個組件不僅可 以保證文檔是有效的,而且保證了其中的信息和預(yù)期的數(shù)據(jù)類型相匹配。符 合 X M L S c h e m a構(gòu)造處理器可以確保我們輸入到應(yīng)用程序中的數(shù)據(jù)在正確的 類型范圍之內(nèi),從而使得我們不用自己編寫程序代碼來完成這項任務(wù)。 X M L S c h e m a 的功能有助于減小使用X M L 標記文檔和數(shù)據(jù)之間的鴻溝。可 以在X M L 文檔中引入日期,數(shù)字,甚至可以定義自己的數(shù)據(jù)類型貨幣,等等 類型,由于數(shù)據(jù)有了更多的類型,我們就可以使用專門創(chuàng)建的搜索引擎來搜 索X M L 文檔中的 特殊類型的數(shù)據(jù)。 X M L S c h e m a 還可以利用簡單數(shù)據(jù)類型和其它的復(fù)雜類型來構(gòu)造自己的復(fù) 雜類型, 這有點像面向?qū)ο蠓椒ㄖ袛?shù)據(jù)類型和結(jié)構(gòu)繼承的機制來生成可復(fù)用 的代碼段。 2 .內(nèi)容模型的支持 D T D的內(nèi) 容模型是很弱的,只允許我們限制文檔的次序或者選擇列表, 而不能用來驗證混合內(nèi)容模型。文檔元素只能包含 “ 零或一”、“ 零或多 個”、“ 一個或多個”。而另一方面, X M L S c h e m a 考慮到了更復(fù)雜和靈活的 內(nèi)容模型,可以用它來驗證混合內(nèi)容的有效性,也可以用它來指定元素出現(xiàn) 的確切次數(shù),還可以 用它來為元素組命名。 3 .結(jié)構(gòu)的多樣性 X M L S c h e m a 在內(nèi)容模型中可以控制順序和嵌套。還可以使用正則表達式 來指定某種的形式, 用以檢查元素的內(nèi)容或?qū)傩灾档淖址蛄惺欠穹咸囟?樣式。 4 可擴展的模式 D T D 作為描述X M L 的語言自 身卻不是可以擴展的。 而X M L S c h e m a 是用X M L 書寫的,所以它繼承了X M L 的可擴展性。在可擴展性方面,主要表現(xiàn)為:在 一個模式中復(fù)用另一個模式部分功能的能力; 定義在不同模式中復(fù)用復(fù)雜結(jié) 構(gòu)的能力;從己有數(shù)據(jù)類型出發(fā)制定自己的新數(shù)據(jù)類型的能力;在一個文檔 實例中引用多個模式的能力。我們可以更容易的共享標準的詞匯,可以依據(jù) 我們的要就修改己經(jīng)存在的模式而不必每人都從頭寫起。 從以上比較可以發(fā)現(xiàn), X M L S c h e m a 數(shù)據(jù)類型的多樣性和對內(nèi)容模型的有力支 持, 這可以保證更精確和更有效的描述某個X M L 文檔。 這非常有利于轉(zhuǎn)換到關(guān)系 數(shù)據(jù)庫模式,因為關(guān)系數(shù)據(jù)庫中一般也有很多特有的類型,它們同 X M L S c h e m a 提供的基礎(chǔ)類型十分相似, 這可以有效的保留數(shù)據(jù)的一些固有的特性。 雖然可擴 展性也不是關(guān)系的 特長, 但關(guān)系也并不象D T D 那樣不可 擴展, 只是相對X M L S c h e m a 而言不是十分方便。 通過X M L S c h e m a 與D T D 模式的比較,可以得出在轉(zhuǎn)換中選擇X M L S c h e m a 要 比選擇D T D ,更能保證數(shù)據(jù)的特性,更方便轉(zhuǎn)換,得出的關(guān)系數(shù)據(jù)庫模式更能符 合數(shù)據(jù)原有的意思。 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 的構(gòu)造處理器。在這個組建中不但提供了對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文檔的) 。 這些組件在轉(zhuǎn)換時可以給出許多幫助,例如在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 組 件就會對轉(zhuǎn)換有所幫助。 關(guān)系數(shù)據(jù)庫選擇微然公司的S Q L S e r v e r 2 0 0 0 .( 后 面簡稱S Q L 2 0 0 0 ) ,主要 是因為它是一個比較流行的數(shù)據(jù)庫系統(tǒng),而且它支持絕大多數(shù)數(shù)據(jù)庫方面的操 作。并且它用起來對系統(tǒng)的要求不是很高, 而且它也提供了某些對X M L 的支持。 S Q L 2 0 0 0 提 供 一 種 機 制 可以 容 易 地 和高 效 地 變 換 關(guān) 系 模 式 到 一 個 特定X M L 語言 ( 例如, X M L S c h e m a ) , 用 來 把 數(shù) 據(jù) 傳 送 和 返 回 關(guān) 系 m 1 第三章把X M L S c h e m a 模式中的主要組件 轉(zhuǎn)化成數(shù)據(jù)庫模式的一般研究 這章主要討論的內(nèi)容是針對在轉(zhuǎn)換中該如何處理 X M L S c h e m a模式中的主要 組件。先從一個簡單X M L S c h e m a 模式分析,然后依次討論了 每個主要組件在轉(zhuǎn) 換時該如何處理。 3 . , 分析一個簡單的X M L S c h e m a 模式 為了討論X M L S c h e m a 模式到關(guān)系數(shù)據(jù)庫模式的轉(zhuǎn)換, 讓我們考慮例 1 . 1 . 2 . 1 給出的X M L 文檔。 它可能是描述了一個在美國發(fā)生的產(chǎn)品定購和付款應(yīng)用產(chǎn)生購 買 訂單。 而它可能的 一個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 來控制某個屬性是否需要出現(xiàn),或者僅僅是可選的。 1 .設(shè)置u s e 為r e q u i r e d , 就代表這個屬性它必須出現(xiàn)。 如: “ “ 2 .設(shè)置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 屬性中設(shè)置p r o h i b i t e d 來阻止這個屬性在元素中出現(xiàn)。 如 : “ “ 在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 屬性必須只出現(xiàn)一次,但是它可以取任何值 R e q u i r e d 1 0 9屬性必須只出現(xiàn)一次,但是它的值必須為1 0 9 O p t i o n a l 屬性可能出現(xiàn)一次,但它可以取任何值 O p t i o n a l 1 0 9屬性可能出現(xiàn)一次,如果它有值,那么必須是 1 0 9 ;即使不出現(xiàn),它的值也是 1 0 9 O p t i o n a l 1 0 9屬性可能出現(xiàn)一次,如果它沒有出現(xiàn),那么它 的值是1 0 9 ,否則就是給出的值 p r o h i b i t e d 屬性一定不能出現(xiàn) 表 3 . 4 . 1 在轉(zhuǎn)換過程中,由于屬性是簡單類型,所以它也可以按照簡單類型元素那樣 處理。即 是原子類型的屬性, 可以在元素表中創(chuàng)建一個字段。 字段名可以根據(jù)前面的分析 的那樣,以“ a t t r”為 前綴加上屬性名稱。 是列表類型的 屬性, 需要創(chuàng)建一個表來存儲這個屬性值。 表的名稱和結(jié)構(gòu)可 以參照前面提到方法建立, 只不過把 “ 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 是聯(lián)合類型, 也是在元素表中增加一個n v a r c h a r ( 2 5 5 ) 字段, 名稱為“ a t t r _ 屬性名稱” 。 再來看一看,轉(zhuǎn)換過程中, 系數(shù)據(jù)庫模式該怎么辦: Use fixed defaultRequired - I- 遇到 屬 性聲明 使用u s e , f i x e d , d e f a u l t 時, 關(guān) 轉(zhuǎn) 換時 采 j fl 亙 h )y 叢- 舀 一一一 屬性類型為原子和聯(lián)合類型:根據(jù)前面給出的 方法,創(chuàng)建一個屬性字段,并設(shè)定它為 “ N O T N U L L “ . r e q u i r e d 1 0 9 屬性類型為列表類型:為含有這個屬性的元素 建立相關(guān)的屬性表。但在關(guān)系數(shù)據(jù)庫中沒有什 么有效方法來保證屬性表的外鍵值包含所有的 元素表的主鍵值??赡茉趶娬{(diào)必須要有這個屬 性的情況下,把列表類型的屬性直接存入一個 n v a r c h a r 2 5 5 ) 的字段可能是比較好的方法。 在這種情況下, 不管是原子, 聯(lián)合和列表類型, 都是以下兩種方法: 1 .在元素表中創(chuàng)建一個字段,給出缺省值為 1 0 9 。 并建立觸發(fā)器保證不能修改這個字段。 2 .在元素表中不創(chuàng)建相關(guān)屬性字段, 但利用元 素表創(chuàng)建一個視圖, 包含這個屬性名稱, 并 月給它賦一個給出的固定值,在這里為 “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 方法一,需要占用額外的空間,而且在數(shù)據(jù)庫 模式除了用觸發(fā)器,還不能控制對該字段的賦 值,事實上賦不是 f i x e d的值在這種情況下是 不允許的。 方法二,節(jié)省空間,也能控制賦值情況。 推薦第二種方法。 屬性類型為原子和聯(lián)合類型:創(chuàng)建一個屬性字 段,并設(shè)定它可以 為 “ N U L L % 屬性類型為列表類型:為含有這個屬性的元素 建立相關(guān)的屬性表。 同“ r e q u i r e , 1 0 9 , 一 ” 給出的方法一基本一樣, 但觸發(fā) 器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論