用于数据处理的方法和系统的制作方法

文档序号:6562756阅读:164来源:国知局
专利名称:用于数据处理的方法和系统的制作方法
技术领域
本发明一般涉及计算机数据库管理系统,并更具体地涉及强制实施数据库中从父表到子表的限制。
背景技术
1948年EDVAC计算机系统的开发通常被称为是计算机纪元的开端。从那时起,计算机系统已包括了极端复杂的设备,并且计算机系统可在许多不同设置中找到。计算机系统典型地包括硬件(诸如半导体和电路板)和软件(也被称为计算机程序)的结合。
基本上,计算机系统被用于存储、操作和分析数据,所述数据可以是从复杂的金融信息到简单的烘烤食谱的任何数据。那么,无疑计算机系统的整体价值或效用极大地取决于计算机存储、操作和分析数据的能力有多强。一种用于管理数据的机制被称为数据库管理系统(DBMS),其也可以被称为数据库系统。
许多不同类型的数据库是公知的,但最常见的数据库通常被称为关系数据库(RDB),其在具有行和列的表中组织数据,所述行表示数据库中的独立条目或记录,所述列定义在每个条目或记录中存储了什么。列也可被称为字段。每个表在数据库内具有唯一名称,而每个列在特定表内具有唯一名称。数据库还具有索引,索引是向数据库管理系统通知给定了被索引的列值在表中的某行的位置的数据结构,其与向读者通知给定词出现在哪一页的书本索引类似。
数据库典型地提供码,码是数据库用来给数据排序的在表中的一个或多个行。大多数数据库管理系统允许多于一个码,从而允许以不同方式对记录排序。所述码之一被指定为主码,并且必须对每一行保持唯一值。标识不同表中的行的码被称为外码。外码(FK)是指向另一表中的另一数据库记录的字段(列)的数据库记录中的字段(列)。通常一个表中的外码引用其它表中的主码。
参照完整性是由关系数据库管理系统提供的特征,其防止用户或应用在表之间输入不一致数据。例如,假设表B具有指向表A中的列的外码。参照完整性防止向表B(子表)添加无法被链接到表A(父表)的记录。因此,表B(子表)的记录中的外码值必须已经在表A(父表)的相应列中存在。因此,在所述关系中,主码常常被称为父码,而外码被称为子码,因为孩子不能没有父母而存在。此外,参照完整性规则还可指定,只要从表A(父表)中删除记录,表B(子表)中被链接到所删除记录的任何记录也被删除,这被称为级联删除。最后,参照完整性规则可指定,只要在表A中修改了所链接列中的值,表B中被链接到该值的所有记录也将被相应修改,这被称为级联更新。因此,级联删除和更新强制实施了孩子不能没有父母而存在的关系。
尽管参照完整性是有用的技术,但是它是有限制的,因为它仅在一个方向上强制实施完整性规则,即,在所述关系中主码是父码,而外码是子码。尝试通过将表A中的一个码定义为既是主码也是外码(以及类似地定义表B中的一个码)而创建双向的参照完整性会导致循环限制,循环限制导致死锁和无限循环。
因此,所需要的是一种用于创建双向的参照完整性的技术。

发明内容
提供了一种方法、装置、系统和信号承载媒体,在一实施例中,其接收指定父表、父表中的主码、子表以及子表中的外码的限制命令,以及强制实施在所述子表的外码中呈现所述父表中的主码的所有值。在一实施例中,所述强制实施可包括接收插入命令,其中所述插入命令指定目标码、目标码的目标值以及目标表;确定所述目标表是否匹配所述父表,以及在包括所述插入命令的事务中所述子表是否包括具有与所述主码的目标值相等的外码值的至少一行;如果所述确定为真,则将所述目标值插入所述目标表;以及如果所述确定为假,则返回错误。在一实施例中,所述强制实施可包括接收指向所述目标表中的目标码的目标值的删除命令;决定所述目标表是否匹配所述子表、所述目标码是否匹配所述外码、以及所述删除命令是否请求从所述子表中删除具有所述目标值的所有行;如果所述决定为真,则返回错误;以及如果所述决定为假,则从所述目标表中删除具有所述目标码的目标值的行。


下文结合附图来描述本发明的各种实施例图1描述用于实现本发明实施例的示例性系统的高级框图。
图2描述根据本发明实施例的数据库的框图。
图3描述根据本发明实施例的限制数据的框图。
图4描述根据本发明实施例的用于限制命令的示例性处理的流程图。
图5描述根据本发明实施例的用于插入命令的示例性处理的流程图。
图6描述根据本发明实施例的用于删除命令的示例性处理的流程图。
图7描述根据本发明实施例的用于级联删除命令的示例性处理的流程图。
不过,需要注意,附图仅图示出本发明的示例性实施例,并因此不会被认为是限制本发明的范围,因为本发明可容许其它的等效实施例。
具体实施例方式
本发明的实施例提供了双向的参照完整性限制。现有的参照完整性限制提供的是对于子表中的每一行,外码中的值必须在父表中具有匹配的主码值,与现有的参照完整性限制相反,本发明的实施例强制实施下述限制,其中对于父表中的每个主码值,子表具有至少一个匹配的外码值。
参考附图,其中在若干视图中相同标号指示相同的部分,图1是根据本发明实施例的经由网络130连接到客户机132的计算机系统100的高级框图表示。在一实施例中,计算机系统100的硬件组件可以由可从纽约Armonk的国际商业机器买到的eServer iSeries计算机系统来实现。不过本领域技术人员将了解,本发明实施例的机制和装置等同地适用于任何适当的计算系统。计算机系统100充当客户机132的服务器,但是术语“服务器”和“客户机”仅出于方便使用,而在其它实施例中,在一种方案中被用作服务器的电子设备可在另一种方案中被用作客户机,反之亦然。
计算机系统100的主要组件包括一个或多个处理器101、主存储器102、终端接口111、存储接口112、I/O(输入/输出)设备接口113和通信/网络接口114,所有这些组件都经由存储器总线103、I/O总线104和I/O总线接口单元105相耦合用于组件间的通信。
计算机系统100包含一个或多个通用的可编程中央处理单元(CPU)101A、101B、101C和101D,在此被统称为处理器101。在一实施例中,计算机系统100包含典型的较大型系统的多个处理器;不过,在另一实施例中,计算机系统100可替换地可以是单CPU系统。每个处理器101执行主存储器102中存储的指令,并可包括一级或多级机载高速缓存。
主存储器102是用于存储数据和程序的随机存取的半导体存储器。在另一实施例中,主存储器102表示计算机系统100的整个虚拟存储器,并还可包括耦合于计算机系统100或经由网络130进行连接的其它计算机系统的虚拟存储器。主存储器102在概念上是单个单片实体,但是在其它实施例中,主存储器102是更复杂的装置,诸如其它存储器设备和高速缓存的分层结构。例如,主存储器102可存在于多级高速缓存中,并且这些高速缓存可以被进一步按照功能划分,使得一个高速缓存保持指令,而另一个高速缓存保持由一个或多个处理器使用的非指令数据。主存储器102可以被进一步分布,并与不同CPU或CPU组相关联,如各种被称为非统一存储器存取(NUMA)计算机体系结构中的任一种中所知的那样。
主存储器102包括限制数据168、数据库170和数据库管理系统172。尽管所示出的限制数据168、数据库170和数据库管理系统172被包含在计算机系统100的存储器102内,但在其它实施例中,它们中的某些或全部可以处于不同计算机系统上,并可例如经由网络130被远程访问。计算机系统100可使用虚拟寻址机制,其允许计算机系统100的程序的行为就好像是它们仅访问单个大型的存储实体,而不是访问多个较小的存储实体。因此,尽管所示出的限制数据168、数据库170和数据库管理系统172被包含在主存储器102内,但这些单元不必非要同时被完全包含在同一存储设备中。此外,尽管所示出的限制数据168、数据库170和数据库管理系统172是单独实体,但在其它实施例中,它们中的某些、或者它们中的某些的某些部分可以被封装在一起。
数据库170包括例如以数据表的行和列的形式组织的数据,并还可包括被用来访问数据的索引。以下参考图2进一步描述数据库170。以下参考图3进一步描述限制数据168。
在一实施例中,数据库管理系统172包括能够在处理器101上执行的指令或能够被在处理器101上执行的指令所解释的语句,所述指令或语句用于执行以下参考图4、5、6和7所进一步描述的功能。在另一实施例中,数据库管理系统172可用微代码实现。在另一实施例中,可通过逻辑门和/或其它适当的硬件技术来代替基于处理器的系统或与基于处理器的系统一起来实现数据库管理系统172。
存储器总线103提供用于在处理器101、主存储器102和I/O总线接口单元105之间传送数据的数据通信路径。I/O总线接口单元105还被耦合于用于将数据传送至各种I/O单元和从各种I/O单元传送数据的系统I/O总线104。I/O总线接口单元105通过系统I/O总线104与多个I/O接口单元111、112、113和114(也被称为I/O处理器(IOP)或I/O适配器(IOA))通信。系统I/O总线104可以是例如工业标准PCI总线或任何其它适当的总线技术。
I/O接口单元支持与多种存储和I/O设备进行的通信。例如,终端接口单元111支持一个或多个用户终端121、122、123和124的附接。存储接口单元112支持一个或多个直接存取存储设备(DASD)125、126和127(其典型地旋转磁盘驱动存储设备,尽管它们可替换地可以是其它设备,包括被配置成对于主机呈现为单个大型存储设备的盘驱动器阵列)的附接。主存储器102的内容在需要时可被存储到直接存取存储设备125、126和127以及从其检索到。
I/O和其它设备接口113提供到多种其它输入/输出设备或其它类型的设备中的任一种的接口。在图1的示例性实施例中示出了两个这样的设备打印机128和传真机129,但是在其它实施例中可存在许多其它这样的设备,其可以属于不同类型。网络接口114提供从计算机系统100到其它数字设备和计算机系统的一个或多个通信路径;这样的路径可包括例如一个或多个网络130。
尽管在图1中将存储器总线103示出为提供处理器101、主存储器102和I/O总线接口105之间的直接通信路径的相对简单的单一总线结构,但是实际上,存储器总线103可包括多种不同总线或通信路径,其可以用多种形式中的任一形式来安置,所述多种形式诸如分层结构中的点对点链路、星形或网状配置、多层级总线、并行和冗余路径、或任何其它适当类型的配置。此外,尽管I/O总线接口105和I/O总线104被示出为单个相应单元,但是实际上计算机系统100可包含多个I/O总线接口105和/或多个I/O总线104。尽管示出了多个I/O接口单元,其使得系统I/O总线104与运行到各种I/O设备的各种通信路径相分离,但是在其它实施例中I/O设备中的某些或全部被直接连接到一个或多个系统I/O总线。
图1中示出的计算机系统100具有多个附接终端121、122、123和124,诸如其典型地可以是多用户的“大型机”计算机系统。尽管本发明不会被限于任何特定大小的系统,但是,典型地,在所述情形中,附接设备的实际数量大于图1中示出的设备数量。计算机系统100可替换地可以是单用户系统,其典型地仅包含单个用户显示器和键盘输入,或可以是服务器或类似设备,其几乎没有或没有直接的用户接口,而是从其它计算机系统(客户机)接收请求。在其它实施例中,计算机系统100可被实现为个人计算机、便携式计算机、膝上型或笔记本计算机、PDA(个人数字助理)、平板式计算机、袖珍计算机、电话、寻呼机、汽车、电话会议系统、仪表、或任何其它适当类型的电子设备。
网络130可以是任何适合的网络或网络的组合,并且可支持适于从/向计算机系统100传送数据和/或代码的任何适当的协议。在各种实施例中,网络130可表示直接或者间接连接于计算机系统100的存储设备或存储设备的组合。在一实施例中,网络130可支持Infiniband。在另一实施例中,网络130可支持无线通信。在另一实施例中,网络130可支持硬连线通信,诸如电话线路或电缆。在另一实施例中,网络130可支持以太网IEEE(电气和电子工程师学会)802.3x规范。在另一实施例中,网络130可以是因特网,并可支持IP(网际协议)。
在另一实施例中,网络130可以是局域网(LAN)或广域网(WAN)。在另一实施例中,网络130可以是热点服务供应商网络。在另一实施例中,网络130可以是内联网。在另一实施例中,网络130可以是GPRS(通用分组无线服务)网络。在另一实施例中,网络130可以是FRS(家用无线服务)网络。在另一实施例中,网络130可以是任何适当的蜂窝式数据网络或基于蜂窝的无线网络技术。在另一实施例中,网络130可以是IEEE802.11B无线网络。在再一实施例中,网络130可以是任何适当的网络或网络的组合。尽管示出了一个网络130,但是在其它实施例中可以存在任何数量(包括零)的(相同或不同类型的)网络。
客户机132可包括已对于计算机系统100描述的硬件组件的某些或全部。客户机132包括应用166,但在另一实施例中,应用166可以在计算机系统100中实现。应用166可以是用户应用、第三方应用、操作系统、或上述应用的任何部分或组合。应用166将命令发送到数据库管理系统172,这使得数据库管理系统172创建限制数据168以及经由限制数据168访问数据库170。应用166可发送到数据库管理系统172的命令的示例包括以下参考图4进一步描述的限制命令、以下参考图5进一步描述的插入命令、以及以下参考图6进一步描述的删除命令。但是,在其它实施例中,应用166可将更新命令、查询命令、加入命令、保存命令、恢复命令、或任何其它适当类型的命令发送到数据库管理系统172。
应该理解,图1旨在描述计算机系统100、网络130和客户机132的高级的示范性的主要组件,所述的单独组件可以比图1所示更复杂,可以存在与图1中所示组件不同的组件或除了图1中所示组件之外的组件,并且这些组件的数量、类型和配置可以不同。在此公开了这些额外的复杂度或额外的变体的若干特定示例;应该理解,这些仅作为示例而并不一定是仅有这些变体。
图1中所示的实现本发明的各种实施例的各种软件组件可以用多种方式来实现,包括使用各种计算机软件应用、例程、组件、程序、对象、模块、数据结构等,在此被称为“计算机程序”或简称为“程序”。计算机程序典型地包括多次驻留在计算机系统100的各种存储器和存储设备中的一个或多个指令,并且当所述指令被计算机系统100中的一个或多个处理器101读取并执行时使得计算机系统100执行下述步骤,所述步骤是执行包括本发明实施例的各方面的步骤或单元所必需的。
此外,尽管本发明实施例已经并在下文中将在完全运行的计算机系统的上下文中进行描述,但是本发明的各种实施例能够以各种形式作为程序产品而分布,并且本发明等同地适用而不管被用来实际执行所述分布的信号承载媒体的特定类型。定义此实施例的功能的程序可以被存储到计算机系统100中、在计算机系统100上进行编码、并经由各种有形的信号承载媒体传递到计算机系统100,所述信号承载媒体包括但不限于以下的计算机可读媒体(1)永久性存储在不可再写的存储媒体上的信息,所述不可再写的存储媒体例如附接于计算机系统或在计算机系统内的只读存储器或存储设备,诸如CD-ROM、DVD-R或DVD+R;(2)存储在可再写的存储媒体上的可变信息,所述可再写的存储媒体例如硬盘驱动器(例如DASD 125、126或127)、CD-RW、DVD-RW、DVD+RW、DVD-RAM或软盘;或者(3)通过通信或传输媒体传送的信息,诸如通过计算机或电话网络(例如网络130)。
这种有形的信号承载媒体当承载了计算机可读、处理器可读或机器可读的、指引或控制本发明的功能的指令或语句或者用其进行编码时表示了本发明的实施例。
本发明的实施例还可被作为与客户企业、非营利组织、政府实体、内部组织结构等的服务约定的一部分而交付。这些实施例的各方面可包括配置计算机系统进行执行、以及部署用于实现这里所述的方法的某些或全部的软件系统和web服务。这些实施例的各方面还可包括分析客户公司、响应于该分析而创建推荐、生成实现该推荐各部分的软件、将该软件集成到现有过程和基础设施中、计量这里所述的方法和系统的使用、向用户分配费用、以及对于用户对这些方法和系统的使用而向用户收费。
此外,在下文中描述的各种程序可基于在本发明特定实施例中实现这些程序的应用而标识出来。但是,以下的任何特定程序命名法仅为了方便而使用,并因此本发明实施例不应被限于仅在由这些命名法所标识和/或暗示的任何特定应用中进行使用。
图1所示的示例性环境并非旨在限制本发明。实际上,不脱离本发明的范围可以使用其它可替换硬件和/或软件环境。
图2描述根据本发明实施例的数据库170的框图。数据库170包括具有任何适当的格式、行、列和数据的任何数量的表,诸如工作组表202、工作组成员表204、工作组会议表206以及工作组文件表208。工作组表202包括行210以及列212、214、216和218。工作组成员表204包括行230、232和234以及列236和238。工作组会议表206包括行240和242以及列244、246和248。工作组文件表208包括行260和列262、264和266。
图3描述根据本发明实施例的限制数据168的框图。限制数据168包括记录305、310、315和320,但是在其它实施例中可以存在具有任何适当数据的任何数量的记录。在一实施例中,记录305、310、315和320中的每个指定了从限制命令接收的限制数据,但是在其它实施例中,限制数据可具有任何适当的源。
记录305、310、315和320中的每个包括限制标识符330、父表335、主码340、子表345、外码350、限制类型355以及删除动作360,但是在其它实施例中可存在更多或更少个字段。限制标识符330标识由记录指定的限制。父表335标识数据库170中具有主码340的表。主码在父表335中保持对于每一行的唯一值。子表345标识数据库170中具有指向父表335中的主码340的外码350的表。因此,外码标识不同表中的行。
限制类型355指示所述记录指引数据库管理系统172强制实施的限制的类型。限制类型355“外码”(在示例性记录305、310和315中所示)指引数据库管理系统172强制实施子表345中的外码350的值必须具有父表335的主码340中的匹配值。例如,记录305中的限制类型355“外码”指引数据库管理系统172强制实施工作组成员表204的子表345中的工作组号236的外码350中的值必须存在于工作组表202的父表335中的工作组号212的主码340中。
数据库管理系统172可例如通过如果值“H13”存在于工作组表202的主码工作组号212中则仅允许进行将值“H13”插入工作组成员表204的工作组号236中的要求,而强制实施记录305中的限制。数据库管理系统172还可通过只有当在工作组号236中具有值“H13”的工作组成员表204中的行不存在之时则允许进行从工作组表202的工作组号212中删除值“H13”,而强制实施记录305中的限制。
与限制类型355“外码”相反,限制数据168的记录320包括限制类型355“要求”,其指引数据库管理系统172强制实施父表335中的主码340的值必须具有子表345的外码350中的匹配值。因此,限制类型355“要求”在从限制类型355“外码”的反方向进行操作,并例示出双向的参照完整性。
数据库管理系统172可通过如果值“H13”存在于工作组成员表204的外码工作组号236中则仅允许进行将值“H13”插入工作组表202的工作组号212中的要求,而强制实施记录320中的限制。数据库管理系统172还可通过只有当在工作组号212中具有值“H13”的工作组表202中的行不存在之时则允许进行从工作组成员表204的工作组号236中删除值“H13”,而强制实施记录320中的限制。
删除动作360指定了数据库管理系统172将响应于删除命令而执行的删除处理的类型。删除动作360的示例包括“限制”和“级联”。对于限制删除动作,数据库管理系统172防止删除子表345中的外码350的值的所有行,如以下参考图6进一步描述的。对于级联删除动作,如果删除命令请求删除子表345中的外码350的值的所有行,则数据库管理系统172不仅删除子表中的外码350的值的所有行,还删除在父表335中具有该值的行以及在父表335的所有子表中包括该值的行,如以下参考图7进一步描述的。
用于限制类型355的术语“外码”和“要求”以及用于删除动作360的术语“限制”和“级联”仅是示例性术语,而在其它实施例中可使用任何适当的指示。此外,尽管限制数据168被示出为表,但在另一实施例中可使用任何适当的数据结构。在其它实施例中,限制数据168的信息或其组合的任何部分可被嵌入逻辑而不是数据结构之中。
图4描述根据本发明实施例的用于限制命令的示例性处理的流程图。控制开始于框400。接着控制继续到框405,在框405中数据库管理系统172接收任何数量的限制命令,每个限制命令指定了限制标识符、父表、父表中的主码、子表、子表中的外码、限制类型和删除动作。接着控制继续到框410,在框410中数据库管理系统172在限制数据168中创建用于限制命令的一个或多个记录(例如,记录305、310、315和320),将所接收的限制标识符存储在限制标识符330中,将所接收的父表存储在父表335中,将所接收的主码存储在主码340中,将所接收的子表存储在子表345中,将所接收的外码存储在外码350中,将所接收的限制类型存储在限制类型355中,以及将所接收的删除动作存储在删除动作360中。
接着控制继续到框415,在框415中数据库管理系统172强制实施对父表335、主码340、子表345和外码350的删除动作360和限制类型355,如以下参考图5、6、7和8进一步描述的。对于限制类型355要求,数据库管理系统172强制实施在子表345中的外码350中存在父表335中的主码340的所有值。
接着控制继续到框499,在框499中图4的逻辑返回。
图5描述根据本发明实施例的用于插入命令的示例性处理的流程图。控制开始于框500。接着控制继续到框505,在框505中数据库管理系统172从应用166接收插入命令,插入命令指定了插入命令所指引的数据库170中的目标码、目标码的目标值以及目标表。插入命令请求数据库管理系统172将目标码的目标值插入目标表。使用表2的示例,插入命令可指定目标表为工作组表202、目标码为工作组号212以及目标值为“H13”。插入命令还可将“软件设计”指定为列214的值、将“T.Jones”指定为列216的值、以及将“Rochester”指定为列218的值。
接着控制继续到框510,在框510中数据库管理系统172确定插入命令中指定的目标表是否是限制数据168的记录中的父表335,以及该记录中的相关联限制类型355是否指示出要求具有匹配的外码值的子表。限制数据168中的记录320是用于以上对于框505所描述的示例性插入命令的这样的记录。
如果在框510的确定为真,则在插入命令中指定的目标表是限制数据168的记录中的父表335,以及该记录中的相关联限制类型355指示出要求具有匹配的外码值的子表345,于是控制继续到框515,在框515中数据库管理系统172找到之前在框510中找到的记录中指定的子表345。使用图3的示例,数据库管理系统172找到在限制数据168的记录320中的子表345所指定的工作组成员表204。
接着控制继续到框520,在框520中数据库管理系统172确定在包括所接收的插入命令的事务内,子表345是否包括具有与所接收的主码340的目标值相等的外码350的值的至少一行。使用图3中的记录320的示例和图2的数据库,对于在框520中的确定为真,如果插入命令正在请求将“H13”添加到工作组表202(父表335)的工作组号212列(主码340)作为行210,则工作组成员表204(子表345)也必须包括在工作组号236列(外码350)中具有值“H13”的至少一行。由于工作组号212列是工作组表202(主表335)中的主码340,因此工作组表202中的工作组号212的值必须是唯一的。因此,对于在框520中的确定为真,包括请求将“H13”插入工作组表202的工作组号212中的插入命令的事务也必须包括请求将一行插入包括与主码340的目标值相等的工作组号236“H13”的工作组成员表204(子表345)中的另一插入命令。工作组成员表204中的行230就是这样的行。
如果在框520中的确定为假,则控制继续到框530,在框530中数据库管理系统172将错误返回应用166,因为限制(例如限制数据168中的记录320)未被满足。因此,框510、515、520和530中示出的逻辑是强制实施所接收的插入命令的限制类型355的示例。接着控制继续到框599,在框599中图5的逻辑返回。
如果在框520中的确定为真,则控制继续到框525,在框525中,只要具有外码的限制类型的任何限制(例如记录305、310或315)(如果有的话)被满足,数据库管理系统172就经由所指定的目标码将目标值(以及在所接收的插入命令中指定的任何其它数据)插入数据库170中的目标表。接着控制继续到框599,在框599中图5的逻辑返回。
图6描述根据本发明实施例的用于删除命令的示例性处理的流程图。控制开始于框600。接着控制继续到框605,在框605中数据库管理系统172从应用166接收删除命令。删除命令指向数据库170的目标表中的目标码的目标值。接着控制继续到框610,在框610中数据库管理系统172确定目标表是否是限制数据168中的子表345、目标码是否匹配外码350、以及目标表的限制类型355是否指示出要求在子表345的外码350中呈现父表335中的主码340的所有值(限制类型355为“要求”)。
如果在框610中的确定为真,则目标表是限制数据168中的子表345,目标码是外码350,以及目标表的限制类型355指示出要求在子表345的外码350中呈现父表335中的主码340的所有值,于是控制继续到框615,在框615中数据库管理系统172确定删除命令是否请求从子表中删除具有目标码的目标值的所有行。即,如果删除命令被执行,则子表345中具有目标码的目标值的所有行将被移除。如果在框615中的确定为真,则控制继续到框620,在框620中数据库管理系统172确定删除动作360是否指示了受限制的删除操作。
如果在框620中的确定为真,则控制继续到框625,在框625中数据库管理系统172将错误返回应用166。接着控制继续到框699,在框699中图6的逻辑返回。
如果在框620中的确定为假,则删除动作指示出级联删除操作,于是控制继续到框630,在框630中数据库管理系统172处理级联删除,如以下参考图7进一步描述的。接着控制继续到框699,在框699中图6的逻辑返回。
如果在框615中的确定为假,则控制继续到框635,在框635中数据库管理系统172从目标表中删除具有目标码中的目标值的目标行。接着控制继续到框699,在框699中图6的逻辑返回。
如果在框610中的确定为假,则目标表不是其限制类型355指示出要求在子表345的外码350中呈现父表335中的主码340的所有值的限制数据168中的子表345,于是控制继续到框635,如上面所述的。
图7描述根据本发明实施例的用于级联删除请求的示例性处理的流程图。控制开始于框700。接着控制继续到框705,在框705中数据库管理系统172从目标表中删除具有目标码的目标值的行。接着控制继续到框710,在框710中数据库管理系统172找到限制数据168中的目标表(其中目标表是限制数据168的同一记录中的子表345)的父表335,并且从父表335中删除具有在父表335的主码340中匹配已删除的目标码的目标值的值的所有行。
接着控制继续到框715,在框715中数据库管理系统172找到限制数据168中的父表(之前在框710中所找到)的所有子表345,并删除所有子表345中具有在其外码350中的下述值的所有行,所述值匹配父表355的主码340中如果对子表345的删除动作360是级联则已经删除的目标值。
使用图2和3的示例,如果删除命令指定目标表为工作组成员表204、目标码为工作组号236以及目标值为“H13”,则如框705中所示,数据库管理系统172从工作组成员表204中删除行230、232和234。
接着,如框710中所示,数据库管理系统172经由限制数据168中的记录320的父表字段335找到工作组成员表204的父表(其是工作组表202)。接着,数据库管理系统172从工作组表202中删除行210。
接着,如框715中所示,数据库管理系统172通过找到记录305、310、315和320而找到工作组表202的所有子表,其中在所述记录305、310、315和320中指定了工作组表202作为父表335,其具有的子表345是工作组成员表204、工作组会议表和工作组文件表208。工作组成员表204已经将包含目标码中的目标值的所有行删除(在框705中),因此记录310和315仍将被处理。因此,数据库管理系统172从工作组会议表206中删除行240和242,并从工作组文件表208中删除行260。
如果对子表345的删除动作360是限制,则数据库管理系统172将错误返回曾请求删除命令的应用166。
接着控制继续到框799,在框799中图7的逻辑返回。
在本发明示例性实施例的之前的详细描述中,参考了构成本发明的一部分的附图(其中相同标号表示相同单元),其中通过图示示出了其中可实践本发明的特定的示例性实施例。这些实施例被描述得足够详细,以使得本领域技术人员能够实践本发明,但是也可使用其它实施例,并且可以做出逻辑、机械、电和其它改变而不会脱离本发明的范围。在本说明书中使用的词“实施例”的不同实例不必非要指代同一实施例,而是它们可以是不同的。这里所图示或描述的任何数据结构仅是示例,并且在其它实施例中,可以使用不同的数据数量、数据类型、字段、记录、条目或数据组织。此外,任何数据都可与逻辑相结合,从而单独的数据结构是不必要的。因此,之前的详细描述不会被看成是限制,并且仅由权利要求限定了本发明的范围。
在之前的描述中,所阐述的各种特定细节提供了对本发明实施例的精确理解。但是,可以在没有这些特定细节的情况下实践本发明。在其它实例中,并未详细示出公知的电路、结构和技术,以免混淆本发明。
权利要求
1.一种方法,包括接收限制命令,其中所述限制命令指定父表、父表中的主码、子表以及子表中的外码,其中所述限制命令请求在所述子表的外码中呈现所述父表中的主码的所有值;以及强制实施在所述子表的外码中呈现所述父表中的主码的所有值。
2.根据权利要求1所述的方法,其中所述强制实施还包括接收第一插入命令,其中所述插入命令指定目标码、目标码的目标值以及目标表;确定所述目标表是否匹配所述父表,以及在包括所述第一插入命令的事务中所述子表是否包括具有与所述主码的目标值相等的外码值的至少一行;如果所述确定为真,则将所述目标值插入所述目标表;以及如果所述确定为假,则返回错误。
3.根据权利要求2所述的方法,其中所述确定还包括确定所述事务是否包括第二插入命令,所述第二插入命令请求将具有与所述主码的目标值相等的外码值的所述至少一行插入所述子表中。
4.根据权利要求1所述的方法,其中所述强制实施还包括接收删除命令,所述删除命令指向所述目标表中的目标码的目标值;决定所述目标表是否匹配所述子表、所述目标码是否匹配所述外码、以及所述删除命令是否请求从所述子表中删除具有所述目标值的所有行;以及如果所述决定为真,则返回错误。
5.根据权利要求4所述的方法,还包括如果所述决定为假,则从所述目标表中删除具有所述目标码的目标值的行。
6.根据权利要求1所述的方法,其中所述强制实施还包括接收删除命令,所述删除命令指向所述目标表中的目标码的目标值;决定所述目标表是否匹配所述子表、所述目标码是否匹配所述外码、以及所述删除命令是否请求从所述子表中删除具有所述目标值的所有行;以及如果所述决定为真,则从所述目标表中删除具有所述目标码的目标值的所有行。
7.根据权利要求6所述的方法,还包括如果所述决定为真,则从所述父表中删除具有所述主码的目标值的所有行。
8.根据权利要求7所述的方法,还包括接收多个限制命令,其中所述多个限制命令中的每个指定相应的父表、所述相应父表中的相应主码、相应的子表以及所述相应子表中的相应外码;以及如果所述决定为真,则找到所述父表中具有所述外码的目标值的所有子表,并在所找到的子表中删除具有所述外码的目标值的行。
9.一种用于配置计算机的方法,包括配置计算机接收限制命令,其中所述限制命令指定父表、父表中的主码、子表以及子表中的外码,其中所述限制命令请求在所述子表的外码中呈现所述父表中的主码的所有值;以及配置计算机强制实施在所述子表的外码中呈现所述父表中的主码的所有值,其中所述配置计算机强制实施还包括配置计算机接收第一插入命令,其中所述插入命令指定目标码、目标码的目标值以及目标表,配置计算机确定所述目标表是否匹配所述父表,以及在包括所述第一插入命令的事务中所述子表是否包括具有与所述主码的目标值相等的外码值的至少一行,其中所述配置计算机进行确定还包括配置计算机确定所述事务是否包括第二插入命令,所述第二插入命令请求将具有与所述主码的目标值相等的外码值的所述至少一行插入所述子表中,以及如果所述确定为真,则配置计算机将所述目标值插入所述目标表。
10.根据权利要求9所述的方法,其中所述配置计算机强制实施还包括配置计算机接收删除命令,所述删除命令指向所述目标表中的目标码的目标值;配置计算机决定所述目标表是否匹配所述子表、所述目标码是否匹配所述外码、以及所述删除命令是否请求从所述子表中删除具有所述目标值的所有行;如果所述决定为真,则配置计算机返回错误;以及如果所述决定为假,则配置计算机从所述目标表中删除具有所述目标码的目标值的行。
11.根据权利要求9所述的方法,其中所述配置计算机强制实施还包括配置计算机接收删除命令,所述删除命令指向所述目标表中的目标码的目标值;配置计算机决定所述目标表是否匹配所述子表、所述目标码是否匹配所述外码、以及所述删除命令是否请求从所述子表中删除具有所述目标值的所有行;以及如果所述决定为真,则配置计算机从所述目标表中删除具有所述目标码的目标值的所有行。
12.根据权利要求11所述的方法,还包括如果所述决定为真,则配置计算机从所述父表中删除具有所述主码的目标值的所有行。
13.根据权利要求12所述的方法,还包括配置计算机接收多个限制命令,其中所述多个限制命令中的每个指定相应的父表、所述相应父表中的相应主码、相应的子表以及所述相应子表中的相应外码;以及如果所述决定为真,则配置计算机找到所述父表中具有所述外码的目标值的所有子表,并在所找到的子表中删除具有所述外码的目标值的行。
14.一种数据处理系统,包括用于执行前述方法权利要求中的任一方法的装置。
全文摘要
一种方法、装置、系统和信号承载媒体,其接收指定父表、父表中的主码、子表和子表中的外码的限制命令,以及强制实施在子表的外码中呈现父表中的主码的所有值。所述强制实施包括接收第一插入命令,其中插入命令指定目标码、目标码的目标值和目标表;确定目标表是否匹配父表,以及在包括第一插入命令的事务中子表是否包括具有与主码的目标值相等的外码值的至少一行;如果确定为真则将目标值插入目标表;如果确定为假则返回错误。所述强制实施包括接收指向目标表中的目标码的目标值的删除命令;决定目标表是否匹配子表、目标码是否匹配外码以及删除命令是否请求从子表中删除具有目标值的所有行;如果决定为真则返回错误;如果决定为假则从目标表中删除具有目标码的目标值的行。
文档编号G06F17/30GK1963818SQ200610144479
公开日2007年5月16日 申请日期2006年11月8日 优先权日2005年11月10日
发明者M·G·梅格瑞恩 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1