建立多个数据库表的共享索引的方法及装置制造方法及图纸

技术编号:10053846 阅读:152 留言:0更新日期:2014-05-16 02:33
本发明专利技术公开了一种建立用于主键表和至少一个外键表的共享索引的方法及装置。在该方法中,首先获取主键表的主键索引和至少一个外键表的每一个的外键索引,接着,在每一个外键表的外键索引中,确定至少一个非空的外键索引项。对于所确定的每一个非空的外键索引项,获取该外键索引项的外键值,并在主键索引中查找包括与该外键值相同的主键值的主键索引项,然后,将所查找到的主键索引项与该外键表的表标识符和该外键索引项的外键表数据记录标识符合并,以形成共享索引项。

【技术实现步骤摘要】
建立多个数据库表的共享索引的方法及装置
本专利技术涉及关系数据库的管理技术,更具体地,涉及建立具有主键-外键约束的多个数据库表的共享索引的方法和装置以及在包括具有主键-外键约束的多个数据库表的关系数据库中查询数据的方法和装置。
技术介绍
一般地,对于数据库表,可确定该数据库表的数据记录中的某个属性作为主键,其可唯一地标识数据库表中的一个数据记录。主键用于保证数据库表的实体完整性。一个数据库表只有一个主键,并且主键的值不能为空值(Null)。在关系数据库中,可以使用主键和外键将多个数据库表关联在一起,这样的多个数据库表可被认为具有主键-外键约束。一般地,如果数据库表1的主键在数据库表2中出现,则该主键是数据库表2的外键。在这种情况下,数据库表1被称为主键表,而数据库表2被称为外键表。外键可表示两个数据库表之间的关系,并可用于保持数据的一致性。通常,主键和/或外键可在创建数据库表时定义。如果定义了外键,则进一步定义外键的关联表和更新的关联。外键表成为引用表,而主键表成为被引用的表。更新的关联包括级联删除和级联更新。如果删除或更改主键表中的某个数据记录,则所有外键表中与该数据记录有关的数据记录都将被删除或更改。为了方便对数据库表中的数据记录的查询,还可以对数据库表建立索引。索引可以通过对数据库表中的某一列的值进行排序而建立。在关系数据库系统中,通常使用B树结构表示数据库表的索引。图2示出了传统的使用B树结构的索引的示意图。如图2所示,B树索引包括根节点、中间节点和叶节点。在根节点处存储的索引项可用于指示各个中间节点所对应的索引值的范围,在中间节点处存储的索引项可用于指示各个叶节点所对应的索引值。在叶节点处存储的索引项可用于指示与索引值对应的数据记录的信息,其可包括索引值(Key)和数据记录标识符(ROWID)。数据记录标识符可唯一地标识数据库表中的数据记录的物理位置,通常包括指示数据库表的页的页信息(Page)和指示页中的行的行信息(Slot)。对主键表和外键表分别建立主键索引和外键索引。主键索引是对主键表中主键的值进行排序的结构,此时,索引值是主键的值。外键索引是对外键表中外键的值进行排序的结构,此时,索引值是外键的值。在对主键表和外键表分别建立了主键索引和外键索引的情况下,当由于对主键表中的某个数据记录进行更改或删除而导致与该数据记录有关的所有外键表中的数据记录将被更改或删除时,首先对所有外键表的外键索引进行遍历,根据被更改或删除的主键表的数据记录所对应的主键值,查找各个外键索引中对应的外键索引项,然后根据所查找的外键索引项,获得对应的外键表的数据记录,以进行更改或删除操作。因此,无论在外键表中是否实际存在与被更改或删除的主键表的数据记录有关的数据记录,都将遍历所有外键表的外键索引。然而,当前存在与主键表关联的外键表的数量日益增多的趋势。如果一个主键表关联了大量的外键表,则在进行级联删除或级联更新操作时,对所有外键表的外键索引的遍历会花费大量的时间,导致工作效率降低。此外,当在包括主键表和多个外键表的关系数据库中进行数据查询时也存在这样的问题。在对每一个主键值查询对应的数据记录时,都需要对多个外键表的外键索引进行遍历。在存在大量的外键表时,会增加查询时间,导致较差的用户体验。
技术实现思路
根据本专利技术的一个方面,提供了一种建立用于主键表和至少一个外键表的共享索引的方法,包括:获取所述主键表的主键索引和所述至少一个外键表的每一个的外键索引;对于每一个所述外键表,在该外键表的外键索引中,确定至少一个非空的外键索引项;对于所确定的至少一个非空的外键索引项的每一个,获取该外键索引项的外键值;在所述主键索引中查找包括与该外键值相同的主键值的主键索引项;以及将所查找到的主键索引项与该外键表的表标识符和该外键索引项的外键表数据记录标识符合并,以形成所述共享索引的共享索引项。根据本专利技术的另一个方面,提供了一种用于在关系数据库中查询数据的方法,其中,所述关系数据库包括主键表和至少一个外键表,并且所述主键表和所述至少一个外键表具有共享索引,其中,所述共享索引中的共享索引项包括主键索引项、外键表的表标识符和外键表数据记录标识符,所述方法包括:接收查询请求,所述查询请求包括索引值;在所述共享索引中查找包括所述索引值的共享索引项;以及根据所述共享索引项中的至少一个表标识符和对应的数据记录标识符,从由所述至少一个表标识符标识的表中获取在由各自的数据记录标识符标识的位置处的数据。根据本专利技术的再一个方面,提供了一种建立用于主键表和至少一个外键表的共享索引的装置,包括:索引获取模块,其被配置为获取所述主键表的主键索引和所述至少一个外键表的每一个的外键索引;索引项确定模块,其被配置为对于每一个所述外键表,在该外键表的外键索引中,确定至少一个非空的外键索引项;获取模块,其被配置为对于所确定的至少一个非空的外键索引项的每一个,获取该外键索引项的外键值;查找模块,其被配置为在所述主键索引中查找包括与该外键值相同的主键值的主键索引项;以及合并模块,其被配置为将所查找到的主键索引项与该外键表的表标识符和该外键索引项的外键表数据记录标识符合并,以形成所述共享索引的共享索引项。根据本专利技术的再一个方面,提供了一种用于在关系数据库中查询数据的装置,其中,所述关系数据库包括主键表和至少一个外键表,并且所述主键表和所述至少一个外键表具有共享索引,其中,所述共享索引中的共享索引项包括主键索引项、外键表的表标识符和外键表数据记录标识符,所述装置包括:请求接收模块,其被配置为接收查询请求,所述查询请求包括索引值;索引项查找模块,其被配置为在所述共享索引中查找包括所述索引值的共享索引项;以及数据获取模块,其被配置为根据所述共享索引项中的至少一个表标识符和数据记录标识符,从由所述至少一个表标识符标识的表中获取在由各自的数据记录标识符标识的位置处的数据。附图说明通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。图1示出了适于用来实现本专利技术实施方式的示例性计算机系统/服务器12的框图;图2示出了传统的使用B树结构的索引的示意图;图3示意性地示出了根据本专利技术的一个实施例的建立用于主键表和至少一个外键表的共享索引的方法的流程图;图4示出了根据图3所示的方法而建立的共享索引的示意图;图5示意性地示出了根据本专利技术的另一个实施例的建立用于主键表和至少一个外键表的共享索引的方法的流程图;图6示意性地示出了根据本专利技术的一个实施例的用于在关系数据库中查询数据的方法的流程图;图7示出了根据本专利技术的一个实施例的建立用于主键表和至少一个外键表的共享索引的装置的示意性框图;图8示出了根据本专利技术的另一个实施例的建立用于主键表和至少一个外键表的共享索引的装置的示意性框图;图9示出了根据本专利技术的另一个实施例的用于在关系数据库中查询数据的装置的示意性框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本文档来自技高网
...
建立多个数据库表的共享索引的方法及装置

【技术保护点】

【技术特征摘要】
1.一种建立用于主键表和至少一个外键表的共享索引的方法,包括:获取所述主键表的主键索引和所述至少一个外键表的每一个的外键索引;对于每一个所述外键表:在该外键表的外键索引中,确定至少一个非空的外键索引项;对于所确定的至少一个非空的外键索引项的每一个:获取该外键索引项的外键值;在所述主键索引中查找包括与该外键值相同的主键值的主键索引项;以及将所查找到的主键索引项与该外键表的表标识符和该外键索引项的外键表数据记录标识符合并,以形成所述共享索引的共享索引项。2.根据权利要求1所述的方法,还包括:监控所述至少一个外键表的外键索引中外键索引项的改变;以及在任意一个外键索引项发生改变时,更新相应的共享索引项。3.根据权利要求2所述的方法,其中,所述外键索引项的改变包括以下改变的至少一个:外键索引项从空变为非空;外键索引项从非空变为空;和修改外键索引项的外键表数据记录标识符。4.根据权利要求2所述的方法,其中,所述更新步骤包括:获取改变了的外键索引项所属的外键表的表标识符及其外键值;在所述共享索引中查找包括与所获取的外键值相同的共享索引值的共享索引项;以及根据所述外键索引项的改变,对所查找的共享索引项进行更新。5.根据权利要求4所述的方法,其中,当所述外键索引项的改变是外键索引项从空变为非空时,所述对所查找的共享索引项进行更新的步骤包括:在所述共享索引项中添加所获取的外键表的表标识符和改变了的外键索引项的外键表数据记录标识符。6.根据权利要求4所述的方法,其中,当所述外键索引项的改变是外键索引项从非空变为空时,所述对所查找的共享索引项进行更新的步骤包括:从所述共享索引项中删除所获取的外键表的表标识符和改变了的外键索引项的外键表数据记录标识符。7.根据权利要求4所述的方法,其中,当所述外键索引项的改变是修改外键索引项的外键表数据记录标识符时,所述对所查找的共享索引项进行更新的步骤包括:在所述共享索引项中用修改了的外键表数据记录标识符替换与所获取的外键表的表标识符对应的原外键表数据记录标识符。8.根据权利要求1至7任意一项所述的方法,其中,所述共享索引项还包括主键表的表标识符。9.一种用于在关系数据库中查询数据的方法,其中,所述关系数据库包括主键表和至少一个外键表,并且所述主键表和所述至少一个外键表具有按照权利要求1至8任意一项的方法建立的共享索引,其中,所述共享索引中的共享索引项包括主键索引项、外键表的表标识符和外键表数据记录标识符,所述方法包括:接收查询请求,所述查询请求包括索引值;在所述共享索引中查找包括所述索引值的共享索引项;以及根据所述共享索引项中的至少一个表标识符和对应的数据记录标识符,从由所述至少一个表标识符标识的表中获取在由各自的数据记录标识符标识的位置处的数据。10.一种建立用于主键表和至少一个外键表的共享索引的装置,包括:索引获取模块,其被配置为获取所述主键表的主键索引和所述至少一个外键表的每一个的外键...

【专利技术属性】
技术研发人员:孙建强王威郝大伟周宇辰
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1