在审计实践中,多数被审计单位不能提供业务数据库设计文档,审计人员无法取得数据字典,在这种情况下审计人员只能自己分析业务数据,进而形成审计所需要的数据字典。笔者在多年的审计工作中,总结出了以下几种分析业务电子数据的方法,将这几种方法综合运用,可以在较短时间内确定被审单位业务数据的数据字典。
一、根据一般的设计思路估测数据表和字段
每个业务信息系统数据库的设计都建立在具体的业务需求之上,就同一个业务信息系统而言,其数据存储、处理的方案并不多,审计人员可以通过对被审单位业务内容和流程的了解,按照数据库设计的规范,首先初步设计一个被审单位的数据库方案,估测出数据库中会有哪些表及对应的字段。如我们在新型农村合作医疗管理信息系统审计中,通过对被审单位的了解,估测出该系统的数据库中应包括以下数据表:村镇表、参保户表、参保人员表、医疗机构表、住院费用明细、住院补偿表、门诊费用明细表、门诊补偿表等反映基本信息及交易情况的数据表。在医疗机构表中应包括:医疗机构代码、医疗机构名称、医疗机级别、隶属关系、地址等字段;参保户表中应包括:家庭编码、地区代码、镇村编码、小组编码、户主性别、户主姓名、人口数、参合性质、当前状态等字段。这样,审计人员就可以依据估测的表和字段在被审单位数据库中有目的的查找,进而确定实际使用的数据表和字段。
二、根据表中数据量的大小确定数据表的性质和作用
数据库设计时为了设计和使用的方便,通常将数据表分为以下几类:业务数据表、基本编码表、辅助编码表、系统信息表、累计数据表、结算数据表、决策数据表。各类表存储的数据内容不同,数据量的大小也会有所不同。业务数据表保存业务发生的明细记录,数据量相对较大;基本编码表用于描述业务实体的基本信息和编码,可以根据具体的业务估测数据量的大小范围;辅助编码表用于描述属性的列表值,如:职称、民族、人员性质等,一般数据量都不大。累计数据表、结算数据表、决策数据表存储当前值或一定时期的结存值,一般数据量也不大。审计人员可以利用这一特性来估测、确定数据表的性质和作用。
首先要确定数据库的数据量。确定数据量的方法有很多种,如果被审单位电子数据是SQL Server 2000格式的,数据量的大小可以利用sysobjects、sysindexes等系统表取得,T-sql语句如下:
set nocount on
if object_id(N'tempdb.db.#temp') is not null
drop table #temp
create table #temp (name sysname,count numeric(18))
insert into #temp
select o.name,i.rows
from sysobjects o,sysindexes i
where o.id=i.id and o.Xtype='U' and i.indid<2
select count(count) 总表数,sum(count) 总记录数 from #temp
select * from #temp order by count desc
set nocount off
以上语句比较通用,需要的时候直接复制到SQL查询分析器中,选择要分析的数据库,点击运行即可。