毛金玲



摘要:實現基于關系數據庫的信息(關鍵字)檢索,將使用戶不需要任何SQL語言和底層數據庫模式的知識,就像使用搜索引擎一樣來獲取數據庫中的相關數據。關系數據庫的關鍵字檢索技術已經成為目前數據庫領域中的一個研究重點。
關鍵詞:關系數據庫? 關鍵詞查詢? 數據庫模式
1 系統總體設計
面向關系數據庫的關鍵字查詢系統主要有五部分組成,首先要分析輸入的關鍵字,有幾個關鍵字組成;然后調用全文索引,查看這些關鍵字所屬,是表名、屬性名還是屬性值;接下來查詢數據庫的模式圖,從而得到幾種可能的元組連接樹;最后將相應元組連接樹轉化成SQL語句查詢關系數據庫,生成查詢結果,以二維表格形式顯示。由上述內容可得系統流程圖如圖1所示。
2 數據庫設計
本系統為面向關系數據庫的關鍵字查詢系統,在實驗中本文選取了IMDB 數據集,為了進行實驗,將數據集整理為以下七個表數據結構。
實驗數據集(電影信息數據庫):Actor(演員表)、Consume(設計師)、Director(導演信息)、Business(投資)、Editor(編輯)、Color(顏色信息)、Keyword(關鍵詞)。
本數據庫抽象的數據庫關系E-R圖如圖2所示。
圖2為數據庫關系的E-R圖。在圖中,黃色鑰匙為每個表的主鍵,黑線部分為表之間外鍵關系,設定除business表外每個表都有一個外鍵mvname,而在抽象出的關系圖中,以mvname和episode為數據庫每個表之間最重要的聯系,即表之間關系以mvname和episode屬性為聯系。
3 數據庫索引設計
在關系型數據庫中,例如Oracle、DB2、SQL Server 和MySQL等都提供了對關鍵字查詢的擴展,可以為數據庫的表屬性建立全文索引,這為實現關系數據庫的關鍵字查詢提供了基礎。已有多個關系數據庫的關鍵字查詢系統被開發出來,BANKS、DISCOVER、IR-style、SEKKER等等。然而在已有的系統中,多數系統僅僅支持數據庫中文本屬性的查詢,卻忽略了對數據庫中元數據的處理。如果用戶給定的查詢關鍵字是數據庫中的元數據,則有些系統就不能夠滿足用戶的查詢需求,或者查詢結果不夠精確,返回大量與查詢不相關的結果。SEKKER雖然提出了支持數字屬性和元數據的查詢,但是卻在查詢語言上做了限定,只能通過給定的查詢語言格式進行查詢,所以系統的靈活性不高。
關鍵字{“Color”“Director”}的索引結構如表1所示。
表1? 關鍵字{“Color”“Director”}的索引結構
■
4 數據庫模式圖的構建
在關系數據庫中,關鍵字是通過主外鍵進行連接的,因此關系數據庫采用的數據模型,即為基于模式圖建模。模式圖的節點對應數據庫中的關系,邊表示關系間的主外鍵約束。
模式圖(Schema Graph,GS)是將關系數據庫的模式信息定義為模式圖GS(V,E),其中V表示模式圖中的節點,與數據庫中的關系一一對應,E表示模式圖中的邊,將具有主外碼約束相對應的關系連接起來,關系Ri和關系Rj中的主外鍵關系對應模式圖一條邊Ri→Rj。
本文數據庫對應的數據庫模式圖如圖3所示。
5 關鍵字檢索設計
關鍵字檢索技術主要是,通過分析用戶輸入的關鍵字所屬類型來確定元組連接樹,從而轉換成相應的SQL語句來查詢關系數據庫。如果用戶輸入的關鍵字都是表名,則將幾個表自然連接后輸出即可;若用戶輸入的關鍵字有表名、屬性名,那么將屬性列加到表中輸出就是用戶所檢索的內容;若用戶輸入的關鍵字中有屬性值,則將屬性值對應屬性與表或屬性列連接,根據屬性值對應元組來顯示查詢結果。由此可見,對于相同的關鍵字,如果它不止一種所屬值,那么它就會對應不同的SQL語句。
6 結果生成設計
在本文中,將查詢結果定義為元組連接樹。給定一個數據庫模式圖GS,一個元組連接樹T是一棵元組樹。其中,T中的每一條邊(ti,tj)(ti∈Ri,tj∈Rj)滿足以下兩個要求:①(Ri,Rj)∈GS,②ti∞tj∈Ri∞Rj。同時這些元組連接樹滿足以下條件:①完整性:用戶提交的所有關鍵字均出現在元組連接樹上;②最小性:從元組連接樹中移除任何元組后的元組連接樹都不具有完整性。
元組連接樹生成規則偽代碼如下:
Data Structure:
Result:Generate JTT
1:Known set of JTT by GS((Ri,Rj)∈GS)
2:Known Keyword{k1,k2}
3:if(k1=ti,k2=tj(ti∈Ri,tj∈Rj))
4:generate(ti,tj)
5:end if
7 結束語
本文將生成的關系圖轉換為SQL查詢,通過執行相應的查詢,進而得到每個關系路徑對應的查詢結果。因為關系圖是按照關聯度進行返回的,但是這樣關聯度僅僅的將關鍵字映射在關系的層面上,為了使查詢結果更加明確,本文將結果進行細化,將關鍵字映射到關系層面。為了避免大量冗余結果的產生,為了更精確的滿足用戶的查詢需求,將與關鍵字關系有關系的結果返回給用戶即可。
參考文獻:
[1]林子雨,楊冬青,王騰蛟,張東站.基于關系數據庫的關鍵詞查詢[J].軟件學報,2010(10).
[2]林子雨,鄒權,賴永炫,林琛.關系數據庫中的關鍵詞查詢結果動態優化[J].軟件學報,2014(03).
[3]李慧穎,瞿裕忠.基于關鍵詞的RDF數據查詢方法[J].東南大學學報(自然科學版),2010(02).