(鹽城市圖書館,江蘇 鹽城 224005)
近年來,隨著現(xiàn)代信息技術(shù)的迅速發(fā)展,圖書管理系統(tǒng)被廣泛應(yīng)用于各類圖書館的日常管理和服務(wù)工作之中。目前,國內(nèi)開發(fā)的圖書管理軟件有匯文系統(tǒng)、ILAS、DATATRANS、金盤系統(tǒng)、SULCMIS、博菲特系統(tǒng)等[1]。鹽城市圖書館于2012年搬遷至新館之后,引入了匯文軟件,它是江蘇省教委文獻(xiàn)保障系統(tǒng)的一個(gè)規(guī)范軟件,是由南京大學(xué)計(jì)算機(jī)系和江蘇圖書館界有關(guān)專家聯(lián)合研制開發(fā)的,可以實(shí)現(xiàn)網(wǎng)上書目檢索、借閱查詢、新書查詢、預(yù)約、新書訂購、網(wǎng)上借還、預(yù)約、續(xù)借等多項(xiàng)功能[2]。該軟件目前在國內(nèi)擁有近900家用戶,在“211”學(xué)校中的占有率為47%,在“985”學(xué)校中的占有率為41%[3],遙遙領(lǐng)先于其他同類產(chǎn)品。
匯文軟件自帶了OPAC功能,使讀者能夠隨時(shí)隨地通過互聯(lián)網(wǎng),對鹽城市圖書館藏書進(jìn)行檢索和查詢。然而,匯文軟件的服務(wù)對象畢竟是一個(gè)較大的客戶群體,既包括大專院校圖書館,也包括公共圖書館,而且每個(gè)服務(wù)對象的藏書結(jié)構(gòu)和藏書規(guī)模也各有千秋[4],因此,匯文OPAC在技術(shù)細(xì)節(jié)上不可能做到面面俱到,它僅僅也只能提供一個(gè)通用的共性的OPAC模板,遵循著事先設(shè)定的檢索代碼,得到固定樣式的檢索結(jié)果,因而就會引發(fā)一些在我們期望之外的問題。比如,鹽城市圖書館實(shí)際擁有1100余種期刊,但在匯文OPAC的期刊欄目中,其“字母導(dǎo)航”或“期刊學(xué)科導(dǎo)航”頁面下檢索不到任何內(nèi)容,僅僅在“年度定購期刊”子頁面上,可以通過刊名、ISSN、分類號和出版社來檢索是否有期刊存在。這樣就給讀者帶來了很大的不便,因?yàn)樽x者事先不可能知道鹽城市圖書館到底訂購了哪些期刊。再比如,匯文OPAC中的“熱門借閱”項(xiàng),它僅僅提供兩個(gè)月內(nèi)的數(shù)據(jù),如果要檢索半年內(nèi)的數(shù)據(jù),或者所有借閱數(shù)據(jù),該如何處理?等等。為了解決這些問題,這就需要我們根據(jù)本館藏書特色、結(jié)構(gòu)和規(guī)模,因地制宜,進(jìn)行個(gè)性化的定制和拓展,甚至可以基于匯文數(shù)據(jù)庫,重新開發(fā)我們自己的OPAC。因此,了解匯文數(shù)據(jù)庫的架構(gòu),熟悉其中相關(guān)數(shù)據(jù)表的功能和表與表之間的關(guān)系,顯得尤為重要。
在目前版本的匯文數(shù)據(jù)庫中,共有200余張表,不同的表對應(yīng)著不同的功能和邏輯關(guān)系。筆者根據(jù)鹽城市圖書館現(xiàn)有的匯文OPAC所能實(shí)現(xiàn)的功能,結(jié)合PL/SQL Developer,對匯文數(shù)據(jù)庫進(jìn)行了深入探究,經(jīng)過一系列的分析和測試,基本搞清了匯文數(shù)據(jù)庫中相關(guān)數(shù)據(jù)表的作用、字段的含義和它們之間的關(guān)系。鑒于筆者是從OPAC開發(fā)的角度進(jìn)行探討,因此,此處著重對OPAC應(yīng)用所涉及的那部分?jǐn)?shù)據(jù)表進(jìn)行簡要的解析,具體可分為以下6類。
這一類的表主要有reader、reader_cert、cert_loss等。讀者辦證時(shí),會同時(shí)向reader表和reader_cert表添加一條記錄。reader表存放的主要是讀者的個(gè)人信息,如身份證號、姓名、性別、地址、電話等,reader_cert中存放的主要是讀者證信息,如證號、辦證日期、證件有效期及證件是否有效等,這兩張表以一個(gè)相同的字段,即cert_id(身份證號)進(jìn)行關(guān)聯(lián)。當(dāng)讀者通過匯文OPAC頁面或到服務(wù)臺掛失讀者證時(shí),會向cert_loss表插入一條記錄,同時(shí)將reader_cert表的cert_flag字段置為2。解掛后,會將cert_loss表的 cert_lose_flag被置為0,并將reader_cert表的cert_flag字段置為1。
3.1.1 reader表,存放讀者信息。其重點(diǎn)字段如下:
cert_id name sex password證件號,這是表明借閱者身份的唯一標(biāo)識姓名性別讀者證密碼
3.1.2 reader_cert表,存放讀者證信息。其重點(diǎn)字段如下:
redr_cert_id cert_id讀者證號證件號
3.1.3 cert_loss表,讀者證掛失表。重點(diǎn)字段如下:
redr_cert_id lose_date solv_date cert_lose_flag remark讀者證號掛失日期解掛日期掛失解掛標(biāo)志。標(biāo)志 1-掛失;2-解掛掛失原因及解掛原因
主要有marc、marc_data、indi_acc、item等。編目時(shí),marc數(shù)據(jù)被存入marc表,完整的包括目次區(qū)的marc數(shù)據(jù)則被存入marc_data表,復(fù)本信息被置入indi_acct表。典藏后,在item表中生成新的復(fù)本信息[5]。
3.2.1 marc表,包含了marc的基本信息。其重點(diǎn)字段如下。
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記錄號狀態(tài)標(biāo)識,1-定購;2-待編;3-已編;4-審校Marc類型,C表示 CNMARC,U表示US?語種,參見language_code表國家代碼,參見country_code表文檔類型,參見doc_type_code表索書號書籍名稱作者出版社出版年份ISBN號
3.2.2 marc_data表。重點(diǎn)字段如下:
marc_rec_no 1-Mar 2-Mar 3-Mar marc記錄號存放完整的Marc數(shù)據(jù),3個(gè)字段共可存放6000字節(jié),如果數(shù)據(jù)長度超過6000字節(jié),則再增加一條記錄來存放,而marc_rec_no字段的內(nèi)容仍然相同,以此類推
3.2.3 indi_acct表。此表為驗(yàn)收后的復(fù)本表,與item表的大部分字段相同,但這些相同字段中某些字段的約束規(guī)則不同,因此,在設(shè)計(jì)OPAC的時(shí)候,為了保證數(shù)據(jù)的準(zhǔn)確性,應(yīng)將這兩張表結(jié)合起來進(jìn)行。
3.2.4 Item表。此表為送典后的復(fù)本表,具有財(cái)產(chǎn)號和條碼號,表明此表中的所有書籍已進(jìn)入流通環(huán)節(jié),因此該表中具有一個(gè)該復(fù)本是否被借出的標(biāo)志。重點(diǎn)字段如下:
prop_no marc_rec_no bar_code book_stat_code①book_lend_flag in_date location call_no財(cái)產(chǎn)號marc記錄號條碼號書刊狀態(tài)號,參見表后注釋①BookStateCode標(biāo)記書刊是否被借出,0-未借出,1-借出入藏日期藏書地點(diǎn),見location_lst表索書號
注釋:①BookStateCode。41:可借;42:非可借;43:閱覽;44:業(yè)務(wù)用書;45:保留本;46:分館藏書;11:正常驗(yàn)收;12:贈送驗(yàn)收;13:交換驗(yàn)收;14:自采驗(yàn)收;15:送編驗(yàn)收;16:在編;17:典藏處理;33:書刊修補(bǔ);34:破損報(bào)廢;35:剔舊報(bào)廢;36:贈送出;37:交換出;38:丟失;39:遺失賠償;3A:下架裝訂;3B:聲明丟失;3C:停借。
3.2.5 subbjet表,主題詞表。根據(jù)中圖法分類號規(guī)定不同的主題詞,在進(jìn)行主題詞檢索的時(shí)候,需要用到此表。
主要有m_peri_chk_vol、m_peri_item及m_peri_ord_detl這三張表。m_peri_ord_detl表存放的期刊訂購詳情,m_peri_chk_vol表的數(shù)據(jù)則是根據(jù)m_peri_ord_detl表生成的,包含了特定期刊的每一期信息。期刊被工作人員簽收后,則在m_peri_item表增加一條簽收信息記錄。
3.3.1 m_peri_ord_detl表:期刊征訂詳情,其中的marc_rec_no字段,用來與marc表進(jìn)行關(guān)聯(lián)。重點(diǎn)字段如下:
peri_ord_year asord_no marc_rec_no book_size_code carrier_code publ_freq kind_no peri_price peri_total_price訂購年度批次號訂購號,或稱郵發(fā)代號,根據(jù)此字段與m_peri_chk_vol表進(jìn)行關(guān)聯(lián)對應(yīng)著marc表中的同名字段,可以通過此字段來獲取期刊名稱等相關(guān)信息刊物尺寸,見book_size表刊物載體形態(tài),見carrier_code表出版頻度,見publ_freq表期刊分類號,如N2922單價(jià)年度總價(jià)
3.3.2 m_peri_chk_vol表:期刊預(yù)期簽收表,在打開“連續(xù)出版物”客戶端時(shí),會從該表和m_peri_item表讀取關(guān)于某一期刊已簽收和待簽收的信息。重點(diǎn)字段如下:
peri_id publ_code peri_ord_year asord_no cover_vol carrier_code publ_year期刊序號,跟m_peri_item表中的同名字段關(guān)聯(lián)發(fā)行商代碼,見publish_busi表期刊定購年度批次定購號(郵發(fā)代號)封面卷期刊物載體形態(tài),見carrier_code表出版年份
3.3.3 m_peri_item表:已簽收的期刊表。重點(diǎn)字段如下:
peri_id location item_no chk_date期刊序號,跟m_peri_chk_vol表中的同名字段關(guān)聯(lián)館藏位置,見location_lst表期刊復(fù)本序號簽收日期
如lend_lst、lend_hist等。當(dāng)一本書籍被借出時(shí),系統(tǒng)會同時(shí)向lend_lst(當(dāng)前借閱列表)、lend_hist(歷史借閱列表)中各自插入一條記錄。從理論上講,對lend_lst表和lend_hist表所做的insert操作數(shù)目同樣多,只是在讀者還書以后,在lend_lst表中針對對應(yīng)的記錄執(zhí)行了delete操作。各表的字段詳情,請參看匯文數(shù)據(jù)庫。
在匯文數(shù)據(jù)庫中,有一些專門的參數(shù)表,主要用來設(shè)定其他表中有關(guān)字段的值的集合。比如,country_code表定義國家代碼,doc_type_code表定義文檔類型,location_lst表定義館藏地,language_code表定義語種,carrier_code表規(guī)定書籍載體等。
在匯文數(shù)據(jù)庫中,還有一定數(shù)量的表,盡管它們有一些可以在客戶端進(jìn)行操作,但更多地用于讀者在使用匯文OPAC時(shí)記錄或者顯示相關(guān)數(shù)據(jù),故稱之為OPAC應(yīng)用表。這些表包括read_score(讀者評分)、search_content(檢索關(guān)鍵字)、search_hist(檢索歷史)、suggest(讀者薦購)、book_review(讀者書評)、isbn_cover(書籍封面)、preg_lst(讀者預(yù)約)、virtual_shelf_class(虛擬書架)等。
在充分理解上面6個(gè)類別數(shù)據(jù)表的作用和關(guān)系之后,我們便可以著手打造自己的OPAC系統(tǒng)。然而,一個(gè)完整的OPAC系統(tǒng),其建設(shè)思路和實(shí)現(xiàn)代碼,不是一篇論文就能論述清楚的,因此,此處僅擷取幾個(gè)示例。
在PL/SQL Developer的sql編輯器窗口輸入如下代碼:
注:第一處斜體語句規(guī)定獲取時(shí)限,第二處斜體語句規(guī)定獲取記錄條數(shù)。
結(jié)果集如下:
結(jié)果集如下:
結(jié)果集如下:
了解匯文數(shù)據(jù)庫的相關(guān)表的結(jié)構(gòu)、字段的含義及表與表之間的關(guān)系后,我們就可以根據(jù)實(shí)際需要,對匯文OPAC的功能進(jìn)行拓展,或者基于匯文數(shù)據(jù)庫,重新構(gòu)建我們自己的OPAC系統(tǒng)。當(dāng)然,匯文數(shù)據(jù)庫中包含著大量的數(shù)據(jù)表,在構(gòu)建OPAC的時(shí)候,倘若要進(jìn)一步細(xì)化和完善其功能,所用到的表則并不僅限于此,限于篇幅原因,此處不再贅述。