在計算機應用系統中,輸入的原始數據和處理后的結果數據一般都以數據庫表文件的形式存儲,數據庫也成為目前大多數被審信息系統的核心和基礎。數據字典是在數據庫設計過程中對各類基本要素進行描述的文檔,存放著數據庫及其表結構的描述。在對被審計單位的電子數據進行采集轉換和查詢分析時,審計人員需要查閱數據字典,以了解數據庫中數據的含義。
在審計工作中,由于被審計單位使用商業軟件,或是軟件開發不規范沒形成相應文檔,以及由于人員交接等可能的原因,會造成我們在采集被審計單位的電子數據后,被審計單位不能提供其業務系統數據庫設計說明的數據字典,而我們在不知道數據庫中每個表所存儲的內容以及表中每個字段所代表的含義的情況下,很難有效使用采集到的電子數據。若要開展計算機審計,面對數據庫中大量的表,我們該怎樣入手分析出數據庫表中存儲的內容及其表示的含義,進而對數據進行查詢分析呢?面對中小規模的數據庫,在審計工作實踐中,我們總結出了一些經驗。
一、分析思路
在手工處理方式下,一個單位的管理部門通過業務部門報送的若干份報表,可以了解該單位的基本業務情況。而應用計算機操作的業務系統中,數據庫少則存儲著幾十個表,多則有成百上千個表。那么,數據庫中的表和報送給管理部門的報表有無對應的關系呢?答案是肯定的。既然如此,我們就可以對數據庫中的表刪繁就簡,僅關注我們審計需要的數據表。
在軟件開發中,根據PARETO的80-20原則,企業中的80%的問題可以用20%的投資來解決,如果要求大而全,那么20%的次要問題是需要你花費80%的投資的。這也就是說,核心業務處理也許只占了整個軟件功能中的一小部分,而許多工作是花費在完善功能以及安全控制等方面,在完善的過程中,會形成大量的數據庫表。因此,一個單位使用的系統中,與業務處理的各個環節相對應的數據表也許只占數據庫表中較少的一部分。
由此可以看出,對計算機審計來講,數據庫中的表并不都是同等重要的,也并不是數據庫中的所有表都與我們的審計工作有關。其中的許多表,是我們進行審計分析始終用不到的。審計人員經常接觸的會計信息系統就是一個很好的例子,在會計信息系統中,數據庫中的表通常都有上百個,但我們用到的表一般就只有科目表、余額表和憑證表,共三個表。
在沒有數據字典的情況下,我們如何才能知道業務系統中的哪些數據表是我們所需要的呢?
1.把握中心表
無論從表示的含義還是從存儲結構來看,電子數據都要符合一定的規律和要求。在分析數據庫中的表時,我們可以先從大量的表中,挑選出記錄日常業務事項的數據表,在本文中我們將這樣的表稱為“中心表”。中心表存儲著日常業務處理的數據,每當有業務發生時,相應的中心表會記錄下業務處理信息。例如會計信息系統中的憑證表,其數據量隨著日常業務的發生而不斷增加。
對于如何發現數據庫中的中心表,有兩點建議:
⑴查看表中記錄的多少
一般來說,中心表是日常業務處理使用到的表,記錄下業務處理的信息,因此,其包含的數據通常比較多,且其數據量隨著使用時間的推移而不斷增加。相對于中心表,一些表是為了功能擴展、權限控制或參數設置、代碼表示等目的而設計的,這樣的表或者由于沒有使用而無記錄,或者因為不常變化而記錄數很少,這樣的表在數據庫中通常占較大的比重。因此,面對數據庫中大量的表,我們可以先找出其中的重點表,排除次要表。
⑵觀察表中記錄的內容
通過記錄數多少的初步判斷后,我們可以查看表中記錄的內容來推斷該表是否是記錄日常業務信息的中心表,以及進一步分析該表所存儲的內容。要了解表的內容需要我們分析表中字段所表示的含義,在數據庫中,表中的字段名稱一般用英文或拼音縮寫來表示,由于縮寫的多意性,僅從字段名稱來分析字段代表的含義有時并不準確。因此,需要結合字段的內容加以考慮。因為中心表是對業務信息的記錄,因此表中一般都包含著業務發生金額和發生時間等必需字段,有時中心表也會有一些中文的字段,通過字段的中文內容,往往可以見文知意。對于記錄業務發生金額等數值類型的字段,需要在熟悉業務的情況下,結合幾個字段之間的計算關系或邏輯關系來分析其可能表示的含義。一般可以通過在數據庫中設定條件進行查詢后,與已有的紙質資料的一條或相關幾條信息來對比,看數據庫表中記錄的字段的對應情況,進一步推斷表中字段所表示的含義。
中心表類似于多維數據模型中表示主題的事實表,中心表應該主要包含著業務數據的記錄,而對描述實體的信息進行簡化,也即是表中主要包含著業務數值度量,而一些詳細的基本信息則存儲在其他表中,中心表一般包含著多個代碼字段與其他表相聯系。
2.分析關聯表
找到了中心表并不能馬上就得到我們需要的全部信息。因為在數據庫設計中,為消除數據冗余和插入、刪除異常,需要將相關的信息在數據庫中拆分為若干個表來存儲,因此會存在著其他一些表與中心表存在聯系,本文將這樣表稱為“關聯表”。關聯表通常用來對中心表進行補充和輔助說明,在數據的查詢分析中,需要把中心表與關聯表連接起來使用才能得到完整的信息。一般來說,關聯表存儲著一些基本信息,而不是業務處理信息,在日常業務中,關聯表的數據較中心表的數據增加較少。關聯表一般只包含某一實體或某一方面的信息,因此,通常在關聯表中只有較少的代碼字段,并且表中會有一些中文的說明性字段來描述一些信息。例如,會計信息系統中的科目表記錄著科目代碼所對應的科目名稱、科目級次等信息,科目表初始設定后,較少改變。在查詢分析時,我們需要將憑證表、余額表這樣的中心表跟科目表關聯起來才能獲得完整的信息。
在中心表一般存在著一些用代碼表示的字段,僅從中心表的內容來看,我們不知道這些代碼所表示的含義。這樣的代碼字段是與其他表相關聯的字段,是中心表與關聯表連接的紐帶。因此,我們可以從中心表的代碼字段入手,通過相同的代碼字段名稱或內容去發現關聯表。
從關聯表中獲取的信息有利于我們對中心表內容的理解,關聯表中一般存儲著代碼表示、參數設置或對象基本信息等內容,記錄著中心表的數據所表示的對象的相關信息。關聯表補充提供中心表中的代碼所表示的中文內容,如中文名稱等,關聯表也可以提供中心表中的代碼所表示的業務含義等相關信息。
二、應用實例
2004年,我辦對某省進行糧食風險基金專項審計調查。工作中審計人員采集到了農業發展銀行某分行統計管理系統和信貸管理系統中的電子數據,因為該軟件是由農業發展銀行總行統一組織開發的,審計人員在該省農業發展銀行沒有取到這兩套數據庫設計說明的數據字典。面對數據庫中的150余張表,審計人員在采集到數據的當天就分析出了表的內容,并對農業發展銀行提供的電子數據,編寫出SQL查詢語句模塊,供審計組成員查詢該地區的各個縣以及地區匯總的糧食信貸情況和糧食庫存情況,為迅速掌握各地糧食企業的貸款規模、掛賬、庫存占貸等情況提供了有效的支持。
2005年,我辦對某市進行土地使用權出讓金收支情況審計調查,該市國土資源局使用的業務系統是委托軟件公司開發的,軟件開發公司沒有提供數據庫設計文檔資料。工作中,由于要查看的文件、審批資料非常多,開始時,審計人員每天都到該市國土資源局檔案室中查閱資料。若能利用計算機的檢索功能,對該市國土資源局的電子數據進行快速查詢,則可以提高工作效率,也可以不受上班時間才能查閱資料的限制。為此,我們了解到該市國土資源局將每宗土地使用權出讓相關的立項、審批等文件和相關的非文件資料均掃描后存儲為圖形文件,統一存放在文件服務器的一個目錄中,在業務系統的數據庫表中,保存著每項業務各環節的信息,并在數據庫表中使用一個字段保存著與業務信息相對應的圖形文件的文件路徑,客戶端軟件通過數據庫表中相應字段存儲的內容,將電子數據與圖形資料文件關聯并顯示出來。為了利用被審計單位的電子數據,有效地查閱資料,審計人員編寫程序實現了資料的檢索和瀏覽功能,在編寫程序之前的工作就是需要了解數據庫中表的結構。審計人員在幾百個系統表和用戶表中,通過記錄數的多少和保存著圖形文件路徑的字段等線索,迅速找出了存放資料記錄的數據表,并以該表中的代碼字段作為進一步分析的出發點,找出了與該表相關的其他表,編寫程序實現了對該市國土資源局土地使用權出讓過程形成的資料的查詢,提高了審計工作效率,節約了寶貴的時間。
三、小結
面對數據庫中大量的、未知的表,在沒有數據字典的情況下,審計人員可能不知如何入手。其實,大部分掌握了基本的計算機審計技術的審計人員對分析數據庫中的表結構應該并不陌生,會計信息系統數據庫結構的分析是大部分審計人員學習過且熟悉的。面對業務系統,由于行業的多樣性和軟件開發本身的不統一,造成了業務系統的電子數據各種各樣,沒有相應的模式,給數據分析帶來了困難。隨著計算機技術的快速發展,許多被審計單位將以前手工方式的工作轉用計算機操作來完成,在這樣的替代中,被審計單位應用系統數據庫中的表是依據手工作業方式到計算機操作方式的轉變來設計的,因此,對被審計單位業務的熟悉是分析數據庫中表結構的基礎,而了解數據庫設計技術和一些技巧則可以幫助我們迅速找出我們所關注的數據庫中的表,為數據分析提供支持。(作者:審計署駐昆明特派員辦事處黃永平)
(本文內容僅為作者個人觀點,不代表任何審計機關和本網站的觀點,未經許可,不得轉載)
|