用于将连锁式联接表格转换为树形结构的方法以及程序的制作方法

文档序号:6422485阅读:214来源:国知局
专利名称:用于将连锁式联接表格转换为树形结构的方法以及程序的制作方法
技术领域
本发明涉及以高速度将连锁式联接表格转换为树形结构的技术。
背景技术
数据库用于各种用途。在中等规模的或大规模的系统中,主要使用可以消除逻辑矛盾的关系数据库(RDB)。由于RDB基本上包括条目以及其值,以及指向与前一值关联的另一个条目的值的指针,将RDB转换为树形结构是不容易的。特别是当必须处理大量的数据时,在RDB中发生了许多关系。数据的量显著地增大,处理过程非常费时。
另一方面,提出了诸如XML数据库之类的面向对象的数据库。此面向对象的数据库首先将数据保存在树形结构中,并对树的分支进行顺序的跟踪。
然而,在常规数据库的树形结构中,具有下列问题。
(1)根是固定的。
由于常规树形结构包括从指定的节点到另一个指定的节点的指针,因此,可以改变节点之间的链接。此外,指针只能在一个方向进行跟踪。因此,尽管逻辑上,树的任何元素都可以是其根,但是,根实际上是固定的。
(2)树形结构是固定的。
每一个节点都具有各种属性。例如,在办公室地址和家庭地址的条目存在的情况下,基于办公室地址的树(例如,Japan-Tokyo-Minato Ward...)和基于家庭地址的树(例如,Japan-KanagawaPrefecture-Yokohama City...)在逻辑上构成了单独的树。然而,在常规数据库的树形结构中,则不可能建立这些单独的树。
(3)处理速度非常低,以及进行分类和汇总是困难的。
搜索过程需要花非常的处理时间,因为必须按顺序对树进行跟踪。此外,由于必须同样按顺序对树进行跟踪,以指定元素,进行分类和汇总是困难的。
同时,本发明人发明了将表格格式数据划分为一个或多个信息块的技术,每一个信息块都包括值列表和指针阵列,在所述值列表中,属于指定的条目的条目值按照对应于条目值的条目值号码的顺序存储,在所述指针阵列中,指出条目值号码的指针值按照明确的记录号的顺序存储,然后按顺序跟踪记录号,位于对应于记录号的指针阵列中的位置的元素(指针值),以及位于由指针值指出的值列表中的位置的元素(条目值),从而指定对应于记录号的条目值,如国际出版物WO00/10103的小册子所描述(图3和图4)。
通过使用这样的数据格式,与常规RDB相比,可以以非常高的速度实现搜索、汇总、分类等等。
本发明人还提出了将使用上文所描述的数据格式的多个表格联接的技术,如JP-A-2000-339390(第14到17页,以及图10到18)。
通过使用具有共有条目值作为键的条目,可以联接多个表格,并轻易地实现联接表格的搜索和汇总。
已知,通过利用国际出版物WO00/10103和JP-A-2000-339390中说明的技术,可以建立一个或多个树形结构,本发明人实现了这一点。根据此方法和程序,可以解决上文所描述的问题(1)到(3),并可以从任意根建立包括各种条目的树形结构。此外,处理速度非常高,并且可以实现汇总和分类。
简而言之,本发明的目的是提供可以选择任意根、以高速度建立一个或多个所希望的树形结构,并以高速度执行搜索、汇总和分类的方法和程序。

发明内容
本发明的目的通过这样的方法来实现该方法连接多个表格格式数据,每一个表格格式数据都被表达为记录阵列,该记录阵列包括条目和条目中包括的条目值,将连接的表格格式数据作为联接表格转换为树形结构,该方法的特征在于包括下列步骤a)将每一个表格格式数据划分为一个或多个信息块,每一个信息块都包括值列表和指针阵列,在所述值列表中,属于指定的条目的条目值按照对应于条目值的条目值号码的顺序存储,在所述指针阵列中,指出条目值号码的指针值按照明确的记录号的顺序存储;b)选择其中应该具有共有条目的两个表格格式数据;c)在所选择的两个表格格式数据中,查找应该具有的共有条目;d)确定指定的信息块的在其上面反映了默认排序的表格格式数据作为主动表格格式数据,并确定其它表格格式数据作为从表格格式数据;e)在指定的信息块中包含的值列表彼此等价的情况下,在所选择的表格格式数据中将主端的记录与从端的对应的记录相关联;f)选择其他两个表格格式数据,这两个数据将前两个表格格式数据的从端上的表格格式数据视为主端,并执行查找条目的步骤c),确定主动表格格式数据和从表格格式数据的步骤d),以及对于所述其他两个表格格式数据进行关联的步骤e);g)对于需要联接的表格格式数据,重复步骤f);h)从通过联接而连接的表格格式数据中选择要做为根的表格格式数据,并根据表格格式数据的连接,确定每一个表格格式数据的深度;i)将具有深度和记录号的组合作为值的树描述表格的区域固定;j)指定具有最初为最小的深度的某一深度的记录,并将指出记录的值连同深度排列到树描述表格的区域中;k)从指定的记录指定从端上的表格格式数据的记录,根据所述记录,将指出视从端上的表格格式数据为主端的表格格式数据的值,连同主端上的表格格式数据的深度,排列到树描述表格的区域;
l)重复步骤k),直到达到没有表格格式数据存在的深度或直到不再有任何记录存在;以及m)重复步骤j}到l},以将指定预定深度和记录的值排列到树描述表格的区域,如此完成了树描述表格。
根据本发明,两个表格格式数据的集合,从具有较小的深度的表格格式数据的记录,按顺序指定位于较深的位置处的表格格式数据的记录。这能创建包括指出深度和记录的值的树描述表格。树描述表格中的深度指定表格格式数据,指出记录的值可以获取表格格式数据的实际值。可以随意地执行表格格式数据选择、要改变的表格格式数据的组合,并选择要做为根的表格格式数据。因此,可以建立非常灵活的树形结构。
此外,对于相同表格格式数据,可以提供多个差异树描述表格。因此,可以为相同数据建立多个树形结构。
在优选实施例中,步骤e}包括下列步骤在主端上的信息块中,生成第二投影阵列,以便当使值列表等价时,指出信息块的指针阵列并添加条目值;在从端上的信息块中,生成第三投影阵列,该阵列将共有条目的值的数量相加;以及在从端上的信息块中,生成第四投影阵列,该阵列是指出按照共有条目排序的记录的值的集合;其中,按顺序跟踪第二投影阵列、主端上的信息块的指针阵列,第三投影阵列以及第四投影阵列,以指定从端上的记录。
在比较优选的实施例中,该方法进一步包括n)除了具有最小的深度的表格格式数据之外,生成涉及主端的第二投影阵列的反向映射阵列的步骤,其中,由第四投影阵列中的元素指出的反向映射阵列的元素指定具有第二最小的深度的表格格式数据中的主端上的第二投影阵列的元素。
此外,优选情况下,生成反向映射的步骤包括下列步骤
排列包括与涉及主端的第二投影阵列的元素相同的元素数量的反向映射的阵列;排列不能指定记录的另一个值作为每一个元素;以及将值排列到反向映射阵列,使用第四投影阵列的位置作为元素,并将元素视为位置。
在另一个优选实施例中,该方法进一步包括,在其中应该具有共有条目的两个表格格式数据的至少一个中,对于应该是表格格式数据所共有的条目,执行搜索、汇总和分类中的一个操作。
根据上文所描述的实施例,可以使用在其上面已经执行了搜索、汇总、分类等等的表格格式数据,建立树形结构。
如此,根据本发明,可以选择任意根,并创建所希望的树形结构。还可以使用在其上面已经执行了搜索、汇总、分类等等的表格格式数据,作为用于创建树形结构的基础的数据。
本发明的目的还通过这样的程序来实现该程序连接多个表格格式数据,每一个表格格式数据都被表达为记录阵列,该记录阵列包括条目和条目中包括的条目值,将连接的表格格式数据作为联接表格转换为树形结构,该程序的特征在于使计算机执行下列步骤a)将每一个表格格式数据划分为一个或多个信息块,每一个信息块都包括值列表和指针阵列,在所述值列表中,属于指定的条目的条目值按照对应于条目值的条目值号码的顺序存储,在所述指针阵列中,指出条目值号码的指针值按照明确的记录号的顺序存储;b)选择其中应该具有共有条目的两个表格格式数据;c)在所选择的两个表格格式数据中,查找应该具有的共有条目;d)确定指定的信息块的反映了默认排序的表格格式数据作为主表格格式数据,并确定其它表格格式数据作为从表格格式数据;e)在指定的信息块中包含的值列表彼此等价的情况下,在所选择的表格格式数据中将主端的记录与从端的对应的记录相关联;f)选择其他两个表格格式数据,这两个数据将前两个表格格式数据的从端上的表格格式数据视为主端,并执行查找条目的步骤c),确定主动表格格式数据和从表格格式数据的步骤d),以及对于所述其他两个表格格式数据进行关联的步骤e);g)对于需要联接的表格格式数据,重复步骤f);h)从通过联接而连接的表格格式数据中选择要做为根的表格格式数据,并根据表格格式数据的连接,确定每一个表格格式数据的深度;i)将具有深度和记录号的组合作为值的树描述表格的区域固定;j)指定具有最初为最小的深度的某一深度的记录,并将指出记录的值连同深度排列到树描述表格的区域中;k)从指定的记录指定从端上的表格格式数据的记录,根据所述记录,将指出视从端上的表格格式数据为主端的表格格式数据的值,连同主端上的表格格式数据的深度,排列到树描述表格的区域;l)重复步骤k),直到达到没有表格格式数据存在的深度或直到不再有任何记录存在;以及m)重复步骤j}到l},以将指定预定深度和记录的值排列到树描述表格的区域,如此完成了树描述表格。


通过参考实施例连同附图,本发明的目的及其他优点,将得到进一步的阐明,其中图1是显示了可以实现建立根据本发明的实施例的树形结构的方法的计算机系统的硬件结构的方框图;图2是显示了表格格式数据的示例和基于表格格式数据的信息块的示例的视图;图3是显示了表格格式数据的示例和基于表格格式数据的信息块的示例的视图;图4是显示了根据本实施例的转换到树形结构的处理的流程图;图5是说明组织表和雇员分配表的联接的视图;图6是说明根据本实施例的雇员分配表和雇员经历表的联接的视图;图7是显示根据本实施例的将联接表格链接的示例的视图;图8是说明根据本实施例的反向映射阵列的生成的视图;图9是显示了用于生成根据本实施例的树描述表格的各种阵列的视图;图10是显示根据本实施例的树描述表格的示例的视图;图11是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图12是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图13是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图14是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图15是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图16是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图17是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图18是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图19是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图20是说明在根据第一个实施例的树描述表格中排列值的处理的视图;图21是显示了表格格式数据的另一个示例和基于表格格式数据的信息块的示例的视图;图22是显示了表格格式数据的另一个示例和基于表格格式数据的信息块的示例的视图;图23是显示了表格格式数据的另一个示例和基于表格格式数据的信息块的示例的视图;图24是说明根据第二个实施例的雇员分配表和雇员经历表的视图;图25是说明根据第二个实施例的反向映射阵列的生成的视图;图26是显示了用于生成根据第二个实施例的树描述表格的各种阵列的视图;图27是显示了根据第二个实施例的树描述表格的视图;图28是说明在根据第二实施例的树描述表格中排列值的处理的视图;图29是说明在根据第二个实施例的树描述表格中排列值的处理的视图;图30是说明在根据第二个实施例的树描述表格中排列值的处理的视图;图31是说明在根据第二个实施例的树描述表格中排列值的处理的视图;图32是说明在根据第二个实施例的树描述表格中排列值的处理的视图;图33是说明在根据第二个实施例的树描述表格中排列值的处理的视图;以及图34是显示根据本发明的树形结构的再一个示例的视图。
具体实施例方式
下面将参考附图描述本发明的实施例。图1是显示了根据本发明的实施例的联接链接的表格格式数据并将联接表格转换为树形结构的计算机系统的硬件结构的方框图。如图1所示,此计算机系统10与普通计算机系统具有类似的结构,并包括CPU 12,用于通过程序来控制整个系统和单个组成部分,RAM(随机存取存储器)14,用于存储工作数据等等,ROM(只读存储器)16,用于存储程序等等,诸如硬盘之类的固定存储介质18,CD-ROM驱动器20,用于访问CD-ROM 19,在计算机系统和CD-ROM驱动器20或连接到外部网络(未显示)的外部终端之间提供的接口(I/F)22,包括键盘和鼠标的输入设备24,以及CRT显示设备26。CPU 12、RAM 14、ROM16、外部存储介质18、I/F 22、输入设备24,以及显示设备26通过总线28相互连接。
用于以链接的方式连接(联接)表格格式数据的程序、用于将连接的表格(联接表格)转换为树形结构的程序等等可以包含在CD-ROM 19中,并可以由CD-ROM驱动器20读出,或者可以预先存储在ROM 16中。此外,从CD-ROM 19中读出的程序可以存储到外部存储介质18中的预先确定的区域中。或者,程序可以通过网络(未显示)、外部终端和I/F 22从外部提供。
在此实施例中,为了实现到树形结构的高速转换,必须生成预先确定的数据格式的信息块,如稍后所描述的。用于生成信息块的程序同样也可以包含在CD-ROM 19中,存储在ROM 16中,或存储在外部存储介质18中。或者,当然,程序也可以通过网络(未显示)从外部提供。在此实施例中,由信息块生成程序生成的数据(信息块)存储在RAM 14中,或存储到外部存储介质18中的预先确定的区域中。
在此实施例中,如图2和3所示,表格格式数据(表格)以预先确定的数据格式来保存。例如,具有表格#0的组织表由信息块201构成,信息块201具有值列表(下文在合适的情况下简称为“VL”)203,其中,作为实际条目值的“组织名称”按照日语假名表(英语字母顺序)的顺序进行分类和排列,以及到值列表的指针阵列(下文在合适的情况下简称为“PVL”)202,其中,指出单个记录号码的值列表中的号码对应于单个记录号码地进行存储,如图2(a)所示。对应于记录号的PVL 202中的元素指出的号码的VL中的元素(条目值),是对应于记录的条目值。可以理解,PVL 202包括与表格中的记录数量相同数量的元素。
图2(b)显示了一个雇员分配表,该表包含条目“岗位”中的值(条目值)和条目“S名称”中的值(条目值)。雇员分配表由信息块211和信息块221构成。“岗位”信息块211包含VL 213(其中,存储了“岗位名称”,(具有由“组织名称”VL共享的共有的元素)),和用于指出VL 213中的元素(岗位名称)的PVL 212。“S名称”信息块211包含VL 223(其中,分类并存储了雇员的名称),以及用于指出VL 223中的元素(名称)的PVL 222。
同样,雇员经历表由信息块301(包含条目“R名称”中的值)和信息块311(包含条目“项目”中的值)构成,如图3所示。也是在图3的示例中,每一个信息块都包含PVL(参见302、312)和VL(参见303、313),如在图2(a)和图2(b)所示的示例中那样。
这里,参考组织表和雇员分配表,可以理解,可以共享组织表中的“组织名称”和雇员分配表中的“岗位”。此外,参考雇员分配表和雇员经历表,可以理解,可以共享雇员分配表中的“S名称”和雇员经历表中的“R名称”。在此实施例中,以链接的方式生成其中的条目为共享的联接表,如此表达了树形结构。下面将比较详细地描述转换到树形结构的处理。
图4是显示了根据本实施例的转换到树形结构的处理的流程图。在图4中,创建联接表格(步骤401),将反向映射阵列添加到第二和随后的联接表格(步骤402),获取树描述表格的区域(步骤403)构成了处理的准备步骤。首先,将详细描述这些步骤。
在图2和3所示的示例中,存在三个表格,即,组织表、雇员分配表,以及雇员经历表。这里,使用“组织名称”(“岗位”)作为键,执行组织表和雇员分配表的联接(联接#0)。然后,执行表格共享处理,使用“S名称”(“R名称”)作为键,执行雇员分配表和雇员经历表的联接(联接#1)。
图5是说明组织表和雇员分配表的联接的视图。在此情况下,在维护了组织表中的条目值的顺序的状态下,将组织表(参见501)和雇员分配表(参见502)彼此进行联接。
参考图4,首先,生成基于和雇员分配表的联接表格。在图5(a)中,由于维护了组织表中的条目值的顺序,组织被称为“主端”,而雇员分配表被称为“从端”。在此示例中,组织表501和雇员分配表中的“岗位”表格502联接起来,以构成联接表格(联接#0)。
如图5(b)所示,对于主端(参见511),生成通过将主端上的每一行(记录)的重复的次数汇总而形成的阵列(也被称为投影阵列“i”),以及主端上的有序集合(也被称为投影阵列“ii”)。
在投影阵列“i”中,显示了原始组织表(参见图2(a))中的行号的重复的次数(总数)。例如,由于第一行(行号“0”)中的元素为“0”,第二行(行号“1”)中的元素为“3”,可以理解,位于原始组织表中的行号“0”的“东京总公司”的条目值的重复次数为“3-0=3”。此外,在投影阵列“i”中,由于第二行(行号“1”)中的元素为“3”,第三行(行号“2”)中的元素为“5”,可以理解,对应于原始组织表中行号“1”的“大阪分公司”的条目值的重复次数为“5-3=2”。在投影阵列“i”的末尾(最低行),排列了联接表格的行的总数(在联接的组织表中,排列了“6”)。在投影阵列“ii”中,显示了指定联接组织表(共有的)中的行号的原始组织表中的行号。即,当通过使组织表为共有的而添加条目时,此投影阵列“ii”用于指定新的组织表中的行号。通过参考投影阵列“i”512和投影阵列“ii”513,可以指定在联接的组织表中排列的值。例如,对于涉及联接组织表(联接#0)的行号“0”到“2”的三行,对应于投影阵列“ii”中的行号“0”的元素为“0”。因此,可以理解,在联接组织表中排列了对应于原始组织表中的行号“0”的元素,即,“东京总公司”。
接下来,在从端(521)中,对于用作联接(联接#0)的键的条目的每一个值,即,对于每一个值“岗位”,生成通过将联接表格中的每一行的重复的次数汇总而形成的阵列(也被称为投影阵列“iii”)522,以及从端上的按照被用作联接的键的条目分类的有序集合(也被称为投影阵列“iv”)523。
在从端,由于已经由被用作联接(联接#0)的键的条目“岗位”执行了分类,因此,形成了投影阵列“iii”,如编号522所示。在投影阵列“iii”,根据排序顺序,条目“岗位”中的条目值“大阪分公司”的重复的次数为“2-0=2”。条目值“东京总公司”的重复的次数为“5-2=3”。条目值“名古屋办事处”的重复的次数为“6-5=1”。
投影阵列“iv”中的值表示原始雇员分配表中的行号。通过参考投影表“iii”和投影表“iv”,可以实现联接表格中的元素和原始雇员分配表中的元素之间的对应。例如,参考投影阵列“iii”中的行号“0”和“1”的行中的元素,可以理解,对于分类条目“岗位”中的第一元素“大阪分公司”,存在两个元素,并对应于原始雇员分配表中的行号“1”和“5”。
如此,当完成使用条目“组织名称”和条目“岗位”进行组织表和雇员分配表的联接(联接#0)时,通过使用条目“S名称”和条目“R名称”作为键,执行雇员分配表和雇员经历表的联接(联接#1)。
图6是说明雇员分配表和雇员经历表的联接的视图。在此联接中,维护了雇员分配表中的“S名称”的值的顺序,如在上文所描述的联接中(联接#0)那样。因此,雇员分配表变成主端,雇员经历表变成从端。在图6(a)中,雇员分配表中的“S名称”的表601和雇员经历表中的“R名称”的表602联接起来,以构成联接表(联接#1)。
图6(b)显示了对于此联接(联接#1)中的主端611,通过将每一行(记录)的重复的次数汇总而形成的阵列(投影阵列“i”)612以及有序集合(投影阵列“ii”)613。图6(c)显示了对于联接(联接#1)中的从端612,对于用作联接(联接#1)的键的条目“R名称”的每一个值,通过将联接表格中的每一行的重复的次数汇总而形成的阵列(投影阵列“iii”)622,以及按照被用作联接的键的条目分类的有序集合(投影阵列“iv”)623。如在图5所示的联接(联接#0)中,同样执行这些阵列的生成。
在第一联接(联接#0)中的从端上的有序集合(投影阵列“iv”)523和第二联接(联接#1)中的主端上的有序集合(投影阵列“ii”)613中,相同的值表示相同的记录。这是因为使用与主体包含相同值(元素)的表(雇员分配表)。
如此,通过联接表创建过程(图4中的步骤401),创建如图7所示的在组织表701和雇员分配表703之间调停的联接表(组织/分配表(联接#0))702,并创建在雇员分配表703和雇员经历表705之间调停的联接表(分配/经历表(联接#1))704。此外,当然,如果有一个表要与雇员经历表联接,可以创建这些表之间调停的另一个联接表(联接#2)。
在完成联接表的创建之后,对于第一联接表之后的其他联接表(即,第二和随后的联接表(步骤402)),生成并添加反向映射阵列。反向映射阵列通过反向映射阵列中的值来表示指出原始阵列的号码。
如图8所示,为创建反向映射阵列,固定与用于反向映射的原始阵列(映射阵列“ii”)具有相同记录数目的阵列的区域800(参见图8(a)),作为阵列中的元素提供不能是指出记录的号码的值(例如,“-1”)(参见图8(b))。然后,在由原始阵列(投影阵列“ii”613)中的值指出的元素排列原始阵列中的号码(记录号)(参见图8(c))。如此,可以提供如图8(c)的右边所示的最终的映射阵列800。
接下来,固定树描述结构的区域(步骤403)。图10是显示树描述结构的示例的视图。树描述结构由多个深度和记录号(Rec No)的组合构成。最初在每一个条目中没有提供值,通过稍后描述的过程按顺序提供值。“深度”表示树节点的深度。在图7所示的示例中,“组织表”、“雇员分配表”和“雇员经历表”的深度分别为“0(零)”、“1”和“2”。
在此实施例中,为创建描述树形结构的树描述表,使用树描述表的固定的区域,涉及第一联接(联接#0)(即,涉及组织表和雇员分配表的联接)的第一阵列组910,涉及第二联接(联接#1)(即,涉及雇员分配表和雇员经历表的联接)的第二阵列组920,以及将这些阵列组彼此关联的反向映射阵列921,如图9所示。
对于第一联接(联接#0),第一阵列组910包含有序集合(投影阵列“ii”)911、联接键PVL 912、总和阵列(投影阵列“iii”)913和有序集合(投影阵列“iv”)914。同样,对于第二联接(联接#1),第二阵列组920包含有序集合(投影阵列“ii”)922、联接键PVL 923、总和阵列(投影阵列“iii”)924和有序集合(投影阵列“iv”)925。
首先,将深度初始化为“0(零)”(步骤404),然后获取当前深度的元素(步骤405)。当获取元素时(步骤406中的“是”),将当前深度的元素与树描述表的深度一起注册(步骤407)。在上文所描述的示例中,获取“组织表”中的元素。在图11中,有序集合(投影阵列“ii”)的(行号“0”)开始处的元素连同其深度“0”排列作为树描述表中的第一元素(参见1000)。
接下来,判断是否存在“成员”(步骤408)。这里,“成员”是指通过从某一深度的表(例如,深度″0″处的表(组织表))中的有序集合(投影阵列”ii”)跟踪阵列达到的下一深度的表(例如,深度“1”中的表)中的有序集合(投影阵列“ii”)中的对应的元素。在图11的示例中,在有序集合(投影阵列“ii”)中的具有行号“0”的元素“0”,成员元素的存在可以通过按顺序跟踪深度“0”的表(组织表)中的PVL、总和阵列(投影阵列“iii”)和有序集合(投影阵列“iv”),反向映射阵列,以及深度“1”的表(雇员分配表)中的有序集合(投影阵列“ii”),如图12所示。因此,步骤408中的判断的结果为“是”。
在此情况下,深度增大(步骤409)。获取此深度(在上文所描述的示例中,深度“1”)的元素,获取的元素连同深度(在上文所描述的示例中,“1”)作为树描述表中的下一元素排列。第一联接(联接#0)中的投影阵列“iv”中的元素和下一联接(联接#1)中的投影阵列中的元素代表同一个表中的记录。因此,应该注意,如果这些元素相同,它们代表同一个记录。
在图12中,可以理解,存在三个元素,从深度“0”处的表(组织表)中的总和阵列(投影阵列“iii”)中的行号“1”的元素“2”和下一行号“2”的元素“5”(参见1201)。简而言之,可以理解,在此深度“0”,总和阵列中的行号“1”的元素指出有序集合(投影阵列“iv”)中的三个行号“2”、“3”和“4”,它们位于总和阵列的旁边。在图12和随后的图形中,附加到总和阵列(投影阵列“iii”)的右侧的箭头表示,通过等于位于箭头的目的地的元素和位于箭头的始发部分的元素之间的差的数字,在有序集合(投影阵列“iv”)中存在可以指出位于箭头的始发部分的元素的元素。
接下来,深度进一步增大(步骤409),并获取下一深度的元素(步骤405)。对于图12的示例,深度增大到“2”,跟踪深度“1”处的表中的有序集合(投影阵列“ii”)、PVL、总和阵列(投影阵列“iii”)和有序集合(投影阵列“iv”)。如图13所示,随着跟踪有序集合(投影阵列“ii”)中的行号“0”的元素,最后提取有序集合(投影阵列“iv”)中的行号“0”和“1”的元素“0”和“7”。这是因为,总和阵列(投影阵列“iii”)中的关联的元素为“0”,下一行号的元素为“2”,因此,可以理解,存在“2-0=2”元素。因此,有序集合(投影阵列“iv”)中的行号“0”和“1”的元素“0”和“7”与深度“2”在一起,如在树描述表中的元素(参见1002和1003)。
由于没有进一步的深度(深度“3”),因此,在深度的方向的搜索结束。简而言之,在步骤405到409的循环中,下一个步骤406中的判断的结果为“否”,深度减少(步骤410)。即,深度减少1,如果此深度等于“0”或大于“0”,则过程继续(看步骤411)。
在上文所描述的示例中,由于深度从“2”变为“1”,因此,再次获取深度“1”处的元素。如参考图12中的1201所描述的,已知,对于深度“1”处的总和阵列(投影阵列“iii”),存在三个元素。在这些元素中,第二和第三元素没有被处理。因此,在下一个步骤405,根据第二元素执行处理。如图14所示,从有序集合(投影阵列“iv”)中的第二元素(位于行号“2”旁边的行号“3”的元素),跟踪反向映射阵列和下一个有序集合(投影阵列“ii”),并获取对应的元素。这与深度“1”一起,如树描述表中的元素(参见1004)。
此外,深度增大(参见步骤409),执行处理,以获取深度“2”处的元素。如图15所示,通过跟踪有序集合(投影阵列“ii”)、PVL、总和阵列(投影阵列“iii”)和有序集合(投影阵列“iv”),获取深度“2”处的元素。从总和阵列中的箭头可以理解,在此情况下,获取两个元素。所获取的元素与深度“2”一起,如树描述表中的元素(参见1005和1006)。由于没有深度“3”,因此,在深度的方向的搜索结束。
同样,如图16所示,通过从深度“1”处的第三元素(有序集合(投影阵列“iv”)中的行号“4”的元素)跟踪反向映射和有序集合(投影阵列“ii”),可以获取深度“1”处的元素。这也与树描述表中的深度“1”一起(参见1007)。此外,如图17所示,通过跟踪阵列,获取深度“2”处的元素,并与树描述表中的深度“2”一起(参见1008)。同样,由于没有深度“3”,因此,在深度方向的搜索结束。
在结束之后,即使深度减少到“1”,也不能获取元素(步骤410、411、415和406)。因此,深度进一步减少到“0”,并获取深度“0”处的元素。如图18所示,有序集合(投影阵列“ii”)中的下一元素“1”(即,行号“1”)变成要注册到树描述表中的元素。因此,此元素与树描述表中的深度“0”一起(参见1009)。然后,如参考图4和11到18所描述的,重复在深度方向的顺序搜索和树描述表中的元素的排列。
图19显示了作为如上所述的处理的结果,获取树描述表中的最后的元素的状态。在前一处理中的树描述表中排列了深度“1”的元素(未显示)之后,执行这里所描述的处理。树描述表中排列的元素与涉及深度“1“的“联接#1”一侧的有序集合(投影阵列“ii”)具有共同的含义。因此,随着跟踪此元素,可以搜索深度“2”处的元素。
在图19的示例中,从有序集合(投影阵列“ii”)中的行号“2”的元素“2”跟踪PVL和总和阵列(投影阵列“iii”),获取有序集合(投影阵列“iv”)中的行号“4”的元素“4”。此元素与树描述表中的深度“2”在一起。
将参考图20描述如此完成的树描述表900的含义。如上所述,在树描述表900中排列了深度和记录号(Rec No)的组合。例如,深度条目中的值指定值与其关联的表的深度,记录号指定由深度指定的表的记录号。
例如,树描述表中的第一组合元素(0,0)指出深度“0”处表(组织表)中的记录号“0”的元素,即,“东京总公司”。下一组合元素(1,0)的指出深度“1”处表(雇员分配表)中的记录号“0”的元素,即,“东京总公司”和“Mr./Ms.A”。同样,随后的组合元素(2,0)和(2,7)分别指出深度“2”处的表(雇员经历表)中的记录号“0”和“7”的元素,即,“Mr./Ms.A”和“Prj-1”和“Mr./Ms.A”和“Prj-4”。如此,可以理解,树描述表描述了树形结构中的多个联接表。
如此,根据本实施例,通过指定所希望的表,可以通过上文所描述的过程创建树描述表,描述树形结构中的联接表。
接下来,将描述本发明的第二个实施例。在第一个实施例中,生成通过联接表格格式数据的整个集合而形成的树描述表,而在第二个实施例中,使用通过根据预先确定的条目和分类搜索一部分表格格式数据而形成的子集。也是在第二个实施例中,系统的硬件结构(图1)和转换为树形结构的过程的概述基本上与第一个实施例相同。
图21到23是显示根据第二个实施例的表格格式数据(表)的示例的视图。在第二个实施例中,作为组织表和雇员经历表,使用与第一个实施例相同的表格(参见图21中的201,以及图23中的301,311),它们的整个集合被用作要联接的主体(参见图21中的2101,以及图23中的2301)。另一方面,尽管使用与第一个实施例中相同的雇员分配表(参见图22中的211,221),但是,通过条目“岗位”中的“大阪分公司”和“名古屋办事处”对表进行OR搜索(参见图22中的2202),通过条目“S名称”对表进行分类(参见图22中的2203)。
通过使用“组织名称”(“岗位”)作为键的这些表格格式数据的联接(联接#0)是整个集合的联接(参见2101和2201)。另一方面,通过使用“S名称”(“R名称”)作为键的联接(联接#1)是通过搜索和分类(参见图22中的2203)而形成的子集和整个集合(参见图23中的2301)的联接。
由于为使用组织名称”(“岗位”)作为键的联接(联接#0)创建的阵列涉及整个集合,因此,这些阵列与图5所示的阵列相同。另一方面,执行使用“S名称”(“R名称”)的联接(联接#1),如图24所示。如图24所示,在此联接(联接#1)中,对于按照条目“岗位”中的“大阪分公司”和“名古屋办事处”执行OR搜索和按照条目“S名称”进行分类而形成的雇员分配表(主端)2401,以及包含与通过OR搜索提取的“S名称”相同“R名称”的雇员经历表(从端)2402,创建各种阵列。
如图24(b)所示,对于主端,生成通过聚合主端上的每一行的重复的次数而形成的投影阵列“i”2412,以及投影阵列“ii”2413,该投影阵列是主端上的有序集合。另一方面,如图24(c)所示,对于从端,通过将被用作联接(联接#1)中的键的条目中的每一值的联接表格中的每一行的重复的次数相加而形成的投影阵列“iii”2422,即,“R名称”,以及投影阵列“iv”2423,这是根据被用作键的条目分类的有序集合。这些各种阵列和它们的元素的含义类似于参考图5和6所描述的第一个实施例中的含义。
接下来,将描述反向映射阵列(图4中的步骤402)的创建。反向映射阵列的创建过程基本上与第一个实施例相同。然而,反向映射阵列中的元素的数量对应于雇员分配表(主端)中的记录的总数(参见图25(a))。然后,如在第一个实施例中那样,向如图25(b)所示的每一个元素排列不能是记录号的值(例如,“-1”),然后,在由原始阵列中的值指出的元素中排列原始阵列中的号码(记录号),如图25(c)所示。如此,可以提供反向映射阵列2500,如图25(c)的右侧所示。在第二个实施例中,应该注意,反向映射阵列中的元素包括没有指出记录号的元素。
在如此生成各种投影阵列和反向映射阵列之后,重复图4中的步骤404到411的过程,以完成树描述表格。图26是显示了用于创建树描述表格的阵列组等等的视图。如图26所示,树描述表的固定的区域,涉及第一联接(联接#0)(即,涉及组织表和雇员分配表的联接)的第一阵列组2610,涉及第二联接(联接#1)(即,涉及雇员分配表和雇员经历表的联接)的第二阵列组2620,以及将这些阵列组彼此关联的反向映射阵列2621用于创建树描述表格。
第一阵列组2610类似于图9所示的第一个阵列组910。对于第一联接(联接#0),它包含有序集合(投影阵列“ii”)2611、联接键PVL 2612、总和阵列(投影阵列“iii”)2613和有序集合(投影阵列“iv”)2614。同样,对于第二联接(联接#1),第二阵列组2620包含有序集合(投影阵列“ii”)2622、联接键PVL 2623、总和阵列(投影阵列“iii”)2624和有序集合(投影阵列“iv”)2625。
如图27所示,在树描述表格2600中,按顺序排列深度和记录号(Rec No)的组合。
在在树描述表格中组织元素的过程中,首先,将深度初始化为“0(零)”(图4中的步骤404),然后,获取当前深度的元素,并与深度与一起排列(步骤405到407)。最初,对于第一联接(联接#0),作为树描述表格2600中的第一元素(参见2700),排列有序集合(投影阵列“ii”)中的行号“0”的元素,如图28所示。
接下来,根据图4,判断是否存在“成员”(步骤408)。对于第一联接(联接#0),作为跟踪PVL中的对应元素的结果,从有序集合(投影阵列“ii”)中的行号“0”的元素,反向映射阵列中指出的所有三个元素的总和阵列(投影阵列“iii”)和有序集合(投影阵列“iv”),变成“-1”,如图29所示。由于反向映射阵列中的元素“-1”指出没有记录存在,如上所述,这里指出,对于第二联接(联接#1),没有要成为“成员”的元素存在(参见2901)。
因此,在图4的过程中,在步骤408中判断的结果为“No”,获取相同深度“0”处的下一个元素(参见步骤405)。在上文所描述的示例中,有序集合(投影阵列“ii”)中的行号“1”的元素“1”与树描述表格中的深度“0”(参见2701)一起,如图30所示。
接下来,判断是否存在要成为“成员”的元素。对于第二联接(联接#1),作为跟踪PVL中的对应元素的结果,指定从有序集合(投影阵列“ii”)中的元素,有序集合(投影阵列“ii”)中的元素,总和阵列(投影阵列“iii”),有序集合(投影阵列“iv”)和反向映射阵列。因此,此有序集合(投影阵列“ii”)中的行号“1”的元素“1”与树描述表格中的深度“1”一起(参见2702)。
此外,判断是否存在要成为“成员”的元素。在上文所描述的示例中,对于第二联接(联接#1),从有序集合中的元素,指定PVL中的元素,总和阵列(投影阵列“iii”)和有序集合(投影阵列“iv”),有序集合(投影阵列“iv”)中的两个元素与树描述表格中的深度“2”在一起(参见2703和2704)。
通过重复这样过程,可以完成如图27所示的树描述表格。如此完成的树描述表格的含义类似于参考图20所描述的第一实施例中的含义。如图33所示,树描述表格中的深度条目中的值指定值与其关联的表格的深度,而对应的记录号指定由深度指定的表格的记录号。
例如,在图33中,通过第一组合元素(0,0),指出了深度“0”处的表(组织表)中的记录号“0”的元素,即,“东京总公司”。通过下一组合元素(0,1),指出了深度“0”处的表(组织表)中的记录号“1”的元素,即,“大阪分公司”。同样,通过随后的组合元素(1,1)和(2,1),指出了深度“1”处的表(雇员分配表)中的记录号“1”的元素和深度“2”处的表(雇员经历表)中的记录号“1”的元素,即,“大阪分公司”和“Mr./Ms.D”,和“Mr./Ms.D”和“Prj-1”。
根据这些实施例,可以设置到任意节点的路由,如此建立了树形结构。例如,在第二个实施例中,可以建立如图34中的3400所示的树形结构。通过使用此实施例,可以使用任意条目作为路由来重建树形结构。例如,在图34中,可以选择雇员分配表中的行号“1”的“大阪分公司”和“Mr./Ms.D”作为路由,如此建立新的树形结构3410。
在建立树形结构的情况下,可以选择和联接要成为一组所有者节点的一组记录(表格格式数据),以及要成为一组成员节点的一组记录(表格格式数据)。通过以链接的方式重复此操作所希望的次数,然后创建树描述表格,可以建立具有任意深度的树形结构。
根据第一和第二实施例,可以通过以非常高的速度联接多个表格格式数据来建立树形结构。例如,通过使用“奔腾(注册商标)4”处理器(1.8GHz),除了涉及联接的各种阵列的创建之外,可以以大致10百万行/秒的速度排列树描述表格中的值。此速度大致比常规技术快100到1000倍。
如参考图34所描述的,可以建立使用任意节点作为路由的树形结构,并实现很高的灵活性。由于树形结构通过树描述表格来表达,可以基于相同的表格格式数据来保留多个不同的树形结构。例如,可以基于雇员的岗位以树的形式表达雇员的列表,还基于雇员的出生地以树的形式表达相同列表。
此外,可以组合分类和汇总(参见第二个实施例)。
此外,与常规的树形结构相比,可以使要使用的存储区变得紧凑。例如,在XML数据库中,由于在节点的连接信息中嵌入了代表路径名的字符串,需要非常大的存储区域。另一方面,根据此实施例,可以根据树描述表格,描述树形结构。根据本发明人所作的实验,关于股票价格信息的树形结构,可以通过使用用于XML数据库的存储区的1/5的存储区来表达。
本发明不仅限于上文所描述的实施例。当然,在权利要求中所描述的本发明的范围内,可以作出各种修改,这些修改可以包括在本发明的范围内。
例如,尽管在上文所描述的实施例中以链接的方式联接了三个表格格式数据,但是,链接的次数不仅限于此。
此外,在第一个实施例中,在某一联接和下一联接之间提供了反向映射阵列。然而,如果使用表格格式数据的整个集合,则可以省略此反向映射阵列。
此外,尽管在上文所描述的实施例中将预先确定的程序读取到通用计算机系统10中,并在该计算机系统中执行程序,以便实现多个表格格式数据的联接和涉及联接的表格格式数据的过程,但是,本发明不仅限于此。当然,专用于数据库处理的单板计算机连接到诸如个人计算机之类的通用计算机系统,以使单板计算机执行上文所描述的过程。因此,在此说明书中,术语“装置”不一定是指物理装置,可以通过软件和/或硬件来实现每一个装置的功能。此外,一个装置的功能可以通过两个或更多物理装置来实现,或者两个或更多装置的功能可以通过一个物理装置来实现。
例如,可以利用本发明来执行基于RDB中保留的材料列表来创建材料清单(BOM)的过程(BOM扩展)。本发明还可以系统而平稳地管理以分离和合并为特征的流程。例如,在管理有关某一食品(例如,畜牧场的肉)的信息的情况下,即,每一个动物的哪一个部分销售到哪里,以及采取了什么路由,这样的信息被表达为树形式的数据。通常,对于以主要和辅助产业生产的产品,数据以树的形式扩散,直到这些产品消耗完,或形式发生变化。如此,本发明可以以分离状态建立树形结构,并管理此树形结构。此外,根据本发明,通过创建树描述表格,可以随着时间的推移获取树的扩展。
同时,在购买各种部件、能源和服务以生产某一工业产品的情况下,也可以使用树形式的数据。例如,为生产汽车(最终产品),从某一零件制造商购买火花塞。零件制造商从电力公司购买电力,而从另一个零件制造商购买陶瓷,这是一种制造火花塞的材料。如此,树逆动地扩散。在本发明中,也可以以合并状态建立树形结构,并管理此树形结构。
根据本发明,可以提供能够选择任意根,以高速度建立一个或多个所希望的树形结构,并以高速度执行搜索、汇总和分类的方法和程序。
工业实用性本发明可以特别适用于管理大量的的数据的系统,例如,数据库或数据仓库。具体来说,本发明适用于密钥服务管理,以及诸如SCM(供应链管理)中的BOM扩展之类的业务管理。
权利要求
1.一种连接多个表格格式数据的方法,每一个表格格式数据都被表达为记录阵列,该记录阵列包括条目和条目中包括的条目值,将连接的表格格式数据作为联接表格转换为树形结构,该方法的特征在于包括下列步骤a)将每一个表格格式数据划分为一个或多个信息块,每一个信息块都包括值列表和指针阵列,在所述值列表中,属于指定的条目的条目值按照对应于条目值的条目值号码的顺序存储,在所述指针阵列中,指出条目值号码的指针值按照明确的记录号的顺序存储;b)选择其中应该具有共有条目的两个表格格式数据;c)在所选择的两个表格格式数据中,查找应该具有的共有条目;d)确定指定的信息块的反映了默认排序的表格格式数据作为主表格格式数据,并确定其它表格格式数据作为从表格格式数据;e)在指定的信息块中包含的值列表彼此等价的情况下,在所选择的表格格式数据中将主端的记录与从端的对应的记录相关联;f)选择其他两个表格格式数据,这两个数据将前两个表格格式数据的从端上的表格格式数据视为主端,并执行查找条目的步骤c),确定主动表格格式数据和从表格格式数据的步骤d),以及对于所述其他两个表格格式数据进行关联的步骤e);g)对于需要联接的表格格式数据,重复步骤f);h)从通过联接而连接的表格格式数据中选择要做为根的表格格式数据,并根据表格格式数据的连接,确定每一个表格格式数据的深度;i)将具有深度和记录号的组合作为值的树描述表格的区域固定;j)指定具有最初为最小的深度的某一深度的记录,并将指出记录的值连同深度一起排列到树描述表格的区域中;k)从指定的记录指定从端上的表格格式数据的记录,根据所述记录,将指出视从端上的表格格式数据为主端的表格格式数据的值,连同主端上的表格格式数据的深度,排列到树描述表格的区域;l)重复步骤k),直到达到没有表格格式数据存在的深度或直到不再有任何记录存在;以及m)重复步骤j)到l),以将指定预定深度和记录的值排列到树描述表格的区域,从而完成树描述表格。
2.根据权利要求1所述的方法,其特征在于,步骤e)包括下列步骤在主端上的信息块中,生成第二投影阵列,以便当使值列表等价时,指出信息块的指针阵列并添加条目值;在从端上的信息块中,生成第三投影阵列,该阵列将共有条目的值的数量相加;以及在从端上的信息块中,生成第四投影阵列,该阵列是指出按照共有条目排序的记录的值的集合;其中,按顺序跟踪第二投影阵列、主端上的信息块的指针阵列,第三投影阵列以及第四投影阵列,以指定从端上的记录。
3.根据权利要求2所述的方法,其特征在于,进一步包括n)除了具有最小的深度的表格格式数据之外,生成涉及主端的第二投影阵列的反向映射阵列的步骤,其中,由第四投影阵列中的元素指出的反向映射阵列的元素指定具有第二最小的深度的表格格式数据中的主端上的第二投影阵列的元素。
4.根据权利要求3所述的方法,其特征在于,生成反向映射的步骤包括下列步骤排列包括与涉及主端的第二投影阵列的元素相同的元素数量的反向映射的阵列;排列不能指定记录的另一个值作为每一个元素;以及将值排列到反向映射阵列,使用第四投影阵列的位置作为元素,并将元素视为位置。
5.根据权利要求1到3中的一个权利要求所述的方法,其特征在于进一步包括,在其中应该具有共有条目的两个表格格式数据的至少一个中,对于应该是表格格式数据所共有的条目,执行搜索、汇总和分类中的一个操作。
6.一种连接多个表格格式数据的程序,每一个表格格式数据都被表达为记录阵列,该记录阵列包括条目和条目中包括的条目值,将连接的表格格式数据作为联接表格转换为树形结构,该程序的特征在于使计算机执行下列步骤a)将每一个表格格式数据划分为一个或多个信息块,每一个信息块都包括值列表和指针阵列,在所述值列表中,属于指定的条目的条目值按照对应于条目值的条目值号码的顺序存储,在所述指针阵列中,指出条目值号码的指针值按照明确的记录号的顺序存储;b)选择其中应该具有共有条目的两个表格格式数据;c)在所选择的两个表格格式数据中,查找应该具有的共有条目;d)确定指定的信息块的反映了默认排序的表格格式数据作为主表格格式数据,并确定其它表格格式数据作为从表格格式数据;e)在指定的信息块中包含的值列表彼此等价的情况下,在所选择的表格格式数据中将主端的记录与从端的对应的记录相关联;f)选择其他两个表格格式数据,这两个数据将前两个表格格式数据的从端上的表格格式数据视为主端,并执行查找条目的步骤c),确定主动表格格式数据和从表格格式数据的步骤d),以及对于所述其他两个表格格式数据进行关联的步骤e);g)对于需要联接的表格格式数据,重复步骤f);h)从通过联接而连接的表格格式数据中选择要做为根的表格格式数据,并根据表格格式数据的连接,确定每一个表格格式数据的深度;i)将具有深度和记录号的组合作为值的树描述表格的区域固定;j)指定具有最初为最小的深度的某一深度的记录,并将指出记录的值连同深度排列到树描述表格的区域中;k)从指定的记录指定从端上的表格格式数据的记录,根据所述记录,将指出视从端上的表格格式数据为主端的表格格式数据的值,连同主端上的表格格式数据的深度,排列到树描述表格的区域;l)重复步骤k),直到达到没有表格格式数据存在的深度或直到不再有任何记录存在;以及m)重复步骤j)到l),以将指定预定深度和记录的值排列到树描述表格的区域,如此完成了树描述表格。
7.根据权利要求6所述的程序,其特征在于,使计算机在步骤e}中执行在主端上的信息块中,生成第二投影阵列,以便当使值列表等价时,指出信息块的指针阵列并添加条目值;在从端上的信息块中,生成第三投影阵列,该阵列将共有条目的值的数量相加;以及在从端上的信息块中,生成第四投影阵列,该阵列是指出按照共有条目排序的记录的值的集合;该程序的特征在于,使计算机运转,以便按顺序跟踪第二投影阵列、主端上的信息块的指针阵列,第三投影阵列以及第四投影阵列,以指定从端上的记录。
8.根据权利要求7所述的程序,其特征在于,进一步使计算机执行n)除了具有最小的深度的表格格式数据之外,生成涉及主端的第二投影阵列的反向映射阵列的步骤,该程序的特征在于,使计算机运转,以便由第四投影阵列中的元素指出的反向映射阵列的元素指定具有第二最小的深度的表格格式数据中的主端上的第二投影阵列的元素。
9.根据权利要求8所述的程序,其特征在于,使计算机在生成反向映射的步骤中执行排列包括与涉及主端的第二投影阵列的元素相同的元素数量的反向映射的阵列;排列不能指定记录的另一个值作为每一个元素;以及将值排列到反向映射阵列,使用第四投影阵列的位置作为元素,并将元素视为位置。
10.根据权利要求6到9中的一个权利要求所述的程序,其特征在于进一步使计算机执行下列步骤在其中应该具有共有条目的两个表格格式数据的至少一个中,对于应该是表格格式数据所共有的条目,执行搜索、汇总和分类中的一个操作。
全文摘要
以高速度将连接的联接表格转换为树形结构。首先,将表格格式数据划分为一个或多个信息块,每一个信息块都包括值列表和指针序列,所述值列表包含对应于属于特定项目的项目值的项目值号码的序列中的项目值,所述指针序列包含用于指出唯一记录号的序列中的项目值号码的指针值。接下来,选择其中将具有共有项目的表格格式数据,使预先确定的项目的值列表等效,并执行联接。在必需的表格格式数据之间重复联接。接下来,在连接的表数据之中,选择将成为根的表数据。根据表格格式数据的连接,决定表格格式数据的深度。根据表格格式数据连接和深度,在描述树的树描述表格中排列指出记录的值。
文档编号G06F17/30GK1717681SQ200380104149
公开日2006年1月4日 申请日期2003年10月23日 优先权日2002年10月24日
发明者古庄晋二 申请人:特博数据实验室公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1