〔摘 要〕本文設計了一個基于B/S的圖書館自建特色數據庫,對其數據庫的構建和系統功能的設計進行了詳細的闡述。該系統可根據文獻的題名、作者、關鍵詞等,實現單條件檢索、多條件檢索、模糊檢索和跨庫檢索,提高專業文獻的檢索效率與信息資源利用率。
〔關鍵詞〕特色數據庫;B/S;檢索系統
〔中圖分類號〕G250.74 〔文獻標識碼〕C 〔文章編號〕1008-0821(2009)02-0109-03
Research and Implementation of the Self-building
Characterized Database Based on B/STang Haiping
(Library,Zhejiang Ocean University,Zhoushan 316000,China)
〔Abstract〕This paper designed the self-building characterized database based on B/S,then discussed the structure and system function of database in detail.This database could realize requirement of single condition,multi-condition,fuzzy retrieval and multi-database based on title,author,keywords etc.It improved the major literatures searching efficiency and use efficiency of information resource.
〔Key words〕characterized database;B/S;retrieval system
隨著計算機網絡的快速發展,讀者對圖書館的服務水平要求越來越高,他們不僅要獲取信息資源,而且要以最短的時間獲取,因此,圖書館的信息資源不能局限在現成的紙本和電子資源上,圖書館員可對文獻信息進行開發,把文獻中那些處于隱性、無序的信息,加以整理、排序,通過計算機組織形成數據庫[1]。20世紀90年代后期以來,我國211工程高校圖書館有64所建有263個不同類型的特色數據庫,占所有95所211工程高校圖書館的68.14%,約10%的專題庫形成標志性的成果[2]。這些具有地方特色與技術先進的專題文獻數據庫,為高校教學科研地方事業發展提供服務,并取得了一定的社會效益和經濟效益[3]。浙江海洋學院經過五十年的發展,在某些涉海類專業領域如:海水養殖、捕撈、造船等的研究處于國內領先水平,承擔過許多國家級、“863”、省部級等科研項目,校屬研究所獲國家科技進步獎8項,省、部級獎49項,積累了大量科研資料。學校海洋專家、學者的學術成果,在全國海洋界首屈一指,如:在最具海洋特色的漁業、船舶等專業領域,2000年以來共發表論文270多篇,出版學術論著22部,為建設涉海類專題數據庫提供豐富的文獻保障。同時,圖書館建有海洋文獻題錄數據,如“海洋類科研文獻數據庫”、“水產題錄數據庫”等。若能對這些涉海類特藏書目、論文進行收集、整理,形成專業數據庫,不僅能為全校師生查找資料、科研提供方便,也能為地方海洋經濟發展作出貢獻,使圖書館的文獻信息資源得到充分利用。
1 自建特色數據庫的結構與模型
1.1 自建特色數據庫的結構

1.2 自建特色數據庫的模型
系統采用易用的PHP語言,后臺則選用MYSQL數據庫,考慮到圖書館發展的需要與讀者檢索資料的方便性,采用面向對象方法來實現模型庫的設計,構建了基于B/S的圖書館自建特色數據庫模型圖。
自建特色數據庫具備以下功能:(1)管理功能。管理人員通過論文的編號管理數據庫,基本操作包括添加、刪除、修改、查詢和批量導入、導出數據庫,并可根據用戶易用和系統維護的需要,在數據庫維護模塊,適當調整數據庫的字段內容,字段長度等。(2)檢索功能。檢索功能是自建特色數據庫的主要功能模塊,用戶在檢索時,可根據題名、作者、作者單位、關鍵詞、摘要、刊名、全文等,確立單條件檢索、多條件檢索、模糊檢索,實現的難點是多條件檢索。本文將循環語句與數組相結合,根據多個條件自動生成符合檢索請求的SQL語句,實現多條件動態查詢。另外,結合浙江海洋學院圖書館的館藏特色與學校科研發展方向,自建特色數據庫還設置了魚類、藻類、貝類、海水養殖、捕撈等分類數據庫,在讀者使用時,還可實現跨庫檢索,大大提高檢索的查全率和查準率,在一定程度上,節省讀者的寶貴時間與精力。

2 自建特色數據庫功能的實現
2.1 自建特色數據庫管理功能的實現
用php語言,SQL語句編寫論文添加、修改函數addarticle,在添加、修改數據庫時,首先連接數據庫,然后按文章的id進行判斷,如果id的值不為空,即該id為已經存在的,則調用sql語句update更新一條信息到數據庫;如id的值為空,調用sql語句INSERT INTO插入一條信息到數據庫,添加、修改時需按題名、作者、作者單位、關鍵詞、摘要、刊名、全文等錄入、修改論文。同時,addarticle函數會根據論文題名、作者、關鍵詞等判斷是否有重復論文,保證文章的惟一性。
function addarticle(D|Sclassname,D|Stitle,D|S author,D|Scompany,D|S keywords,D|S abstract,D|S magazine,D|S cnid,D|S text,D|S treasury ){global D|Sdbhost,D|Sdbuser,D|Sdbpasswd,D|Sdbname,D|Stablearticle,D|Sid;
……./* function addarticle(填加、修改數據庫功能)*/
if(!D|Sid ==″″):/*if語句判斷id是否為空*/
D|Ssql=″UPDATE D|Stablearticle SET/*不為空,則調用update修改一條數據*/
classname=′D|Sclassname′,title=′D|Stitle′,author =′D|S author′,company=′D|Scompany′,keywords=′D|S keywords′,abstract=′D|S abstract′,magazine=′D|S magazine′,cnid =′D|S cnid′,text =′D|S text′,treasury =′D|S treasury′ WHERE id=D|Sid″;
else:/*若id值為空,調用insert into增加一條數據*/
D|Ssql=″INSERT INTO D|Stablearticle(classname,id,title,author,company,keywords,abstract,magazine,cnid,text,treasury)VALUES(′D|Sclassname′,′D|Stitle′,′D|S author′,′D|Scompany′,′D|S keywords′,′D|S abstract′,′D|S magazine′,′D|S cnid′,′D|S text′,′D|S treasury′)″;
endif;
mysqldbquery(D|Sdbname,D|Ssql);}
function delarticle(D|Sdelete){……./*通過連接數據庫使用Delarticle函數可實現某條論文信息的刪除操作*/
D|Ssql=″DELETE FROM D|Stablearticle WHERE id=D|Sdelete″;mysqldbquery(D|Sdbname,D|Ssql);}/* function delarticle(刪除功能)*/
2.2 自建特色數據庫檢索功能的實現
為方便用戶檢索文獻,檢索頁面向讀者,系統界面直觀,簡單易用,讀者不需要掌握專業的檢索語言和方法,便能實現檢索。讀者在進入海洋學院特色數據庫頁面后,可見頁面分成左右兩欄,在左欄設置了題名、作者、作者單位、關鍵詞、摘要、刊名、全文幾種檢索方式,用戶可選擇不同的檢索方式使用關鍵字進行文獻檢索。當用戶選擇其中一項或幾項輸入檢索條件并點擊“檢索”按鈕后,系統就會調用search.php文件,執行文獻檢索,并將查詢結果顯示在右欄。
在查詢程序中,首先連接服務器、數據庫,將用戶所選擇的某個數據庫名如:魚類、藻類、貝類等送入變量D|Stable,產生SQL語句SELECT*FROM′D|Stable′。將用戶選擇的檢索字段,如:題名、作者、關鍵詞等,讀入tablefield數組中,并統計共有幾個檢索字段存入num變量。初始化檢索關鍵詞變量key為空字符串,將用戶輸入的檢索關鍵字內容userkey數組數組元素的值與系統定義的tablefield數組內容進行匹配,將結果寫入key變量中。調用循環語句for,直到num的值為0。由于在多條件查詢中,同時滿足檢索條件的文獻才會被輸出,每個檢索關鍵詞之間的關系為“與”,因此,userkey的數組元素值之間以“”連接,寫入key后輸出,生成SQL語句SELECT*FROM D|Stable WHERE D|Skey ORDER BY id DESC,并將結果返回到result。利用while語句,循環調用showarticle函數,將結果按一定的寬度,以表格的形式將文獻的題名、作者、作者單位、關鍵詞、摘要、刊名等顯示在頁面上,如果讀者想瀏覽全文,可點擊題名鏈接。
以魚類庫中的題名、關鍵詞、刊名三項多條件檢索為例。在題名中輸入檢索詞:金槍魚,關鍵詞:漁場,刊名:《海洋漁業》,選擇精確匹配,點擊檢索。系統根據讀者的檢索請求,向search.php提交D|Stable為“fishtable”,產生SQL語句SELECT*FROM fishtable,將用戶選擇的3項檢索字段,題名、作者、刊名,讀入tablefield數組中,統計出num=3。調用循環語句for,將用戶輸入的檢索關鍵字內容userkey數組元素的值:金槍魚、漁場、海洋漁業,與系統定義的tablefield數組內容進行匹配,產生金槍魚漁場海洋漁業字符串存入key中,生成SQL語句SELECT*FROM fishtable WHERE title=″金槍魚″keywords=″漁場″magazine =″海洋漁業″ORDER BY id DESC,循環調用showarticle函數,通過表格的形式顯示查詢的結果,一目了然便于讀者查閱。
function showarticle(D|Sindex,D|Srow){
echo″<tr>″;
echo″<td width=″50″><div align=′center′>″.D|Sindex.″</div></td>″;
echo″<td width=″200″><div align=′center′>″.D|Srow[title].″</div></td>″;
echo″<td width=″80″><div align=′center′>″.D|Srow[author].″</div></td>″;
echo″<td width=″100″><div align=′center′>″.D|Srow[company].″</div></td>″;
echo″<td width=″100″><div align=′center′>″.D|Srow[keywords].″</div></td>″;
echo″<td width=″80″><div align=′center′>″.D|Srow[magazine].″</div></td>″;
echo″<td width=″50″><div align=′center′>″.D|Srow[cnid].″</div></td>″;
echo″<td width=″100″><div align=′center′>″.D|Srow[treasury].″</div></td>″;
echo″</tr>\″;}/*生成顯示查詢結果的表格*/
function search(D|Sdbhost,D|Sdbuser,D|Sdbpasswd,D|Sdbname,D|Stable,D|Suserkey){
D|Smysqlresource=mysqlpconnect(D|Sdbhost,D|Sdbuser,D|Sdbpasswd);/*連接數據庫*/
mysqlselectdb(′D|Sdbname′,D|Smysqlresource);
D|Sdataresource=mysqlquery(″SELECT*FROM′D|Stable′″);/*選中某一個或多個專業庫*/
D|Snum=mysqlnumfields(D|Sdataresource);/*統計共有幾個檢索字段存入num變量*/
for(D|Sj=0;D|Sj<D|Snum;D|Sj++){
D|Sfield=mysqlfetchfield(D|Sdataresource,D|Sj);/*返回表D|Sdbname的第二個字段信息*/
D|Stablefield[D|Sj]= D|Sfield[name];}
D|Skey=″″;/*初始化檢索關鍵詞變量key為空字符串*/
for(D|Sj=0;D|Sj<D|Snum;D|Sj++ ){
if(D|Suserkey[D|Sj]!=″″)/*判斷用戶輸入的第i個條件關鍵字是否為空,不為空則將其加入檢索條件D|Skey中*/
D|S key =D|S key.″ D|Stablefield[D|Si]=D|S userkey[D|Sj]″;}/*通過循環,將用戶輸入的檢索關鍵字內容userkey數組數組元素的值與系統定義的tablefield數組內容進行匹配,將結果寫入key變量中。*/
D|Ssql=″SELECT*FROM D|Stable WHERE D|Skey ORDER BY id DESC″;/*生成SQL語句*/
D|Sresult= mysqldbquery(D|Ssql);/*將結果返回到result*/
echo″<table border=0 cellspacing=0 cellpadding=3 width=550>\″;
D|Sindex=0;
While(D|Srow=mysqlarray(D|Sresult)){/*用while語句,遍歷顯示所有檢索條目,通過showarticle()顯示*/
Showarticle(D|Sindex,D|Srow);
D|Sindex++;}
echo″</table>\″;}

3 結束語
圖書館自建特色數據庫的建設,實現具有學科特點及圖書館特色的館藏資源的信息資源共享,使傳統文獻在網絡環境下重新體現其知識價值;鑒于特色數據庫是對專業數據進行深加工,可為讀者提供專業情報檢索技術,并增加檢索點,提高查全和查準率,使傳統意義上的讀者服務更加深化、全面;建設特色數據庫還可以使分散零亂的特色文獻資源得以系統化、有序化整理和深層次挖掘,將傳統文獻資源轉變為數字化資源,使其收藏、保存變得更加方便、安全。由此可見,自建特色數據庫有利于深層次地揭示,有利于使圖書館的各種文獻信息資源得到有效的利用,有利于圖書館提高信息資源服務水平和開展信息資源共享,使圖書館作為高等學校的文獻信息中心發揮了其應有的價值。
參考文獻
[1]宋欣,金松根,孫常麗.運用ASP和SQL技術創建及備份圖書館自建特色數據庫[J].牡丹江大學學報,2007,(5):165-167.
[2]黃曉斌,蒲筱哥.我國圖書館特色數據庫建設的現狀、問題與對策[J].情報科學,2007,(5):784-788.
[3]中國高等教育文獻保障系統專題特色數據庫子項目[DB/OL].http:∥www.calis.edu.cnPcalisnewPcalisindex.asp?fid=3class=5,2005-11-08.