孫仁鵬 吳聰 卞光亮
摘要:MIS系統(tǒng)的查詢模塊一般與數(shù)據(jù)庫(kù)和業(yè)務(wù)緊耦合、不通用,不能滿足一些特定的應(yīng)用場(chǎng)景。為解決該不足,基于數(shù)據(jù)字典和用戶數(shù)據(jù)字典來(lái)設(shè)計(jì)查詢,并且將查詢權(quán)限融入設(shè)計(jì)。查詢自定義模塊根據(jù)鏈接的數(shù)據(jù)庫(kù)產(chǎn)品類別,定位存放查詢對(duì)象和查詢字段的數(shù)據(jù)字典表,翻譯查詢信息至用戶數(shù)據(jù)字典表,然后查詢模塊提取翻譯的查詢信息,由終端用戶選擇和輸入條件,實(shí)現(xiàn)靈活動(dòng)態(tài)查詢,并對(duì)查詢結(jié)果進(jìn)行統(tǒng)計(jì)和輸出。同時(shí),為用戶動(dòng)態(tài)分配權(quán)限,權(quán)限的粒度可控制到字段。系統(tǒng)動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù)、動(dòng)態(tài)生成界面、動(dòng)態(tài)生成SQL、動(dòng)態(tài)設(shè)置權(quán)限、動(dòng)態(tài)數(shù)據(jù)處理,實(shí)現(xiàn)了查詢的通用性和自適應(yīng)數(shù)據(jù)庫(kù)的變遷,實(shí)際應(yīng)用效果較好。
關(guān)鍵詞:通用查詢;數(shù)據(jù)字典;查詢權(quán)限;自適應(yīng)數(shù)據(jù)庫(kù)變遷;動(dòng)態(tài)界面
DOIDOI:10.11907/rjdk.161380
中圖分類號(hào):TP392
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2016)005-0169-02
0 引言
MIS系統(tǒng)查詢模塊往往面向特定數(shù)據(jù)庫(kù)、特定企業(yè)業(yè)務(wù),與具體數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)緊密耦合,不通用。正是這種不通用,導(dǎo)致一些實(shí)際場(chǎng)景想查看數(shù)據(jù)就顯得非常不便。比如:數(shù)據(jù)庫(kù)初始化、導(dǎo)庫(kù)已完成,想查看數(shù)據(jù)是否正確或完整;業(yè)務(wù)系統(tǒng)還沒(méi)有正式上線,想驗(yàn)證封裝業(yè)務(wù)的sql語(yǔ)句執(zhí)行的結(jié)果否正確;一線員工往往無(wú)權(quán)使用企業(yè)業(yè)務(wù)系統(tǒng),但是隨時(shí)想查看自己每天的工作量有沒(méi)有被弄錯(cuò)等。另外,用戶可能需要根據(jù)各個(gè)屬性的各種組合條件選擇性地查詢需要的實(shí)體屬性,靈活方便查詢。自適應(yīng)數(shù)據(jù)庫(kù)變遷的通用查詢系統(tǒng)由于通用,難以實(shí)現(xiàn)豐富的個(gè)性化查詢圖表報(bào)表需求,但是有其應(yīng)用需求,而這方面的研究并不多見(jiàn)。
1 研究思路
自適應(yīng)數(shù)據(jù)庫(kù)變遷的通用查詢系統(tǒng)需滿足通用性、靈活性和翻譯性。通用性指不因查詢需求的多少和改變而修改程序,不因數(shù)據(jù)庫(kù)結(jié)構(gòu)的改變或數(shù)據(jù)庫(kù)的變遷而修改程序。靈活性指查詢項(xiàng)由用戶選擇,查詢條件由用戶動(dòng)態(tài)輸入和組合,查詢結(jié)果可統(tǒng)計(jì)、可寫(xiě)入Excel,查詢權(quán)限的粒度可細(xì)到字段。翻譯性指查詢需求信息具有國(guó)際化功效,能自適應(yīng)不同語(yǔ)言的用戶。
1.1 查詢sql語(yǔ)句與查詢系統(tǒng)分離
顯然,查詢sql語(yǔ)句不能事先嵌入到查詢程序中,因?yàn)椴樵兿到y(tǒng)是通用的,事先不知道查詢需求和數(shù)據(jù)庫(kù)情況,查詢程序只是查詢運(yùn)行的平臺(tái)。
1.2 數(shù)據(jù)字典實(shí)現(xiàn)通用性
數(shù)據(jù)字典記錄了數(shù)據(jù)庫(kù)的總體信息,包括表、視圖、字段名、類型等,其維護(hù)工作也由數(shù)據(jù)庫(kù)服務(wù)器自動(dòng)完成。用戶查詢需求用視圖封裝,自動(dòng)存放在數(shù)據(jù)字典中。當(dāng)有新的查詢需求時(shí),就編寫(xiě)相應(yīng)的視圖,只不過(guò)該視圖一般不含任何參數(shù),具體參數(shù)是通過(guò)查詢軟件傳遞過(guò)來(lái)并動(dòng)態(tài)構(gòu)建查詢sql,從視圖對(duì)應(yīng)的數(shù)據(jù)集中提取用戶所需的子集。對(duì)于業(yè)務(wù)復(fù)雜的查詢需求,即不能直接用視圖來(lái)表達(dá),可以通過(guò)業(yè)務(wù)系統(tǒng)或存儲(chǔ)過(guò)程的執(zhí)行,將執(zhí)行結(jié)果集存于中間表中,然后再用視圖封裝。通過(guò)對(duì)數(shù)據(jù)字典的設(shè)計(jì)來(lái)對(duì)數(shù)據(jù)庫(kù)表進(jìn)行管理和控制,實(shí)現(xiàn)應(yīng)用程序和表結(jié)構(gòu)的分離,開(kāi)發(fā)人員僅需在查詢定義中引入完善的數(shù)據(jù)字典,即可完成系統(tǒng)定制查詢功能。
1.3 查詢翻譯
數(shù)據(jù)字典中存放視圖和表等數(shù)據(jù)庫(kù)服務(wù)器端對(duì)象信息,也存放其對(duì)應(yīng)的字段信息。從數(shù)據(jù)字典中提取查詢需求(在數(shù)據(jù)庫(kù)服務(wù)器端以視圖和字段形式表現(xiàn)),動(dòng)態(tài)生成查詢翻譯界面,翻譯成用戶可理解的語(yǔ)言,包括視圖名和對(duì)應(yīng)字段的翻譯。查詢需求和翻譯的對(duì)應(yīng)關(guān)系,即翻譯結(jié)果保存在用戶數(shù)據(jù)字典中。一個(gè)用戶數(shù)據(jù)字典表存放視圖、表對(duì)象和對(duì)應(yīng)的翻譯信息,比如視圖名、視圖中文名等;另一個(gè)用戶數(shù)據(jù)字典表存放對(duì)應(yīng)字段名和中文名。查詢翻譯需要操作存放對(duì)象的數(shù)據(jù)字典表和存放對(duì)象對(duì)應(yīng)字段的數(shù)據(jù)字典表,對(duì)象的約束條件為視圖,存放翻譯結(jié)果的對(duì)應(yīng)兩個(gè)用戶數(shù)據(jù)字典表。顯然,查詢翻譯不是給終端用戶用來(lái)查詢數(shù)據(jù),而是給了解企業(yè)數(shù)據(jù)庫(kù)信息的工作者用來(lái)完成查詢?cè)O(shè)置的,即將數(shù)據(jù)庫(kù)中定義的查詢需求信息翻譯成用戶可理解的語(yǔ)言,方便不同語(yǔ)言用戶。
1.4 查詢
查詢翻譯的結(jié)果是供查詢程序使用。查詢程序根據(jù)用戶數(shù)據(jù)字典和用戶選擇的查詢需求動(dòng)態(tài)生成查詢界面,根據(jù)用戶選擇的查詢需求、字段信息和輸入的查詢條件(字段的精確值、模糊值和范圍),再映射回用戶數(shù)據(jù)字典,構(gòu)建最終所需的完整SQL語(yǔ)句,輸出查詢結(jié)果。
1.5 查詢結(jié)果處理
對(duì)查詢結(jié)果設(shè)定匯總和統(tǒng)計(jì)功能,完成查詢范圍中數(shù)值型字段的匯總統(tǒng)計(jì),實(shí)現(xiàn)查詢結(jié)果和匯總結(jié)果寫(xiě)入到Excel文件中。
1.6 權(quán)限管理
基于角色—用戶—權(quán)限進(jìn)行權(quán)限管理,為用戶分配角色,為角色分配查詢項(xiàng),包括分配查詢對(duì)象和查詢字段,不同用戶登錄后能夠查詢不同的內(nèi)容。
1.7 自適應(yīng)數(shù)據(jù)庫(kù)變遷
JAVA的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)JDBC可為不同關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),通過(guò)加載不同的數(shù)據(jù)庫(kù)驅(qū)動(dòng)訪問(wèn)不同數(shù)據(jù)庫(kù)產(chǎn)品,同時(shí)將加密數(shù)據(jù)庫(kù)鏈接信息寫(xiě)入配置文件,實(shí)現(xiàn)自適應(yīng)對(duì)不同數(shù)據(jù)庫(kù)的訪問(wèn)。通過(guò)操作數(shù)據(jù)庫(kù)元數(shù)據(jù),獲取數(shù)據(jù)庫(kù)產(chǎn)品和版本,獲取不同數(shù)據(jù)庫(kù)產(chǎn)品存放視圖和字段的數(shù)據(jù)字典信息。
2 關(guān)鍵實(shí)現(xiàn)
2.1 表設(shè)計(jì)
不同數(shù)據(jù)庫(kù)產(chǎn)品,數(shù)據(jù)字典表名不同,下面以oracle產(chǎn)品為例說(shuō)明。數(shù)據(jù)字典表user_objects記錄了數(shù)據(jù)庫(kù)對(duì)象信息,user_tab_cols記錄了對(duì)象與字段的關(guān)系及字段類型。用戶數(shù)據(jù)字典表tablename記錄數(shù)據(jù)庫(kù)服務(wù)器端視圖名和供客戶理解的翻譯信息對(duì)應(yīng)關(guān)系,比如中英文對(duì)應(yīng)關(guān)系;columnname記錄中英文字段對(duì)應(yīng)關(guān)系、字段類型、屬于哪個(gè)對(duì)象和顯示順序等信息;querycondition記錄用戶常用的查詢,以免重復(fù)選擇查詢字段和輸入查詢條件。用戶權(quán)限表role、acount、roleaccount和rolepermission用于權(quán)限管理,控制用戶查詢權(quán)限,權(quán)限粒度可到字段。以自定義的部分用戶數(shù)據(jù)表為例說(shuō)明。
2.2 數(shù)據(jù)庫(kù)鏈接
鏈接模塊從界面配置數(shù)據(jù)庫(kù)URL信息、從配置文件讀取驅(qū)動(dòng)名,創(chuàng)建用戶數(shù)據(jù)字典表和權(quán)限管理相關(guān)表,生成權(quán)限管理的Root角色和管理員賬號(hào)密碼,為系統(tǒng)作初始化配置。
2.3 查詢自定義
查詢自定義需要Root角色的賬號(hào),功能包括將視圖翻譯成用戶可理解的文字信息和查詢權(quán)限管理。程序從user_tab_cols表中取出視圖對(duì)象,選擇一個(gè)視圖對(duì)象時(shí),再?gòu)膗ser_tab_cols表中取出對(duì)應(yīng)字段名,動(dòng)態(tài)顯示在界面上。如果該視圖名和對(duì)應(yīng)的字段名已進(jìn)行了中英文翻譯,則在界面上顯示相應(yīng)的中英文翻譯結(jié)果,并可修改,也可設(shè)定字段的顯示順序??梢越o角色分配視圖和視圖中的字段,用戶的權(quán)限可以細(xì)化到字段的查詢。
2.4 查詢
用戶登錄后,根據(jù)權(quán)限、所選的中文對(duì)象名(視圖翻譯)、中文字段名(字段翻譯)和用戶輸入的條件,映射對(duì)應(yīng)的視圖名和字段名,動(dòng)態(tài)構(gòu)建SQL語(yǔ)句。根據(jù)tablename中翻譯信息動(dòng)態(tài)生成查詢需求,根據(jù)用戶選擇的查詢需求和columnname中翻譯的信息動(dòng)態(tài)生成查詢界面中相應(yīng)文本框、復(fù)選框、標(biāo)簽和日期等控件;根據(jù)用戶的選擇、輸入和數(shù)據(jù)字典中信息,生成查詢結(jié)果。字段值可精確查詢,也可模式匹配查詢(在文本框前后加上%),也可在一定范圍內(nèi)查詢(在左右文本框中分別輸入值)。也可將經(jīng)常使用的查詢信息命名保存起來(lái),下次直接選擇已有的查詢?cè)O(shè)置,避免再次選擇和輸入查詢條件。
3 結(jié)語(yǔ)
傳統(tǒng)的查詢模塊與具體應(yīng)用緊耦合,不同的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)需獨(dú)立編寫(xiě),每次用戶查詢需求變化后都要重新編寫(xiě)、修改和部署查詢程序。本系統(tǒng)是一個(gè)通用查詢工具,能夠自適應(yīng)數(shù)據(jù)庫(kù)的變遷、結(jié)構(gòu)變化和查詢需求變化,可對(duì)任何字段進(jìn)行條件查詢,權(quán)限控制粒度可到每個(gè)字段,查詢結(jié)果可統(tǒng)計(jì)、可寫(xiě)入Excel文件,同時(shí)具有國(guó)際化效果,獨(dú)立于具體數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。所有變化可通過(guò)簡(jiǎn)單設(shè)置和配置來(lái)完成,方便用戶數(shù)據(jù)查詢,是傳統(tǒng)查詢模塊的有益補(bǔ)充。
參考文獻(xiàn):
[1]王德廣,張軍卒,李文.基于數(shù)據(jù)字典的通用查詢平臺(tái)的設(shè)計(jì)[J].科學(xué)技術(shù)與工程,2009,9(19):5850-5851.
[2]任慶東,李永盛,袁文翠等.基于元數(shù)據(jù)驅(qū)動(dòng)的勘探開(kāi)發(fā)綜合數(shù)據(jù)庫(kù)通用查詢系統(tǒng)[J].大慶石油學(xué)院學(xué)報(bào),2010,34(6):91-92.
[3]江海龍,吳曉東,邵志驊. 公安交通管理信息系統(tǒng)通用查詢統(tǒng)計(jì)模型研究與應(yīng)用[J]. 交通信息與安,2014,32(4):150-151.
(責(zé)任編輯:陳福時(shí))