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

關系模式向DTD轉化方法研究

2021-12-12 10:09:55劉煒
科技信息·學術版 2021年32期

劉煒

摘要:XML已經成為Web上數據交換的標準,然而絕大多數的商業數據仍然存儲在關系數據庫系統中。因此需要將關系數據發布XML文檔的形式。發布過程中一個最關鍵的就是進行模式轉換。提出了一種算法來實現關系模式向DTD的轉化。最終通過SQL查詢將關系數據發布XML文檔的形式。最后通過一組關系表對該算法進行了具體的實現。

關鍵詞:數據交換;關系模式;模式轉換;發布

1引言

隨著因特網的不斷發展,XML[1]作為Web上數據發布和交換的標準迅速地出現并且流行起來。XML具有層次性和自描述性,自然成為數據傳輸的首選。然而,另一方面,絕大多數的商業數據仍然存儲在關系數據庫系統(DBMS)中[2]。DBMS的可靠性和可擴展性使得它將來仍然會扮演著數據存儲的角色。因此,迫切需要在關系數據和XML文檔之間進行相互的轉換,如圖1所示。

在XML的發布過程中面臨著很多問題[3],首先,數據庫中的關系表是平面的,而XML文檔則是樹形的標記結構。其次,在關系表中很多完整性約束在轉換過程中也不能被丟失[4]-[6]。整個映射過程可以分成兩部分,第一部分稱為模式映射,也叫結構映射。是將關系模式轉化成XML的模式。XML的模式反映了XML文檔中標簽的結構。而標簽中的內容要由數據映射來解決。

本文提出了一種良好的算法將關系模式轉化成DTD。算法將現實世界中的關系分成了三類,運用上面的算法對這三類關系模型分別進行了轉化。利用這個算法可以以DTD為中介,并且實現了關系數據向XML數據唯一性的轉化。最后通過一組關系表對算法進行了具體實現。

2關系模式分類的相關定義

下面給出相關的定義,并將關系模式分成三類。

定義1:對于一個關系中的所有關系表,如果能夠存在一個關系表,它其中所有的屬性分別存在于其他的關系表中,那么我們稱這個關系表為根關系表。

定義2:如果一個關系中存在一個關系表,它的一部分屬性分別存在于其他所有的關系表中,而另一部分屬性為自身獨有的屬性,那么我們稱這個關系表為擴展的根關系表。

根關系表中的屬性都是連接屬性。而擴展的根關系表中除了連接屬性以外還有其他的屬性。在具有根關系表或擴展的根關系表的關系中,可以看出有一個“中心關系表”能夠連接所有其他的關系表。

下面我們將關系模式分成三類:分別是星形關系、直線型關系和樹狀關系。

定義3:對于一個關系中的若干關系表,如果其中有根關系表或擴展的根關系表,那么我們稱這些關系表為星形關系。如圖1所示

星形關系的特點是以一個關系表為中心,其他的關系表都與這個關系表連接。

定義4:對于一個關系中的若干關系表,如果表的數目大于或者等于4,而且不存在一個表為根關系表或擴展的根關系表,并且任何一個表只與不超過2個表相連接,那么我們成這樣的關系模式為直線型關系。如圖2所示

說明,在判斷直線型關系的時候必須考慮數目,如果小于或等于3個的話,那么即使符合上面的條件,也不是直線關系,而是星形關系。

定義5:對于若干個關系表,如果找不到一個表是根關系表或擴展的根關系表,并且其中至少有一個表與三個或三個以上的表相連接,那么我們稱這個關系為樹狀關系。如圖3所示

現實世界的關系類型中只有這三類關系模型,即使有看似復雜的關系模型,總能夠歸納為上面三種類型之一。因此我們對這三類關系模型分別進行轉化,就代表對整個關系模型進行了轉化。

3關系數據庫模式向XML轉化方法

下面我們分別就三類關系模式給出相應的轉化方法和具體的實現,然后總結出一套普遍適用的關系模式向XML模式轉化的算法。

3.1星形關系的轉化

這種類型的轉化方法很簡單,從上面我們定義來看,凡是小于或等于3個表的關系都是星形關系,而4個表以上則必須根據定義進行判斷。

3.1.1 轉化方法

第一步:把根關系表或擴展的根關系表的名稱作為XML文檔的根元素。

第二步:把根關系表中的屬性作為第1層子節點。寫出DTD為<!ELEMENT 根節點(子元素,子元素…….)>

第三步:將第一層子元素名分別作為下一層的根節點。然后進行DTD的書寫。一般格式為:

<!ELEMENT 子元素 (下一級子元素,下一級子元素)>。

這里的子元素都是連接元素,因此在書寫DTD時要將第三層葉子節點相應的連接屬性刪除。否則就會產生錯誤。可以看出星形關系由于其特殊的結構使得轉化后的XML樹也只有3層。

3.1.2具體轉化過程

這里列舉一個關系數據轉化XML的例子,這里我們不考慮關系的規范化的問題,也不考慮關系表實際含義的問題。

因為關系中表的數目是3個,因此判斷一定是星形關系。通過觀察可以看出表3是一個擴展的根關系表。可以按照星形關系轉化的方法進行轉化。首先確定XML文檔根元素為SC,也就是表3的名稱。因此可以寫出第一句<!ELEMENT SC(學號,課程號,成績)>。然后我們可以看出表3中的屬性學號和課程號分別連接著表1和表2。因此可以將學號和課程號做為第二層子節點。同時作為最下面一層葉子節點的父節點。另外,在書寫的時候要將表1和表2中的連接屬性刪去。完整的DTD如下:

3.2 直線型關系的轉化

定義6:將關系中每個關系表的一個屬性提取出來重新建立一個關系表稱為構造根關系表。

直線型關系轉化XML時需要構造根系表,否則任何一個關系表都能作為根元素,我們將構造的關系表的名稱作為XML的根元素,而構造根關系表中的屬性應當是第一層子節點。這些子節點再去連接相應的下一層葉子節點。可以預見。這種類型轉化后的XML文檔必定為3層樹型結構。

3.2.1轉化方法

第一步:將關系中每個關系表的主屬性提取出來重新建立一個新的根關系表,然后給這個新的關系表命名,以這個關系表的名字作為根元素,其屬性作為第一層次子元素。

第二步:因為這個構造的根關系表中的屬性都是連接屬性,因此可以根據連接屬性進行對應尋找下一層的節點。依次寫出DTD的內容。

3.2.2具體轉化過程

在上面表1,表2,表3的基礎上,我們增加了表4。

首先我們要構造出一個根關系表,令表名為學校信息,新的根關系表可以表示為:

學校信息(學號,課程號,成績,系),這是一個虛的關系表。然后可以寫出DTD的第一行定義為:<!ELEMENT 學校信息(學號,課程號,成績,系)>。限于篇幅,具體的DTD文檔我們就不再去書寫了。

3.3 樹型關系的轉化

樹型關系的轉化比較復雜。主要復雜在根節點的選擇上面。如果不加限制,那么任何一個表都可以作為根節點。

3.3.1轉化方法

第一步:分別計算出每個關系表能連接其他關系表的數目,將能連接數目最多的那個關系表的表名作為根元素。并且根據這種結構畫出相應的樹型結構。

第二步:以這個表為中心,寫出根元素和第一層的子元素。然后根據連接屬性依次向下書寫。方法和前面的一樣。

可以看出,這種轉化方法對XML樹狀結構的層數沒有限制。

3.3.2具體轉化過程

可以在上面4個表的基礎上增加一個表

五個表的關系如圖4所示

通過定義可以判斷是樹型結構,其中表1為根元素,然后根據連接屬性寫出整個DTD。第一行為:<!ELEMENT Student(學號,姓名,性別,年齡,系) >

3.4 具體的算法(包含三類關系類型)

這里我們用自然語言描述:(2,3,4步是并列的,不能同時執行,需要第1步進行判斷后執行)

第一步:判斷關系的類型

If (關系表的數目<4):為星形關系,直接轉向第四步

Else:判斷這一組關系表的類型(判斷方法見上面的講述)

if(星形關系),直接轉向第四步

else if(直線型關系),則直接轉向第三步

else(樹狀關系).則繼續執行(即執行第二步)

第二步:分別計算出每個關系表能連接其他關系表的數目,將能連接數目最多的那個關系表的表名作為根元素。并且根據這種結構畫出相應的樹型結構。

第三步:將關系中每個關系表的主屬性提取出來重新建立一個新的根關系表,然后給這個新的關系表命名,以這個關系表的名字作為根元素,其屬性作為第一層次子元素。

第四步:把根關系表或擴展的根關系表的名稱作為XML文檔的根元素。

第五步:在選定根元素之后,寫出第一DTD即<!ELEMENT 根元素(子元素,子元素…)>

第六步:根據每個表的連接屬性進行書寫。要注意連接屬性作為下面一層的表名,在寫屬性的時候要把這個連接屬性刪去,這樣可以寫出整個DTD。

第七步:根據DTD寫出XML的基本結構,然后依照關系表將標簽中的內容依次填上。

4 總結

這種方法的關鍵是如何確定每種關系類型的根元素。確定根元素之后就可以不同表之間的連接屬性進行轉化了。將現實世界的關系模型分成了3類。對其分別進行了討論,最后給出了一個算法。這種方法最大的優點就是能夠唯一地將關系模式轉化成XML數據模式。并且可以實現一切關系模式的轉化。保證了轉化的全體性,唯一性。

參考文獻:

[1]T. Bray et al.,“Extensible Markup Language (XML) third edition,” http://www.w3.org/TR/REC-xml.

[2]邱洋,岳昆,等. 利用緩存優化關系數據的XML發布[J]. 計算機研究與發展,2004,41(10):1082-1088.

[3]萬常選. 以XML文檔發布關系數據[J]. 計算機應用與軟件,2002,19(8):30-33

[4]Shanmugasundaram J,Shekita E,Barr R. Efficiently publishing relational data as XML documents[C]. Egypt:Proceeding of the26th International Conference on Very Large Databases,2000.

[5]Fernandez M,Tan W. Silk route:A framewok for publishing relational data in XML[J]. ACM Transactions on Database Systems,2002,27(4):438-493.

[6]Eisenberg A,Melton J. SQL/XML is making good progress[J].ACM SIGMOD Record,2002,31(2):101 - 108.

主站蜘蛛池模板: 亚洲美女一区| 日本AⅤ精品一区二区三区日| 久久特级毛片| 国产极品粉嫩小泬免费看| 成人午夜精品一级毛片| 亚洲第一成年人网站| 亚洲国产看片基地久久1024| 欧美激情综合一区二区| 久久99精品国产麻豆宅宅| 国产国产人免费视频成18| 欧美国产精品不卡在线观看| 亚洲日韩Av中文字幕无码| www精品久久| 亚洲欧美一区二区三区麻豆| 丁香亚洲综合五月天婷婷| 国产精品视频第一专区| 久久精品无码一区二区国产区| 欧美日韩午夜| 国产第一福利影院| 激情综合网激情综合| 国产喷水视频| 国产丰满大乳无码免费播放| 免费高清a毛片| 午夜精品福利影院| 99偷拍视频精品一区二区| 色偷偷一区二区三区| jizz国产视频| 国内精自视频品线一二区| a级免费视频| 免费高清毛片| 91小视频版在线观看www| 久久久久久午夜精品| 成人国产一区二区三区| 亚洲日韩每日更新| 国产综合亚洲欧洲区精品无码| 国产h视频在线观看视频| 精品人妻一区无码视频| 五月天综合婷婷| 99久久精品免费观看国产| 麻豆国产精品视频| 伊人久久精品无码麻豆精品| 国产va欧美va在线观看| 54pao国产成人免费视频| 九色在线观看视频| 国产亚洲精品97在线观看| 日韩成人在线一区二区| 青青青伊人色综合久久| 国产精品久久久久久久久| 天天色天天综合| 成人福利在线视频| 91免费片| 亚洲精品视频网| 国产精品成人观看视频国产| 欧美国产在线看| 色天天综合| 国产无码精品在线播放| 久视频免费精品6| 亚洲精品无码专区在线观看| 少妇精品在线| 中文字幕无码制服中字| 97国产精品视频自在拍| 国产在线精品美女观看| 青青青视频蜜桃一区二区| 久久久久人妻精品一区三寸蜜桃| 国产小视频在线高清播放| 中文字幕丝袜一区二区| 国产精品自在拍首页视频8| 9966国产精品视频| 亚洲日韩AV无码一区二区三区人| a欧美在线| 国产噜噜噜| 亚洲品质国产精品无码| 亚洲毛片一级带毛片基地| 国产视频欧美| 99视频在线观看免费| 美女亚洲一区| 国产午夜福利在线小视频| 国产成人亚洲精品色欲AV | 久久国产精品77777| 中文字幕人妻无码系列第三区| 美女扒开下面流白浆在线试听| 国产福利在线观看精品|