楊芳萍
摘 要:隨著互聯(lián)網(wǎng)技術(shù)與數(shù)據(jù)庫技術(shù)的不斷發(fā)展和相互結(jié)合,越來越多的用戶需要訪問在線數(shù)據(jù)庫來獲取各種信息,在該過程中,用戶要對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢。因此,用戶就必需要掌握一定的結(jié)構(gòu)化查詢語言SQL,而且還要對數(shù)據(jù)庫模式有一個(gè)認(rèn)識和了解。但事實(shí)上,多數(shù)用戶并不會使用結(jié)構(gòu)化查詢語言,也不了解數(shù)據(jù)庫模式。所以,便產(chǎn)生了一個(gè)很自然的用戶需求——數(shù)據(jù)庫支持基于關(guān)鍵字的查詢,文章主要就是對數(shù)據(jù)庫支持基于關(guān)鍵字的查詢進(jìn)行簡要的分析和探討。
關(guān)鍵字:查詢;SQL;模式圖;關(guān)鍵字;簡化子樹
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:2095-1302(2014)02-0078-02
0 引 言
在計(jì)算機(jī)應(yīng)用領(lǐng)域中,由專業(yè)人員實(shí)現(xiàn)對數(shù)據(jù)庫查詢的編程技術(shù),我們就以關(guān)系數(shù)據(jù)庫進(jìn)行數(shù)據(jù)處理來舉例說明,大多數(shù)情況下都使用結(jié)構(gòu)化查詢語言SQL(Structured Query Language)語言,SQL語言是一種在關(guān)系數(shù)據(jù)庫中定義和操縱數(shù)據(jù)的標(biāo)準(zhǔn)語言,其最主要、最核心的部分就是查詢功能。當(dāng)針對某一個(gè)數(shù)據(jù)庫執(zhí)行查詢時(shí),系統(tǒng)按照特定的組合、條件表達(dá)式或次序進(jìn)行檢索,依此用來返回我們所要尋找和感興趣的數(shù)據(jù)信息。
1 查詢舉例
設(shè)有一個(gè)SPJ數(shù)據(jù)庫,包括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)的紅色零件的工程號JNO”的數(shù)據(jù)信息,那么,可以使用以下一種SQl語句來實(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ù)庫,就必須使用SQL語句在數(shù)據(jù)庫上查詢,那么該系統(tǒng)就要求用戶了解數(shù)據(jù)庫模式的基本知識,而且還要求用戶能夠熟練、靈活的使用SQL語句。但在實(shí)際的操作過程中,我們發(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)鍵字查詢
一個(gè)關(guān)鍵字查詢其實(shí)就是一個(gè)集合K,其查詢結(jié)果就是一個(gè)給定的數(shù)據(jù)圖G的一個(gè)子樹T,那么T就是給定集合K的簡化形式,簡而言之,T包含了K,但不會有T的子樹包含K。 所有的關(guān)鍵字查詢技術(shù)都是把我們定義好的關(guān)系數(shù)據(jù)庫當(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的簡化,也就是簡化子樹。簡化子樹的生成主要有兩種方法:“基于數(shù)據(jù)圖的方法”和“基于模式圖的方法”。
2.2 基于數(shù)據(jù)圖的方法
數(shù)據(jù)庫關(guān)鍵字查詢技術(shù)的大多數(shù)研究都是采用了基于數(shù)據(jù)圖的方法來生成簡化子樹。這種方法就是對數(shù)據(jù)圖直接處理,從中枚舉簡化子樹,首先,把數(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à)最小的簡化子樹。
2.3 基于模式圖的方法
利用數(shù)據(jù)庫模式創(chuàng)建連接表達(dá)式,再在DBMS上執(zhí)行連接表達(dá)式對應(yīng)的SQL語句得到結(jié)果,具體的步驟為:第一步,枚舉所有可能包含查詢結(jié)果的連接表達(dá)式,在枚舉連接表達(dá)式時(shí)會對該表達(dá)式的尺寸做一個(gè)限制。若表達(dá)式尺寸太大,就說明包含的連接數(shù)目很多,那么這兩個(gè)元祖之間會產(chǎn)生大的距離。那么,即使這兩個(gè)元祖之間存在連接關(guān)系,但是實(shí)際的意義不是很大;第二步,根據(jù)相應(yīng)的規(guī)則把第一步得到的連接表達(dá)式轉(zhuǎn)化為SQL的查詢語句,然后在對應(yīng)的數(shù)據(jù)庫上執(zhí)行,要么SQL語句直接在DBMS上執(zhí)行,要么在中間件上執(zhí)行SQL語句,而中間件位于RDBMS層之上。因?yàn)橐幚泶罅康年P(guān)系代數(shù)表達(dá)式,所以許多研究都采用基于中間件的方法。
3 結(jié) 語
越來越多的用戶需要通過互聯(lián)網(wǎng)訪問在線數(shù)據(jù)庫來獲取信息。因此,本文主要針對數(shù)據(jù)庫關(guān)鍵字查詢技術(shù)做了一個(gè)簡單的分析和介紹,主要包括的內(nèi)容有數(shù)據(jù)庫關(guān)鍵字查詢技術(shù)的核心思想,緊接著引出了關(guān)鍵字查詢的兩類方法,分別是基于數(shù)據(jù)圖的方法和基于模式圖的方法,并對這兩類方法做了介紹,并比較了各自的優(yōu)缺點(diǎn),解決了傳統(tǒng)意義上的數(shù)據(jù)庫查詢技術(shù)所遇到的問題,具有一定的理論和實(shí)踐價(jià)值。
參 考 文 獻(xiàn)
[1] 薩師煊, 王珊 . 數(shù)據(jù)庫系統(tǒng)概論(第三版)[M] . 高等教育出版社,2000.
[2] 張坤龍. 數(shù)據(jù)庫關(guān)鍵字搜索的預(yù)處理新技術(shù)研究 [D] . 北京:中國人民大學(xué). 2005 .
[3] 林子雨,楊冬青,王騰蛟,等. 基于關(guān)系數(shù)據(jù)庫的關(guān)鍵詞查詢[J] . 軟件學(xué)報(bào),2010 (10):2454-2478.
[4] 王珊,張俊, 彭朝暉,等. 基于本體的關(guān)系數(shù)據(jù)庫語義檢索[J] . 計(jì)算機(jī)科學(xué)與探索,2007(1):63-82.
[5] 朱凡微,吳明暉,金蒼宏,等. 基于關(guān)鍵字的數(shù)據(jù)庫搜索研究綜述[J].計(jì)算機(jī)應(yīng)用研究,2008(11):44-48.
Research on keywords search technology in database
YANG Fang-ping
(School of Information Engineering, Longdong University, Qingyang 745000, China)
Abstract: With the development and interaction of IOT and database technology, more and more users need to access online databases to get all kinds of information. In this process the data in the database is need to be queried, therefore, the user should master some structural query language of SQL, and also have some knowledge and understanding about the database schema. But in fact, most of users can not use structural query language or understand the database schema. So, a very natural user requirement of querying based on keywords in database is generate. The keyword-based queries in database are briefly analyzed and discussed.
Keywords: query; SQL; mode pattern; keyword; simplified sub-tree