數(shù)據(jù)庫(kù)關(guān)鍵字查詢技術(shù)研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
在計(jì)算機(jī)應(yīng)用領(lǐng)域中,由專業(yè)人員實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)查詢的編程技術(shù),我們就以關(guān)系數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)處理來舉例說明,大多數(shù)情況下都使用結(jié)構(gòu)化查詢語(yǔ)言SQL(StructuredQueryLanguage)語(yǔ)言,SQL語(yǔ)言是一種在關(guān)系數(shù)據(jù)庫(kù)中定義和操縱數(shù)據(jù)的標(biāo)準(zhǔn)語(yǔ)言,其最主要、最核心的部分就是查詢功能。當(dāng)針對(duì)某一個(gè)數(shù)據(jù)庫(kù)執(zhí)行查詢時(shí),系統(tǒng)按照特定的組合、條件表達(dá)式或次序進(jìn)行檢索,依此用來返回我們所要尋找和感興趣的數(shù)據(jù)信息。
1查詢舉例
設(shè)有一個(gè)SPJ數(shù)據(jù)庫(kù),包括S、P、J、SPJ四個(gè)數(shù)據(jù)表,s供應(yīng)商表由SNO(供應(yīng)商代碼)、SNAME(供應(yīng)商姓名)、STATUE(供應(yīng)商狀態(tài))和CITY(供應(yīng)商所在城市)組成;P零件表由PNO(零件代碼)、PNAME(零件名)、COLOR(顏色)和WEIGHT(重量)組成;J工程項(xiàng)目表由JNO(工程項(xiàng)目代碼)、JNAME(工程項(xiàng)目名)和CITY(工程項(xiàng)目所在城市)組成;SPJ供應(yīng)情況表SNO(供應(yīng)商代碼)、PNO(零件代碼)、JNO(工程項(xiàng)目代碼)和QTY(供應(yīng)數(shù)量)組成。如果想要找到“沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào)JNO”的數(shù)據(jù)信息,那么,可以使用以下一種SQl語(yǔ)句來實(shí)現(xiàn)查詢:
SELECT JNO
FROM J
WHERE NOT EXISTS
(SELECT *
FROM SPJ
WHERE SPJ. JNO= J .JNO
AND SNO IN
(SELECT SNO
FROM S
WHERE CITY=‘天津’)
AND PNO IN
(SELECT PNO
FROM P
WHERE COLOR =‘紅色’));
從上面的例子中可知,若用戶要在線訪問數(shù)據(jù)庫(kù),就必須使用SQL語(yǔ)句在數(shù)據(jù)庫(kù)上查詢,那么該系統(tǒng)就要求用戶了解數(shù)據(jù)庫(kù)模式的基本知識(shí),而且還要求用戶能夠熟練、靈活的使用SQL語(yǔ)句。但在實(shí)際的操作過程中,我們發(fā)現(xiàn)大多數(shù)用戶對(duì)關(guān)系數(shù)據(jù)庫(kù)基本不了解,更談不上熟練地使用結(jié)構(gòu)化查詢語(yǔ)言SQL等知識(shí),所以,該SQL查詢不適合廣大用戶。隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,出現(xiàn)了以關(guān)鍵字查詢的數(shù)據(jù)庫(kù)技術(shù)。盡管數(shù)據(jù)庫(kù)關(guān)鍵字的查詢研究有很多代表性成果,但其查詢的核心思想都是基于圖和“簡(jiǎn)化子樹”的,所有的關(guān)鍵字查詢技術(shù)的研究都是從數(shù)據(jù)圖中找到最好的查詢結(jié)果樹。
2核心思想
2.1關(guān)鍵字查詢
一個(gè)關(guān)鍵字查詢其實(shí)就是一個(gè)集合K,其查詢結(jié)果就是一個(gè)給定的數(shù)據(jù)圖G的一個(gè)子樹T,那么T就是給定集合K的簡(jiǎn)化形式,簡(jiǎn)而言之,T包含了K,但不會(huì)有T的子樹包含K。
所有的關(guān)鍵字查詢技術(shù)都是把我們定義好的關(guān)系數(shù)據(jù)庫(kù)當(dāng)做一個(gè)數(shù)據(jù)圖G,圖G的節(jié)點(diǎn)是以元祖、關(guān)鍵字表示的。在我們進(jìn)行查詢時(shí),不同元祖間的連接是通過外鍵實(shí)現(xiàn),所以在它們之間就有一條邊存在。若一條元祖t有關(guān)鍵字k,那么t和k間就有連接存在。所以,一個(gè)關(guān)鍵字查詢的結(jié)果其實(shí)就是一個(gè)圖G的子樹,該子樹是圖G關(guān)于關(guān)鍵字K的簡(jiǎn)化,也就是簡(jiǎn)化子樹。簡(jiǎn)化子樹的生成主要有兩種方法:“基于數(shù)據(jù)圖的方法”和“基于模式圖的方法”。
2.2基于數(shù)據(jù)圖的方法
數(shù)據(jù)庫(kù)關(guān)鍵字查詢技術(shù)的大多數(shù)研究都是采用了基于數(shù)據(jù)圖的方法來生成簡(jiǎn)化子樹。這種方法就是對(duì)數(shù)據(jù)圖直接處理,從中枚舉簡(jiǎn)化子樹,首先,把數(shù)據(jù)圖看成一個(gè)帶權(quán)重的數(shù)據(jù)圖,并且假設(shè)數(shù)據(jù)圖已經(jīng)被物化;其次,利用數(shù)據(jù)圖中的節(jié)點(diǎn)(元組)和邊(元組之間的主外鍵關(guān)聯(lián))的權(quán)重,作為關(guān)鍵字查詢找到top-k個(gè)代價(jià)最小的簡(jiǎn)化子樹。
2.3基于模式圖的方法
利用數(shù)據(jù)庫(kù)模式創(chuàng)建連接表達(dá)式,再在DBMS上執(zhí)行連接表達(dá)式對(duì)應(yīng)的SQL語(yǔ)句得到結(jié)果,具體的步驟為:第一步,枚舉所有可能包含查詢結(jié)果的連接表達(dá)式,在枚舉連接表達(dá)式時(shí)會(huì)對(duì)該表達(dá)式的尺寸做一個(gè)限制。若表達(dá)式尺寸太大,就說明包含的連接數(shù)目很多,那么這兩個(gè)元祖之間會(huì)產(chǎn)生大的距離。那么,即使這兩個(gè)元祖之間存在連接關(guān)系,但是實(shí)際的意義不是很大;第二步,根據(jù)相應(yīng)的規(guī)則把第一步得到的連接表達(dá)式轉(zhuǎn)化為SQL的查詢語(yǔ)句,然后在對(duì)應(yīng)的數(shù)據(jù)庫(kù)上執(zhí)行,要么SQL語(yǔ)句直接在DBMS上執(zhí)行,要么在中間件上執(zhí)行SQL語(yǔ)句,而中間件位于RDBMS層之上。因?yàn)橐幚泶罅康年P(guān)系代數(shù)表達(dá)式,所以許多研究都采用基于中間件的方法。
3結(jié)語(yǔ)
越來越多的用戶需要通過互聯(lián)網(wǎng)訪問在線數(shù)據(jù)庫(kù)來獲取信息。因此,本文主要針對(duì)數(shù)據(jù)庫(kù)關(guān)鍵字查詢技術(shù)做了一個(gè)簡(jiǎn)單的分析和介紹,主要包括的內(nèi)容有數(shù)據(jù)庫(kù)關(guān)鍵字查詢技術(shù)的核心思想,緊接著引出了關(guān)鍵字查詢的兩類方法,分別是基于數(shù)據(jù)圖的方法和基于模式圖的方法,并對(duì)這兩類方法做了介紹,并比較了各自的優(yōu)缺點(diǎn),解決了傳統(tǒng)意義上的數(shù)據(jù)庫(kù)查詢技術(shù)所遇到的問題,具有一定的理論和實(shí)踐價(jià)值。