首页> 中国专利> 用于保持关系型数据库内参照关系完整性的方法和设备

用于保持关系型数据库内参照关系完整性的方法和设备

摘要

通过确定在关系型数据库内由所提出的一个数据表的生成或改动所带来的每个新参照关系约束的有效性来维护该数据库的参照关系完整性。首先从其中新参照关系约束不会影响其它数据表的已知无错条件来检查新生成或改动了的数据表的所有关系。然后,检查自参照关系以找出已知的出错情形。其后,建立该数据库的一个选定部分的模型,新的参照关系约束的有效性通过仅检查数据库中该模型所代表的部分以确定所提出的关系是否使参照关系完整性保持而得以检验。

著录项

  • 公开/公告号CN1047744A

    专利类型发明专利

  • 公开/公告日1990-12-12

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN90103758.3

  • 申请日1990-05-23

  • 分类号G06F15/40;

  • 代理机构中国国际贸易促进委员会专利代理部;

  • 代理人乔晓东

  • 地址 美国纽约

  • 入库时间 2023-12-17 12:10:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-08-18

    专利权有效期届满 IPC(主分类):G06F15/40 授权公告日:19950621 申请日:19900523

    专利权的终止

  • 2002-04-24

    其他有关事项 其他有关事项:1992年12月31日以前的发明专利申请,授予专利权且现仍有效的,其保护期限从15年延长到20年。根据国家知识产权局第80号公告的规定,下述发明专利权的期限由从申请日起十五年延长为二十年。在专利权的有效期内,所有的专利事务手续按照现行专利法和实施细则的有关规定办理。 申请日:19900523

    其他有关事项

  • 1995-06-21

    授权

    授权

  • 1990-12-12

    公开

    公开

  • 1990-10-31

    实质审查请求

    实质审查请求

说明书

此项发明总体上涉及数据处理系统的改进,具体地涉及数据处理系统中关系型数据库的改进。更加具体地来说,此项发明涉及尽管关系型数据库中有一个数据表生成或改动仍可维护这个数据库的参照关系完整性的方法。

采用数据处理系统的一个明显优点就是能够系统地处理和利用大量数据。典型情况下,这些大量数据以某种有序方式存放在一个可用数据处理系统中任何一个处理器直接或间接地迅速访问的所谓数据库中。

近来,随着关系型数据库的出现,数据库管理系统应用的成熟程度已达到了一个新水平。关系型数据库是一种由许多数据表构成的数据库。构成这种数据库基础的关系模型包括三个主要子部分。一个规定关系型数据库所必须符合的结构的结构子部分,一个决定数据必须据此在关系数据库中进行处理的方式的数据处理子部分和一个控制数据库一个局部中的变化影响数据库其余部分的方式的参照关系完整性子部分。

参照关系完整性可以通过遵守一些尽管难以实现但在有关文献中已是熟知的特选的约束来达到。例如,主要的参照关系约束就是认定某个指定的“外来关键字”的非空值仅当它们也作为某个指定的数据表的“主关键字”的值出现时才是有效的。用关系型数据库的术语来说,“双亲”数据表就是在两个数据表关系中包含有主关键字的数据表。与之相似,“从属”数据表是在上述关系中包含有外来关键字的数据表。

经过思考就可明白,某个单一的数据表在任意多个关系中可以既是双亲表又是从属表。一个数据表可以称作是某个双亲数据表的“后代”,只要它是那个数据表的从属表或者该双亲数据表的某个从属表的后代。相反地,一个数据表被称作是某个第二数据表的“先辈”,只要它是那个表的双亲表或某个将该第二表作为后代包含在内的表的双亲表。而且,一个数据表可以是其自身的后代和先辈,只要它是与许多其它数据表互连在一个所谓的“环”中。对于一个所谓的“自参照”表中某个单一的约束而言,一个数据表也可以既是双亲数据表又是从属数据表。

为了控制关系型数据库的参照关系完整性,有必要将一个关系规则与每个参照关系约束联系起来。在这些关系中必须予以论述的三个动作是更新、插入和删除操作的结果。就这种数据库中数据表的关系型特性来看,显然在一个数据表中这三个动作中的任何一个都会对数据库中的另一个数据表有影响。因而,通常有一系列规则与每个此类动作相联系。

管理插入的规则相当简单。主关键字可以插入;但是,外来关键字仅当其满足基本的参照关系约束时才可插入。就是说,外来关键字的非空值仅当其也作为主关键字的值出现时才可插入。类似地,对外来关键字的更新仅当新的外来关键字也作为有效的主关键字出现时才有可能。在所描述的本方法的实施例中,对主关键字的更新是“受限制的”,就是说,它们仅当那个主关键字没有任何从属项时才是允许的。当然,可以实现这样一个系统,使得对主关键字的更新在每个从属关键字中以所谓“级联(coscade)”操作方式自动完成或者导致每个从属关键字“置空(setnull)”。

所描述的本方法的实施例中的删除操作运用了全部上述三个关系规则。因而,可以有一个“限制”、“级联”或“置空”的删除规则。在这种方式下,数据库中任何一处删除的影响都可以根据其对从属数据表的影响来明确地定义。用关系型数据库的术语来说,任何一个与某个第二数据表的删除操作有关联的数据表被称作是与该第二数据表“删除相关的”。

对于删除相关性,通常将两个附加的限制施加于一组数据表内的关系上。首先,在有两个或更多个表的环中,一个表不可以是与其自身删除相关的。其次,如果某个数据表是通过多重路径而与另一个数据表删除相关的,有关删除操作的关系规则必须是一致的并且必须不是置空。

因此,任何企图进行的对关系型数据库结构的修改都必须小心地通过这些关系规则的每一个以保持参照关系完整性。关系型数据库中所包含的大量相关联的数据表和这些表之间可能存在的多重关系使得在企图对该数据库的结构进行修改之后检验这些关系变得相当困难。因而,显然需要有一种方法,可以用来有效并且迅速地确定对关系型数据库结构的企图修改是否能保持始终如一的参照关系完整性。

因此,本发明的一个目的就是提出一种经过改进的关系型数据库。

本发明的另一个目的是提出一种经过改进的关系型数据库,使得参照关系完整性在对其中关系作了修改之后得以保持。

本发明的又一个目的是提出一种经过改进的关系型数据库,使得参照关系完整性在对其中关系作了修改之后得以保持,并且使得这些关系无需复查整个数据库结构而得以检验。

上述目的的达成如下所述。通过确定对关系型数据库中的某个数据表所提出的生成或改动所导致的每个新的参照关系约束的有效性,本发明的方法和装置可以用来保持该数据库的参照关系完整性。首先针对已知的无错条件,即新的参照关系约束不会影响其它数据表的条件,对新生成或修改过的数据表的所有关系进行检查。然后,检查自参照关系以检测出已知的出错情况。据此,建立起该数据库某个选定部分的模型,其中包括新生成或修改过的数据表、从属于新生成或修改过的数据表的所有数据表、由那些与新生成或修改过的表删除相关的从属表衍生出的所有数据表、对以上所列任何一个数据表而言是双亲表的所有数据表、以及与以上所列的某个双亲表有级联删除规则关系的任何一个先辈数据表。而后新的参照关系约束的有效性可通过仅检查数据库中由该模型所代表的那部分来确定所提出的关系是否能使参照关系完整性得以实现来进行检验。

可认为是创新特性的本发明特征列在后面所附权利要求书中。然后,此发明本身及其一个优选的应用方式、进一步的目的和优点可以通过参照下面有关一个说明性的实施例的详细描述结合附图一起阅读而得以最好地理解。

图1是一个可以用来实现本发明的方法的数据处理网络的图示;

图2是多个数据表的图示,可以用来说明这类数据表的相互关系;

图3A、3B和3C绘出了一个说明可以在加入一个提出的新的参照关系约束之后用来检验参照关系完整性是否得以维护的本发明的方法的逻辑流程图;

图4绘出了一个说明将选定的从属表加入数据库模型的方式的逻辑流程图;

图5绘出了一个说明将选定的双亲表加入数据库模型的方式的逻辑流程图;

图6A和6B绘出了一个说明将选定的附加约束加入数据库模型的方式的逻辑流程图;以及

图7绘出了一个说明检查该简化了的数据库模型内的多重删除相关关系以检验参照关系完整性在该关系型数据库中得以保持的方式的逻辑流程图。

参照这些图,特别是参照图1,其中绘出了一个可用来实现本发明的方法的数据处理系统8的图示。可以看出,数据处理系统8可以包含众多的网络,譬如局城网(LAN)10和32,其中每个最好分别包含众多的单独的计算机12和30。当然,熟悉此技术的人会认识到与某个主处理器配接的众多的交互式工作站(IWS)可以用于每个此类网络。

正如在这种数据处理系统中所常见的,每个独立的计算机可以与存储设备14和/或打印机/输出设备16配接。根据本发明的方法,一个或多个这种存储设备14可以用来存储构成关系型数据库的多个数据表。根据本发明的方法,对该数据库所提出的修改将受到检查以确定参照关系完整性是否将得以保持。

仍参照图1,可以看出,数据处理网络8还可以包含多个计算机主机,譬如计算机主机18,它最好可以通过通讯线路22与局城网(LAN)10配接。计算机主机18还可以与可作为局城网(LAN)10的远程存储器的存储设备20配接。相似地,局城网(LAN)10可以经由通讯线路24通过子系统控制单元/通讯控制器26和通讯线路34与网间连接服务器28配接。网间连接服务器28最好是一台独立的计算机或交互式工作站(IWS),起到将局城网(LAN)32联接到局城网(LAN)10的作用。

参照图2,其中绘出了多个数据表的图示,可以用来说明这类数据表的相互关系。可以看出,数据表40用图作了说明,其中包含了与某个虚构的机构中各部有关的信息。数据表40中的信息列在三个独立的列中,其中包括:部编号;部名称;以及部负责人。这些列分别标为42、44和46。

相似地,数据表48表示与该虚构的机构中各处有关的数据表。如上所述,这个数据表分成四列,其中包括:处编号;处名称;处负责人;以及该处所属的部的编号。这些列标号为50、52、54和56。

最后,数据表58是这个虚构的机构的雇员数据表,并且分成六列,其中包括:雇员姓名;雇员编号;处编号;部编号;该雇员的主管人;以及该主管人的雇员编号。这些列分别标号为60、62、64、66、68和70。

这些各不相同的数据表的相互关系可以根据其中所示的一个或多个列而予以说明。例如,在部数据表40与处表48之间的关系中,部编号可以被当作部数据表40中的一个主数据关键字。相似地,部编号在处数据表48中是作为一个外来关键字出现的。如上所述,参照关系完整性要求部编号的非空值不可列入处数据表48的列56,除非该值是作为部数据表40的列42中的一个主关键字出现的。以这种方式,两个相关数据表的参照关系完整性就可得以保持。

相似地,雇员数据表58包含有若干个可回溯到部数据表40或者处数据表48的关键字。例如,处编号,如雇员数据表58的列64所示,是雇员数据表58中的一个外来关键字和处数据表48中的一个主关键字。此外,示出在雇员数据表58的列66中的部编号是一个为了使参照关系完整性得以保持还必须位于部数据表40的列42内的外来关键字。

相关数据表的另一个方面可以根据雇员数据表58而予以说明。就是说,雇员编号,如示出在列62中的,是雇员数据表的一个主关键字。主管人的雇员编号,如雇员数据表58的列70中所示,因而就是一个外来关键字,并且为了让主管人的雇员编号成为有效的,它还必须出现在列62,即雇员数据表58中的主雇员编号数据关键字。这种类型的关系被称作是自参照的。

因此,参照图2,熟悉此技术的一般人员会认识到,在关系型数据库中可以有多个数据表是相关的,并且有许多不同关系可以存在于这多个数据表之间。

参照图3A、3B和3C,当结合在一起考虑时,它们绘出了说明可以用来在加入某个新提出的参照关系约束之后检验参照关系完整是否得以保持的本发明的方法的逻辑流程图。这个进程从块72处开始。这里介绍的方法首先检查目标表,即在本方法的描述中正在生成或改动的数据表,的所有关系,以确定是否有任何无错条件存在。

这个进程从块74开始,在此启动从属限制标志以表明所提出的参照关系约束删除规则是否是限制(Restrict)。然后,块76示出从属级联标记设置为伪。其后,块78用以示出其中目标表为一从属表的第一约束的取得。块80接着被用来确定是否所有的约束都已处理,并且如果不是,块82示出对于所考虑的其中的目标表为一从属表的约束的删除规则是否为限制的确定。如果不是,块84表示从属限制规则标记设置为伪。

然后,块86示出对于所检查的约束中删除规则是否是级联的确定,并且如果是,块88表示从属级联标记设置为真。其后,块90示出其中目标表为一从属表的下一个约束的获得,并且该进程返回到块80。

在块82对所考虑的约束中的删除规则为限制、或者在块86对该删除规则非级联作了确定的情况下,该进程就可以到达块90以取得下一个需要考虑的约束。在检查了其中目标表为一从属表的所有约束之后,即如块80所确定的,该进程就可以到达块92以检查那些其中目标表为双亲表的关系。

块92示出将双亲级联标记置伪的初始化,并且其后块94表示其中目标表为一双亲的第一约束的取得。然后,块96用以示出对于其中目标表为一双亲的所有约束是否都已处理的确定。如果不是,块98示出对于所考虑的约束的删除规则是否是级联的确定。如果所考虑的约束的删除规则是级联,则块100示出双亲级联标记设置为真,并且该过程到达块102。块102示出其中目标表为一双亲的下一个需要考虑的约束的取得。相似地,如果块98中所示的确定结果表明删除规则不是级联,则该进程也会到达块102以取得下一个需要考虑的约束。其后,该进程返回到块96以确定其中目标表为一双亲的所有约束是否都已处理。

然后,该进程到达块104,它示出对于从属限制标志是否为伪或者主体级联标志是否为真的确定。如果这些条件都不存在,则该进程退出并表示没有错误,如块106中所示。以上所述的部分逻辑流程图用以检查目标表的所有关系,以确定是否删除规则对于目标表为一从属表的所有关系为限制并且对于目标表为一双亲的所有关系非级联。在这种条件下,提出的新约束不会对参照关系完整性有不良影响,并且检查无需继续进行。

在此方法的下一部分中,该进程通过块108进入一个用来检查任何有可能存在于所考虑的数据库内的自参照约束的新部分。块110用以确定目标表是否包含有任何自参照约束,包括新提出的约束。如果有,块112表示对新提出的约束是否为自参照的的确定。其后,块114示出对现有自参照约束是否使用级联删除规则的判定以及如果现有自参照约束不使用级联删除规则。则块116接着示出对于新提出的约束是否是级联删除规则的确定。如果是,该进程带着出错标记在块118处退出。

在现有自参照约束使用级联删除规则约束或者新提出的约束不使用级联删除规则的情况下,该进程就可以到达块132。再参照块112,如果新提出的约束是自参照约束,该进程到达块120。块120用以示出对于现有自参照约束是否使用置空删除规则的确定。如果是,该进程带着出错消息退出,如块122中所示。如果现有自参照约束不使用置空删除规则,则块124示出对于现有自参照约束是否有与新提出的自参照约束不同的删除规则。如果删除规则不同,该进程又会到达示出该进程带着出错消息退出的块122。

在现有自参照约束与提出的自参照约束有相同的删除规则的情况下,该进程到达块126。块126示出通过确定从属级联标志是否为真来确定现有非自参照约束是否使用级联删除规则。如果是,块128示出对于新的约束是否使用级联删除规则的确定。如果否,该进程再次带着出错消息退出,如块130中所示。

在现有非自参照约束不使用级联删除规则即如块126中所确定的或者新提出的约束使用级联删除规则的情况下,该进程就会到达块132。块132示出对于新提出的约束是否为自参照的确定。如果是,块134表示该进程无出错指示而退出。逻辑流程图的上述部分已被用来确定是否有多于一个自参照约束以及它们的删除规则是否不相同,或者删除规则是否为置空,如果是这样则必定有出错条件存在。相似地,如果存在任何其它的有级联删除规则的约束并且所有自参照约束都不使用级联删除规则,必定会有错误出现。至此,如果目标关系为自参照约束,就不会有错误出现并且该进程无需再进行下去。在此应该指出,此后在所示的逻辑流程图中只有非自参照约束将加以考虑。

至此,该进程通过块136进入了所示逻辑流程图,它示出了所考虑的数据库的某个选定部分的模型的建立,可以检查这个模型以确定在对其中某个数据表作了提出的生成或改动的情况下参照关系完整性是否得以保持。上述模型可以用一张图来形象地表示,其中节点代表数据表而弧线代表数据表之间的关系。这个进程从块138处开始,它说明一个代表目标表的新节点与现存的节点的链接及对该节点的标识。然后,块140表示对图4中所示的加从属(Add    Dependents)过程的调用。

参照图4,加从属过程如图所示,并且从块174处开始。其后,块176示出其中所考虑的表为一双亲的第一约束的获得。然后,块178示出对于是否所有约束都已处理的确定。如果是,加从属过程结束,如块194中所示。

在并非所有约束都已处理的情况下,如块178所确定的,块180接着示出对节点链的扫描以查看是否有代表该从属表的节点存在。其后,块182示出对是否存在这种节点的确定。如果否,块184示出将代表作为该表的从属表的一个表的新节点链接到现有节点并标识这个节点。在如块182中所示的确定结果发现已有一个节点存在的情况下,或者在将代表该表的新节点链接到各现有节点之后,即如块184中所示,该过程到达块186。块186说明将一段新弧线链接到各现有弧线,并链接到各双亲和从属表节点。其后,该弧线以某种有助于在建模过程完成之后检验参照关系完整性可否得以保持的方式予以标识或标志。弧线所代表的是数据库模型中表示该数据库中两个数据表之间关系的部分。

然后,块188示出对刚加入的约束是否使用级联删除规则的确定。如果是,从块174开始的加从属过程被递归调用,如块190所示,以加入级联删除关系中的下一个后代表。以这种方式,目标节点的从属表以及任何通过某个级联删除规则而与一个从属表相连接的从属表被加入到正在建立的数据库模型中。那些熟悉此技术的人会认识到,必须的仅仅是循着级联删除规则向下到从属表,因为否则删除相关关系就是不可能的。在所考虑的约束的删除规则不是级联的情况下,或者在加入所有具有级联删除规则的从属表之后,该过程进行到块192。块192示出对其来说所考虑的表为一双亲的下一个约束的取得。在所有的约束都已处理之后,如块178中所示确定结果所表明的,该过程到达块194并退出加从属过程。

再参照图3A、3B和3C,块142接着示出在由至此所述建模进程所生成的节点链中第一节点的取得。然后,块144示出对于所有已标识节点是否都已处理的确定。如果否,该进程到达块146。块146示出其中与正在处理的节点相应的表为一属表的第一非自参照约束的取得。

然后,块148示出对于所有约束是否都已处理的确定。如果否,块150用以说明对于该节点是否存在一个双亲弧线、或该双亲弧线是否未得以标识、或该双亲弧线的删除规则是否不等同于该约束中双亲表的删除规则的确定。如果这些条件无一得到满足,则该进程到达块164。块164说明其中所考虑的与该节点相应的表为一从属表的下一个非自参照约束的取得。其后该进程返回到块148以确定是否所有的约束都已处理。

在块150中所述条件中任何一个得以满足的情况下,该进程到达块152。块152示出对节点链的扫描以查看是否有代表该双亲表的节点存在。块154则表示对于该节点是否存在的确定。如果否,则块156示出将一个新节点链接到各现有节点,并且该过程到达块158。在代表该双亲的节点存在的情况下,如块154中所确定的,该进程还会从块154到达块158。

然后,块158说明将新弧线链接到与各双亲节点和从属节点相应的各现有弧线。块160则表示对于是否已有一个节点加入链中的确定。如果已有一个节点加入,该进程到达块162。块162示出为该双亲表调用图5中所示的针对的加双亲(Add    Parent)过程。

参照图5,加双亲过程如图所示,并且从块196所示处开始。其后,块198说明其中所考虑的表为一从属表的第一约束的取得。然后,块200中示出对于是否所有约束都已处理的确定。如果否,块202示出对于所考虑的约束的删除规则是否为级联的确定。

如果所考虑的约束的删除规则是级联,则块204示出对节点链的扫描以查看是否有某个代表该进程所定位的双亲表的节点存在。块206则表示对于该节点是否存在的确定。如果该节点不存在,块208表示将代表该表的新节点链接到各现有节点。在已有该节点存在的情况下,则该过程到达块210,它示出将新弧线链接到各现有弧线并链接到各双亲表和从属表节点。从块196处开始的加双亲过程则被递归调用,如块212中所示,以加入可能存在的任何额外的先辈表。

在所考虑的约束的删除规则非级联的情况下,如块202中所确定的,或者在所有双亲表都已加入该模型之后,该过程到达块214。块214示出其中该表为一从属表的下一个约束的取得。其后,该过程返回到块200以确定是否所有约束都已处理。在所有这类约束都已处理之后,从加双亲过程退出,如块216中所示。

再次参照图3A、3B和3C中所示的逻辑流程图,在通过使用图5中所示的加双亲过程而将所有必要的双亲表都已加入该模型之后,该进程返回到块164。块164说明其中所考虑的表为一从属表的下一个非自参照约束的取得。再参照块148,在所有约束都已处理之后,该进程到达块170。块170示出链中下一个节点的获得。其后,该进程通过块172并返回到块144以确定是否所有已标识的节点都已处理。如果所有已标识的节点都已处理,该进程到达块166。块166示出对图6A和6B中所示的加约束(Add    Constraint)过程的调用。此后,该进程结束,如块168中所示。

参照图6A和6B,加约束过程如图所示,并且从块218所示处开始。其后,块220示出对节点链的扫描以查看是否有某个代表该双亲表的节点存在。对于是否存在该节点的确定如块222中所示。如果该节点不存在,块224说明将代表该表的新节点链接到各现有节点。应当指出,这个节点将不予标识。如果已有一个节点存在,如由块222所确定的,或者在将一个新节点链接到各现有节点之后,如块224中所示,则该过程到达块226。块226表示将新弧线链接到各现有弧线并链接到各双亲表和从属表节点。这个弧线仅当其代表此刻正定义的约束时才得以标识。

然后,块228示出对于该节点是否已存在的确定。如果否,块232示出其中该表为一从属表的第一约束的取得。然后,块234示出对于是否所有约束都已处理的确定,并且如果是,加约束过程结束,如块242中所示。

在并非所有约束都已处理的情况下,如由块234所确定的,则块236示出对于所考虑的约束的删除规则是否为级联的确定。如果是,从块218处开始的加约束过程被递归调用,如块238中所示。在所考虑的约束的删除规则非级联的情况下,如块236中所确定的,则块240接着示出其中所考虑的表为一从属表的下一个约束的取得。

再参照块228,如果所考虑的节点已存在,该过程通过块230并继续进行块244中所示的确定。块244示出对于该已存在节点是否为已标识节点的确定。如果是,块226表示对于该主体弧线是否使用级联删除规则的确定。如果是,该过程带着出错消息退出,如块248中所示。如果双亲弧线删除规则非级联,块250示出对于新约束的删除规则是否为级联的确定。如果是,该过程也会带着出错消息退出,如块252中所示。

再参照块244,如果已存在的节点未予标识,块254示出对图7中所示的核查多重删除相关系(Check    Mutiple    Delete    Connections)过程的调用。其后,在不论哪种情况下,加约束过程结束,如块242中所示。

参照图7,其中示出了与上面图6B的描述内容有关的核查多重删除相关关系过程。这个过程从块256处开始,并且其后块258示出链接到所考虑的节点的第一从属弧线的获得。然后,块260示出对于是否所有从属弧线都已处理的确定。如果所有从属弧线都已处理,该过程结束,如块284中所示。

在并非所有从属弧线都已处理的情况下,块262示出对于该从属节点是否得以标识的确定。如果该从属节点未予标识,块264示出对从块256处开始的核查多重删除相关关系过程的递归调用,以考虑下一个从属弧线。在该从属节点已标识的情况下,如由块262所确定的,该过程到达块266。块266示出对于该从属节点是否是代表目标表的节点的确定。如果是,块268示出对于该从属弧线是否已标识的确定。在该从属弧线已标识的情况下,该过程到达块282,它表示其中所考虑的表为一从属表的下一个约束的取得。

在该从属弧线未予标识的情况下,则块270示出对于该从属弧线的删除规则是否为置空的确定。如果该删除规则为置空,该过程带着出错消息退出,如块280中所示。如果该从属弧线的删除规则非置空,该过程到达块272以确定该从属弧线和已标识弧线的删除规则是否不同。如果删除规则不同,该过程也会带着出错消息退出,如块280中所示。在已标识弧线和该从属弧线的删除规则并无不同的情况下,该过程到达块282。块282说明其中该表为一从属表的下一个约束的取得。

再参照块266,如果其中所示的确定结果表明该从属节点并非代表目标表的节点,该过程到达块274以确定新的约束是否使用级联删除规则。如果新的约束不使用级联删除规则,该过程到达块282。块282示出其中该表为一从属表的下一个约束的取得。

在新的约束使用级联删除规则的情况下,块276示出对于从属弧线和双亲弧线的删除规则是否都为置空的确定。如果都是,该过程带着出错消息退出,如块280中所示。如果从属弧线和双亲弧线的删除规则并非都是置空,该过程到达块278以确定从属弧线和双亲弧线的删除规则是否不同。如果删除规则不同,则该过程带着出错消息退出,如块280中所示,在从属弧线和双亲弧线删除规则相同的情况下,该过程返回到块282,它示出其中该表为一从属表的下一个约束的取得。

参照上面的说明,那些熟悉此技术的人会认识到,专利申请人在此公开的方法提供了这样一种方式,据此可以通过首先针对已知的无错条件或能导致出错条件的自参照约束检查打算生成或改动的表的关系来检验对关系型数据库所提出的改动,以确定参照关系完整性是否得以保持。其后,此处所述的方法通过首先从目标表出发并在其后加入所有与目标表删除相关的表建立起关系型数据库的一个部分的一个模型。然后,该过程加入了所有先前未加入该模型的双亲表和所有通过级联删除规则与这些双亲表相联系的先辈表。

应当指出,模型中的每个节点或弧线当考虑属表时是加以标识的当循着级联弧线向上通过双亲表或先辈表时则不加标识。参照上面的说明,对节点或弧线进行标识的重要意义对于那些熟悉此技术的人来说是显而易见的。一旦在某个由两个或更多个表构成的环中由于某个表与其自身删除相关而导致违反限制时,总会有某个已标识的节点与此有关。而且,如果某个表通过多重途径与另一个表删除相关并且其中该表为一从属表的各个适用的关系并没有相同的删除规则。这个删除相关的表将总是一个已标识的节点,并且总有某个已标识的弧线与此有关。在建立了数据库中有可能受到所提出的新的参照关系约束影响的部分的模型之后,本发明的方法就只检查这些表,根据参照关系完整性的保持情况来确定所提出的改动是否有效。

尽管此发明已参照一个优选实施例得以具体地展示和叙述,那些熟悉此技术的人可以理解:其中可以作各种形式上和细节上的改变而并未脱离此发明的精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号