唐海萍
〔摘 要〕本文设计了一个基于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 cnzid,D|S text,D|S treasury ){global D|Sdbhost,D|Sdbuser,D|Sdbpasswd,D|Sdbname,D|Stablezarticle,D|Sid;
……./* function addarticle(填加、修改数据库功能)*/
if(!D|Sid ==″″):/*if语句判断id是否为空*/
D|Ssql=″UPDATE D|Stablezarticle 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′,cnzid =′D|S cnzid′,text =′D|S text′,treasury =′D|S treasury′ WHERE id=D|Sid″;
else:/*若id值为空,调用insert into增加一条数据*/
D|Ssql=″INSERT INTO D|Stablezarticle(classname,id,title,author,company,keywords,abstract,magazine,cnzid,text,treasury)VALUES(′D|Sclassname′,′D|Stitle′,′D|S author′,′D|Scompany′,′D|S keywords′,′D|S abstract′,′D|S magazine′,′D|S cnzid′,′D|S text′,′D|S treasury′)″;
endif;
mysqlzdbzquery(D|Sdbname,D|Ssql);}
function delarticle(D|Sdelete){……./*通过连接数据库使用Delarticle函数可实现某条论文信息的删除操作*/
D|Ssql=″DELETE FROM D|Stablezarticle WHERE id=D|Sdelete″;mysqlzdbzquery(D|Sdbname,D|Ssql);}/* function delarticle(删除功能)*/
2.2 自建特色数据库检索功能的实现
为方便用户检索文献,检索页面向读者,系统界面直观,简单易用,读者不需要掌握专业的检索语言和方法,便能实现检索。读者在进入海洋学院特色数据库页面后,可见页面分成左右两栏,在左栏设置了题名、作者、作者单位、关键词、摘要、刊名、全文几种检索方式,用户可选择不同的检索方式使用关键字进行文献检索。当用户选择其中一项或几项输入检索条件并点击“检索”按钮后,系统就会调用search.php文件,执行文献检索,并将查询结果显示在右栏。
在查询程序中,首先连接服务器、数据库,将用户所选择的某个数据库名如:鱼类、藻类、贝类等送入变量D|Stable,产生SQL语句SELECT*FROM′D|Stable′。将用户选择的检索字段,如:题名、作者、关键词等,读入tablezfield数组中,并统计共有几个检索字段存入num变量。初始化检索关键词变量key为空字符串,将用户输入的检索关键字内容userzkey数组数组元素的值与系统定义的tablezfield数组内容进行匹配,将结果写入key变量中。调用循环语句for,直到num的值为0。由于在多条件查询中,同时满足检索条件的文献才会被输出,每个检索关键词之间的关系为“与”,因此,userzkey的数组元素值之间以“&&”连接,写入key后输出,生成SQL语句SELECT*FROM D|Stable WHERE D|Skey ORDER BY id DESC,并将结果返回到result。利用while语句,循环调用showarticle函数,将结果按一定的宽度,以表格的形式将文献的题名、作者、作者单位、关键词、摘要、刊名等显示在页面上,如果读者想浏览全文,可点击题名链接。
以鱼类库中的题名、关键词、刊名三项多条件检索为例。在题名中输入检索词:金枪鱼,关键词:渔场,刊名:《海洋渔业》,选择精确匹配,点击检索。系统根据读者的检索请求,向search.php提交D|Stable为“fishztable”,产生SQL语句SELECT*FROM fishztable,将用户选择的3项检索字段,题名、作者、刊名,读入tablezfield数组中,统计出num=3。调用循环语句for,将用户输入的检索关键字内容userzkey数组元素的值:金枪鱼、渔场、海洋渔业,与系统定义的tablezfield数组内容进行匹配,产生金枪鱼&&渔场&&海洋渔业字符串存入key中,生成SQL语句SELECT*FROM fishztable WHERE title=″金枪鱼″&&keywords=″渔场″&&magazine =″海洋渔业″ORDER BY id DESC,循环调用showarticle函数,通过表格的形式显示查询的结果,一目了然便于读者查阅。
function showarticle(D|Sindex,D|Srow){
echo″<tr>″;
echo″<td width=″50″><divalign=′center′>″.D|Sindex.″</div></td>″;
echo″<td width=″200″><divalign=′center′>″.D|Srow[title].″</div></td>″;
echo″<td width=″80″><divalign=′center′>″.D|Srow[author].″</div></td>″;
echo″<td width=″100″><divalign=′center′>″.D|Srow[company].″</div></td>″;
echo″<td width=″100″><divalign=′center′>″.D|Srow[keywords].″</div></td>″;
echo″<td width=″80″><divalign=′center′>″.D|Srow[magazine].″</div></td>″;
echo″<td width=″50″><divalign=′center′>″.D|Srow[cnzid].″</div></td>″;
echo″<td width=″100″><divalign=′center′>″.D|Srow[treasury].″</div></td>″;
echo″</tr> ″;}/*生成显示查询结果的表格*/
function search(D|Sdbhost,D|Sdbuser,D|Sdbpasswd,D|Sdbname,D|Stable,D|Suserzkey){
D|Smysqlzresource=mysqlzpconnect(D|Sdbhost,D|Sdbuser,D|Sdbpasswd);/*连接数据库*/
mysqlzselectzdb(′D|Sdbname′,D|Smysqlzresource);
D|Sdatazresource=mysqlzquery(″SELECT*FROM′D|Stable′″);/*选中某一个或多个专业库*/
D|Snum=mysqlznumzfields(D|Sdatazresource);/*统计共有几个检索字段存入num变量*/
for(D|Sj=0;D|Sj<D|Snum;D|Sj++){
D|Sfield=mysqlzfetchzfield(D|Sdatazresource,D|Sj);/*返回表D|Sdbname的第二个字段信息*/
D|Stablezfield[D|Sj]= D|Sfield[name];}
D|Skey=″″;/*初始化检索关键词变量key为空字符串*/
for(D|Sj=0;D|Sj<D|Snum;D|Sj++ ){
if(D|Suserzkey[D|Sj]!=″″)/*判断用户输入的第i个条件关键字是否为空,不为空则将其加入检索条件D|Skey中*/
D|S key =D|S key.″&& D|Stablezfield[D|Si]=D|S userzkey[D|Sj]″;}/*通过循环,将用户输入的检索关键字内容userzkey数组数组元素的值与系统定义的tablezfield数组内容进行匹配,将结果写入key变量中。*/
D|Ssql=″SELECT*FROM D|Stable WHERE D|Skey ORDER BY id DESC″;/*生成SQL语句*/
D|Sresult= mysqlzdbzquery(D|Ssql);/*将结果返回到result*/
echo″<table border=0 cellspacing=0 cellpadding=3 width=550> ″;
D|Sindex=0;
While(D|Srow=mysqlzarray(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=3&class=5,2005-11-08.