外键到主键的基于规则的联结的制作方法

文档序号:12287990阅读:408来源:国知局
外键到主键的基于规则的联结的制作方法与工艺

计算系统和相关联的网络彻底改变了人类工作、游戏和通信的方式。我们生活的几乎每个方面都在某种方式上受到计算系统的影响。计算系统现在大部分都连接到网络和因特网,使得允许大范围的通信。数据库技术通过计算系统的用户来启用。在关系数据库系统中,存在多个相互关联的表,其中各关系通过各表之间的链接来定义。

通常,各表被链接,使得一个表中的字段(被称为“引用表”或“子表”)唯一地标识另一表(被称为“被引用表”或“父表”)的某一行(例如,主键)。由此,外键被用于建立并加强子表和父表之间的链接。

传统地,子表的外键通过其中该外键正好与父键相同的直接等同性来唯一地标识父表的行。在外键和主键两者都是文本的情况下,子表的外键还可通过包含父表的行的主键的文本来唯一地标识该行。因此,子表的外键通过与父表的行的主键相同(或者在为文本的情况下通过包含父表的该行的主键)来唯一地标识该行。

本文要求保护的主题不限于解决任何缺点或仅在诸如上述环境这样的环境中操作的各实施例。相反,提供该背景仅用于例示其中可实施所述一些实施例的一个示例性技术领域。

简要概述

本文中描述的至少一些实施例涉及使用数据库系统中的子表中的外键将该子表链接到父表。对于父表中的给定行,与该特定行相关联的表达被标识出。在一个实施例中,该表达是语义表达,该语义表达包括不同于或不仅仅只是等于表达或包含表达的某物。例如,该表达可以是复合表达、范围化表达、集合表达等等,从而表示更复杂的关系。该表达还可取父表的除该父表的主键以外的字段作为输入。

对于子表的多个行(且可能是所有行)中的每一者,该表达是对照子表的对应行的外键来评估的。如果基于该评估动作子表的对应行的外键匹配该表达,则关联在外键和父表的特定行之间被创建,并且该关联可或许被持久保存例如以供以后响应于查询来使用。

该表达可适用于父表的所有行以由此类似地在子表的外键和父表的对应匹配行之间创建关联。然而,在一些实施例中,这些表达可不同,甚至连父表中的单个行的粒度也一样,由此允许或许定义一个或多个关联准则的定制的每一行表达。在该情况下,父表中或许存在用于这样的表达的专用列。

本概述并非旨在标识出要求保护的主题的关键特征或必要特征,亦非旨在用作辅助确定要求保护的主题的范围。

附图简述

为了描述能够获得上述和其它优点和特征的方式,各实施例的更具体的描述将通过参考各附图来呈现。可以理解,这些附图只描绘了示例实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释各实施例,在附图中:

图1抽象地示出了其中可采用本文中所描述的一些实施例的计算系统;

图2示出了本文中所描述的原理可在其中起作用的数据库系统,且该系统包括子表和父表;

图3示出了用于使用子表中的外键字段将数据库系统中的子表链接到父表的方法的流程图;

图4示出了其中存在推特(tweet)子表和电影父表的示例数据库系统;

图5示出了其中存在雇员子表和薪金范围父表的示例数据库系统;以及

图6示出了基于图4的电影主表的主键(例如,电影标题)构建的特里(trie)结构。

详细描述

本文中描述的至少一些实施例涉及使用子表中的外键将数据库系统中的子表链接到父表。对于父表中的给定行,与特定行相关联的表达被标识出。在一个实施例中,该表达是语义表达,该语义表达包括不同于或不仅仅只是等于表达或包含表达的某物。例如,该表达可以是复合表达、范围化表达、集合表达等等,从而表示更复杂的关系。该表达还可取父表的除该父表的主键以外的字段作为输入。

对于子表的多个行(且可能是所有行)中的每一者,该表达是对照子表的对应行的外键来评估的。如果基于该评估动作子表的对应行的外键匹配该表达,则关联在外键和父表的特定行之间被创建,并且该关联可或许被持久保存例如以供以后响应于查询来使用。

该表达可适用于父表的所有行以由此类似地在子表的外键和父表的对应匹配行之间创建关联。然而,在一些实施例中,甚至下至父表中的单个行的粒度,表达可不同,由此允许或许定义一个或多个关联准则的定制的每一行表达。在该情况下,父表中或许存在用于这样的表达的专用列。

将参考图1描述对计算系统的一些介绍性讨论。接着,这种基于表达的关联的实施例将参考随后的附图予以描述。

计算系统现在越来越多地采取多种多样的形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统或甚至常规上不被认为是计算系统的设备。在本说明书以及权利要求书中,术语“计算系统”被广义地定义为包括任何设备或系统(或其组合),该设备或系统包含至少一个物理且有形的处理器以及其上能具有可由处理器执行的计算机可执行指令的物理且有形的存储器。存储器可以采取任何形式,并可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中,并可包括多个组分计算系统。

如图1所例示,在其最基本的配置中,计算系统100通常包括至少一个处理单元102和存储器104。存储器104可以是物理系统存储器,该物理系统存储器可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”也可在此用来指示诸如物理存储介质这样的非易失性大容量存储器。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。如本文中所使用的,术语“可执行模块”或“可执行组件”可指可在计算系统上执行的软件对象、例程或方法。此处所描述的不同组件、模块、引擎以及服务可以实现为在计算系统上执行的对象或进程(例如,作为分开的线程)。

在随后的描述中,参考由一个或多个计算系统执行的动作描述了各实施例。如果这样的动作是以软件实现的,则执行动作的相关联计算系统的一个或多个处理器响应于已经执行了计算机可执行指令来引导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上实现。这样的操作的示例涉及对数据的操纵。计算机可执行指令(以及被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可包含允许计算系统100例如通过网络110与其他消息处理器通信的通信信道108。

本文中描述的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本文中描述的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备,或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他有形存储介质。

“网络”被定义为使得电子数据能够在计算机系统和/或模块和/或其它电子设备之间传输的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可以包括可以用来携带所需要的以计算机可执行的指令或数据结构的形式存在的程序代码装置并可以被通用或专用计算机访问的网络和/或数据链路。上述的组合应当也被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码资料可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可以在网络接口模块(例如,“NIC”)内的RAM中被缓冲,然后最终被传输至计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。

计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。

本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。

图2示出了本文中描述的原理可在其中起作用的数据库系统200。数据库环境200包括子表210和父表220。本文中描述的原理可在任何配置的子表和任何配置的父表上操作,而不管每一表中行和列的数目。

仅出于示例的目的,子表210被示为包括四个行211A、211B、211C和211D。然而,省略号211E表示子表210可包括任何数目的行,甚至少于所示出的四个行。例如,子表210可包括少至单个行,和多至可枚举数目的行,以及其间的任何事物。类似的,子表210被示为包括单个列212B,但是省略号212A和212C表示子表210可包括任何数目的列。列212B是包括可用于唯一地标识父表220中的相应行的值(未具体示出)的外键列。

仅出于示例的目的,父表220被示为包括三个行221A、221B和211C。然而,省略号221D表示父表220可包括任何数目的行,甚至少于所示出的三个行。例如,父表220可包括少至单个行,和多至可枚举数目的行,以及其间的任何事物。类似地,父表220被示为包括四个列222B、222C、222D和222E,但是省略号222A和222F标识父表220可包括任何数目的列。列222B是包括可用于唯一地标识父表220中的相应行的值(图2中未具体示出)的主键列。尽管图2是按抽象形式示出的,而没有示出值,更具体的示例将在以下参考图4和5来描述。

在本说明书和权利要求书中,使用了术语“行”和“列”。术语“行”不限于垂直堆叠并水平延伸的元素。此外,术语“列”不限于水平堆叠并垂直延伸的元素。表被显示的方式对于如本文中描述的本发明的原理而言并不重要。本文中描述的表不一定是通过计算机可读的形式在用户界面中示出的表。因此,术语水平和垂直在这样的计算机可读表中具有很少意义。由此,本文中描述的术语“行”和“列”仅涉及表的计算机表示的两个不同的维度。

根据本文中描述的原理,关联在子表210的外键列212B中的至少一些外键中的每一者以及父表220中的一个或多个行的对应集合之间被作出。通过这样的方式,本文中描述的原理将子表210链接到父表220。因此,图3示出了用于使用子表中的外键字段将数据库系统中的子表链接到父表的方法300的流程图。由于方法300可在图2的数据库系统200内执行,因此现将频繁参考图2来描述方法300。方法300可由例如计算系统(诸如计算系统100)通过该计算系统的一个或多个处理器(例如处理器102)执行一个或多个计算机可执行指令来执行。

可对父表中的每一行重复方法300。事实上,如以下进一步描述的,可实质上同时地对父表中的所有行执行方法300。这可使用特里结构化来实现。对于父表中的每一行,方法300涉及标识表达(动作301)。对于子表中的每一行,该表达用于确定该子表行是否将与父表中对应于该表达的行相关联。为了相关于给定父表行作出关于每一子表行的确定,该表达取子表行的外键、父表行的一个或多个字段作为输入。

例如,在图2的上下文中,与父表行221A相关联的表达被标识出,并且子表行211A的外键和父表行221A的一个或多个值将被提供作为该表达的输入以评估是否存在匹配。类似地,子表行211B的外键和父表行221A的一个或多个值将被提供作为该表达的输入以评估是否存在匹配。同样,子表行211C的外键和父表行221A的一个或多个值将被提供作为该表达的输入以评估是否存在匹配。最后,至少相关于父表行221A和所示出的子表行211A到211D,子表行211D的外键和父表行221A的一个或多个值将被提供作为该表达的输入以评估是否存在匹配。

类似地,或许在与子表行211A到211D将对照父表行211A的表达被评估相同的时间,子表行211A到211D中的每一者将对照父表行211B的表达被评估。而且,或许在与子表行211A到211D将对照父表行221A和221B的表达被评估相同的时间,子表行211A到211D中的每一者将相对于父表行211C的表达被评估。

传统地,定义外键和父表行之间的关联的表达简单地基于与主键的等同性,并且对于父表中的所有行相同。例如,如果给定子表行的外键与父表行中的任一者的主键相同,则关联将在该子表行的外键和匹配的父表行之间被作出。在为文本的情况下,该表达可以是“包含”表达。即,如果给定子表行的外键(采用文本的形式)包含父表行中的任一者的主键的文本,则关联将在该子表行的外键和匹配的父表行之间被作出。

相反,根据本文中描述的原理,表达可以是任何表达,包括语义表达,并且可使用来自父表行的除主键以外的值。此外,尽管不需要,但该表达可因父表行而不同。因此,关联准则的基于行的表达在本文中被允许。在本说明书并在权利要求书中,“语义表达”是在语义上描述一个或多个关联准则的表达,并且等于或包含准则明确地落在“语义表达”的定义之外。

例如,作为示例,语义表达包括分量表达、范围化表达、集合表达等等。例如,图4示出了其中存在推特(tweet)子表410和电影父表420的示例数据库系统400。推特子表410包括列出所作出的各推特的外键列412A。电影父表420包括列出各电影的主键列422A。在该情况下,每一父表行的表达被标识为被包括在表达列422B内(并通过引用来标识)。父表行421A的表达(即,包含[主键]而非“Book(书)”)是复合语义表达,并且不同于剩下的父表行421B和421C的表达(其是包含[主键])。

现在将参考图4的示例数据库系统400来描述图3的方法300。可为每一子表行执行虚线框310的内容。因此,为子表行411A中的推特“I like Hunger Games(我喜欢饥饿游戏)”执行虚线框310的内容。随后对照表达“包含‘Hunger Games’而不包含‘book’”来评估推特“I like Hunger Games”。它是匹配的(在判定框312处为“是”),并且由此关联431在外键“I like Hunger Games”和包含电影主键“Hunger Games”的父表行421A之间被作出(动作313)。这是因为推特“I like Hunger Games”包含术语“Hunger Games”(主键),但不包含术语“book”,并且由此是对相应的父表行421A的表达字段422B中的表达的匹配。

虚线框310的内容也对子表行411B中的推特“I liked the Hunger Games book”执行。随后对照表达“包含‘Hunger Games’而不包含‘book’”来评估推特“I liked the Hunger Games book”。它不是匹配(在判定框312为“否”),因为该推特包含术语“book”。因此,不需要相对于父表行421A执行对子表行411B的进一步评估。

虚线框310的内容也对子表行411C中的推特“I liked both Star Wars and Star Trek(我喜欢星球大战和星际迷航两者)”执行,该推特被对照表达“包含‘Hunger Games’而不包含‘Book’”评估。它不是匹配(在判定框312为“否”)。因此,不需要相对于父表行421A执行对子表行411C的进一步评估(动作314)。

虚线框310的内容也对子表行411D中的推特“Hunger Games rocks(饥饿游戏很棒)”,该推特被对照表达“包含‘Hunger Games’而不包含‘Book’”评估。它是匹配(在判定框312为“是”),并由此关联434在外键“Hunger Games rocks”和父表行421A之间被作出(动作313)。这是因为推特“I like Hunger Games”包含术语“Hunger Games”(主键),但不包含术语“Book”,并且由此是对相应的父表行421A的表达字段422B中的表达的匹配。

方法300也按类似的方式相对于父表行421B执行。由此,虚线框310的内容对子表行411A中的推特“I like Hunger Games”执行。推特“I like Hunger Games”被对照表达“包含‘Star Wars’”评估(动作311)。它不是匹配(在判定框312为“否”)。

推特“I liked the Hunger Games book”随后被对照表达“包含‘Star Wars’”评估(动作311)。它也不是匹配(在判定框312为“否”),并由此关联不被作出。

推特“I like both Star Wars and Star Trek”随后被对照表达“包含‘Star Wars’”评估(动作311)。它是匹配(在判定框312为“是”)。因此,关联432在推特“I liked both Star Wars and Star Trek”和具有电影主键“Star Wars”的父表行421B之间被作出(动作313)。

推特“Hunger Games rocks”随后被对照表达“包含‘Star Wars’”评估(动作311)。它不是匹配(在判定框312为“否”),并由此关联不被作出。

方法300也按类似的方式相对于父表行421C执行。由此,虚线框310的内容对子表行411A中的推特“I like Hunger Games”执行。推特“I like Hunger Games”被对照表达“包含‘Star Trek’”评估(动作311)。它不是匹配(在判定框312为“否”)。

推特“I liked the Hunger book”随后被对照表达“包含‘Star Trek’”评估(动作311)。它也不是匹配(在判定框312为“否”),并由此关联不被作出。

推特“I like both Star Wars and Star Trek”随后被对照表达“包含‘Star Trek’”评估(动作311)。它是匹配(在判定框312为“是”)。因此,关联433在推特“I liked both Star Wars and Star Trek”和具有电影主键“Star Wars”的父表行421B之间被作出(动作313)。

第二示例在图5中被解说,图5解说其中存在雇员子表510和薪金范围父表520的示例数据库系统500。在子表510中,存在名称列512A和薪金列512B。薪金列512用作主键列。在该情况下,每一父表行的表达530是相同的,但是复杂的表达,并使用除主键字段以外的字段作为该表达的输入。具体地,表达530指示该外键是否在相应父表行的最小值列522B和最大值列522C中的值之间,随后该外键将被与相应的父表行关联。

现在将参考图5的示例数据库系统500来描述图3的方法300。方法300是相对于具有主键“小”的父表行521A被执行的。虚线框310的内容可对子表行511A和511B中的每一者执行。然而,在每一情况下,薪金都不在0和49,000之内(判定框312中为“否”),并且由此不存在在方法300的该执行中作出的关联。

方法300也相对于具有主键“中”的父表行521B被执行。此处,子表行511A的外键50,000匹配(它在50,000(含)和179,999(含)之间)(在判定框312为“是”),并且由此关联531在子表行511A的外键50,000和父表行521B之间被作出。至于子表行511B,值200,000不在50,000和179,999之间(在判定框312为“否”),并且由此关联没有被作出(动作314)。

方法300也相对于具有主键“高”的父表行521C被执行。此处,子表行511A的外键50,000不是180,000或以上(在判定框312为“否”),并且由此关联没有被作出(动作314)。然而,子表行511B的外键200,000大于180,000(在判定框312为“是”),并且由此关联532在子表行511B的外键200,000和父表行521C之间被作出。在该情况下,该表达是范围化表达。集合表达是其中外键被评估以确定它是否是数个值之一的情况。

如先前所提出的,方法300可通过使用特里结构针对每一父表行并行地执行,即使这些表达可从一个父表行到下一父表行不同。父表的主键被用于构建特里结构。例如,图6示出了基于图4的电影主表420的主键(例如,电影标题)构建的特里结构600。针对每一外键并在遇到终止叶的程度上导航特里结构,相关联的表达或表达分量(例如,节点631到634)同样被确定为是匹配。在为无效节点(由面向右的0表示的表达分量节点634)的情况下,匹配那个表达或表达分量意味着表达本身或表达分量作为其分量的表达在该特里结构600的该评估上无法被满足。在为确认节点(例如,由面向右的1表示的节点631到633)的情况下,匹配该表达意味着该表达被满足,或者在为表达分量的情况下,意味着表达分量被满足。

例如,现在将描述基于推特外键“I like Hunger Games”对特里结构600的导航。导航在节点601处开始。到该分层结构的下一层的导航在遇到下一节点的文本之际发生。例如,“I”不匹配节点611、612或613中的任何文本,并且因此该导航保持在父节点601处(如行602所表示的)。“like”随后被评估,并且再次不存在对节点611、612或613中的文本的匹配。由此,导航保持在父节点601处。“Hunger”匹配下一节点611的文本,并由此导航移动到节点611。“Games”匹配下一分层节点621的文本,并由此导航移动到终止节点621,终止节点621与父表行421A内的复合表达的第一分量表达631相关联。因此,行421A的确认节点被遇到。外键现在已被评估,而没有遇到父表行421的无效表达634。因此,关联431可被作出。

现在将描述基于推特外键“I liked the Hunger Games book”对特里结构600的导航。导航在节点601处开始。“I”不匹配节点611、612或613中的任何文本,并且因此该导航保持在父节点601处(如行602所表示的)。“liked”随后被评估,并且再次不存在对节点611、612或613的文本的匹配。由此,导航保持在父节点601处。“the”随后被评估,并且再次不存在匹配,并且导航保持在父节点601。“Hunger”匹配下一节点611的文本,并由此导航移动到节点611。“Games”匹配下一分层节点621的文本,并由此导航移动到终止节点621,终止节点621与父表行421A内的复合表达的第一分量表达631相关联。在到达终止节点之际,导航返回到父节点601。“book”匹配下一分层节点613的文本。因此,行421A的无效节点被遇到。因此,在与复合表达有关的任何无效节点(例如,节点634)的到达否定与该复合表达有关的任何确认节点(例如,节点631)时,没有关联可被作出。

现在将描述基于推特外键“I liked both Star Wars and Star Trek”对特里结构600的导航。导航在节点601处开始。“I”不匹配节点611、612或613中的任何文本,并且因此该导航保持在父节点601处。“liked”随后被评估,并且再次不存在对节点611、612或613的文本的匹配,并由此导航保持在父节点601处。“both”随后被评估,并且再次不存在匹配,并且导航保持在父节点601处。“Star”匹配下一节点612的文本,并由此导航移动到节点612。“Wars”匹配下一分层节点622的文本,并且由此导航移动到终止节点632,该终止节点是父表行421B中的表达的确认节点632。不存在父表行421B的无效节点。因此,关联432可被作出。

导航返回到父节点601。“and”随后被评估,并且再次不存在对节点611、612或613中的文本的匹配,并由此导航保持在父节点601处。“Star”匹配下一节点612的文本,并由此导航移动到节点612。“Trek”匹配下一分层节点623的文本,并且由此导航移动到终止节点633,该终止节点是父表行421C中的表达的确认节点633。不存在父表行421C的无效节点。因此,关联432可被作出。

现在将描述基于推特外键“Hunger Games rocks”对特里结构600的导航。导航在节点601处开始。“Hunger”匹配下一节点611的文本,并由此导航移动到节点611。“Games”匹配下一分层节点621的文本,并由此导航移动到终止节点621,终止节点621与父表行421A内的复合表达的第一分量表达631相关联。因此,行421A的确认节点被遇到。导航在到达终止节点后返回到父节点601。“rocks”随后被评估,并且再次不存在对节点611、612或613的文本的匹配,并由此导航保持在父节点601处。因此,父表行421A中的表达的确认节点631被遇到,而没有到达该父表行421A中的表达的无效节点634。因此,关联431可被作出。

因此,本文中描述的原理可被执行以自动地将数据库中的各子表行的外键与该数据库中的各父表行相关联。本文中描述的原理允许定义用于作出关联的一个或多个先决条件的复杂表达。此外,表达可以以甚至每行的级别来定制,并且可使用来自父表行的主键以外的输入值。由此,已描述了用于在子表和父表之间创建关联的灵活和自动化机制。

本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。

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