〔摘 要〕隨著數字圖書館的深入應用,在圖書館信息管理中出現了關系型數據和文檔型數據等多種數據類型,不同類型之間的數據轉換和數據共享成為數字圖書館建設的關鍵。針對此問題,本文從幾個方面對文檔數據庫與關系型數據庫進行了比較,提出了基于Microsoft的開放數據庫連接(ODBC)技術、使用Lotus腳本語言實現關系型數據與文檔型數據間的相互轉換的基本思路和具體解決方法。
〔關鍵詞〕數據轉換;異構數據;關系型數據;文檔型數據;Lotus腳本語言
〔中圖分類號〕G250.76 〔文獻標識碼〕A 〔文章編號〕1008-0821(2009)09-0111-03
Application of Heterogeneous Data Conversion in Digital Library ConstructionZhu Xiaoyan
(Library,Wuhan University,Wuhan 430072,China)
〔Abstract〕There are many data types such as relationship data and document data in the library information management along with the application of digital library construction.It is the key to the data conversion and data share of different data types.A comparison is made between document database and RDB.The ODBC technology was analyzed based on Microsoft.The method and examples were analyzed to solve the data conversion between relationship database and document database using lotus script language.
〔Key words〕database conversion;heterogeneous data;ODBC;relationship data;document data;LotusScript language
2006年,武漢大學推廣學校儀器設備管理信息系統(tǒng),利用校園網對全校設備進行管理。但學校的設備管理系統(tǒng),只涉及到圖書館這個層面,只牽涉到設備在學校各院系,實驗室,財務部,國有資產辦公室等學校職能部門的流轉,整個圖書館只有一個客戶端;對設備到達圖書館后,在圖書館內部4個分館及院系資料室是怎樣分配,調拔,怎樣動態(tài)的流轉,并沒有一個管理的端口。針對學校設備管理系統(tǒng)的不足,武漢大學圖書館在圖書館辦公自動化平臺上開發(fā)了設備管理模塊,實施設備一級財產賬和二級使用賬分開管理的體制。學校的設備管理系統(tǒng)開發(fā)工具是sql server 2000關系數據庫,而圖書館的設備管理系統(tǒng)的開發(fā)工具是Domino的文檔數據庫。如何將學校的設備數據導出,再直接導入圖書館設備管理系統(tǒng),作為一級財產賬,避免數據重復錄入的工作;或者將Domino的文檔數據庫轉換成關系數據庫,利用關系數據庫強大的報表統(tǒng)計分析和復雜的計算功能,將具有現實的意義。本文將對不同類型的數據轉換作一探討。
1 基本原理及思路
1.1 ODBC概述
ODBC是一種用來在相關或不相關的數據庫管理系統(tǒng)(DBMS)中存取數據的,是用C語言實現的標準應用程序數據接口。通過ODBCAPI,應用程序可以存取保存在多種不同數據庫管理系統(tǒng)中的數據,而不論每個DBMS使用了何種數據存儲格式和編程接口。ODBC的結構包括4個主要部分:
(1)應用程序接口:屏蔽不同的ODBC數據庫驅動器之間函數調用的差別,提供統(tǒng)一的SQL編程接口。
(2)驅動器管理器:為應用程序裝載數據庫驅動器。
(3)數據庫驅動器:實現ODBC的函數調用,提供對特定數據源的SQL請求。
(4)數據源:由想要存取的數據以及與其相關的操作系統(tǒng)、DBMS和用于訪問DBMS的網絡平臺組成。
1.2 Lotus Domino/Note編程語言介紹
Lotus Domino/Note主要運用兩種基本開發(fā)語言(LotusScript編程語言與Notes公式語言)進行開發(fā),并結合Lotus Domino/Note支持的Java和JavaScript編程語言。使用LotusScript編程語言書寫Scripts,使用Notes的公式語言書寫公式(即使用函數和命令)。LotusScript在Notes中運行能夠提供如下功能:
(1)LotusScript是一種程序語言,允許開發(fā)與C或C++兼容的應用軟件。
(2)LotusScript允許執(zhí)行反復(循環(huán)),允許創(chuàng)建用戶定義的數據類型,允許控制超出公式語言能力的程序流程。
(3)LotusScript經由面向對象提供訪問Notes用戶界面和Notes NSF文件(文檔庫)的程序。
類是一種在現實對象模型化的數據類型,包括代表對象的數據和操作對象屬性的子程序。一個Notes應用軟件由一個或更多的數據庫組成,每個數據庫由視圖、文檔、域等組成。Notes包含一套預先定義了的類,這些類對應于數據元素。圖1展示了一個對Domino文檔數據庫操作的流程示意圖。
Lotus Notes為了方便與其他程序進行數據接口,提供了一套專門的擴展類庫,即LotusScript Data Object(LS:DO),它是由ODBCConnection,ODBCQuery,ODBCResultSet三個類組成的一個集合,提供對外部的ODBC數據的完全讀、寫訪問。它們提供了通過ODBC Version2.0標準訪問和更新外部數據庫中的表的屬性和成員函數。
ODBCConnection類:表示連接到數據源的ODBC數據存取特性。
OCBCQuery類:表示定義一個SQL語句的ODBC數據存取特性。
ODBCResultSet類:表示在結果集合上執(zhí)行操作的ODBC數據存取特性。
1.3 Domino文檔數據庫和關系數據庫的區(qū)別
Domino文檔數據庫是一個集數據與設計元素于一身的集合體,它的應用程序就是數據庫,和關系型數據庫不一樣,它不存在一個不可見的與用戶界面完全分離的“后臺”。在本文深入展開時,需要區(qū)別文檔數據庫與關系數據庫以下幾個概念的不同:
1.3.1 結構
關系數據庫是以二維表格及其關系作為數據模型,表的每個行稱為一條記錄,每一個列稱為一個屬性(或字段),所有屬性名稱構成的集合稱為關系模式。而Domino文檔數據庫的基本元素就是文檔。這里的文檔和關系數據庫中的記錄相似。Notes文檔的結構是由表單(form)定義的,而表單由一組各式各樣的字段域組成。域用于收集數據,域的域類型定義了此域能接受的信息類型,例如:文本、數字、日期或姓名等。在文檔型數據庫中域的概念與關系型數據庫中的字段(Field)相類似。
1.3.2 視圖
在關系型數據庫和文檔型數據庫中,均有視圖的概念。在關系型數據庫中,視圖是指從一個或幾個基本表(或視圖)導出的表。視圖和基本表不同,視圖是一個虛表,即視圖所對應的數據不實際存儲在數據庫中,數據庫中只存儲視圖的定義(存在數據字典中)。在文檔型數據庫中,視圖是文檔的排序或分類列表。視圖是對存儲在數據庫中的數據進行訪問的入口。用戶通過Notes預定義視圖瀏覽文檔內容。通過視圖,用戶可以從中看到關于文檔的概要信息、文檔的狀態(tài)、文檔的關鍵域,并可按某一準則對顯示的信息進行分類和排序。Notes數據庫通過預定義的視圖查詢數據,而關系型數據庫通過在線查詢查找數據。實質上,二者邏輯上非常相似,即視圖所對應的數據均不實際存儲在數據庫中,數據庫中只存儲視圖的定義。
1.3.3 條目和屬性
在關系型數據庫中,有屬性(Attribute)的概念,即二維表中的每一列稱為一個屬性,給每一列起一個名稱即屬性名。而在文檔型數據庫中,就沒有“屬性”,文檔擁有的是條目(Item),條目是指存儲于文檔中的任意數據部分。每一個條目代表文檔中一段數據,在用戶界面中,是通過表單中的域來顯示文檔中的條目的。二者雖命名不同,但從“屬性”的角度更容易理解文檔型數據庫中條目的意義。
2 數據轉換實例
2.1 實現關系數據向文檔數據轉換的實例
本文以圖書館設備管理模塊為例。學校的設備管理信息系統(tǒng)采用SQL SERVER 2000數據庫,數據具有封裝性,各客戶端無權對SQL SERVER 2000數據庫操作,但有一個接口程序,可以將設備數據導出為EXCEL格式,存儲在本地。圖書館對存在本地的EXCEL數據,進行各種預處理,再導入到圖書館設備管理模塊的文檔數據庫中。具體操作步驟如下:
(1)調整存儲在本地EXCEL設備數據各列的排序,剔除沒有意義的列。本例中,在EXCEL工作簿中數據各列排序如表1(阿拉伯數字表示是第幾列):
(2)在辦公自動化系統(tǒng)中,建立欲導入數據的“分館驗收設備”視圖,確保此視圖每一列表示的數據與EXCEL每一列表示的數據,意義相同;并且列排序的順序相同。
(3)在對比EXCEL數據列排序與辦公自動化設備管理模塊“分館驗收設備”視圖列排序一致后,刪除EXCEL設備數據列標題,并將EXCEL數據另存了為WK4(1-2-3)格式。
(4)回到LOTUS瀏覽器客戶端,選擇“文件”菜單,“引入”操作。彈出窗口如圖2:
(5)選擇欲引入數據的表單,本例中為“儀器設備登記卡表單”,并勾選參數Main Document(要創(chuàng)建答復文檔則勾選Response Document);View Defined;Calculate fields on form during document import(選擇“文件引入時計算表單中的域”)。
(6)點擊“OK”按鈕,數據自動從EXCEL工作簿導入到DOMINO文檔數據庫“分館驗收設備”視圖。
2.2 文檔數據庫向關系數據庫轉換實例
文檔數據庫擅長于事務管理,而在報表分析,數據統(tǒng)計方面相對薄弱,而這恰是EXCEL程序優(yōu)勢,下面將展示將文檔數據庫轉換為EXCEL數據的實例。本例仍以圖書館設備管理模塊為例。步驟如下:
(1)在文檔數據庫視圖里,勾選要導出為EXCEL數據的文檔。
(2)編輯文檔數據庫視圖,創(chuàng)建操作按鈕“導出數據”,并編寫后端lotus script程序代碼。程序的流程如圖3所示:
(3)在文檔數據庫視圖里,單擊操作按鈕“導出數據”,程序響應對象事件,開啟一個EXCEL工作表窗口。文檔數據庫中每一個已勾選的文檔將變?yōu)镋XCEL工作表中的一個行,每一個域將變?yōu)楣ぷ鞅碇械囊粋€列,原始域內容變?yōu)閱卧獌热?列標題變?yōu)楣ぷ鞅碇械臉撕?。從而實現文檔數據導出到EXCEL程序中,再可以導入到SQL SERVER 2000等關系型數據庫中。
取值賦值,程序循環(huán)嵌套的核心代碼如下:
Do While Not(doc Is Nothing)
′設定循環(huán)數為列數
For x=0 To Ubound(view.columns)
If view.columns(x).IsHidden=False Then
If view.columns(x).title<>″″Then
fieldname=view.columns(x).itemname
Set fitem=doc.getfirstitem(fieldname)
′循環(huán)取文檔條目值,賦值給EXCEL單元格
xlsheet.cells(rows,cols).value=fitem.text
cols=cols+1
End If
End If
Next
rows=rows+1
cols=1
Set doc=dc.getnextdocument(doc)
Loop
3 結 語
武漢大學圖書館設備管理模塊實行二級賬管理體制。用戶角色為1個總館設備干事和4個分館、4個院系資料室設備干事。
前者管理設備財產賬(即設備卡上基本信息的管理),后者管理設備使用賬(即設備在圖書館內部的調拔,維修,報廢等二級賬)。借助本文的數據轉換實例,武漢大學圖書館的一級財產賬與學校儀器信息管理系統(tǒng)保持了一致,同時圖書館內部又可以從圖書館設備管理模塊導出數據,存儲為EXCEL格式,以滿足本地特殊的查詢需求。異構數據轉換為不同的信息管理平臺建立了一個溝通的橋梁。
參考文獻
[1]朱曉燕,黃勇凱.基于Lotus Domino/Notes的圖書館設備管理系統(tǒng)的設計與實現[J].現代圖書情報技術,2007,(4):83-86.
[2]王秀英,李平,趙麗華.實現關系型與文檔型數據間的轉換[J].計算機工程與設計,2005,(11):2955-2957.
[3]鄭翔.LotusScript與Formula應用手冊[M].北京:機械工業(yè)出版社,2001:409-437.
[4]查爾斯?菲迪.Domino Developers Reference開發(fā)人員手冊[M].北京:希望電子出版社,2000:33-71.
[5]楊應全,趙計梅,陳強.圖書館Oracle服務器與Excel之間數據轉換應用探討[J].現代情報,2008,(5):147-148.