李竹林
(1.延安大學(xué) 計(jì)算機(jī)學(xué)院,陜西 延安 716000;2.延安大學(xué) 軟件研究與開發(fā)中心,陜西 延安 716000)
查詢功能是信息管理系統(tǒng)中最基本的功能之一,是使用用戶最多、點(diǎn)擊率最頻繁的模塊[1-3]。查詢功能主要實(shí)現(xiàn)根據(jù)用戶的選擇,實(shí)現(xiàn)組合條件查詢。根據(jù)企業(yè)信息管理系統(tǒng)中數(shù)據(jù)查詢特點(diǎn),一次查詢的數(shù)據(jù)不僅包含自己部門的基礎(chǔ)數(shù)據(jù),還往往要查詢部門間相關(guān)數(shù)據(jù)。因此,如何將部門內(nèi)或部門間的數(shù)據(jù)靈活地組織起來(lái)以實(shí)現(xiàn)數(shù)據(jù)靈活、動(dòng)態(tài)的查詢是非常重要的。為了方便用戶查詢數(shù)據(jù),文中設(shè)計(jì)并實(shí)現(xiàn)了基于多表的動(dòng)態(tài)查詢模塊,使得用戶可以靈活組織查詢數(shù)據(jù)項(xiàng),設(shè)置查詢條件,甚至可以編輯查詢條件。該模塊應(yīng)用到某采油廠的生產(chǎn)管理系統(tǒng)中并投入使用,應(yīng)用結(jié)果表明,查詢靈活度高、速度快,用戶的滿意度調(diào)查達(dá)到98%以上。
動(dòng)態(tài)查詢是為用戶提供的一種靈活、方便的查詢方式,是指用戶可以自主篩選查詢字段項(xiàng),自己設(shè)計(jì)組合查詢條件與排序條件,然后根據(jù)設(shè)計(jì)的條件與排序方式,查詢出滿足條件的查詢結(jié)果。下面以某采油廠的生產(chǎn)管理系統(tǒng)為應(yīng)用背景,介紹該動(dòng)態(tài)方法的設(shè)計(jì)過(guò)程與實(shí)現(xiàn)方法。
為了提高用戶查詢的速度與效率,為數(shù)據(jù)的動(dòng)態(tài)查詢建立了多個(gè)視圖,部分視圖與查詢數(shù)據(jù)項(xiàng)的對(duì)應(yīng)關(guān)系如表1所示。
表1 視圖與查詢數(shù)據(jù)的對(duì)應(yīng)關(guān)系Tab.1 The corresponding relationship of views and query data
為了提高動(dòng)態(tài)查詢模塊的通用性,設(shè)計(jì)了通用動(dòng)態(tài)查詢用戶控件,設(shè)計(jì)方法如下。
1.2.1 查詢表字段動(dòng)態(tài)獲取
為了提高查詢速度、擴(kuò)大查詢數(shù)據(jù)范圍,設(shè)計(jì)了基于視圖的動(dòng)態(tài)數(shù)據(jù)查詢,實(shí)現(xiàn)一次查詢數(shù)據(jù)庫(kù)中多個(gè)表中數(shù)據(jù)的動(dòng)態(tài)查詢方法。由于SQL Server 2005數(shù)據(jù)庫(kù)系統(tǒng)具有自描述性,不僅包含數(shù)據(jù)庫(kù)內(nèi)容、數(shù)據(jù)庫(kù)結(jié)構(gòu)、約束的完整定義和描述,而且還可以動(dòng)態(tài)管理系統(tǒng)視圖;所有動(dòng)態(tài)管理視圖和函數(shù)都存在于 sys架構(gòu)中,且表的元數(shù)據(jù)中只有一個(gè)具有名稱和id的項(xiàng)[4-6]。因此,可以利用系統(tǒng)視圖獲取動(dòng)態(tài)查詢的表與相應(yīng)的列名。下面以油田單井基礎(chǔ)信息為例,建立單井基礎(chǔ)信息視圖v_djjc,并利用系統(tǒng)視圖查詢方法獲取動(dòng)態(tài)查詢字段名?;菊Z(yǔ)句:select sys.columns.name from sys.columns,sys.objects, sys.types where …… , 其 中 ,sys.columns, sys.objects,sys.types的含義如表2所示。
表2 相關(guān)系統(tǒng)視圖含義Tab.2 The meaning of the system views
單井基礎(chǔ)信息視圖v_djjc包含了16個(gè)相關(guān)聯(lián)的表和字典,例如單井基礎(chǔ)信息表(t_djjc)、單井安裝信息表(t_djaz)、區(qū)隊(duì)字典(t_yh)、單位字典(d_dw)、井別字典(d_jb)、井位字典(d_jw)等,然后用表3所示的SQL語(yǔ)句獲取視圖v_djjc所包含的所有字段名,其中的"sys.columns.name<>'狀態(tài)'and sys.columns.name<>'單位代碼'"是過(guò)濾掉不需要用戶選擇查詢的字段;vname="v_djjc"。
表3 獲取動(dòng)態(tài)查詢字段名的SQL語(yǔ)句Tab.3 SQL to obtain dynamic query fields name
1.2.2 控件屬性設(shè)置
設(shè)計(jì)與實(shí)現(xiàn)通用動(dòng)態(tài)查詢的控件屬性設(shè)置如表4所示。
1.2.3 通用動(dòng)態(tài)查詢控件的設(shè)計(jì)流程
在查詢控件中設(shè)計(jì)了多個(gè)方法,如多表字段名的動(dòng)態(tài)獲取、組合查詢條件字符串生成、排序條件字符串的生成、最終動(dòng)態(tài)查詢SQL語(yǔ)句的生成,以及查詢功能等。這些方法均封裝在控件中,并提供了與查詢[7]系統(tǒng)實(shí)現(xiàn)的服務(wù)接口。用戶控件的設(shè)計(jì)流程如圖1所示。
動(dòng)態(tài)查詢模塊的功能實(shí)現(xiàn)同樣遵循系統(tǒng)的唯一入口即登錄窗口,根據(jù)用戶的權(quán)限決定用戶是否能登錄成功,若成功登錄后,則攜帶著使用系統(tǒng)的重要參數(shù),如用戶姓名、用戶所在單位等進(jìn)入系統(tǒng);該用戶有無(wú)查詢功能是依據(jù)系統(tǒng)管理員對(duì)業(yè)務(wù)的分配決定的,若有,則執(zhí)行動(dòng)態(tài)查詢功能,詳細(xì)流程如圖2所示。
圖1 動(dòng)態(tài)查詢控件的設(shè)計(jì)流程Fig.1 The design process of dynamic query control
將設(shè)計(jì)的該模塊應(yīng)用于采油廠原油生產(chǎn)管理系統(tǒng)中,受到用戶極大的歡迎。查詢頁(yè)面如圖3所示。
應(yīng)用結(jié)果表明,該查詢模塊具有如下的優(yōu)點(diǎn):
1)速度快、效率高 基于視圖的查詢可大大提高基于多用戶頻繁使用的查詢模塊速度;
2)安全性好 登錄進(jìn)入查詢系統(tǒng)之后,只能查詢系統(tǒng)管理員已分配給自己的動(dòng)態(tài)查詢業(yè)務(wù)。而且用戶登錄時(shí)采用的是實(shí)名制,在用戶日志中有用戶每一次的使用系統(tǒng)記錄;
3)靈活且功能強(qiáng)大 用戶可以自己定制查詢字段,也可以自己設(shè)計(jì)數(shù)據(jù)查詢的組合條件以及數(shù)據(jù)排序的字段、順序,因此動(dòng)態(tài)查詢是一種完全根據(jù)用戶需要的查詢方式。而且,用戶可以自己編寫或修改組合查詢條件以達(dá)到查詢目的;
4)查詢信息量大 本系統(tǒng)的動(dòng)態(tài)查詢字段不是建立在傳統(tǒng)的單表,而是首先根據(jù)數(shù)據(jù)的重要性與相關(guān)性建立了31個(gè)視圖,提供了豐富的信息,使得用戶在每次查詢過(guò)程中,可以查詢到相關(guān)聯(lián)的數(shù)據(jù);
5)可維護(hù)性強(qiáng) 用戶要查詢的字段項(xiàng)全部是通過(guò)所建立的視圖獲取的,因此,若用戶的查詢數(shù)據(jù)字段有所變化,只需修改視圖而不需要直接修改代碼;另外,設(shè)計(jì)實(shí)現(xiàn)了通用的動(dòng)態(tài)查詢控件后,大大簡(jiǎn)化了動(dòng)態(tài)查詢模塊的維護(hù);
6)界面友好、易操作 動(dòng)態(tài)查詢頁(yè)面設(shè)計(jì)友好,操作簡(jiǎn)單。
圖2 動(dòng)態(tài)查詢實(shí)現(xiàn)流程圖Fig.2 The realization flow chart of dynamic query
圖3 單井壓裂動(dòng)態(tài)查詢頁(yè)面Fig.3 The dynamic query page of single well
傳統(tǒng)的靜態(tài)查詢方式具有查詢數(shù)據(jù)項(xiàng)、查詢條件不能動(dòng)態(tài)設(shè)置的缺點(diǎn),使其不能滿足用戶靈活性要求。本文根據(jù)企業(yè)信息管理的需要,設(shè)計(jì)了基于多表的動(dòng)態(tài)查詢模塊,并將其應(yīng)用于原油生產(chǎn)管理系統(tǒng)中,取得了很好的查詢結(jié)果。事實(shí)上,該方法也可用任意信息管理系統(tǒng)中的查詢子系統(tǒng)中。
[1]李成,王衛(wèi)東.重點(diǎn)工程信息和質(zhì)量驗(yàn)收標(biāo)準(zhǔn)移動(dòng)查詢系統(tǒng)的研發(fā)[J].鐵路計(jì)算機(jī)應(yīng)用,2011,20(10):5-7.
LI Cheng,WANG Wei-dong.Research and development on mobile query system for key project information and quality inspection standard[J].Railway Computer Application,2011,20(10):5-7.
[2]閆秀婧,王彩霞.教育研究網(wǎng)絡(luò)管理信息系統(tǒng)研建[J].甘肅林業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006(11):11-15.
YAN Xiu-jing,WANG Cai-xia.The education research management information system construction[J].Journal of Gansu Forestry Technological College,2006(11):11-15.
[3]尚東挺,王緒宛,王亞洲.基于大型數(shù)據(jù)庫(kù)的醫(yī)院信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2011,7(33):8123-8124.
SHANG Dong-ting,WANG Xu-wan,WANG Ya-zhou.The design and implementation of the hospital management system based on large-scale database[J].Computer Knowledge and Technology,2011,7(33):8123-8124.
[4]Pressman R S.Software Engineering:A Practitioner’s Approach[M].Sixth Edition McGraw-Hill Science/Engineering/Math,2004.
[5]劉婕,張琳,溫才燚,等.ASP.NET 2.0+SQL Server動(dòng)態(tài)網(wǎng)站開發(fā)從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2007.
[6]劉軍,陽(yáng)小華,楊星.基于B/S模式的通用型組合查詢組件的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,22(2):256-258.
LIU Jun,YANG Xiao-hua,YANG Xing.Design of a component of general combined query based browse/server mode[J].Microcomputer Information,2006,22(2):256-258.
[7]韓雙旺.基于SVG的矢量WebGIS地圖高級(jí)查詢功能的實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2011(4):68-72.
HAN Shuang-wang.The realization of advanced search functions on SVG-based vector WebGIS map[J].Industrial Instrumentation&Automation,2011(4):68-72.