CN1029050C - 在数据库系统中强化实施参照约束 - Google Patents
在数据库系统中强化实施参照约束 Download PDFInfo
- Publication number
- CN1029050C CN1029050C CN90107662A CN90107662A CN1029050C CN 1029050 C CN1029050 C CN 1029050C CN 90107662 A CN90107662 A CN 90107662A CN 90107662 A CN90107662 A CN 90107662A CN 1029050 C CN1029050 C CN 1029050C
- Authority
- CN
- China
- Prior art keywords
- access
- mentioned
- database
- executable code
- orders
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
在一个数据系统中强化实施参照完整性的系统和方法,能在存取方案的编译期间确定有关的参照约束。当产生存取方案时,对所有与数据库的数据变化有关的参照约束进行标识。为执行参照约束检验所需的代码在编译期间直接插入存取方案,消除了在运行期间确定有关约束的必要。约束检验可以采用在存取方案中为进行数据存取所用的相同的低级过程语句来完成。
Description
本发明总体上讲涉及数字计算机的数据库系统,特别是涉及一种在数据库改变时强化实施参照约束的系统和方法。
为了提高数字计算机系统中数据库的存取速度,包括数据库存取指令的源文件可以编译为存取方案。这种存取方案包括低级过程语句,以便有效
地存取数据库。数据库管理程序运行期间不是解释数据库存取指令。而是执行存取方案,。以改善系统性能。
为了保持数据库的参照完整性,当更新数据库时,必须满足众多的约束条件。参照完整性是指整个数据库中的一种一致性状态。参照完整性是通过对数据库的所有变化进行检验以确保这些变化满足一致性的要求而实施的。
在现行的系统中,当数据库中的一张表发生变化时,就要确定与这种变化有关的所有的约束。受这些约束影响的其它表被识别,并且执行程序去完成必要的一致性检验。确定有关的一致性检验及识别包含的表所用的时间是值得注意的,它降低了整个系统的性能。
这就希望在数据库系统中提供一种系统和方法,当数据库发生变化时,能够最大限度地减少完成一致性检验的时间。
因此,本发明的一个目的是提供一种当数据库系统更新时用于完成一致性检验的系统和方法。
本发明的另一个目的是提供的这种系统和方法,能最大限度地减少一致性检验的系统和方法。
本发明还有一个目的是提供的这种系统和方法能实现数据库系统的参照完整性。
因此根据本发明的一个数据库系统中强化实现参照完整性的系统和方法,能够在存取方案的编译期间确定有关的参照约束。当取存方案产生时,与数据库的数据变化有关的全部参照约束被标识。完成参照约束检验所必需的代码在编译期间被直接插入存取方案,消除了运行时确定有关约束的必要性。基本上可以采用与已经用于实行数据库存取的存取方案中的低级过程语句相同的语言来完成约束检验。
本发明新颖的有效特征在所附的权利要求书中提出。然而本发明自身,及其最佳应用方式、进一步的目的和优点,将通过参照以下结合附图对实施例所做的详细描述,获得最好的理解,其中:
图1是说明一个数据库系统的高层框图;
图2是一个存取部分的框图;
图3是说明存取方案的编译过程的流程图;
图4至图11说明为了完成约束检验而将低级代码语句插入存取部分的情况;以及
图12是一张流程图,说明在自参照表中进行删除,以级联删除规则强化实施参照约束时,插入存取方案的低级代码的功能。
定义一些在以下描述中使用的重要词汇和概念,对理解本发明是有帮助的。
主关键词是表中的一组列,必须包含独有的非空值,一张表不能多于一个主关键词。外来关键词是表中的一组列,它的值需要与一张表的主关键词的值匹配。参照约束是一种必要的条件,指明的外来关键词的非空值只有当它们也作为指明的表的主关键词的值出现时,才是有效的。如果它的任何部分是空的话,外关键词的值是空的。由参照约束限定的关系是单张表或两张不同的表的行之间由一个主关键词和一个外来关键词的值确定的一组连接。
双亲表是在联系中包含主关键词的表。一张表可以是任何数目的联系中的双亲表。从属表是在联系中包含外来关键词的表一张表可以是任何数目的联系的从属表。一张表既可以是双亲表,又可以是从属表。
从属行是从属表中的行,该表的外来关键词的值与双亲表的主关键词的值相匹配。外来关键词的值这样便代表了自从属行至双亲行的一个参照。双亲行是双亲表的行,该行至少有一行从属行。
删除规则与每个参照约束相关。删除规则能限制(防止)删除双亲行,或指定删除从属行的作用。其作用可以是删除从属行(级联删除),或将从属行中的外来关键词置空值。
更新规则也与每个参照约束相关。使用更新规则的一个途径是限制更新双亲行中的主关键词。另一个途径是指定更新从属行的作用,以致于使例如级联更新成为可能。
每次改变数据库,必须满足全部有关的参照约束。如果任何一项不满足,就不允许改变数据库。对外来关键词强化实施以下规则,能保证数据库的参照完整性。
插入规则:当在一张从属表中插入一行时,被插入行中每个非空外来关键词的值必须与相关的双亲表中主关键词的某一值相匹配。如果任何参照约束被插入操作所破坏,那么就会出现错误,并且没有行被插入。
删除规则:当从一张双亲表中删除一行时,进行检验以确定在从属表中是否还有从属行。从属行是具有外来关键词的行,其值与将要删除的行的主
关键词匹配。如果发现任何从属行,便由删除规则规定所采取的行动,该删除规则是对从属表中的外来关键词规定的。
可以对一个外来关键词规定三种删除规则。如果规则是RESTRICT(限制),如果发现任何从属行,就会出现错误,并且没有行被删除。如果删除规则是CASCADE(级联),删除从属表中的任何从属行,对从属表中被删除行的任何其它参照约束也必须得到满足,否则就会出现错误,并且没有行被删除。如果删除规则是SET NULL(置空值),如果在从属表中发现任何从属行,那么外来关键词的所有可置空值的部分都置空值。
更新规则:当在一张双亲表中更新一行时,进行检验以确定在从属表中是否还有从属行。从属行是具有外来关键词的行,其值与将要更新的行的主关键词匹配。如果发现任何从属行,便由更新规则规定所采取的行动。该更新规则是对从属表中的外来关键词指定的。
可以对一个外来关键词规定三种更新规则。如果规则是RESTRICT(限制),如果发现任何从属行,就会出现错误,并且没有行被更新。如果更新规则是CASCADE(级联),对从属表中的任何从属中行中的外来关键词进行更新,使其成为对应的主关键词的部分。对从属表中被更新行的任何其它参照约束也必须得到满足,否则就会出现错误,并且没有行被更新。如果更新规则是SET NULL(置空值),如果在从属表中发现任何从属行,那么外来关键词的所有可置空值的部分都置空值。
更新外来关键词规则:当在一张从属表中更新一个外来关键词时,如果外来关键词不是空值,它的新值必须与相关的双亲表中主关键词的某一值相匹配。如果任何参照约束被更新操作所破坏,那么就会出现错误,并且没有行被更新。
参照图1,数据库10是由数据库管理程序12存取的。为了对数据库10进行存取,由应用程序(未示出)调用数据库管理程序12。除了通过数据库管理程序12,不允许对数据库10进行存取。
当应用程序调用数据库管理程序12时,它还接下来调用存取方案14去完成所要求的数据库存取。存取方案14包括低级的经过解释的码,该码是从一种较高级的数据库存取语言如SQL或类似语言经编译得到的。存取方案14包括多个存取部分16、18、20、22、24、26和28。存取部分16~28中的每一个基本上都对应SQL中的一种源级语句,或对应一种类似的高级数据库存取语言。
存取方案14作为包括在数据库10中的一个客体而存在。数据库10中还包括许多其它的数据库客体30、32、34、36、38、40和42。各种类型的数据库客体30~42可以与本发明最相关的数据表一起存在。
对应于SQL语句的每一存取部分16~28对数据库10中的一张或多张表30~42进行存取。取决于编译进每个存取部分的语句的性质,这些表中的数据可以被读出或改变,或者表中的行可以被插入或删除。如图1所示,存取部分可以访问不止一张表,并且许多不同的存取部分可以访问一张单个的表。表可以被许多不同的存取方案中的存取部分访问。例如,存取部分16、18、22和24都访问表32。存取部分26仅访问表36,而存取部分28访问表36、38和40。
图2表示一个典型的存取部分的结构。主线索50是低级代码的线索或块,用以完成SQL由存取部分代表的语句的功能,主线索50包括指向表客体52(TAOB)和插入/更新/删除客体54(IUDO)的指针。表客体是一个控制块,包括为在数据库中存取一张表所必须的全部信息。IUDO是一个控制块,包括对一张表进行插入、更新或删除所需要的全部信息和过程。并不是所有的主线索50都包括指向客体52和54的指针。只有那些执行操作需要的指针才被包括进去。
TAOB52包括为在数据库中对一张表定位所需的所有标识符。此外,出现在最初的SQL语句中的谓词被包括进TAOB52之中。这些谓词由表存取操作码使用,用来选择满足存取操作码规定的标准的表的行,并且这些谓词在SQL语句的WHERE子句中被找到。这些谓词典型地包括关系运算符,例如大于或小于,以及产生一个“真”或“伪”的结果。
IUDO54包括指向任何数据值56的指针,这些数据值对执行由主线索50所规定的操作来说是必需的。这些数据值包括例如出现在最初的SQL语句中的数值常量及字符常量。IUDO54还包括指向子线索58(S1)、60(S2)和62(S3)的指针。与主线索50相类似,子线索58、60和62也
是低级代码的块。子线索可以包括用来对各种不同的数值和字符表达式进行求值和处理的代码。为了保持数据库参照完整性,还包括那些能完成所有必要的、为主线索50所代表的语句所需的约束检验的子线索。子线索58、60和62在完成执行主线索50的操作之前被执行,只有当由必需的子线返回的值达到被主线索50中的操作码所期望的适当值时,主线索50中的操作码才全部执行,指出操作不会破坏所需的参照完整性。
如同主线索50可以具有相关的TAOB52和IUDO54一样,子线索58、60和62也包括指向表客体、或许还包括向插入入/更新/删除客体的指针。例如,图2中子线索58包括指向TAOB64的指针,而子线索60包括指向TAOB66的指针。子线索58和60都不包括指向IUDO的指针。在本例中,子线索62既包括指向TAOB68的指针,又包括指向IUDO70的指针。
如前所述,子线索包括在IUDO54之下,它们对于完成所有约束检验来说是必要的,这些约束检验对于执行主线索50时强制实施数据库关联完整性是需要的。在编译存取方案时确定所有必要的约束检验,并且适合的子线索由编译程序插入。该进程示于图3中。
用于编译SQL的源文件语句,或其它类似的高级数据库存取语言语句的最佳方法,开始于编译程序读出一条SQL语句80。如果编译程序已经到达源文件的结尾82,则编译过程完成。如果没有到达源文件的结尾82,则在84产生那条语句的主线索。
一些语句,如SELECT(选择)语句,不需要进行任何约束检验。进行检验是为了看一看在86是否需要任何约束,如果不需要,则控制返回步骤80,并且读出下一语句。如果当前正在编译的语句确实需要在86进行约束检验,那么在88标识约束。约束标识包括一个联系中的双亲表和从属表的标识,如果操作是删除操作或更新操作时,还包括确定对一个外来关键词来说使用哪一条删除规则或更新规则。当所有约束在88被标识,便在90产生适合的约束子线索,并且与刚产生的主线索的IUDO相连。然后,控制返回步骤80,准备读出下一条源语句。
本领域的技术人员知道,对所有可能的联系进行检验以确定需要产生哪一些约束子线索,这延长了编译过程的时间并增加了其复杂性。还将懂得,由于这一过程是在编译期间完成的,并且适合的子线索直接与用于执行主线索的代码相联,所以没有必要在执行时对已经产生的存取方案进行这种检验。这就加快了存取方案的总的执行时间,因此提高了数据库系统的性能,由于存取方案一般编译一次,而执行许多次,因此,增加编译时间所带来的影响比起减少执行时间所带来的影响要小得多。
由于完成所有约束检验的代码直接放在存取方案之中,所以数据库中表之间的联系发生变化时,存取方案就不再有效了。因此,当这种变化发生时,就有必要使存取方案作废,并且在方案再次执行之前,至少重新编译受影响的存取部分。并不是所有的联系变化都需要作废存取方案,并重新进行编译。发明名称为“数据库系统的存取方案无效”、共同未决申请的申请号为No.07/421476的专利申请(该申请已引入于此)描述了决定何时必须作废存取方案的最佳技术。
图4至图10说明进行几个重要的约束检验的子线索的使用,以及进行这些约束检验的代码例子。在每一图中,主线索由MT:标识,子线索由S1和S2表示。在每一图中,子线索表示用来对每一主线索只进行一次唯一的约束检验。然而,在许多情况下,对一条SQL语句而言,必须进行多次约束检验,并且将包括相应于这些约束的多条子线索。将多个指向他们的指针简单地放在IUDO中,就能把多条子线索包括进去。
在图4至图10的主线索和子线索代码例子中采用了以下低级操作码:
DEL:这一操作码包括指向一个IUDO的一个指针。如果由IUDO指向的任何约束子线索返回“真”值,则删除失败,当删除包括主关键词的行与从属外来关键词的删除规则不符合时,发生这种情况,并且数据库不发生变化。如果返回“伪”,则如期望那样进行删除操作。
DL2:除了用来对级联删除进行计数的字段增大,而不是如DEL操作码那样使对直接删除进行计数的字段增大之外。该操作码的其它功能与DEL操作码相同。
EXS:该操作码决定当执行前一个操作码,如TA操作码时,是否存在匹配。如果前一个TA操
作码发现有匹配的记录,则将“真”值放在布尔栈中,否则将“伪”放在栈中。
EXP:这是一个退出线索操作码,它结束一个谓词(约束检验)子线索执行。当退出子线时,该操作码将布尔栈中的一个值退栈,并返回该值。
EXT:该操作码简单地退出线索或子线索,将控制返回至调用这条线索或子线索的位置。
ISS:该操作码用来将一行插入一张表中。它包括一指向IUDO的指针,并且只有当它的约束子线索返回值为“真”时,才完成执行。返回值为“伪”表示插入操作废止。当企图插入的行所包括的外来关键词与主关键词不匹配时,发生这种情况。
TA:该操作码是一个表存取操作码,包括一个指向TAOB的指针。该操作码选择与TAOB相联的表中所有符合TAOB中的谓词所规定的标准的行。
UPD:该操作码是一个更新操作码,包括一个指向IUDO的指针。当主关键词更新以及外来关键词更新时,用于更新的IUDO包括指向约束子线索的指针。只有当用于主关键词更新的所有约束子线索的返回值为“伪”时,UPD操作码才完成执行。返回值为“真”表示更新操作被废止。当企图更新的主关键词具有与之匹配的外来关键词值时,发生这种情况。对每次主关键词的更新,进行一次检验,以确定主关键词的值是否真的改变了。如果它没有改变,不执行用于更新主关键词的约束子线索。只有当用于外来关键词更新的所有约束子线索的返回值为“真”时,UPD操作码才完成执行。返回值为“伪”表示更新操作被废止。当企图将外来关键词更新为一个与主关键词不匹配的新值时,发生这种情况。
UP2:除了将一个特定的字段增大,以便对更新的从属行记数之外,该操作码的功能与UPD操作码相同。
参照图4,它示出了用来对一张从属表进行插入的完成主关键词检验的代码。为了确保在双亲表中包含新的关键词,当产生一个新的非空外来关键词值时,就要进行这一检验。ISS操作码指向IIUDO0,IUDO0接下来再指向子线索S1。在子线索S1中,TA操作码用来搜索双亲表(由TAOB1指向)中的一个行,该行的主关键词值与新增加的外来关键词匹配。EXS将一个“真”值或一个“伪”值放入布尔栈中,并且该值从栈中退出,由EXP操作码返回。
如果“伪”返回给ISS操作码,那么在双亲表中便没有发现一个相匹配的主关键词,并且插入操作是不允许的。
参照图5,它示出了当从属表中外来关键词的删除规则是RESTRICT(限制)时,进行删除操作的低级代码。TAOBO包括出现在源删除语句中的全部谓词,并且IUDO0包括一个指向子线索S1的指针。TAOB1包括为在从属表中搜索其外来关键词与正在被删除的双亲表行的主关键词匹配的行所必须的那些谓词。在主线索中,TA操作码选择将要被删除的双亲表中的行,并且如果返回“伪”,DEL操作码就删除所选择的行。在子线索S1中,TA操作码指向TAOB1,搜索具有与被选择行的主关键词匹配的外关键词的行,对每个被主线索的TA操作码选中的双亲表中的行,执行子线索S1,如果找到这种匹配的行,则由EXP操作码将“真”返回,并废止删除操作。
参照图6,它示出了执行删除操作的代码,其中从属表的外来关键词具有删除规则SET NULL(置空值)。除了子线索S1包括具有一个指向IUDO1的指针的一个UP2操作码外,本实例与图5相似。IUDO1列出从属表中外来关键词的可置空值部分,并在被调用时,将空值赋予这些部分。当TA操作码对从属表扫描时,在每一与正被删去的双亲行的主关键词匹配的行上执行UP2操作码。EXT操作码并不返回一个布尔值,所以主线索中的DEL操作码总是能够执行。
图7表示当从属表中的外来关键词的删除规则是CASCADE(级联)时用于进行删除操作的代码。除了子线索S1具有DL2操作码而不是UP2操作码,使级联删除能够完成,以及IUDO1具有一个指向子线索S2的指针,使附加层级联删除能够完成之外,图7的代码与图6的代码相类似。除了TAOB2和IUDO2照与TAOB1和IUDO1不同的表之外,子线索S2和子线索S1是相同的。如果删除链级联有第三张表,那么IUDO2将包括一个指向另一个子线索的指针,去对那张表进行删除。子线索S1和S2中的DL2操作码将从属表中所有被在各自的子线索中的TA操作码发现的行删除。
对照图8、图9和图10,它们示出了用于在更新操作时强制实行约束的子线索的代码。在每一情况中都进行检验,以确定是否主关键词的值真正变化了。如果没有变,不执行约束子线索。
当从属表的更新规则为RESTRICT(限制)时,运用图8的代码。在主线索中,TA操作码从双亲表中选择行,并且如果返回时是“伪”,UPD操作码就更新所选择的行。在子线索S1中,TA操作码确定在从属表中是否存在这样的行,它们的外来关键词与双亲行的主关键词匹配。如果匹配,则指出不应执行更新操作,EXS和EXP操作码将“真”值返回UPD操作码。如果找不到这样的匹配行,则返回“伪”,并且允许完成更新操作。
图9表示当从属表中的外来关键词的更新规则是SET NULL(置空值)时,所采用的约束检验子线索。在子线索S1中,IUDO1列出从属表中外来关键词的可置空值部分,并且UP2操作码将空值赋予从属表中被TA操作码选中的每行的这些部分。如同置空值删除的情况,子线索S1将不会使主线索中的UPD操作码失败。
图10表示用于执行更新操作的代码,其中从属表中外来关键词的更新规则是CASCADE(级联)。IUDO1列出对应于双亲主关键词的被更新部分的从属表中外来关键词部分。UP2操作码使对由子线索S1中的TA操作码选中的从属表中的每一行的外来关键词部分设置成相应的主关键词部分的值。如果级联在第一从属表之外延续,则IUDO1如同在级联删除中的情况一样,包括一个指向另一子线索的指针。
参照图11,它示出了在对外关键词的值进行更新用来完成主关键词检验的代码。为了确保在双亲表中包括该新关键词,当一个新的非空外来关键词值产生时,便进行这一检验。UPD操作码指向IUDO0,它再指向子线索S1。子线索S1中,TA操作码用来搜索双亲表(由TAOB1指向)中的一行,该行的主关键词值与新增加的外来关键词匹配。EXS将一个“真”值或一个“伪”值放入布尔栈中,并且该值从栈中退出,由EXP操作码返回。
如果“伪”返回UPD操作码,那么在双亲表中便没有发现一个相匹配的主关键词,并且更新操作是不允许的。
由于许多表在联系中既是双亲表又是从属表,所以对所有有关的约束,必须包括约束检验子线索。如果任何约束子线索发生故障,那么由主线索定义的操作也将发生故障。
所有上述约束都能用子线索以直截了当的方式完成。执行期间处理起来较为困难的约束是在带有级联删除规则的删除语句中的自参照约束。这种特殊情况最好采用不同方式来处理,如下面所介绍的那样。
在级联删除规则和自参照约束条件下,从一张表中删除的每一行都可能在同一张表中有许多从属行,而这些从属行在那张表中又可能有许多从属行。这种多重从属关系可以从无法预知的深度继续递归下去,只取决于表中包含的数据。执行约束检验的一个递归过程需要一个最大容量难以确定的调用栈。因此,下面介绍采用选代技术来进行这一特殊情况的约束检验的最佳方法。
参照图12,它示出了在带有级联删除规则的删除语句中,对一个自参照约束进行约束检验的方法的流程图。
首先,在步骤100选择将要删除的一行或几行。这可以是目前由光标选择的一行,也可以是基于某些比较标准选择的一行或多行。在后一种情况下,可采用所熟悉的TA操作码来选择表中要删去的行。
在步骤100被选择的一行或几行的每一行的主关键词写入一张临时表102,然后,在104,用DEL操作码将所选择的一行或几行从原表中删除。在106,包括一个新近被删除的主关键词值的一行从临时表读出。然后,在步骤108进行检验。看看临时表是否空了。如果是的话,则过程结束。否则,控制转向步骤110。
在步骤110中,用TA操作码读出原表中具有与刚从临时表中选出的主关键词匹配的从属关键词的行。步骤112指明是否找到了更多的匹配行。如果还没有到达表的结尾处,则在114将新近选出行的主关键词加进临时表中,并在116从表中删除该行。这一过程一直继续下去,直到由TA操作码将所有的匹配行找到为止。
由步骤110~116定义的循环适用于一个单独的自参照约束。即:检验一个外来关键词,看看它是否与从临时表中刚读出的主关键词匹配。一张表中存在两个或两个以上不同的自参照约束也是可能
的。如果存在更多的自参照约束,则在原表完成一次扫描以后,将控制从步骤112转向步骤118。除了步骤118中的TA操作码引用的表项目的谓词不同于步骤110中的TA操作码引用的表项目的谓词之外,步骤118、120、122和124对应于步骤110~116,使得原表再次被扫描。这意味着由步骤118~124构成的循环,对不同的参照约束进行检验。
假定原表中只有两个不同的自参照约束存在那么一旦步骤120的检测指出表已经被全部扫描过了以后,控制就返回步骤106,从临时表中读出一个新的主关键词。有了新近从临时表中读出的主关键词,整个过程宣告完成。这一循环继续着,当行被删除时,新的主关键词加进临时表中,并且每次控制返回步骤106时从临时表中去掉,直至临时表变空。由于自参照约束只限于单张表,所以最终临时表或原表本身将变空。
如果对于原表来说只有单个自参照约束存在,那么判定步骤112将直接把控制返回步骤106,而步骤118~124构成的循环将不复存在。如果有三个或三个以上的不同的自参照约束存在,那么控制将经过判定步骤120到达下一个参照循环的开始,并且最终的循环将控制返回步骤106。由于约束的数目和本体在存取方案的编译期间是知道的,所以编译程序仅仅将所要求的循环的准确数目写进存取部分。
以上描述的系统和方法提供了将用于约束检验的子线索直接编译进存取方案。由于有关约束的存在和识别并不需要在运行期间确定,所以提高了运行期间的效率。用来进行约束检验的代码可以以和存取部分的先前结构一致的方式,附在各种存取部分的主线索上。
虽然以上结合最佳实施例对本发明进行了具体展示和描述,但本领域的技术人员应该懂得,在不偏离本发明的精神和范围的情况下,可以在形式上和细节上对本发明作各种修改。
Claims (14)
1、用于从多个数据库存取命令产生一个对具有多个数据库客体的关系数据进行存取的存取方案的方法,其特征在于由一个计算机系统完成以下步骤:
将多个数据库存取命令编译成第一可执行码组,将其包含在存取方案之中;
在上述编译步骤期间,确定包含在处理多个数据库存取命令中的选定的数据库客体之间的约束关系;
将约束关系表述为多个第二可执行码组;以及
将第一可执行码组与多个第二可执行码组合并产生存取方案。
2、权利要求1的方法,其特征在于存取方案包括多个存取部分,所述多个存取部分的每部分具有个至少一个操作符用以完成保持所述约束关系的功能。
3、权利要求2的方法,其特征在于上述多个存取部分中某个特定部分对应于上述多个数据库存取命令中的某个特定命令。
4、权利要求3的方法,其特征在于上述多个第二可执行码组中的某个特定码组与上述多个数据库存取命令中的某个特定命令相关联。
5、权利要求4的方法,其特征在于将上述多个第二可执行码组中的上述某特定码组与对应于上述多个数据库存取命令中某特定命令的上述多个存取部分的某特定部分相链接。
6、权利要求5的方法,其特征在于只有在与所述存取部分中的上述某特定部分相链接的上述多个第二可执行码组中上述某特定码组返回指示所有上述约束关系都得到满足的指示符的条件下,包含在上述多个存取部分的某特定部分中的上述至少一个操作符才被获准完成其功能。
7、用于从多个数据库存取命令产生一个对具有多个数据库客体的关系数据库进行存取的存取方案的计算机系统,其特征在于:
用于将多个数据库存取命令编译成第一可执行码组并将其包含在存取方案中的装置;
用于在上述编译期间,确定包含在处理多个数据库存命令中的,选定的数据库客体间的约束关系的装置;
用于在上述编译期间,将约束关系表述为多个第二可执行码组的装置;
用于在上述编译期间,将第一可执行码组与多个第二可执行码组合并产生存取方案的装置。
8、权利要求7的计算机系统,其特征在于存取方案包括多个具有至少一个操作符装置用以完成保持所述约束关系的功能的存取部分。
9、权利要求8的计算机系统,其特征在于上述多个存取部分中某个特定部分对应于上述多个数据库存取命令中的某个特定命令。
10、权利要求9的计算机系统,其特征在于上述多个第二可执行码组中的某个特定码组与上述多个数据库存取命令中的某个特定命令相关联。
11、权利要求10的计算机系统,其特征在于包括将上述多个第二可执行码组中的上述某特定码组与对应于上述多个数据库存取命令中某特定命令的上述多个存取部分的某特定部分相链接的装置。
12、权利要求11的计算机系统,其特征在于只有在与所述存取部分中的上述某特定部分相链接的上述多个第二可执行码组中上述某特定码组返回指示所有的上述约束关系都得到满足的指示符的条件下,包含在上述多个存取部分的某特定部分中的上述至少一个操作符才被获准完成其功能。
13、一种当对具有多个数据库客体进行存取时加强其参照约束关系的方法,其特征在于由计算机系统完成以下步骤:
产生一个具有约束检验和数据库存取操作码的存取方案,其中数据存取操作码定文参照约束关系;
利用数据库客体执行所述存取方案;以及
利用数据库存取操作码进行约束检验以加强数据库客体间的参照约束关系。
14、权利要求13的方法,其特征在于当对存取方案进行编译时,选择约束检验。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42147889A | 1989-10-13 | 1989-10-13 | |
US07/421,478 | 1989-10-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1050937A CN1050937A (zh) | 1991-04-24 |
CN1029050C true CN1029050C (zh) | 1995-06-21 |
Family
ID=23670693
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN90107662A Expired - Fee Related CN1029050C (zh) | 1989-10-13 | 1990-09-13 | 在数据库系统中强化实施参照约束 |
Country Status (5)
Country | Link |
---|---|
US (1) | US5386557A (zh) |
EP (1) | EP0428264A3 (zh) |
JP (1) | JPH0820983B2 (zh) |
KR (1) | KR940004389B1 (zh) |
CN (1) | CN1029050C (zh) |
Families Citing this family (57)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5604899A (en) * | 1990-05-21 | 1997-02-18 | Financial Systems Technology Pty. Ltd. | Data relationships processor with unlimited expansion capability |
US5412806A (en) * | 1992-08-20 | 1995-05-02 | Hewlett-Packard Company | Calibration of logical cost formulae for queries in a heterogeneous DBMS using synthetic database |
US5488722A (en) * | 1993-05-28 | 1996-01-30 | International Business Machines Corporation | System and method for automating implementation and execution of constraint most likely to be violated in a database |
US5504886A (en) * | 1993-07-02 | 1996-04-02 | International Business Machines Corporation | System and method for applying user supplied relation definitions to application files for a relational database |
WO1995008809A2 (en) * | 1993-09-24 | 1995-03-30 | Oracle Corporation | Method and apparatus for data replication |
US6163783A (en) * | 1993-12-16 | 2000-12-19 | Bmc Software, Inc. | Check data operation for DB2 |
US5513350A (en) * | 1994-05-27 | 1996-04-30 | At&T Corp. | Update constraints in transactions which may abort |
US5694598A (en) * | 1994-10-12 | 1997-12-02 | U S West Technologies, Inc. | Method for mapping data between a relational format and an object-oriented format |
US5706494A (en) * | 1995-02-10 | 1998-01-06 | International Business Machines Corporation | System and method for constraint checking bulk data in a database |
US5546576A (en) * | 1995-02-17 | 1996-08-13 | International Business Machines Corporation | Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation |
US5761477A (en) * | 1995-12-04 | 1998-06-02 | Microsoft Corporation | Methods for safe and efficient implementations of virtual machines |
US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
US5751595A (en) * | 1996-03-14 | 1998-05-12 | International Business Machines Corporation | Method for building and verifying authenticity of a rule system |
US5899993A (en) * | 1996-08-07 | 1999-05-04 | Oracle Corporation | Method and apparatus for achieving an enforced and valid constraint state |
DE19725965C2 (de) * | 1997-06-19 | 2000-07-27 | Naser Abdelwahab | Verfahren eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept |
US5873075A (en) * | 1997-06-30 | 1999-02-16 | International Business Machines Corporation | Synchronization of SQL actions in a relational database system |
US6115720A (en) * | 1997-12-15 | 2000-09-05 | International Business Machines Corportion | Method and apparatus for performing a health check on a database system |
US6427143B1 (en) * | 1998-04-10 | 2002-07-30 | Computer Associates Think, Inc. | Method for loading rows into a database table while enforcing constraints |
US6304876B1 (en) | 1998-06-05 | 2001-10-16 | Computer Associates Think, Inc. | Method for enforcing integrity constraints in a database table using an index |
US6189010B1 (en) * | 1998-06-10 | 2001-02-13 | Platinum Technology, Inc. | Method for repairing constraint violations in a database management system |
US6295539B1 (en) * | 1998-09-14 | 2001-09-25 | Computer Associates Think, Inc. | Dynamic determination of optimal process for enforcing constraints |
US6363387B1 (en) * | 1998-10-20 | 2002-03-26 | Sybase, Inc. | Database system providing methodology for enhancing concurrency using row update bit and deferred locking |
US6606626B1 (en) | 1998-10-20 | 2003-08-12 | Sybase, Inc. | Database system with lock manager enhancement for improving concurrency |
US6745332B1 (en) * | 1999-06-29 | 2004-06-01 | Oracle International Corporation | Method and apparatus for enabling database privileges |
US6304873B1 (en) * | 1999-07-06 | 2001-10-16 | Compaq Computer Corporation | System and method for performing database operations and for skipping over tuples locked in an incompatible mode |
US6339772B1 (en) | 1999-07-06 | 2002-01-15 | Compaq Computer Corporation | System and method for performing database operations on a continuous stream of tuples |
US6397227B1 (en) * | 1999-07-06 | 2002-05-28 | Compaq Computer Corporation | Database management system and method for updating specified tuple fields upon transaction rollback |
US6453313B1 (en) * | 1999-07-06 | 2002-09-17 | Compaq Information Technologies Group, L.P. | Database management system and method for dequeuing rows published to a database table |
CA2279222C (en) * | 1999-07-30 | 2002-07-16 | Ibm Canada Limited-Ibm Canada Limitee | Direct call threaded code |
US6339777B1 (en) | 1999-07-30 | 2002-01-15 | International Business Machines Corporation | Method and system for handling foreign key update in an object-oriented database environment |
US6453314B1 (en) | 1999-07-30 | 2002-09-17 | International Business Machines Corporation | System and method for selective incremental deferred constraint processing after bulk loading data |
JP4167359B2 (ja) * | 1999-09-30 | 2008-10-15 | 株式会社東芝 | データ管理システム及びデータ管理方法 |
US6542883B1 (en) | 2000-03-09 | 2003-04-01 | International Business Machines Corporation | Ordering relational database operations according to referential integrity constraints |
US6556973B1 (en) * | 2000-04-19 | 2003-04-29 | Voxi Ab | Conversion between data representation formats |
US7440962B1 (en) | 2001-02-28 | 2008-10-21 | Oracle International Corporation | Method and system for management of access information |
WO2003003245A1 (en) * | 2001-06-26 | 2003-01-09 | Nokia Corporation | Indexing method and system for relational databases |
US8600799B2 (en) * | 2001-11-27 | 2013-12-03 | Siebel Systems, Inc. | Method and system for sales-credit assignment via time-based organization hierarchies |
US8027869B2 (en) * | 2001-11-27 | 2011-09-27 | Siebel Systems, Inc. | Method and system for monitoring achievement and attainment and calculating compensation via time-based organization hierarchies |
US7937284B2 (en) * | 2001-11-27 | 2011-05-03 | Siebel Systems, Inc. | Method and system for managing time-based organization hierarchies |
US7421436B2 (en) * | 2001-12-21 | 2008-09-02 | International Business Machines Corporation | Decentralized many-to-many relationship management in an object persistence management system |
EP1349081A1 (en) * | 2002-03-28 | 2003-10-01 | LION Bioscience AG | Method and apparatus for querying relational databases |
US7502791B2 (en) * | 2002-11-26 | 2009-03-10 | Norsync Technology A/S | Database constraint enforcer |
US7519952B2 (en) * | 2003-07-28 | 2009-04-14 | International Business Machines Corporation | Detecting an integrity constraint violation in a database by analyzing database schema, application and mapping and inserting a check into the database and application |
EP1607883B1 (en) * | 2004-06-15 | 2009-08-12 | Sap Ag | A data processing system and method for monitoring database replication |
EP2210197A1 (en) | 2007-10-18 | 2010-07-28 | International Business Machines Corporation | A method, apparatus and computer program for migrating records in a database from a source database schema to a target database schema |
US20100082646A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Tracking constraints and dependencies across mapping layers |
US8250048B2 (en) * | 2009-04-20 | 2012-08-21 | Oracle International Corporation | Access control for graph data |
US8924921B2 (en) * | 2009-04-20 | 2014-12-30 | International Business Machines Corporation | Abstracting business logic into centralized database controls |
US8301660B2 (en) * | 2009-07-22 | 2012-10-30 | Oracle International Corporation | Enforcing restrictions for graph data manipulation operations |
US9275033B2 (en) * | 2010-03-25 | 2016-03-01 | Salesforce.Com, Inc. | System, method and computer program product for creating an object within a system, utilizing a template |
US9026561B2 (en) | 2012-07-02 | 2015-05-05 | International Business Machines Corporation | Automated report of broken relationships between tables |
US20140149360A1 (en) * | 2012-11-27 | 2014-05-29 | Sap Ag | Usage of Filters for Database-Level Implementation of Constraints |
CN103345501A (zh) * | 2013-06-27 | 2013-10-09 | 华为技术有限公司 | 数据库更新方法和装置 |
US10659389B2 (en) * | 2014-07-16 | 2020-05-19 | Nec Corporation | Efficient cascading of flow tables in software defined networks (SDN) |
DE102015013593A1 (de) | 2015-10-15 | 2017-04-20 | makmad.org e.V. | Effizientes Verfahren zur logischen Vervollständigung eines deduktiven Kataloges zur allgemeinen Constraintsbehandlung im erweiterten relationalen Datenbankkonzept |
US11113281B2 (en) | 2016-10-14 | 2021-09-07 | Elnaserledinellah Mahmoud Elsayed Abdelwahab | Efficient method for logical completion of a deductive catalogue used for general constraints treatment in the extended relational database concept |
DE102018008923A1 (de) | 2018-10-09 | 2020-05-20 | makmad.org e. V. | Verfahren zur Erstellung einer effizienten, logisch vollständigen, ontologischen Ebene im erweiterten relationalen Datenbankkonzept |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4330822A (en) * | 1971-09-02 | 1982-05-18 | Burroughs Corporation | Recursive system and method for binding compiled routines |
US4104718A (en) * | 1974-12-16 | 1978-08-01 | Compagnie Honeywell Bull (Societe Anonyme) | System for protecting shared files in a multiprogrammed computer |
US4506326A (en) * | 1983-02-28 | 1985-03-19 | International Business Machines Corporation | Apparatus and method for synthesizing a query for accessing a relational data base |
US4829427A (en) * | 1984-05-25 | 1989-05-09 | Data General Corporation | Database query code generation and optimization based on the cost of alternate access methods |
US4769772A (en) * | 1985-02-28 | 1988-09-06 | Honeywell Bull, Inc. | Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databases |
JP2602205B2 (ja) * | 1986-01-16 | 1997-04-23 | 株式会社日立製作所 | データベース・アクセス制御方法 |
JP2644728B2 (ja) * | 1986-01-27 | 1997-08-25 | 株式会社日立製作所 | データディクショナリ・ディレクトリシステム |
US4918593A (en) * | 1987-01-08 | 1990-04-17 | Wang Laboratories, Inc. | Relational database system |
US5018067A (en) * | 1987-01-12 | 1991-05-21 | Iameter Incorporated | Apparatus and method for improved estimation of health resource consumption through use of diagnostic and/or procedure grouping and severity of illness indicators |
US4947320A (en) * | 1988-07-15 | 1990-08-07 | International Business Machines Corporation | Method for referential constraint enforcement in a database management system |
US4933848A (en) * | 1988-07-15 | 1990-06-12 | International Business Machines Corporation | Method for enforcing referential constraints in a database management system |
EP0360387B1 (en) * | 1988-09-23 | 1996-05-08 | International Business Machines Corporation | Data base management system |
US5197005A (en) * | 1989-05-01 | 1993-03-23 | Intelligent Business Systems | Database retrieval system having a natural language interface |
-
1990
- 1990-09-13 CN CN90107662A patent/CN1029050C/zh not_active Expired - Fee Related
- 1990-09-13 KR KR1019900014423A patent/KR940004389B1/ko not_active IP Right Cessation
- 1990-09-17 JP JP2244143A patent/JPH0820983B2/ja not_active Expired - Fee Related
- 1990-10-08 EP EP19900311016 patent/EP0428264A3/en not_active Ceased
-
1992
- 1992-11-12 US US07/975,149 patent/US5386557A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
KR940004389B1 (ko) | 1994-05-23 |
JPH0820983B2 (ja) | 1996-03-04 |
US5386557A (en) | 1995-01-31 |
EP0428264A2 (en) | 1991-05-22 |
KR910008600A (ko) | 1991-05-31 |
EP0428264A3 (en) | 1992-11-19 |
CN1050937A (zh) | 1991-04-24 |
JPH03131941A (ja) | 1991-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1029050C (zh) | 在数据库系统中强化实施参照约束 | |
Blasgen et al. | System R: An architectural overview | |
US6304867B1 (en) | System and method for enhanced performance of a relational database management system through the use of application-specific memory-resident data | |
US5845274A (en) | Computer program product for avoiding complete index tree traversals in sequential and almost sequential index probes | |
US6581205B1 (en) | Intelligent compilation of materialized view maintenance for query processing systems | |
US6606617B1 (en) | Optimized technique for prefetching LOB table space pages | |
US5802523A (en) | Method and apparatus for reducing the memory required to store bind variable descriptors in a database | |
US6144970A (en) | Technique for inplace reorganization of a LOB table space | |
EP0360387B1 (en) | Data base management system | |
US6249783B1 (en) | Method and apparatus for efficiently executing built-in functions | |
US6349305B1 (en) | Method and system for database processing by invoking a function related to index type definition, generating an execution plan based on index type name | |
US6098075A (en) | Deferred referential integrity checking based on determining whether row at-a-time referential integrity checking would yield the same results as deferred integrity checking | |
US7324985B2 (en) | Methods and systems for database statement execution plan optimization | |
US5745746A (en) | Method for localizing execution of subqueries and determining collocation of execution of subqueries in a parallel database | |
EP0667586A2 (en) | Database generator | |
EP0588445A2 (en) | Operating system and data base having an access structure formed by a plurality of tables | |
US6343286B1 (en) | Efficient technique to defer large object access with intermediate results | |
US20090177622A1 (en) | Method and system for speeding up rebuild of user-defined indexes during partition maintenance operations in the database systems | |
CN1582430A (zh) | 用于许可访问软件的方法、系统、与程序产品 | |
EP0373361A2 (en) | Generating efficient code for a computer with dissimilar register spaces | |
JPH09171478A (ja) | 改良された索引によるアクセスを使用するデータベース管理システム | |
US6282541B1 (en) | Efficient groupby aggregation in tournament tree sort | |
US6353819B1 (en) | Method and system for using dynamically generated code to perform record management layer functions in a relational database manager | |
US6535895B2 (en) | Technique to avoid processing well clustered LOB's during reorganization of a LOB table space | |
US6618720B1 (en) | Common spool files for maintaining join indexes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C15 | Extension of patent right duration from 15 to 20 years for appl. with date before 31.12.1992 and still valid on 11.12.2001 (patent law change 1993) | ||
OR01 | Other related matters | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 19950621 Termination date: 20091013 |