李玉翠
(西安歐亞學(xué)院信息工程學(xué)院,陜西 西安 710065)
本文主要研究關(guān)系模型和XML模型的轉(zhuǎn)換問題。首先分析關(guān)系模型和XML模型的差異,并對兩種模型進(jìn)行數(shù)學(xué)建模;然后實現(xiàn)一種將關(guān)系模式轉(zhuǎn)換為XML Schema的算法,最后,介紹數(shù)據(jù)轉(zhuǎn)換算法在異構(gòu)數(shù)據(jù)集成中的應(yīng)用。
關(guān)系模式是對關(guān)系的描述。關(guān)系型數(shù)據(jù)庫中的信息是完全結(jié)構(gòu)化的,它無法表達(dá)一些層次性質(zhì)的數(shù)據(jù)。而XML文檔表達(dá)的是半結(jié)構(gòu)化的信息,特別適合表達(dá)層次型的數(shù)據(jù)。正是關(guān)系型數(shù)據(jù)庫和XML文檔存在有結(jié)構(gòu)化和半結(jié)構(gòu)化的區(qū)別,導(dǎo)致了兩者之間進(jìn)行模式轉(zhuǎn)化的困難。在本文中論述了一種基于語義的轉(zhuǎn)換算法,整個算法實現(xiàn)的前提是由具體的關(guān)系數(shù)據(jù)庫提取出關(guān)系模式,關(guān)系模式轉(zhuǎn)換為XML Schema。
關(guān)系模式是算法的輸入。本文在討論時,假設(shè)關(guān)系模式已經(jīng)得到。
(1)算法輸入:關(guān)系模式
在定義關(guān)系模式前,假設(shè)已存在表名集合 ,列名集合 和原子數(shù)據(jù)類型 。
定義1(關(guān)系模式)設(shè)R代表關(guān)系模式,則有關(guān)系模式定義R是四元組,R=(T,C,F,△),其中:T代表中的一個有限集合;C是一個函數(shù),表示一個特定到一組的映射;F代表對于一個到其類型的定義的映射;△是三元組(PK,F(xiàn)K),表示關(guān)系模式的約束集合。該定義建立在文獻(xiàn)[1]的基礎(chǔ)上。
例1:對于表Tab_Teacher(Name,Age,Salary),Tab_Student(Name,Advisor,Course-Name),Tab_Course(Name,TeacherName),其中,下劃線標(biāo)識的為主鍵。
由定義1,關(guān)系模式表示為R=(T,C,F,△),其中
定義2根據(jù)數(shù)據(jù)庫中的不同組成部分,數(shù)據(jù)庫轉(zhuǎn)換后生成的XML schema可以用5種方式進(jìn)行描述,其中,設(shè)RSl是對關(guān)系數(shù)據(jù)庫中數(shù)據(jù)庫元素的模式描述,RS2是對關(guān)系表元素的模式描述,RS3、RS4和RS5分別是對表中字段為主鍵、外鍵和非主外鍵的字段的模式表示。
圖1 關(guān)系模式生成XML Schema
(2)算法的輸出:抽象的XML Schema(XSchema)
由于算法的目的是實現(xiàn)一種將關(guān)系模式轉(zhuǎn)換為XML Schema,算法較好地保留了關(guān)系模型的各種語義約束;并不是要找出所有的XML Schema語法規(guī)則與關(guān)系模式的對應(yīng)關(guān)系,所以算法只是對使用到的XML Schema相關(guān)語法作相應(yīng)的建模。
在利用前面定義的基礎(chǔ)上,本文實現(xiàn)了一種將關(guān)系模式轉(zhuǎn)換為XML Schema的算法,根據(jù)數(shù)據(jù)庫中的每張表的相互關(guān)系建立關(guān)系模式圖,通過深度優(yōu)先算法實現(xiàn)關(guān)系數(shù)據(jù)庫模式向XML模式的轉(zhuǎn)換。算法的具體描述如下:
2.1 掃描數(shù)據(jù)庫建立關(guān)系模式圖,各結(jié)點信息如下:
庫結(jié)點:<0,db_name>
表結(jié)點:
字段結(jié)點:<2,r_name>
2.2 DFS(graph g)//深度優(yōu)先遍歷模式圖,為結(jié)點編號
2.3 依次取結(jié)點g.adjlist[v]
If(g.adjlist[v].flag==2)//如果是字段結(jié)點
表1 Teacher表
表2 Student表
if(is_pK)按RS3模式轉(zhuǎn)換;
else
……
如表1、表2所示:
在這兩個關(guān)系表中,Teahcer表中tno為主鍵,Student表中sno和tno的組合為主鍵,tno項為表Student的外鍵。利用前面介紹的算法將表1、表2中的關(guān)系模式生成XML Schema如圖1所示:
在異構(gòu)關(guān)系數(shù)據(jù)庫中數(shù)據(jù)查詢的主要手段是使用查詢語句,在實際情況中,大部分的數(shù)據(jù)庫中都使用一個主表加多個輔助表的方式全面描述一個事物的信息。實際查詢時需要將這些相關(guān)的信息完全抽取出來,在這種情況下,查詢后的結(jié)果視圖會產(chǎn)生基本信息的大量冗余。
本文通過ODBC編程,數(shù)據(jù)庫采用SQL server2000。通過上述算法實現(xiàn)了關(guān)系數(shù)據(jù)模式向XML模式的整體轉(zhuǎn)換,保證了關(guān)系模式中信息的完整性,較好地保持了數(shù)據(jù)庫中原有的語義約束,起到保留語義關(guān)聯(lián)的作用,突出表達(dá)了鍵約束關(guān)系。
[1]Lee,D.,Mani,M.,Chiu,F(xiàn).,and Chu,W., “NeT & CoT:Translating relational schemasto XML schemasusing semantic constraints”, Proc.ofCIKM 2002, pages 282-291.
[2]Dongwon Lee, Murali Mani et.al., Nesting-based Relational-to-Xml Schema Translation,Int'l Conf.Workshop on the Web and Database(WebDB), SantaBarbara, CA,May 2001.
[3](美)麥克勞夫林(Mclaugblin,B.)著;李二勇,祁力等譯。Java與XML數(shù)據(jù)綁定。北京:中國電力出版社,2002.