在计算机应用系统中,输入的原始数据和处理后的结果数据一般都以数据库表文件的形式存储,数据库也成为目前大多数被审信息系统的核心和基础。数据字典是在数据库设计过程中对各类基本要素进行描述的文档,存放着数据库及其表结构的描述。在对被审计单位的电子数据进行采集转换和查询分析时,审计人员需要查阅数据字典,以了解数据库中数据的含义。
在审计工作中,由于被审计单位使用商业软件,或是软件开发不规范没形成相应文档,以及由于人员交接等可能的原因,会造成我们在采集被审计单位的电子数据后,被审计单位不能提供其业务系统数据库设计说明的数据字典,而我们在不知道数据库中每个表所存储的内容以及表中每个字段所代表的含义的情况下,很难有效使用采集到的电子数据。若要开展计算机审计,面对数据库中大量的表,我们该怎样入手分析出数据库表中存储的内容及其表示的含义,进而对数据进行查询分析呢?面对中小规模的数据库,在审计工作实践中,我们总结出了一些经验。
在手工处理方式下,一个单位的管理部门通过业务部门报送的若干份报表,可以了解该单位的基本业务情况。而应用计算机操作的业务系统中,数据库少则存储着几十个表,多则有成百上千个表。那么,数据库中的表和报送给管理部门的报表有无对应的关系呢?答案是肯定的。既然如此,我们就可以对数据库中的表删繁就简,仅关注我们审计需要的数据表。
在软件开发中,根据PARETO的80-20原则,企业中的80%的问题可以用20%的投资来解决,如果要求大而全,那么20%的次要问题是需要你花费80%的投资的。这也就是说,核心业务处理也许只占了整个软件功能中的一小部分,而许多工作是花费在完善功能以及安全控制等方面,在完善的过程中,会形成大量的数据库表。因此,一个单位使用的系统中,与业务处理的各个环节相对应的数据表也许只占数据库表中较少的一部分。
由此可以看出,对计算机审计来讲,数据库中的表并不都是同等重要的,也并不是数据库中的所有表都与我们的审计工作有关。其中的许多表,是我们进行审计分析始终用不到的。审计人员经常接触的会计信息系统就是一个很好的例子,在会计信息系统中,数据库中的表通常都有上百个,但我们用到的表一般就只有科目表、余额表和凭证表,共三个表。
无论从表示的含义还是从存储结构来看,电子数据都要符合一定的规律和要求。在分析数据库中的表时,我们可以先从大量的表中,挑选出记录日常业务事项的数据表,在本文中我们将这样的表称为“中心表”。中心表存储着日常业务处理的数据,每当有业务发生时,相应的中心表会记录下业务处理信息。例如会计信息系统中的凭证表,其数据量随着日常业务的发生而不断增加。
一般来说,中心表是日常业务处理使用到的表,记录下业务处理的信息,因此,其包含的数据通常比较多,且其数据量随着使用时间的推移而不断增加。相对于中心表,一些表是为了功能扩展、权限控制或参数设置、代码表示等目的而设计的,这样的表或者由于没有使用而无记录,或者因为不常变化而记录数很少,这样的表在数据库中通常占较大的比重。因此,面对数据库中大量的表,我们可以先找出其中的重点表,排除次要表。
通过记录数多少的初步判断后,我们可以查看表中记录的内容来推断该表是否是记录日常业务信息的中心表,以及进一步分析该表所存储的内容。要了解表的内容需要我们分析表中字段所表示的含义,在数据库中,表中的字段名称一般用英文或拼音缩写来表示,由于缩写的多意性,仅从字段名称来分析字段代表的含义有时并不准确。因此,需要结合字段的内容加以考虑。因为中心表是对业务信息的记录,因此表中一般都包含着业务发生金额和发生时间等必需字段,有时中心表也会有一些中文的字段,通过字段的中文内容,往往可以见文知意。对于记录业务发生金额等数值类型的字段,需要在熟悉业务的情况下,结合几个字段之间的计算关系或逻辑关系来分析其可能表示的含义。一般可以通过在数据库中设定条件进行查询后,与已有的纸质资料的一条或相关几条信息来对比,看数据库表中记录的字段的对应情况,进一步推断表中字段所表示的含义。
中心表类似于数据模型中表示主题的事实表,中心表应该主要包含着业务数据的记录,而对描述实体的信息进行简化,也即是表中主要包含着业务数值度量,而一些详细的基本信息则存储在其他表中,中心表一般包含着多个代码字段与其他表相联系。
找到了中心表并不能马上就得到我们需要的全部信息。因为在数据库设计中,为消除数据冗余和插入、删除异常,需要将相关的信息在数据库中拆分为若干个表来存储,因此会存在着其他一些表与中心表存在联系,本文将这样表称为“关联表”。关联表通常用来对中心表进行补充和辅助说明,在数据的查询分析中,需要把中心表与关联表连接起来使用才能得到完整的信息。一般来说,关联表存储着一些基本信息,而不是业务处理信息,在日常业务中,关联表的数据较中心表的数据增加较少。关联表一般只包含某一实体或某一方面的信息,因此,通常在关联表中只有较少的代码字段,并且表中会有一些中文的说明性字段来描述一些信息。例如,会计信息系统中的科目表记录着科目代码所对应的科目名称、科目级次等信息,科目表初始设定后,较少改变。在查询分析时,我们需要将凭证表、余额表这样的中心表跟科目表关联起来才能获得完整的信息。
在中心表一般存在着一些用代码表示的字段,仅从中心表的内容来看,我们不知道这些代码所表示的含义。这样的代码字段是与其他表相关联的字段,是中心表与关联表连接的纽带。因此,我们可以从中心表的代码字段入手,通过相同的代码字段名称或内容去发现关联表。
从关联表中获取的信息有利于我们对中心表内容的理解,关联表中一般存储着代码表示、参数设置或对象基本信息等内容,记录着中心表的数据所表示的对象的相关信息。关联表补充提供中心表中的代码所表示的中文内容,如中文名称等,关联表也可以提供中心表中的代码所表示的业务含义等相关信息。
2004年,我办对某省进行粮食风险基金专项审计调查。工作中审计人员采集到了农业发展银行某分行统计管理系统和信贷管理系统中的电子数据,因为该软件是由农业发展银行总行统一组织开发的,审计人员在该省农业发展银行没有取到这两套数据库设计说明的数据字典。面对数据库中的150余张表,审计人员在采集到数据的当天就分析出了表的内容,并对农业发展银行提供的电子数据,编写出SQL查询语句模块,供审计组查询该地区的各个县以及地区汇总的粮食信贷情况和粮食库存情况,为迅速掌握各地粮食企业的贷款规模、挂账、库存占贷等情况提供了有效的支持。
2005年,我办对某市进行土地使用权出让金收支情况审计调查,该市国土资源局使用的业务系统是委托软件公司开发的,软件开发公司没有提供数据库设计文档资料。工作中,由于要查看的文件、审批资料非常多,开始时,审计人员每天都到该市国土资源局档案室中查阅资料。若能利用计算机的检索功能,对该市国土资源局的电子数据进行快速查询,则可以提高工作效率,也可以不受上班时间才能查阅资料的。为此,我们了解到该市国土资源局将每土地使用权出让相关的立项、审批等文件和相关的非文件资料均扫描后存储为图形文件,统一存放在文件服务器的一个目录中,在业务系统的数据库表中,保存着每项业务各环节的信息,并在数据库表中使用一个字段保存着与业务信息相对应的图形文件的文件径,客户端软件通过数据库表中相应字段存储的内容,将电子数据与图形资料文件关联并显示出来。为了利用被审计单位的电子数据,有效地查阅资料,审计人员编写程序实现了资料的检索和浏览功能,在编写程序之前的工作就是需要了解数据库中表的结构。审计人员在几百个系统表和用户表中,通过记录数的多少和保存着图形文件径的字段等线索,迅速找出了存放资料记录的数据表,并以该表中的代码字段作为进一步分析的出发点,找出了与该表相关的其他表,编写程序实现了对该市国土资源局土地使用权出让过程形成的资料的查询,提高了审计工作效率,节约了宝贵的时间。
面对数据库中大量的、未知的表,在没有数据字典的情况下,审计人员可能不知如何入手。其实,大部分掌握了基本的计算机审计技术的审计人员对分析数据库中的表结构应该并不陌生,会计信息系统数据库结构的分析是大部分审计人员学习过且熟悉的。面对业务系统,由于行业的多样性和软件开发本身的不统一,造成了业务系统的电子数据各种各样,没有相应的模式,给数据分析带来了困难。随着计算机技术的快速发展,许多被审计单位将以前手工方式的工作转用计算机操作来完成,在这样的替代中,被审计单位应用系统数据库中的表是依据手工作业方式到计算机操作方式的转变来设计的,因此,对被审计单位业务的熟悉是分析数据库中表结构的基础,而了解数据库设计技术和一些技巧则可以帮助我们迅速找出我们所关注的数据库中的表,为数据分析提供支持。(作者:审计署驻昆明特派员办事处黄永平)
审计机关的职责调整(下)——审计法修订系列解读之二(06-5-17)(2006-05-17)
济南办专项审计调查表明——农村中小学危房:任重而道远(06-5-17)(2006-05-17)
石爱中副审计长对推广应用“一拖N”技术提出九点要求(06-5-15)(2006-05-15)