摘要:某武器試驗資源庫系統中,針對擁有不同參數數據的武器型號入庫問題,提出了一種基于參數字典的動態數據庫設計方法。該方法通過參數結構表、參數字典表、數值數據表實現動態結構,較好地解決了J2EE平臺下SSH2不能通過增加數據表的方式實現動態數據庫的問題。在動態數據庫的管理中,針對參數字典更新的“少次、大量”的原則,提出并實現了3種參數字典更新模式:參數字典模板導入模式、瀏覽器端直接輸入模式、工作表導入模式。經系統驗證,很好地滿足了要求。
關鍵詞:動態數據庫;參數字典;J2EE;SSH2;動態結構
中圖分類號:TN91934文獻標識碼:A文章編號:1004373X(2012)18002203
引言
某武器試驗資源庫系統,面向多種武器裝備,支持數值、文本、圖形、圖像、視頻、音頻、模型組件和仿真工具等多種數據格式,是一個綜合的試驗信息管理系統。系統數據庫包括音頻庫、圖形圖像庫、模型和仿真工具庫、文本庫、以及數值數據庫。因為數值數據是每次試驗武器性能的總結以及武器改進的重要依據,所以存放數值數據的數值數據庫是實驗資源數據庫的重中之重。對于音頻庫、圖形圖像庫、模型和仿真工具庫和文本庫,因具有規劃好的數據結構,可以根據需求設計固定的數據庫及其表結構,這種數據庫設計模式可確保良好的數據完整性與一致性,在同類型的數據庫設計中已被廣泛應用。但是不同武器型號的試驗參數不可能完全相同,不能使用固定的幾個字段來限定參數的數量和種類,所以固定的表結構不能滿足要求,所以系統必須實現動態數據庫。
按照系統的安全性指標、軟件性能指標、適用性指標的要求,選擇J2EE(Java2Platform,EnterpriseEdition)作為開發平臺。J2EE不但繼承了B/S(Browser/Server)維護和升級方式簡單,成本低,選擇多等優點[1],還具有平臺無關性、開放的標準以及優秀的企業級應用程序框架的優勢。SSH2是J2EE平臺主流輕量級設計框架[24],也是本系統所采用的開發框架。SSH2由Struts2,Spring和Hibernate組成,結構上分為3層,分別是表示層、業務邏輯層和持久層。Hibernate作為持久層框架,實現了ORM,把數據表映射成持久層對象的形式,簡化了對數據庫的操作,大大減少利用HibernateQL從數據庫提取數據代碼的編寫量和復雜度。系統數據表由Hibernate映射成持久層對象,但數據表映射成對象類不是實時的,在系統的使用過程中增加的數據表不能映射成持久層對象。解決這個問題一般用2種方法:
(1)把動態數據結構持久化成XML格式文件的形式[5];
(2)用HashMap的鍵值映射關系來實現類似靜態數據庫的列屬性映射關系[6]。第1種方法只是針對個例,應用不廣,第2種方法的代碼量大,而且對數據庫訪問效率有影響。本文提出了一種基于參數字典的動態數據庫結構設計和管理方法。
1基于參數字典的動態數據庫設計
1.1參數字典定義
一般的武器試驗數據信息包含3個方面:參數結構、參數描述、數值數據。參數字典是相對于數據字典而定義的,是指在基于參數字典設計的數據庫中,用戶可以訪問的參數元數據的目錄,其內容包括參數的名稱、單位、數據類型等各種參數描述。它與數據集合有映射關系,通過數據庫設計,能查詢參數字典下屬全部數值數據的信息,也可以從數值數據記錄逆向搜索所屬參數的定義和描述。在某武器試驗資源數據庫中,每個武器型號也擁有它自己的參數字典,型號參數字典包含于參數字典。
1.2基于參數字典的動態數據庫結構
DBMS只能創建靜態結構的數據表,所以動態可變結構只能通過靜態數據表的“動態化”來構造,即采用靜態表結構表現動態表結構[711]。在這個前提下,提出了基于參數字典的動態數據庫設計方法。數據庫結構設計如圖1所示。
圖1動態數據庫構造模型圖在數值數據表的基礎上新建了3類表:參數結構表、參數字典表,參數字典模板表。數值數據表記錄數值數據;參數字典表記錄所有參數描述,參數與數據存在一對多的對應關系,在需要參數信息時可以通過搜索參數字典表的方式查詢數據的基本信息;參數字典模板表是參數字典表具有代表意義的參數子集,在特定情況下可以高效地更新參數字典;參數結構表存儲參數的邏輯從屬結構。從參數結構表提取結構信息,從參數索引表提取參數的基本信息,從數值數據表提取數值數據,這樣就可以得到完整的實驗數據。擁有特定的參數字典表存儲所有參數,不存在特定的幾個字段限定參數的問題,任意多種武器型號試驗數據都可以入庫。經系統驗證,由此結構設計的動態數據庫,完全可以滿足數據庫設計的3個基本范式,即:第一范式(無重復列)、第二范式(完全依賴主鍵)以及第三范式(不依賴其他非主屬性)。
2動態數據庫管理
動態數據庫管理主要是對數值數據表對象的檢索、刪除、修改、添加。在本系統中檢索體現為根據參數結構來分層檢索;刪除和修改是在檢索基礎上的數據操作;而添加數據之前必須保證數據庫中擁有該型號的參數字典,否則就必須首先添加型號參數字典。在基于參數字典設計的數據庫中,參數字典表是完成數據庫動態化的最重要所在。在武器試驗資源系統中,參數字典更新遵循“少次、大量”的原則,對應本文設計了3種參數字典更新模式:參數字典模板導入模式、瀏覽器端直接輸入模式、工作表導入模式,如圖2所示。
圖2參數字典添加的3種模式參數字典模板導入模式是基于模板的添加參數字典的方法。當數據庫中擁有型號參數字典模板,而且所要錄入的型號參數字典與數據庫已存模板相似度很大時,采用參數字典模板導入模式。進入系統后首先要搜索已存模板并選中相近模板,對現模板的武器分系統進行增加、刪除、修改,然后進入目標武器分系統對武器分系統參數進行增加、刪除、修改,最后把參數更新到參數字典表或參數字典模板表。
瀏覽器端直接輸入模式是一種從無到有地構建型號參數字典的方法。當新增的型號參數字典記錄比較少或所要錄入的型號參數字典記錄與數據庫已存模板相似度比較小時,采用瀏覽器端直接輸入模式。逐個錄入參數形成武器分系統,不同的武器分系統形成型號參數字典,最后更新到參數字典表或參數字典模板表。
有時試驗數據在獲取時采用txt的存儲格式,這種情況就可以首先手動把txt文件轉成更為規范、更好讀取的工作表格式,然后通過程序讀取。這種情況就需要工作表導入模式,它是從工作表中導入型號參數字典的方法。錄入前必須把數據對象轉成工作表且需要設定導入參數集在工作表里的格式,如工作表首列為導入參數或首行為導入參數,然后以武器分系統為基本單位整體導入,最后更新到參數字典表或參數字典表。
在參數字典添加完成之后,設定好參數結構、參數描述,完成錄入數值數據后,實驗數據的添加結束。若型號參數字典存在,只需錄入參數結構和參數描述即完成錄入。
3某武器實驗資源動態數據庫構建實例
某武器試驗資源的動態數據庫設計中使用了4類表:型號參數字典表,記錄每一個型號每一個參數的基本信息如:參數名、參數單位、所屬武器分系統、數據密級;型號參數結構表,記錄型號參數結構信息,此類表包含4個從上到下的表:型號表、階段表、數據類型表以及武器編號表;型號參數字典模板表,記錄某些典型型號參數字典;型號數值數據表,記錄型號具體實驗數值數據。
在錄入型號數據時,它的3個方面:參數結構、數值數據、參數描述,需要分別對應錄入到3類數據表中,即參數結構錄入到型號參數結構的4類表;數值數據錄入到型號數值數據表;參數描述錄入到型號參數字典表。在型號的參數字典不存在時,首先把各個參數的參數描述錄入到型號參數字典表。瀏覽器端導入模式和參數子彈模板導入模式完成的最后結構如圖3所示,選擇保存到參數字典表或者參數字典模板表,工作表錄入模式如圖4所示,選擇工作表后導入到參數字典表或參數字典模板表。