蔡雪紅 邱寧
【摘 要】數(shù)據(jù)完整性是管理信息系統(tǒng)有效運行的重要基礎(chǔ)。本文設(shè)計了一種基于規(guī)則分析的通用化、自動化、定制化的數(shù)據(jù)檢測系統(tǒng)。該系統(tǒng)可以簡化數(shù)據(jù)檢測的實現(xiàn),提高檢測與修改的效率,從而進一步提高數(shù)據(jù)的完整性。
【關(guān)鍵詞】規(guī)則分析;數(shù)據(jù)完整性;數(shù)據(jù)檢測;ASP.NET
0.引言
計算機和網(wǎng)絡技術(shù)的不斷發(fā)展使管理信息系統(tǒng)的應用日趨廣泛。然而,管理信息系統(tǒng)的有效運行必須依賴于其所使用數(shù)據(jù)的完整性,如果數(shù)據(jù)庫中存儲有不正確的數(shù)據(jù),則該數(shù)據(jù)庫就喪失了數(shù)據(jù)完整性,進而影響系統(tǒng)正確運行。
為保證數(shù)據(jù)完整性,越來越多的管理信息系統(tǒng)都不得不提供有效、完善的數(shù)據(jù)完整性檢測機制,從而使得數(shù)據(jù)完整性檢測功能成為系統(tǒng)開發(fā)中一項非常重要卻又十分繁瑣的共性的迫切需要,也成為影響系統(tǒng)開發(fā)效率和用戶體驗的重要因素。
1.系統(tǒng)設(shè)計
基于越來越多的管理信息系統(tǒng)應用過程中數(shù)據(jù)遷移及交換對數(shù)據(jù)完整性檢測的共性需求,本文設(shè)計了一種基于規(guī)則分析的通用化的數(shù)據(jù)檢測系統(tǒng),它借助"檢測規(guī)則設(shè)置→檢測規(guī)則解析→檢測規(guī)則應用"的規(guī)則分析機制,為開發(fā)人員提供通用化、定制化的數(shù)據(jù)檢測功能,從而提高項目開發(fā)效率。
該系統(tǒng)采用B/S架構(gòu),可以由用戶自行設(shè)置多樣化的檢測規(guī)則,以實現(xiàn)對數(shù)據(jù)的自動化檢測,從而提高數(shù)據(jù)的有效性和規(guī)范性。主要包括數(shù)據(jù)上傳模塊,數(shù)據(jù)規(guī)則定義模塊,數(shù)據(jù)檢測與修改模塊,具體功能如圖1所示。
(1)數(shù)據(jù)上傳模塊:對需要檢測的數(shù)據(jù)進行上傳,導入臨時數(shù)據(jù)表中。
(2)規(guī)則定義模塊:新建字段的規(guī)范規(guī)則,修改或刪除定義過的規(guī)則信息。
(3)數(shù)據(jù)檢測模塊:調(diào)用已有的檢測規(guī)則,對數(shù)據(jù)進行數(shù)據(jù)檢測,修改錯誤數(shù)據(jù)并保存。
系統(tǒng)的操作流程如圖2所示:用戶登錄系統(tǒng)后,首先上傳待檢測的數(shù)據(jù)文件,然后對待檢測的字段設(shè)置相應的檢測規(guī)則,然后進行檢測。對檢測有錯的數(shù)據(jù)可以進行修改并保存。
2.關(guān)鍵技術(shù)
2.1帶進度顯示的文件上傳
待檢測的上傳文件其包含的數(shù)據(jù)量可能比較大,由此會導致數(shù)據(jù)文件上傳過程較長。為了避免在此期間用戶以為系統(tǒng)假死,特選用了帶進度顯示的文件上傳模式。經(jīng)過比較,我們選擇了Uplodify插件。這是一款基于jQuery的文件上傳插件,其功能特色包括:帶進度條顯示,可現(xiàn)實上傳進度或速度;支持單文件或多文件上傳,可控制并發(fā)上傳的文件數(shù);在服務器端支持各種語言與之配合使用,諸如PHP,.NET,Java;通過參數(shù)可配置上傳文件類型及大小限制;通過參數(shù)可配置是否選擇文件后自動上傳;易于擴展,可控制每一步驟的回調(diào)函數(shù)(onSelect,onCancel);通過接口參數(shù)和CSS控制外觀等。上傳效果如圖3所示。
2.2解析Excel數(shù)據(jù)文件中設(shè)置的規(guī)則
除了提供獨立的規(guī)則設(shè)置功能外,系統(tǒng)也提供從上傳的Excel數(shù)據(jù)文件中提取規(guī)則,此時須在數(shù)據(jù)文件的首行分別為每個字段設(shè)置檢測規(guī)則,不檢測的字段則留空。為此,系統(tǒng)定義了如表1所示的規(guī)則解析特征表。
下面以圖4所示的帶規(guī)則的數(shù)據(jù)文件為例加以說明。
其中:
(1)院校代碼yxdm的規(guī)則C[dmYx.Dm]含義為:該列的數(shù)據(jù)取值參照代碼表dmYx中的Dm字段。
(2)同理,院校名稱yxmc的規(guī)則也是參照代碼表dmYx,只是此時為Mc字段。
(3)姓名xm的規(guī)則M含義為:該列的數(shù)據(jù)為必填項。
(4)學號xh的規(guī)則M|O|N7含義為:該列的數(shù)據(jù)為必填、唯一,且數(shù)據(jù)為7位數(shù)字。
(5)身份證號碼sfzhm的規(guī)則M|O|L[15,18]含義為:該列的數(shù)據(jù)為必填、唯一,且長度為15位或18位。因為18位身份證號碼的最后一位可能為字母X,所以該規(guī)則中不能使用N標識符。
(6)性別代碼xbdm的規(guī)則W[1,2]含義為:該列的數(shù)據(jù)取值只能是1或2。
(7)成績score的規(guī)則F1|W[0-100]含義為:該列的數(shù)據(jù)為最多帶1位小數(shù)的浮點數(shù),且取值范圍為0至100。
另外,對于較復雜的規(guī)則(如電話號碼或電子郵箱等),建議用正則表達式的方式加以限定。例如,電話號碼的規(guī)則R((0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?,其含義為:電話號碼必須由0開頭的3-4位區(qū)號(可省略不填)、7-8位號碼以及至少3位的分機號(也可省略)組成,且每個部分之間用"-"相連。
3.結(jié)束語
在目前日益增多的管理信息系統(tǒng)的開發(fā)和使用過程中,項目開發(fā)人員和用戶迫切需要一個既省時又方便的數(shù)據(jù)完整性檢測功能。本文采用B/S模式的體系結(jié)構(gòu),基于ASP.NET,結(jié)合ADO.NET和SQL Server2005,利用自定義規(guī)則設(shè)置與解析機制設(shè)計開發(fā)了一個通用化、自動化、定制化的數(shù)據(jù)完整性檢測系統(tǒng)。該系統(tǒng)可以簡化數(shù)據(jù)檢測的實現(xiàn),提高檢測與修改的效率,從而進一步提高數(shù)據(jù)的完整性,以及管理信息系統(tǒng)的開發(fā)效率和使用便捷性。 [科]
【參考文獻】
[1]羅振一,李陶深.一種實現(xiàn)BSS帳務系統(tǒng)數(shù)據(jù)檢測的技術(shù)方案[J].廣西科學院學報,2009,25(04):330-332.
[2]焦陽,王德奎,王亞芳等.智能數(shù)據(jù)檢測管理系統(tǒng)的研制[J].河北科技大學學報,2005,26(6):153-155,172.
[3]百度文庫.C#讀取EXCEL文件的三種經(jīng)典方法[OL].百度文庫.http://wenku.baidu.com/view/334d6d1d59eef8c75fbfb335.html.
[4]一葉知秋.Uploadify使用說明[OL].博客園.http://www.cnblogs.com/msnbluesky/archive/2011/10/13/2210464.html.