程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 談談偶的通用數據庫查詢器開發心得

談談偶的通用數據庫查詢器開發心得

編輯:關於JAVA

目前,基於關系型數據庫(數據庫培訓 數據庫認證 )的應用系統到處都是,能否提供一個強大的數據查詢功能是這些系統優劣的一個重要考量指標。很多大型的數據庫應用軟件公司都有自己的查詢器。比如用友、SAP等。但是它們的查詢器只用於自身的系統。

偶一日閒來無事,突生開發一通用東東玩玩的念頭,隧有DataGetter查詢器的誕生。偶之設計為針對應用系統之普通用戶,非我等之IT技術人員也,故設計之時需假設用戶不了解基表結構,不了解任何SQL語句。

奮戰一月,終有小成,然不敢私藏,故借CSDN示之以眾,若能對人有所啟迪,則幸莫大焉!

基本概念定義

業務對象:

已存於原始數據庫的定義之中。在數據庫中基表大致可以劃分為兩類,一類是定義實體(對象)的,另一類是用來定義實體(對象)間關系的。一類業務對象一定能找到對應的基表定義。基表中的每一條記錄就代表一個具體的業務對象定義。

特征:

一個特征就反映某對象某方面的特性。特征具有通過對象關系進行傳遞和匯聚的特性。特征分為狹義特征和廣義特征。

狹義特征:

一個狹義特征是某對象的直接特性。原始數據庫中的每一基表的每個業務字段都是特征,亦可稱為基本特征。

廣義特征:

除狹義特征外還包括某對象通過傳遞規則和匯聚規則所得到的所有特征和相關所有衍生特征。

傳遞規則:

對於對象A和B,若其間的對象關系為n:1,則稱B的特征可以被傳遞給A,即可直接視B的特征為A的特征。

匯聚規則:

對於對象A和B,若關系為1:n,則稱B的特征可被匯聚成A的特征。

衍生特征:由單行記錄中一個或多個特征經過一定固定的計算而推演出的新特征為衍生特征,也稱導出特征。該類特征和匯聚特征通常都不直接存在於原始數據庫中,而是要進行專門的編程來實現。因此能否很好的支持這兩種特征便是判斷一個取數工具強大與否的重要條件。

基於以上概念,可對用戶取數行為本質作如此定義:是用戶獲取關注對象的關注特征值的過程。比如某合同管理人員在某天需要某個合同的執行情況數據,具體包括合同簽訂日期、承包商名稱、合同總金額、累計發生成本、累計完成工程量、本年累計發生成本、本年累計工程量等信息。在這個例子中,某個合同就成為了用戶的關注對象,而合同簽訂日期等就成為了該關注對象的關注特征。在這些特征中,合同簽訂日期、承包商名稱、合同總金額就屬於基本特征,而累計發生成本、累計完成工程量、本年累計發生成本、本年累計工程量屬於衍生特征。

綜上所述,我們可以知道用戶需要的特征可能在一個基表中,也有可能散落在不同的基表中。這就是數據查詢器開發的關鍵和難點,而基於業務對象―特征方法的兩層結構恰好是解決這個問題的一個好辦法。

以上是偶開發DataGetter的理論基礎。DataGetter對用戶隱藏了數據庫的結構信息而以兩層結構方式向用戶直接展現業務對象和其所有業務特征。用戶只要找到業務對象就能獲取它所有相關的特征,而不需要考慮它到底散落在數據庫的哪個基表中。這大大方便了用戶的取數。同時,軟件還提供了可擴充的衍生計算方法庫、匯聚計算方法庫,用戶若有新的特征需要,則只需按照規定在相應表中進行簡單登記即可。若碰到比較特殊的需求,可通過擴充相關方法庫來滿足需要。以下通該軟件的介紹來進一步說明基於業務對象-特征兩層結構方法開發數據查詢器方法的實際工作原理。

介紹

(1) 系統框架圖

(2) 軟件使用示例

演示假象場景:某信息系統包含一合同管理系統,該合同管理系統具有登記合同基本信息、記錄合同每次支付單信息的功能。該系統的原始數據庫基表結構如下。

某業務人員想獲取2003年簽訂的合同及執行的有關情況,具體內容為:合同代碼、合同名稱、合同簽訂日期、合同承包商名稱、合同金額、合同累計支付金額。在這樣的一個取數例子中,對照上面的基表可以知道本次關注對象為所有2002年簽訂的合同,而關注特征中合同代碼、合同名稱、合同簽訂日期、合同累計支付金額為基本特征,合同承包商名稱為

傳遞特征,而合同累計支付金額為匯聚特征。這個查詢要求的完成過程說明及圖示見如下。

第一步:選擇所關注的對象類別,因為合同對象都在合同文件櫃中因此選擇合同文件櫃即可。然後點擊下一步。

第二步是選擇所關注的特征。需要注意的是用戶需要的累計支付金額已經出現左邊在特征列表中,這是因為預先在特征表中進行了登記,故而用戶只需要使用而不需要考慮如何去完成累計值的計算。選擇完成後點擊下一步。

第三步是定義對象篩選條件。可通過鼠標或直接在條件定義框中輸入的方式來定義篩選條件。

第四步是啟動DataGetter Software取數引擎。本步操作僅是點擊完成鍵。一點便完成了取數引擎的啟動工作。

第五步是查看取數結果並可對其進行其它操作,本次案例的結果如下。DataGetter Software提供了在系統內進行結果查看和打印的功能,同時能將結果保存為TXT格式文件。運用此功能可在其它諸如Excel之類的表格處理軟件中讀取取數結果便於進一步的分析、處理、打印等。

(3) DataGetter Software特點

1.采用先進的Java語言編制而成。

2.可支持多種數據庫。

3.最終用戶的零數據庫知識要求。

4.最終用戶的零操作培訓。

5.最終用戶的零用戶編程。

6.可提出存在於多表中的相關數據。

7.取數速度快。

8.系統提供了可擴充的多行運算方法庫(比如累計、平均值等)。用戶可以象獲取其它基本數據一樣簡單的獲取多行運算結果數據而不需要使用運算函數的使用方法。

9.系統提供了可擴充的導出方法庫(通過已有的數據生成新的有意義的數據,比如日期數據可以導出年份數據)。

10.系統提供了可擴充的關系運算方法庫。

11.系統提供了可擴充的特征庫。

12.系統可將數據提取結果存儲為文本格式。以便滿足用戶將數據提取結果轉入到Excel等專用表格處理軟件之中完成進一步的處理、排版、打印等的需要。

13.可在系統中以Excel網格形式浏覽提取結果。

14.系統提供了快速打印提取結果的功能。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved