从OPAC开发的视角解析汇文数据库
——以盐城市图书馆为例
2018-07-25
(盐城市图书馆,江苏 盐城 224005)
1 引言
近年来,随着现代信息技术的迅速发展,图书管理系统被广泛应用于各类图书馆的日常管理和服务工作之中。目前,国内开发的图书管理软件有汇文系统、ILAS、DATATRANS、金盘系统、SULCMIS、博菲特系统等[1]。盐城市图书馆于2012年搬迁至新馆之后,引入了汇文软件,它是江苏省教委文献保障系统的一个规范软件,是由南京大学计算机系和江苏图书馆界有关专家联合研制开发的,可以实现网上书目检索、借阅查询、新书查询、预约、新书订购、网上借还、预约、续借等多项功能[2]。该软件目前在国内拥有近900家用户,在“211”学校中的占有率为47%,在“985”学校中的占有率为41%[3],遥遥领先于其他同类产品。
2 了解汇文相关数据表的必要性
汇文软件自带了OPAC功能,使读者能够随时随地通过互联网,对盐城市图书馆藏书进行检索和查询。然而,汇文软件的服务对象毕竟是一个较大的客户群体,既包括大专院校图书馆,也包括公共图书馆,而且每个服务对象的藏书结构和藏书规模也各有千秋[4],因此,汇文OPAC在技术细节上不可能做到面面俱到,它仅仅也只能提供一个通用的共性的OPAC模板,遵循着事先设定的检索代码,得到固定样式的检索结果,因而就会引发一些在我们期望之外的问题。比如,盐城市图书馆实际拥有1100余种期刊,但在汇文OPAC的期刊栏目中,其“字母导航”或“期刊学科导航”页面下检索不到任何内容,仅仅在“年度定购期刊”子页面上,可以通过刊名、ISSN、分类号和出版社来检索是否有期刊存在。这样就给读者带来了很大的不便,因为读者事先不可能知道盐城市图书馆到底订购了哪些期刊。再比如,汇文OPAC中的“热门借阅”项,它仅仅提供两个月内的数据,如果要检索半年内的数据,或者所有借阅数据,该如何处理?等等。为了解决这些问题,这就需要我们根据本馆藏书特色、结构和规模,因地制宜,进行个性化的定制和拓展,甚至可以基于汇文数据库,重新开发我们自己的OPAC。因此,了解汇文数据库的架构,熟悉其中相关数据表的功能和表与表之间的关系,显得尤为重要。
3 解析汇文数据表
在目前版本的汇文数据库中,共有200余张表,不同的表对应着不同的功能和逻辑关系。笔者根据盐城市图书馆现有的汇文OPAC所能实现的功能,结合PL/SQL Developer,对汇文数据库进行了深入探究,经过一系列的分析和测试,基本搞清了汇文数据库中相关数据表的作用、字段的含义和它们之间的关系。鉴于笔者是从OPAC开发的角度进行探讨,因此,此处着重对OPAC应用所涉及的那部分数据表进行简要的解析,具体可分为以下6类。
3.1 读者信息类
这一类的表主要有reader、reader_cert、cert_loss等。读者办证时,会同时向reader表和reader_cert表添加一条记录。reader表存放的主要是读者的个人信息,如身份证号、姓名、性别、地址、电话等,reader_cert中存放的主要是读者证信息,如证号、办证日期、证件有效期及证件是否有效等,这两张表以一个相同的字段,即cert_id(身份证号)进行关联。当读者通过汇文OPAC页面或到服务台挂失读者证时,会向cert_loss表插入一条记录,同时将reader_cert表的cert_flag字段置为2。解挂后,会将cert_loss表的 cert_lose_flag被置为0,并将reader_cert表的cert_flag字段置为1。
3.1.1 reader表,存放读者信息。其重点字段如下:
cert_id name sex password证件号,这是表明借阅者身份的唯一标识姓名性别读者证密码
3.1.2 reader_cert表,存放读者证信息。其重点字段如下:
redr_cert_id cert_id读者证号证件号
3.1.3 cert_loss表,读者证挂失表。重点字段如下:
redr_cert_id lose_date solv_date cert_lose_flag remark读者证号挂失日期解挂日期挂失解挂标志。标志 1-挂失;2-解挂挂失原因及解挂原因
3.2 书籍信息类
主要有marc、marc_data、indi_acc、item等。编目时,marc数据被存入marc表,完整的包括目次区的marc数据则被存入marc_data表,复本信息被置入indi_acct表。典藏后,在item表中生成新的复本信息[5]。
3.2.1 marc表,包含了marc的基本信息。其重点字段如下。
marc_rec_no marc _use_flag marc _type lang_code country_code doc_type_code m_call_no m_title m_author m_publisher m_pub_year m_isbn marc记录号状态标识,1-定购;2-待编;3-已编;4-审校Marc类型,C表示 CNMARC,U表示US⁃语种,参见language_code表国家代码,参见country_code表文档类型,参见doc_type_code表索书号书籍名称作者出版社出版年份ISBN号
3.2.2 marc_data表。重点字段如下:
marc_rec_no 1-Mar 2-Mar 3-Mar marc记录号存放完整的Marc数据,3个字段共可存放6000字节,如果数据长度超过6000字节,则再增加一条记录来存放,而marc_rec_no字段的内容仍然相同,以此类推
3.2.3 indi_acct表。此表为验收后的复本表,与item表的大部分字段相同,但这些相同字段中某些字段的约束规则不同,因此,在设计OPAC的时候,为了保证数据的准确性,应将这两张表结合起来进行。
3.2.4 Item表。此表为送典后的复本表,具有财产号和条码号,表明此表中的所有书籍已进入流通环节,因此该表中具有一个该复本是否被借出的标志。重点字段如下:
prop_no marc_rec_no bar_code book_stat_code①book_lend_flag in_date location call_no财产号marc记录号条码号书刊状态号,参见表后注释①BookStateCode标记书刊是否被借出,0-未借出,1-借出入藏日期藏书地点,见location_lst表索书号
注释:①BookStateCode。41:可借;42:非可借;43:阅览;44:业务用书;45:保留本;46:分馆藏书;11:正常验收;12:赠送验收;13:交换验收;14:自采验收;15:送编验收;16:在编;17:典藏处理;33:书刊修补;34:破损报废;35:剔旧报废;36:赠送出;37:交换出;38:丢失;39:遗失赔偿;3A:下架装订;3B:声明丢失;3C:停借。
3.2.5 subbjet表,主题词表。根据中图法分类号规定不同的主题词,在进行主题词检索的时候,需要用到此表。
3.3 期刊信息类
主要有m_peri_chk_vol、m_peri_item及m_peri_ord_detl这三张表。m_peri_ord_detl表存放的期刊订购详情,m_peri_chk_vol表的数据则是根据m_peri_ord_detl表生成的,包含了特定期刊的每一期信息。期刊被工作人员签收后,则在m_peri_item表增加一条签收信息记录。
3.3.1 m_peri_ord_detl表:期刊征订详情,其中的marc_rec_no字段,用来与marc表进行关联。重点字段如下:
peri_ord_year asord_no marc_rec_no book_size_code carrier_code publ_freq kind_no peri_price peri_total_price订购年度批次号订购号,或称邮发代号,根据此字段与m_peri_chk_vol表进行关联对应着marc表中的同名字段,可以通过此字段来获取期刊名称等相关信息刊物尺寸,见book_size表刊物载体形态,见carrier_code表出版频度,见publ_freq表期刊分类号,如N2922单价年度总价
3.3.2 m_peri_chk_vol表:期刊预期签收表,在打开“连续出版物”客户端时,会从该表和m_peri_item表读取关于某一期刊已签收和待签收的信息。重点字段如下:
peri_id publ_code peri_ord_year asord_no cover_vol carrier_code publ_year期刊序号,跟m_peri_item表中的同名字段关联发行商代码,见publish_busi表期刊定购年度批次定购号(邮发代号)封面卷期刊物载体形态,见carrier_code表出版年份
3.3.3 m_peri_item表:已签收的期刊表。重点字段如下:
peri_id location item_no chk_date期刊序号,跟m_peri_chk_vol表中的同名字段关联馆藏位置,见location_lst表期刊复本序号签收日期
3.4 借阅信息类
如lend_lst、lend_hist等。当一本书籍被借出时,系统会同时向lend_lst(当前借阅列表)、lend_hist(历史借阅列表)中各自插入一条记录。从理论上讲,对lend_lst表和lend_hist表所做的insert操作数目同样多,只是在读者还书以后,在lend_lst表中针对对应的记录执行了delete操作。各表的字段详情,请参看汇文数据库。
3.5 参数定义类
在汇文数据库中,有一些专门的参数表,主要用来设定其他表中有关字段的值的集合。比如,country_code表定义国家代码,doc_type_code表定义文档类型,location_lst表定义馆藏地,language_code表定义语种,carrier_code表规定书籍载体等。
3.6 OPAC应用类
在汇文数据库中,还有一定数量的表,尽管它们有一些可以在客户端进行操作,但更多地用于读者在使用汇文OPAC时记录或者显示相关数据,故称之为OPAC应用表。这些表包括read_score(读者评分)、search_content(检索关键字)、search_hist(检索历史)、suggest(读者荐购)、book_review(读者书评)、isbn_cover(书籍封面)、preg_lst(读者预约)、virtual_shelf_class(虚拟书架)等。
4 几个实例
在充分理解上面6个类别数据表的作用和关系之后,我们便可以着手打造自己的OPAC系统。然而,一个完整的OPAC系统,其建设思路和实现代码,不是一篇论文就能论述清楚的,因此,此处仅撷取几个示例。
4.1 获取半年内借阅排名前10位的热门借阅图书
在PL/SQL Developer的sql编辑器窗口输入如下代码:
注:第一处斜体语句规定获取时限,第二处斜体语句规定获取记录条数。
结果集如下:
4.2 获取排名前10位的热门关键字
结果集如下:
4.3 获取排名前10的热门图书
结果集如下:
5 结语
了解汇文数据库的相关表的结构、字段的含义及表与表之间的关系后,我们就可以根据实际需要,对汇文OPAC的功能进行拓展,或者基于汇文数据库,重新构建我们自己的OPAC系统。当然,汇文数据库中包含着大量的数据表,在构建OPAC的时候,倘若要进一步细化和完善其功能,所用到的表则并不仅限于此,限于篇幅原因,此处不再赘述。