一种记录删除操作的验证方法、系统及设备的制作方法

文档序号:6470338阅读:140来源:国知局

专利名称::一种记录删除操作的验证方法、系统及设备的制作方法
技术领域
:本发明属于数据库领域,尤其涉及一种记录删除操作的验证方法、系统及设备。
背景技术
:数据库是依照某种数据模型组织起来并存放在存储器中的数据集合。这种数据集合以最优方式为某个特定组织的多种应用提供服务,其数据结构独立于使用它的应用程序。为了为某个特定的应用软件提供服务,数据库中一般包括多个与应用中的实体对应的数据库表。根据应用中各实体之间的关系,设计数据库表之间的关系。在数据库设计过程中,为了保证数据库的完整性,如在删除数据库表中的记录时,如果其他数据库表引用了待删除数据库表中的待删除记录,则为了保证数据库的完整性,需要在删除待删除数据库表中的待删除记录前,对记录删除操作进行验证。现有技术提供了一种记录删除操作的验证方法,简述如下通过在各数据库表之间建立外键约束,在删除待删除数据库表中的待删除记录时,捕获数据库的异常来确定是否可以删除。这种记录删除操作的^r证方法不能给用户友好的提示,且外键约束较多时,难以维护,数据升级过程过于复杂。
发明内容本发明的目的在于提供一种记录删除操作的验证方法,旨在解决现有的记录删除操作的验证方法难以给出友好提示的问题。本发明是这样实现的,一种记录删除操作的验证方法,所述方法包括下述步骤在删除待删除数据库表中的待删除记录前,遍历引用表,查找所述待删除数据库表的引用集合;,根据所述待删除记录,遍历所述待删除数据库表的引用集合;根据遍历结果确定是否删除待删除数据库表中的待删除记录。本发明的另一目的在于提供一种记录删除操作的-验证系统,所述系统包括引用表存储单元,用于存储引用表,所述引用表存储数据库表之间的引用信息;引用表遍历单元,用于在删除待删除数据库表中的待删除记录前,遍历所述引用表,查找所述待删除数据库表的引用集合;集合遍历单元,用于根据所述待删除记录,遍历所述待删除数据库表的引用集合;删除操作执行单元,用于根据所述遍历结果确定是否删除待删除数据库表中的待删除记录。本发明的另一目的在于提供一种包括所述记录删除操作的验证系统的记录删除操作的验证设备。在本发明实施例中,通过建立引用表,在删除待删除数据库表中的待删除记录前,遍历引用表,得到该待删除数据库表的引用集合,再通过遍历待删除数据库表的引用集合,判断该待删除记录是否真正被引用,根据遍历结果可以给用户友好的提示。图1是本发明实施例提供的记录删除操作的验证方法的实现流程图;图2是本发明实施例提供的记录删除操作的验证系统的结果框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明实施例中,预先建立用于存储数据库表之间的引用信息的引用表,在删除待删除数据库表中的待删除记录前,遍历存储的引用表,得到引用了待删除数据库表的数据库表和引用了待删除数据库表的字段集合,遍历得到的引历结果确定是否删除待删除数据库表中的待删除记录。在本发明实施例中,预先建立一引用表(T一TableRef),用于存储数据库表之间的引用信息,即存储某个数据库表被哪些数据库表的哪个字段引用了。该T—TableRef中至少包括主键表(PTableName)、外键表(FTableName)、外键字段(ForeignKey)三项引用信息。该引用表还可以包括外键表描述信息、主键表描述信息等。表1.1给出了引用表的一个示例<table>tableseeoriginaldocumentpage6</column></row><table>上述引用表表示,数据库表A被数据库表B的FA字段引用了,同时数据表A被数据库表C的FA字段引用了。其中引用表中存储的数据库表之间的引用信息是根据数据库中各数据库表之间的外键关系自动生成并存储至引用表中的。其具体过程如下在创建业务系统的数据库时,一般均包括创建数据库的SQL脚本,该SQL脚本中一般包括数据库表的信息,如字段信息、外键信息等,通过读取SQL脚本,遍历该SQL脚本中创建数据库表的语句,即可得到数据库表的外4建信息,当引用表中未包括该外键信息时,则在引用表中插入一条记录以描述该外键信息,当引用表中包括该外键信息时,则不插入。通过上述过程即可根据数据库中各数据库表之间的外键关系自动生成引用信息并存储至引用表中。以下以一个实例,对本发明实施例提供的根据各数据库表之间的外键关系自动生成引用表中的引用信息的过程进行详细说明。假设在数据库设计时,包括三个数据库表,分别为员工信息表(T^Person)、采购信息表(T_Stock)和部门信息表(T_Department)。其中T—Person中包括ID、Name、Phone、DepartmentID四个字l更,T_Stock中包4舌ID、Itemname、DepartmentID三个字HT—Department包括ID、Name两个字^:。其中T—Person、T_Stock和T_Department之间的外键关系如下T_Person通过外4建DepartmentID与T_Department关联,T—Stock通过外4建DepartmentID与T—Department关耳关。则此时,根据T_Person、T_Stock和T_Department之间的外键关系,可以得到T—Department被T_Person中的DepartmentID字段引用的引用信息,T—Department被LStock中的DepartmentID字段引用的引用信息,将得到的引用信息存储至T一TableRef中,即可得到表1.2所示的T—TableRef:表1.2<table>tableseeoriginaldocumentpage7</column></row><table>图1示出了本发明实施例提供的记录删除的校验方法的实现流程,详述如下在步骤S101中,在删除某数据库表(称为待删除数据库表)中的某条记录(称为待删除记录)前,遍历引用表,查找引用待删除数据库表的数据库表以及引用待删除数据库表的字段的集合。在本发明实施例中,将引用待删除数据库表的数据库表和引用待删除数据库表的字段的集合称为待删除数据库表的引用集合。在本发明实施例中,由于引用表中存储了各数据库表之间的引用信息,通过遍历引用表,将待删除数据库表与引用表中的主键表进行匹配,即可查找到待删除数据.库表的引用集合。在本发明实施例中,可以采用"select*from引用表where主键表-待删除数据库表"来遍历引用表,查找到引用待删除数据库表的数据库表以及引用待删除数据库表的字段的集合。如在删除T—Department中的某条记录前,可以采用"select*fromT—TableRefwhereFTableName=T_Department"遍历表1.2所示的引用表,查找到引用T_Department的数据库表和引用T一Department的字段的集合,即"select*fromT—TableRefwhereFTableName=T—Department"的返回^f直即为查找到的引用T—Department的数据库表和引用T_Dq3artment的字段的集合,其包括如下两条i己录('T—Department','T—Person','DepartmentID,);(T一Department,,'T_Stock,,'DepartmentID')。在步骤S102中,根据待删除记录,遍历查找到的待删除数据库表的引用集合。根据待删除记录,遍历查找到的待删除数据库表的引用集合,判断待删除记录是否被待删除数据库表的引用集合中的数据库表的引用字萃更真正引用。在本发明实施例中,假设查找到的引用待删除数据库表的数据库表和引用待删除数据库表的字段的集合为A,则可以通过如下方式遍历找到的引用待删除数据库表的据库表和引用待删除数据库表的字段的集合A:For(inti=0,size=A.size();i<size;i++)Sql="selectcount(*)from,,+A.FTableName+"where,,+A.ForeignKey+"=,,+"待删除表的待删除记录的ID";//构造SQL查询语句ResultSet=Statement.executeQuery(sql);〃执4亍SQL查询If(ResultSet,size()X))〃判断是否被真正引用,若被真正引用,抛出异常ThrownewException("数据已被引用不能删除");在上面的for循环过程中sql会不断的随着循环而变化,比如集合A是如下记录集(T—Department','T_Person,,'DepartmentID,);('T—Department','T一Stock','DepartmentID,)。那么循环的第一次sql字符串里面的A.FTableName被替换为T—Person,A.ForeignKey被替换成DepartmentID,由于A的集合大小是2,所以笫二次循环的时候A.FTableName被替换为T_Stock,A.ForeignKey被替换成DepartmentID。如果循环直到结束也没有抛出异常说明待删除表的待删除记录没有被真正引用,可以执行删除操作。否则说明待删除表的待删除记录被真正引用。在步骤S103中,才艮据遍历结果确定是否删除待删除数据库表中的待删除记录。在本发明实施例中,当遍历结果为待删除记录被其他数据库表中的记录真正引用时,提示用户暂时不能删除,并给出待删除记录的被引用情况,即给出待删除数据库表中的待删除记录被哪些数据库表的记录引用了,从而不能立即删除;当遍历结果为待删除记录未被其他数据库表的记录真正引用时,可以直接删除待删除记录。当对应用软件进行更新时,增加了数据库表之间的外键关联关系,如在l.O版本的应用软件中,待删除数据库表被两个数据库表引用,而在2.0版本的引用软件中,待删除数据库表被两个以上数据库表引用,此时,由于根据数据库表之间的外键关系可以自动生成数据库表之间的引用信息,并将该引用信息存储至引用表中,从而当在删除待删除数据库表中的待删除记录时,如果引用表中引用待删除数据库表的数据库表更新了,则在遍历引用遍历引用表时,将得合,通过遍历该集合,即可在删除更新后的数据库中的记录时,进行删除验证,并根据遍历结果确定是否删除该记录,且给出友好的提示。为了减少编码量,使用户方便的采用上述记录删除操作的验证方法对所有的记录删除操作进行验证,在本发明另一实施例中,将本发明实施例提供的记录删除操作的验证方法封装在基类里,这样,所有的记录删除操作均自动引用上述方法对记录删除操作进行验证,从而大量减少了才L睑引用的硬编码。图2示出了本发明实施例提供的记录删除操作的验证系统的结构示意,为了便于说明,仅示出了与本发明实施例相关的部分。该记录删除操作的验证系统可以是内置于记录删除操作的验证设备中的软件单元、硬件单元或者软硬件相结合的单元,也可以作为独立的挂件集成到记录删除操作的验证设备中或者运行于记录删除操作的验证设备的应用系统中,其中引用表存储单元21存储创建的引用表,该引用表用于存储数据库表之间的引用信息,即存储某个数据库表被哪些数据库表的哪个字段引用了。可1用表遍历单元22在删除待删除数据库表中的待删除记录前,遍历引用表存储单元21中存储的引用表,查找引用待删除数据库表的数据库表以及引用待删除数据库表的字段的集合。集合遍历单元23遍历查找到的引用待删除数据库表的数据库表和引用待删除数据库表的字段的集合,得到遍历结果。在本发明实施例中,通过遍历查找到的引用待删除数据库表的数据库表和引用待删除数据库表的字段的集合,即可得到待删除数据库表是否被其他数据库表真正引用。其具体过程如上所述,在此不再赘述。删除操作执行单元24根据集合遍历单元23的遍历结果确定是否删除待删除数据库表中的待删除记录。在本发明实施例中,当集合遍历单元23的遍历结果为待删除数据库表被其他数据库表真正引用,则删除操作执行单元24暂时不删除待删除数据库表中的待删除记录,当集合遍历单元23的遍历结果为待删除数据库表未被其他数据库表真正引用,则删除操作执行单元24可以立即执行删除操作。在应用软件升级过程中或者维护过程中,当对数据库中的各数据库表之间的外键关系进行了更新时,为了增加本发明实施例提供的系统的扩展性,在本发明另一实施例中,该系统还包括引用表更新单元25。该引用表更新单元25根据各数据库表之间的外键关系生成数据库表之间的引用信息,并将该引用信息更新至引用表中。为了减少编码量,在统一的地方对所有的记录删除^t喿作均可以使用本发明实施例提供的系统进行验证,在本发明另一实施例中,将本发明实施例提供的记录删除操作的验证系统封装在基类中。在本发明实施例中,通过采用引用表记录数据库表之间的引用信息,在删除数据库表中的某记录前,先遍历引用表,得到引用该数据库表的数据库表集合,再遍历该数据库表集合,判断该数据库表是否被真正引用,当数据库表被真正引用时,提示用户不能删除,并给出该数据库表被引用的情况,使应用软件与用户之间的交互更加友好。当数据库表之间的外键关系更新时,可以根据数据库表之间的外键关系自动生成各数据库表之间的引用信息,并存储至引用表,从而提高了应用软件的扩展性,同时便于用户维护。通过将本发明提供的方法封装在基类中,从而可以在统一的地方对所有的记录删除操作进行验证,减少了编码量。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的寸呆护范围之内。权利要求1、一种记录删除操作的验证方法,其特征在于,所述方法包括下述步骤在删除待删除数据库表中的待删除记录前,遍历引用表,查找所述待删除数据库表的引用集合;根据所述待删除记录,遍历所述待删除数据库表的引用集合;根据遍历结果确定是否删除待删除数据库表中的待删除记录。2、如权利要求1所述的方法,其特征在于,所述方法还包括下述步骤创建用于存储数据库表之间的引用信息的引用表;根据数据库表之间的外4建关系生成数据库表之间的引用信息,并将所述引用信息存储至所述引用表。3、如权利要求l所述的方法,其特征在于,当更新数据库表之间的外键关系时,所述方法还包括下述步骤根据更新后的数据库表之间的外键关系生成数据库表之间的引用信息,并将所述引用信息更新至所述引用表中。4、如权利要求l所述的方法,其特征在于,所述根据所述待删除记录,,遍历所述待删除数据库表的引用集合的步骤具体为根据所述待删除记录,遍历所述待删除数据库表的引用集合中的数据库表,判断所述待删除记录是否被所述引用集合中的数据库表真正引用。5、如权利要求4所述的方法,其特征在于,所述根据遍历结果确定是否删除待删除数据库表中的待删除记录的步骤具体为当所述遍历结果为所述待删除记录被所述引用集合中的数据库表真正引用时,提示用户待删除记录被引用的情况;当所述遍历结果为所述待删除记录未被所述引用集合中的数据库表真正引用时,删除所述4寺删除记录。6、如权利要求l所述的方法,其特征在于,所述方法还包括下述步骤将所述记录删除操作的验证方法封装在基类中。7、一种记录删除操作的验证系统,其特征在于,所述系统包括引用表存储单元,用于存储引用表,所述引用表存储数据库表之间的引用信息;引用表遍历单元,用于在删除待删除数据库表中的待删除记录前,遍历所述引用表,查找所述待删除数据库表的引用集合;集合遍历单元,用于根据所述待删除记录,遍历所述待删除数据库表的引用集合;删除操作执行单元,用于根据所述遍历结果确定是否删除待删除数据库表中的待删除记录。8、如权利要求7所述的系统,其特征在于,所述系统还包括引用表更新单元,用于当更新数据库表之间的外键关系时,根据更新后的数据库表之间的外4建关系生成数据库表之间的引用信息,并将所述引用信息更新至所述引用表中。9、如权利要求7所述的系统,其特征在于,所述删除操作执行单元在遍历结果为所述待删除记录被所述引用集合中的数据库表真正引用时,提示用户待删除记录被引用的情况;在所述遍历结果为所述待删除记录未被所述引用集合中的数据库表真正引用时,删除所述待删除记录。10、一种包括权利要求7至9任一权利要求所述的记录删除操作的验证系统的记录删除操作的验证设备。全文摘要本发明适用于计算机领域,提供了一种记录删除操作的验证方法、系统及设备,所述方法包括下述步骤在删除待删除数据库表中的待删除记录前,遍历引用表,查找所述待删除数据库表的引用集合;根据所述待删除记录,遍历所述待删除数据库表的引用集合;根据遍历结果确定是否删除待删除数据库表中的待删除记录。本发明实施例可以给用户友好的提示,同时由于引用表是随数据库表之间的外键关系的更新而更新的,从而具有较好的扩展性,易于维护。文档编号G06F17/30GK101430707SQ20081021722公开日2009年5月13日申请日期2008年11月3日优先权日2008年11月3日发明者丽谢申请人:金蝶软件(中国)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1