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