大數(shù)據(jù)時代,審計進入數(shù)字化模式,采集獲取、整理分析被審計單位的各類電子數(shù)據(jù)成為一項重要的基礎(chǔ)性工作,能否有一種直觀、高效的方法,方便審計人員對電子數(shù)據(jù)的理解?筆者認為,數(shù)據(jù)庫表的漢化,是一個有效方式。
一、漢化的作用
審計人員在對電子數(shù)據(jù)進行審計分析時,需編寫查詢語句,完成數(shù)據(jù)的篩選、統(tǒng)計,這就要求必須掌握電子數(shù)據(jù)結(jié)構(gòu)、表間關(guān)系、字段含義。
庫表漢化,就是把英文或者字母代表的表名、字段名改為漢字,達到見名知意的目的。這樣可以提高審計人員對數(shù)據(jù)庫表間關(guān)系、字段含義的理解,減少對數(shù)據(jù)含義的陌生感,降低因理解有誤而出錯的幾率。
二、傳統(tǒng)漢化方法的分析
(一)select…into…語句
對于數(shù)據(jù)量比較小的數(shù)據(jù),可以通過數(shù)據(jù)字典或者個人猜測,在使用select語句做查詢時,用中文名稱來定義所取得字段的別名,通過into子句把數(shù)據(jù)結(jié)果放入一張新表中,可以說是邊用邊漢化的方式。
這種方式的優(yōu)點是實現(xiàn)起來比較簡單。不足是僅限于查詢結(jié)果的字段名稱,范圍有限;因為把結(jié)果放到了新表中,增加了存儲空間的使用,建議在大數(shù)據(jù)的場合避免使用。
(二)使用存儲過程sp_rename
存儲過程sp_rename可以對表、字段進行重命名。為了提高運行效率,首先根據(jù)數(shù)據(jù)字典或者字段解釋編制新舊表、新舊字段的對應(yīng)關(guān)系,而后使用sql腳本或者編寫小工具,使用整理的對應(yīng)關(guān)系逐個對表、字段進行重命名。
這種方式適合于各種場合,只要數(shù)據(jù)在MS SQL Server的環(huán)境中存儲。但是這種漢化的方式,從技術(shù)的角度看,改動了處于數(shù)據(jù)庫三種模式:內(nèi)模式、模式、外模式的中間層——“模式”,一旦改動,直接對外模式有根本的影響。如果被審計單位提供了參考的sql語句,這時只有把這些語句中的字段“再次漢化”后才能進行驗證或使用,依靠人力來完成,轉(zhuǎn)換過程中不免會有疏漏。
三、庫表漢化的新思路
能不能找到其他的漢化方式呢?根據(jù)數(shù)據(jù)庫“三種模式,兩種轉(zhuǎn)換”原理,獨辟蹊徑,選擇外模式為漢化地點,充分利用三種模式兩種轉(zhuǎn)換的特點,發(fā)揮外模式的邏輯結(jié)構(gòu)功能,使用視圖來完成漢化。
視圖,是一種邏輯表,不占用額外的數(shù)據(jù)存儲空間,且與物理表相互獨立,不用修改表、字段的名稱,且結(jié)果和物理表一致。唯一增加的,是視圖定義,而視圖定義的本質(zhì)就是一個select查詢語句。
與上述第一種傳統(tǒng)方法相比,相同的都是在select語句中使用中文名稱定義字段的別名;不同的不是把結(jié)果放到新表中,只是創(chuàng)建視圖對象,避免占用存儲空間。
與上述第二種傳統(tǒng)方法相比,通過訪問視圖而不是原始表,既完成了庫表字段的漢化,能以熟悉的中文名稱完成查詢語句;又因表、字段本身并沒有進行修改,還可直接(或作修改)執(zhí)行被審計單位提供的sql語句進行結(jié)果驗證。
四、視圖實現(xiàn)庫表漢化
視圖,是數(shù)據(jù)庫產(chǎn)品都支持的一個功能,作為庫表漢化的新方法,適應(yīng)性較強。下面以MS SQL Server數(shù)據(jù)庫為例,介紹漢化過程。
(一)獲取字段說明
在獲取數(shù)據(jù)時,如果被審計單位沒有提供數(shù)據(jù)字典,則需要提供表及表中每個字段的中文含義,根據(jù)這些信息,整理出字段、名稱的對應(yīng)關(guān)系,具體工作就是從字典或表結(jié)構(gòu)說明中選中需要的字段和字段釋義,復(fù)制粘貼至文本文件中備用。
(二)使用正則表達式,生成創(chuàng)建視圖的sql語句
正則表達式,是一種定義好的詞語“模式”,用以在不確定、模糊的文字內(nèi)容中進行精確地搜索與提取的智能技術(shù)。它使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的文字內(nèi)容。很多文本編輯器都支持用正則表達式來檢索、替換符合文本的功能,比如UltraEdit、WinHex,甚至在Word中也能找到正則表達式的身影。
找出字段、名稱的對應(yīng)關(guān)系的規(guī)律,編寫正則表達式(不同的文本編輯器,其正則表達式的具體語法有所不同,但概念是一致的),提取出需要的兩個內(nèi)容——英文字段名、中文含義,再使用提取出的內(nèi)容,根據(jù)創(chuàng)建視圖的語法組合出sql語句。
以下是在MS Sql Server Management Studio的編輯器中的操作步驟:
1. 編寫創(chuàng)建視圖的sql語句框架,將整理出字段、名稱的對應(yīng)關(guān)系復(fù)制至sql語句中(如圖1所示);
2. 觀察字段、名稱的對應(yīng)關(guān)系,使用SSMS編輯器所支持的正則表達式的語法,定義查找、替換的正則表達式(如圖2所示):查找內(nèi)容的表達式為{[^:b]+}:b+{[^:b]+}\n,替換內(nèi)容的表達式為\2 as \[\1\],\n。前者把字段名、中文名給“摳”出來,后者則是重排“摳”出來的內(nèi)容;
3. 選中相關(guān)文本行,執(zhí)行替換操作,得到創(chuàng)建視圖的sql語句(如圖3所示);
4. 刪除最后一個“,”,再進行適當(dāng)?shù)亩温淇s進,就可以得到創(chuàng)建視圖的sql語句,選中整個語句并執(zhí)行,完成一個漢化視圖的創(chuàng)建操作。
對需要漢化的每一個表,都進行同樣的操作,創(chuàng)建與之對應(yīng)的視圖,實現(xiàn)通過視圖漢化庫表的設(shè)想。
五、總結(jié)
使用視圖的思路,不僅可以解決庫表的漢化功能,也可以在不規(guī)范的業(yè)務(wù)數(shù)據(jù)向數(shù)據(jù)規(guī)劃中定義的相對規(guī)范的數(shù)據(jù)轉(zhuǎn)換過程中,發(fā)揮積極有效的作用。使用視圖進行漢化也存在著不足,如局限于大數(shù)據(jù)環(huán)境的應(yīng)用;查詢語句的執(zhí)行效率不高;AO中只能采用連接大型數(shù)據(jù)庫的方式來使用等。
實現(xiàn)數(shù)據(jù)庫表漢化的方法很多,這里提出的視圖漢化的思路,只是本人在工作中的一點思考,希望能與大家分享交流。(薛寧)
聯(lián)系客服