李竹林
(1.延安大學 計算機學院,陜西 延安 716000;2.延安大學 軟件研究與開發(fā)中心,陜西 延安 716000)
查詢功能是信息管理系統(tǒng)中最基本的功能之一,是使用用戶最多、點擊率最頻繁的模塊[1-3]。查詢功能主要實現(xiàn)根據(jù)用戶的選擇,實現(xiàn)組合條件查詢。根據(jù)企業(yè)信息管理系統(tǒng)中數(shù)據(jù)查詢特點,一次查詢的數(shù)據(jù)不僅包含自己部門的基礎數(shù)據(jù),還往往要查詢部門間相關(guān)數(shù)據(jù)。因此,如何將部門內(nèi)或部門間的數(shù)據(jù)靈活地組織起來以實現(xiàn)數(shù)據(jù)靈活、動態(tài)的查詢是非常重要的。為了方便用戶查詢數(shù)據(jù),文中設計并實現(xiàn)了基于多表的動態(tài)查詢模塊,使得用戶可以靈活組織查詢數(shù)據(jù)項,設置查詢條件,甚至可以編輯查詢條件。該模塊應用到某采油廠的生產(chǎn)管理系統(tǒng)中并投入使用,應用結(jié)果表明,查詢靈活度高、速度快,用戶的滿意度調(diào)查達到98%以上。
動態(tài)查詢是為用戶提供的一種靈活、方便的查詢方式,是指用戶可以自主篩選查詢字段項,自己設計組合查詢條件與排序條件,然后根據(jù)設計的條件與排序方式,查詢出滿足條件的查詢結(jié)果。下面以某采油廠的生產(chǎn)管理系統(tǒng)為應用背景,介紹該動態(tài)方法的設計過程與實現(xiàn)方法。
為了提高用戶查詢的速度與效率,為數(shù)據(jù)的動態(tài)查詢建立了多個視圖,部分視圖與查詢數(shù)據(jù)項的對應關(guān)系如表1所示。
表1 視圖與查詢數(shù)據(jù)的對應關(guān)系Tab.1 The corresponding relationship of views and query data
為了提高動態(tài)查詢模塊的通用性,設計了通用動態(tài)查詢用戶控件,設計方法如下。
1.2.1 查詢表字段動態(tài)獲取
為了提高查詢速度、擴大查詢數(shù)據(jù)范圍,設計了基于視圖的動態(tài)數(shù)據(jù)查詢,實現(xiàn)一次查詢數(shù)據(jù)庫中多個表中數(shù)據(jù)的動態(tài)查詢方法。由于SQL Server 2005數(shù)據(jù)庫系統(tǒng)具有自描述性,不僅包含數(shù)據(jù)庫內(nèi)容、數(shù)據(jù)庫結(jié)構(gòu)、約束的完整定義和描述,而且還可以動態(tài)管理系統(tǒng)視圖;所有動態(tài)管理視圖和函數(shù)都存在于 sys架構(gòu)中,且表的元數(shù)據(jù)中只有一個具有名稱和id的項[4-6]。因此,可以利用系統(tǒng)視圖獲取動態(tài)查詢的表與相應的列名。下面以油田單井基礎信息為例,建立單井基礎信息視圖v_djjc,并利用系統(tǒng)視圖查詢方法獲取動態(tài)查詢字段名。基本語句: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
單井基礎信息視圖v_djjc包含了16個相關(guān)聯(lián)的表和字典,例如單井基礎信息表(t_djjc)、單井安裝信息表(t_djaz)、區(qū)隊字典(t_yh)、單位字典(d_dw)、井別字典(d_jb)、井位字典(d_jw)等,然后用表3所示的SQL語句獲取視圖v_djjc所包含的所有字段名,其中的"sys.columns.name<>'狀態(tài)'and sys.columns.name<>'單位代碼'"是過濾掉不需要用戶選擇查詢的字段;vname="v_djjc"。
表3 獲取動態(tài)查詢字段名的SQL語句Tab.3 SQL to obtain dynamic query fields name
1.2.2 控件屬性設置
設計與實現(xiàn)通用動態(tài)查詢的控件屬性設置如表4所示。
1.2.3 通用動態(tài)查詢控件的設計流程
在查詢控件中設計了多個方法,如多表字段名的動態(tài)獲取、組合查詢條件字符串生成、排序條件字符串的生成、最終動態(tài)查詢SQL語句的生成,以及查詢功能等。這些方法均封裝在控件中,并提供了與查詢[7]系統(tǒng)實現(xiàn)的服務接口。用戶控件的設計流程如圖1所示。
動態(tài)查詢模塊的功能實現(xiàn)同樣遵循系統(tǒng)的唯一入口即登錄窗口,根據(jù)用戶的權(quán)限決定用戶是否能登錄成功,若成功登錄后,則攜帶著使用系統(tǒng)的重要參數(shù),如用戶姓名、用戶所在單位等進入系統(tǒng);該用戶有無查詢功能是依據(jù)系統(tǒng)管理員對業(yè)務的分配決定的,若有,則執(zhí)行動態(tài)查詢功能,詳細流程如圖2所示。
圖1 動態(tài)查詢控件的設計流程Fig.1 The design process of dynamic query control
將設計的該模塊應用于采油廠原油生產(chǎn)管理系統(tǒng)中,受到用戶極大的歡迎。查詢頁面如圖3所示。
應用結(jié)果表明,該查詢模塊具有如下的優(yōu)點:
1)速度快、效率高 基于視圖的查詢可大大提高基于多用戶頻繁使用的查詢模塊速度;
2)安全性好 登錄進入查詢系統(tǒng)之后,只能查詢系統(tǒng)管理員已分配給自己的動態(tài)查詢業(yè)務。而且用戶登錄時采用的是實名制,在用戶日志中有用戶每一次的使用系統(tǒng)記錄;
3)靈活且功能強大 用戶可以自己定制查詢字段,也可以自己設計數(shù)據(jù)查詢的組合條件以及數(shù)據(jù)排序的字段、順序,因此動態(tài)查詢是一種完全根據(jù)用戶需要的查詢方式。而且,用戶可以自己編寫或修改組合查詢條件以達到查詢目的;
4)查詢信息量大 本系統(tǒng)的動態(tài)查詢字段不是建立在傳統(tǒng)的單表,而是首先根據(jù)數(shù)據(jù)的重要性與相關(guān)性建立了31個視圖,提供了豐富的信息,使得用戶在每次查詢過程中,可以查詢到相關(guān)聯(lián)的數(shù)據(jù);
5)可維護性強 用戶要查詢的字段項全部是通過所建立的視圖獲取的,因此,若用戶的查詢數(shù)據(jù)字段有所變化,只需修改視圖而不需要直接修改代碼;另外,設計實現(xiàn)了通用的動態(tài)查詢控件后,大大簡化了動態(tài)查詢模塊的維護;
6)界面友好、易操作 動態(tài)查詢頁面設計友好,操作簡單。
圖2 動態(tài)查詢實現(xiàn)流程圖Fig.2 The realization flow chart of dynamic query
圖3 單井壓裂動態(tài)查詢頁面Fig.3 The dynamic query page of single well
傳統(tǒng)的靜態(tài)查詢方式具有查詢數(shù)據(jù)項、查詢條件不能動態(tài)設置的缺點,使其不能滿足用戶靈活性要求。本文根據(jù)企業(yè)信息管理的需要,設計了基于多表的動態(tài)查詢模塊,并將其應用于原油生產(chǎn)管理系統(tǒng)中,取得了很好的查詢結(jié)果。事實上,該方法也可用任意信息管理系統(tǒng)中的查詢子系統(tǒng)中。
[1]李成,王衛(wèi)東.重點工程信息和質(zhì)量驗收標準移動查詢系統(tǒng)的研發(fā)[J].鐵路計算機應用,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)絡管理信息系統(tǒng)研建[J].甘肅林業(yè)職業(yè)技術(shù)學院學報,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ù)庫的醫(yī)院信息系統(tǒng)設計與實現(xiàn)[J].電腦知識與技術(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動態(tài)網(wǎng)站開發(fā)從基礎到實踐[M].北京:電子工業(yè)出版社,2007.
[6]劉軍,陽小華,楊星.基于B/S模式的通用型組合查詢組件的設計[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地圖高級查詢功能的實現(xiàn)[J].工業(yè)儀表與自動化裝置,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.