寻找数据库表汉化的新思路
大数据时代,审计进入数字化模式,采集获取、整理分析被审计单位的各类电子数据成为一项重要的基础性工作,能否有一种直观、高效的方法,方便审计人员对电子数据的理解?笔者认为,数据库表的汉化,是一个有效方式。
一、汉化的作用
审计人员在对电子数据进行审计分析时,需编写查询语句,完成数据的筛选、统计,这就要求必须掌握电子数据结构、表间关系、字段含义。
库表汉化,就是把英文或者字母代表的表名、字段名改为汉字,达到见名知意的目的。这样可以提高审计人员对数据库表间关系、字段含义的理解,减少对数据含义的陌生感,降低因理解有误而出错的几率。
二、传统汉化方法的分析
(一)select…into…语句
对于数据量比较小的数据,可以通过数据字典或者个人猜测,在使用select语句做查询时,用中文名称来定义所取得字段的别名,通过into子句把数据结果放入一张新表中,可以说是边用边汉化的方式。
这种方式的优点是实现起来比较简单。不足是仅限于查询结果的字段名称,范围有限;因为把结果放到了新表中,增加了存储空间的使用,建议在大数据的场合避免使用。
(二)使用存储过程sp_rename
存储过程sp_rename可以对表、字段进行重命名。为了提高运行效率,首先根据数据字典或者字段解释编制新旧表、新旧字段的对应关系,而后使用sql脚本或者编写小工具,使用整理的对应关系逐个对表、字段进行重命名。
这种方式适合于各种场合,只要数据在MS SQL Server的环境中存储。但是这种汉化的方式,从技术的角度看,改动了处于数据库三种模式:内模式、模式、外模式的中间层——“模式”,一旦改动,直接对外模式有根本的影响。如果被审计单位提供了参考的sql语句,这时只有把这些语句中的字段“再次汉化”后才能进行验证或使用,依靠人力来完成,转换过程中不免会有疏漏。
三、库表汉化的新思路
能不能找到其他的汉化方式呢?根据数据库“三种模式,两种转换”原理,独辟蹊径,选择外模式为汉化地点,充分利用三种模式两种转换的特点,发挥外模式的逻辑结构功能,使用视图来完成汉化。
视图,是一种逻辑表,不占用额外的数据存储空间,且与物理表相互独立,不用修改表、字段的名称,且结果和物理表一致。唯一增加的,是视图定义,而视图定义的本质就是一个select查询语句。
与上述第一种传统方法相比,相同的都是在select语句中使用中文名称定义字段的别名;不同的不是把结果放到新表中,只是创建视图对象,避免占用存储空间。
与上述第二种传统方法相比,通过访问视图而不是原始表,既完成了库表字段的汉化,能以熟悉的中文名称完成查询语句;又因表、字段本身并没有进行修改,还可直接(或作修改)执行被审计单位提供的sql语句进行结果验证。
四、视图实现库表汉化
视图,是数据库产品都支持的一个功能,作为库表汉化的新方法,适应性较强。下面以MS SQL Server数据库为例,介绍汉化过程。
(一)获取字段说明
在获取数据时,如果被审计单位没有提供数据字典,则需要提供表及表中每个字段的中文含义,根据这些信息,整理出字段、名称的对应关系,具体工作就是从字典或表结构说明中选中需要的字段和字段释义,复制粘贴至文本文件中备用。
(二)使用正则表达式,生成创建视图的sql语句
正则表达式,是一种定义好的词语“模式”,用以在不确定、模糊的文字内容中进行精确地搜索与提取的智能技术。它使用单个字符串来描述、匹配一系列符合某个句法规则的文字内容。很多文本编辑器都支持用正则表达式来检索、替换符合文本的功能,比如UltraEdit、WinHex,甚至在Word中也能找到正则表达式的身影。
找出字段、名称的对应关系的规律,编写正则表达式(不同的文本编辑器,其正则表达式的具体语法有所不同,但概念是一致的),提取出需要的两个内容——英文字段名、中文含义,再使用提取出的内容,根据创建视图的语法组合出sql语句。
以下是在MS Sql Server Management Studio的编辑器中的操作步骤:
1. 编写创建视图的sql语句框架,将整理出字段、名称的对应关系复制至sql语句中(如图1所示);
2. 观察字段、名称的对应关系,使用SSMS编辑器所支持的正则表达式的语法,定义查找、替换的正则表达式(如图2所示):查找内容的表达式为{[^:b]+}:b+{[^:b]+}\n,替换内容的表达式为\2 as \[\1\],\n。前者把字段名、中文名给“抠”出来,后者则是重排“抠”出来的内容;
3. 选中相关文本行,执行替换操作,得到创建视图的sql语句(如图3所示);
4. 删除最后一个“,”,再进行适当的段落缩进,就可以得到创建视图的sql语句,选中整个语句并执行,完成一个汉化视图的创建操作。对需要汉化的每一个表,都进行同样的操作,创建与之对应的视图,实现通过视图汉化库表的设想。
五、总结
使用视图的思路,不仅可以解决库表的汉化功能,也可以在不规范的业务数据向数据规划中定义的相对规范的数据转换过程中,发挥积极有效的作用。使用视图进行汉化也存在着不足,如局限于大数据环境的应用;查询语句的执行效率不高;AO中只能采用连接大型数据库的方式来使用等。
实现数据库表汉化的方法很多,这里提出的视图汉化的思路,只是本人在工作中的一点思考,希望能与大家分享交流。(薛宁)