一种建立发票数据库的方法与查询数据库内发票的方法与流程

文档序号:14911154发布日期:2018-07-10 23:27阅读:351来源:国知局

本发明涉及一种发票查询方法,特别是一种建立发票数据库的方法与查询数据库内发票的方法,属于数据库分表技术领域。



背景技术:

发票是指一切单位和个人在购销商品、提供或接受服务以及从事其他经营活动中,所开具和收取的业务凭证,是会计核算的原始依据,也是审计机关、税务机关执法检查的重要依据。不管是税务机关还是企业的税务系统,每时每刻都有大量的发票开具,形成海量税务数据。传统的发票查询系统速度慢、效率低,如何能够快速查询到已开发票信息,是首要解决的问题。

为了提高查询速度,常用的方法有数据库优化、服务器扩展等。数据库优化又有数据库结构设计优化、数据库分表等。数据库分表常采用的有按时间分表、按数据量分表。数据库分表在查询时的难点在于如何定位数据所在表,且定位数据表耗时较长。



技术实现要素:

本发明要解决的技术问题是提供一种建立发票数据库的方法与查询数据库内发票的方法,解决发票查询定位数据表用时缓慢、查询效率低下的问题。

为了解决上述技术问题,本发明提供了一种建立发票数据库的方法与查询数据库内发票的方法;一种建立发票数据库的方法,包括以下步骤:

S11:新建一个数据库;

S12:根据税务发票的发票代码与发票号码设定阈值F:所述发票代码长度为N位、发票号码长度为M位,阈值F为小于N+M的正整数;

S13:读入第一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串;

S14:确定字符串与阈值F之间的映射规则;

S15:根据映射规则选取所述字符串内的F个字符,作为数据表标识;判断是否在所述数据库内存在所述标识对应的数据表:若是,将当前发票插入到该数据表中;若否,新建一个该数据表标识对应的数据表,并将当前发票插入到该数据表中;

S16:判断当前发票是否为最后一张发票:若是,结束发票数据库的建立;若否,读入下一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串,返回执行步骤S15。

所述映射规则为:选取字符串内的前F个字符。

所述N为12、M为8、F为6,且映射规则为:选取字符串内的第2-7个字符。

所述N为12、M为8、F为6,且映射规则为:选取字符串内的前5个字符与第8个字符。

所述N为12、M为8、F为10,且映射规则为:选取字符串内的前8个字符、第11个字符与第12个字符。

所述N为10、M为8、F为5,且映射规则为:选取字符串内的前4个字符与第7个字符。

所述N为10、M为8、F为8,且映射规则为:选取字符串内的前6个字符、第8个字符与第10个字符。

一种查询如上述方法建立的数据库内发票的方法,包括以下步骤:

输入需要查询的发票代码与发票号码,并将发票号码的第一位接在发票代码最后一位之后,生成一个字符串;

根据所述阈值F与映射规则从字符串内选取F个字符,查找到发票数据库内与所述F个字符相同的数据表标识,进而查找到对应的数据表;

通过数据库搜索语句在该数据表中搜索到需要查询的发票。

所述数据库搜索语句为SQL语句。

本发明通过发票代码与发票号码作为数据库分表依据,缩短了分表定位时间,提高发票查询速度;通过设置阈值,实现对每个数据表数量级的限制。通过设置不同的映射规则,实现对每个数据表内容的限制。本发明具有操作简单、建库方便、适用性强与查询效率高等特点,市场前景广阔。

附图说明

图1是本发明建立发票数据库的方法流程图;

图2是本发明查询数据库内发票的方法流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

一张税务发票,发票代码和号码是其基本组成部分。普通发票代码为12位,增值税发票代码为10位(包括增值税普通发票与增值税专用发票);发票代码中的每一位都有特定的意义。发票号码为8位,每一位均为流水号,无特定的意义。发票代码与发票号码一起标识一张发票。普通发票的发票代码加发票号码总共20位,增值税发票的发票代码加发票号码总共18位;这20位或18位数字组成的字符串就是本发明数据库分表的依据。

普通发票第1位为税务局代码(1-国税、2-地税),第2-5位为行政区划代码前4位,第6-7位为年份代码(取后两位数字,如2005年以05表示),第8位为发票行业代码(1-工业,2-商业,3-加工修理修配业,4-收购业,5-水电气业,6-其他),第9位为发票类别代码(1-税务机关统一式样的手写发票,2-税务机关统一式样的电脑发票,3-企业冠名手写发票,4-企业冠名电脑发票,5-税控收款机发票,6-除1至5以外的其他发票,7-发票换票证),第10位为金额版代码(0-电脑版,1-万元版,2-十万元版,3-百万元版,4-千万元版,5-千元版,6-百元版,7-十元版,8-税控收款机,9-无金额限制),第11-12位为批次号(以年度为单位,按批准印制顺序编号)。

增值税普通发票第1-4位为行政区划代码,第5-6位为年份,第7位为印刷批次,第8位为发票种类(增值税普通发票为6),第9位为联次,第10位为金额版(增值税普通发票为0)。

增值税专用发票第1-4位为行政区划代码,第5-6位为年份,第7位为印刷批次,第8位为文字版,第9位为联次,第10位为金额版。

阈值左数连续X位时,可以起到限制单张数据表记录上限的作用,比如设置阈值为13,那么单张表最多存储999万张发票。除了设置左数连续X位,阈值的映射规则可以根据需要设定:例如设置映射规则为发票代码(字符串)的第2-7位,那么该表存储的就是某行政区划下的某一年所有的发票数据。

实施例1:

本实施例所需的设备为一台装有数据库设计软件的计算机,本实施例选定普通发票,其中发票代码长度为12位。

本实施例的工作过程如下:

首先,建立发票数据库,参见附图1。

执行步骤100:新建一个数据库。

执行步骤101:根据普通发票的发票代码与发票号码设定阈值F。其中发票代码长度为12位(N取12)、发票号码长度为8位(M取8),阈值F取8。

执行步骤102:读入第一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤103:确定字符串与阈值F之间的映射规则:选取字符串内的前8个字符。

执行步骤104:根据映射规则选取字符串的前8个字符,作为数据表标识;判断是否存在该数据表标识对应的数据表:若是,执行步骤105;若否,执行步骤106。

执行步骤105:将该发票插入到该数据表中,执行步骤107。

执行步骤106:新建一个对应的数据表,并将该发票插入到该数据表中,执行步骤107。

执行步骤107:判断当前发票是否为最后一张发票,若是,结束发票数据库的建立;若否,执行步骤108。

执行步骤108:读入下一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串,返回执行步骤104。

参见附图2,查询税务发票的方法包括以下步骤:

执行步骤201:输入需要查询的发票代码与发票号码。

执行步骤202:将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤203:根据阈值与映射规则从字符串中选取前8个字符。

执行步骤204:根据这8个字符查找到对应的数据表标识,进而查找到数据库内对应的数据表。

执行步骤205:通过SQL语句在该数据表中搜索到需要查询的发票,结束本次查询。

本实施例取字符串的前8个字符,获知特定行政区划、特定税务局(国税局或地税局)、特定年份与特定行业的所有普通发票信息,操作简单、查询高效。

实施例2:

本实施例所需的设备为一台装有数据库设计软件的计算机,本实施例选定增值税普通发票,其中发票代码长度为10位。

本实施例的工作过程如下:

首先,建立发票数据库。

执行步骤2100:新建一个数据库。

执行步骤2101:根据增值税普通发票的发票代码与发票号码设定阈值F。其中发票代码长度为10位(N取10)、发票号码长度为8位(M取8),阈值F取5。

执行步骤2102:读入第一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤2103:确定阈值F与字符串之间的映射规则:选取字符串的前4个字符与第7个字符。

执行步骤2104:根据映射规则选取字符串的前4个字符与第7个字符,作为数据表标识;判断在数据库中是否存在5个字符对应的数据表(与5个字符相同的数据表标识):若是,执行步骤2105;若否,执行步骤2106。

执行步骤2105:将该发票插入到该数据表中,执行步骤2107。

执行步骤2106:新建一个对应的数据表(上述5个字符作为数据表标识),并将该发票插入到该数据表中,执行步骤2107。

执行步骤2107:判断当前发票是否为最后一张发票,若是,结束发票数据库的建立;若否,执行步骤2108。

执行步骤2108:读入下一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串,返回执行步骤2104。

查询税务发票的方法包括以下步骤:

执行步骤2201:输入需要查询的发票代码与发票号码。

执行步骤2202:将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤2203:根据阈值与映射规则从字符串中选取前4个字符与第7个字符。

执行步骤2204:根据上述5个字符查找到数据库内对应的数据表(与上述5个字符相同的数据表标识)。

执行步骤2205:通过SQL语句在该数据表中搜索到需要查询的发票,结束本次查询。

本实施例取字符串的前4个字符与第7个字符,获知特定行政区划与特定批次的所有增值税普通发票信息,操作简单、查询高效。

实施例3:

本实施例所需的设备为一台装有数据库设计软件的计算机,本实施例选定普通发票,其中发票代码长度为12位。

本实施例的工作过程如下:

首先,建立税务发票数据库。

执行步骤3100:新建一个数据库。

执行步骤3101:根据普通发票的发票代码与发票号码设定阈值F。其中发票代码长度为12位(N取12)、发票号码长度为8位(M取8),阈值F取6。

执行步骤3102:读入第一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤3103:确定阈值与字符串之间的映射规则:选取字符串的第2-7个字符。

执行步骤3104:根据映射规则选取字符串的第2-7个字符,作为数据表标识;判断在数据库内是否存在与第2-7个字符对应的数据表(与2-7个字符相同的数据表标识):若是,执行步骤3105;若否,执行步骤3106。

执行步骤3105:将当前发票插入到该数据表中,执行步骤3107。

执行步骤3106:新建一个对应的数据表(将上述6个字符作为数据表标识),并将该发票插入到数据表中,执行步骤3107。

执行步骤3107:判断是否为最后一张发票,若是,结束发票数据库的建立;若否,执行步骤3108。

执行步骤3108:读入下一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串,返回执行步骤3104。

查询税务发票的方法包括以下步骤:

执行步骤3201:输入需要查询的发票代码与发票号码。

执行步骤3202:将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤3203:根据阈值与映射规则从字符串中选取第2-7个字符。

执行步骤3204:根据第2-7个字符查找到数据库内对应的数据表(与上述5个字符相同的数据表标识)。

执行步骤3205:通过SQL语句在该数据表中搜索到需要查询的发票,结束本次查询。

本实施例的映射规则取字符串的第2-7位,便于查询特定行政区划下的特定年份所有的普通发票数据,操作简单、查询高效。

实施例4:

本实施例所需的设备为一台装有数据库设计软件的计算机,本实施例选定增值税专用发票,其中发票代码长度为10位。

本实施例的工作过程如下:

首先,建立发票数据库。

执行步骤4100:新建一个数据库。

执行步骤4101:根据增值税专用发票的发票代码与发票号码设定阈值F。其中发票代码长度为10位(N取10)、发票号码长度为8位(M取8),阈值F取8。

执行步骤4102:读入第一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤4103:确定阈值F与字符串之间的映射规则:选取字符串的前6个字符、第8个字符与第10个字符。

执行步骤4104:根据映射规则选取字符串的前6个字符、第8个字符与第10个字符,作为数据表标识;判断在数据库中是否存在8个字符对应的数据表(与8个字符相同的数据表标识):若是,执行步骤4105;若否,执行步骤4106。

执行步骤4105:将该发票插入到该数据表中,执行步骤4107。

执行步骤4106:新建一个对应的数据表(上述8个字符作为数据表标识),并将该发票插入到该数据表中,执行步骤4107。

执行步骤4107:判断当前发票是否为最后一张发票,若是,结束发票数据库的建立;若否,执行步骤4108。

执行步骤4108:读入下一张发票,将发票号码的第一位接在发票代码最后一位之后,生成一个字符串,返回执行步骤4104。

查询税务发票的方法包括以下步骤:

执行步骤4201:输入需要查询的发票代码与发票号码。

执行步骤4202:将发票号码的第一位接在发票代码最后一位之后,生成一个字符串。

执行步骤4203:根据阈值与映射规则从字符串中选取前6个字符、第8个字符与第10个字符。

执行步骤4204:根据上述5个字符查找到数据库内对应的数据表(与上述8个字符相同的数据表标识)。

执行步骤4205:通过SQL语句在该数据表中搜索到需要查询的发票,结束本次查询。

本实施例取字符串的前6个字符、第8个字符与第10个字符,获知特定行政区划、特定年份、特定文字版与特定金额版的所有增值税专用发票信息,操作简单、查询高效。

本发明采用SQL语句进行数据库发票检索,操作简单。

本发明通过发票代码与发票号码作为数据库分表依据,缩短了分表定位时间,提高发票查询速度;通过设置阈值,实现对每个数据表数量级的限制;通过设置不同的映射规则,实现对每个数据表内容的限制,支持普通发票、增值税普通发票与增值税专用发票等。本发明特别适用于海量发票税务数据的查询,具有操作简单、建库方便、适用性强与查询效率高等特点,有着较高的经济与市场价值。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1