基于网状关系维的数据处理方法和系统的制作方法

文档序号:6559701阅读:207来源:国知局

专利名称::基于网状关系维的数据处理方法和系统的制作方法
技术领域
:本发明一般涉及数据库管理系统(DBMS)的数据操纵,尤其涉及多维DBMS中由网状关系维限定的聚合操作的系统和方法。
背景技术
:如果按照现有的DBMS中所操纵的维的域值来分,维通常分为两类。一类为枚举或数值型,这种维的特点是可以用枚举的方式或者数值的方式定义维的域值。例如一个公司职员维中,包括属性“员工ID”、“员工姓名”和“员工性别”。其中,“员工ID”的实例可以由包含数字和字母的字符组合构成;“员工姓名”的实例可以由字符组合构成;“员工性别”的实例可以用“男”或“女”这种枚举值表示。在DBMS中,这种维可以通过“集合操作(Setoperation)”来进行聚合操作。另一类维是维的属性值之间具有层次关系。在这类维中,属性之间具有偏序关系,即具有概括/特化(generalize/specialize)的关系。例如,在某个城市的行政区划维中,可能包含如下属性“区/县”、“街道”和“社区”,其中“区/县”是“街道”和“社区”的上一级机构,“街道”是“社区”的上一级机构。如果将这种维的每个实例定义为一个节点,则所有的实例将构成一个没有标记的有向无环图(DAG)(或者称为偏序图)。传统的联机分析处理系统(OLAP)所处理和分析的维通常是所述两类维,并通过使用维的属性对维表进行聚合操作,从而产生符合用户需求的分析结果。但是,多维DBMS系统中还有一类维目前尚不能由传统的OLAP来方便地进行处理。这类维我们称之为网状关系维(NetworkedRelationalDimension)。这类维的主要特点是,维的某些属性(以后称之为实体或者角色)由具有传递特性的网状关系进行约束。现在进一步举例说明以上所描述的三种维的特点。假设图1A是某跨国公司的子公司地址维表(Locationtable),图1B是该跨国公司的子公司资产维表(Companytable),图1C是该跨国公司的各子公司的股权关系维表(Shareholdingtable)。子公司地址维的属性包括LID(公司地址编号)、country(国家)、state(州)和city(城市)。子公司资产维的属性包括CID(公司编号)、location(地址)和asset(资产)。股权关系维包括RID(股权关系编号)、holder(持股人)、owner(被持股人)、type(持股类型)和percent.(持股比例),其中DS表示派生股,PS表示衍生股。图2A是由图1A所示的子公司地址维表所在的维中的实体和关系所得到的实体实例的偏序图。在该偏序图中,按照层次关系表示出图1A的子公司地址维中各实体实例的关系。在传统的OLAP系统中,可以利用已有的分析技术,以图1A的子公司地址维中的公司地址作为限制条件对图1B所示的子公司资产表中各子公司的资产进行聚合操作。但是,当将图1C所示的维中的股权持有关系作为限制条件对图1B所示的子公司资产表中各子公司的资产进行聚合操作时,传统的OLAP尚没有对这种复杂的网状关系进行有效描述的方法,也无法进行有效的数据库查询。图2B示出图1C中的实体实例的关系图。从该图可以看出,实体实例A、B、C和D之间呈现出多种复杂的网状关系,而非图2A中所示的偏序关系。例如公司A持有公司B的50%的DS;公司B持有公司C的30%的PS;但是公司B又持有公司D的20%的DS,公司D又持有公司A的10%的PS。其中,各公司之间可能存在间接的持股关系,例如公司A间接持股公司C和D的股份。当例如基于这种网状的间接持股关系统计例如A公司所间接持股的那些子公司的资产情况时,传统的OLAP系统就无法对这种网状关系维中的属性进行有效的聚合操作。具体而言,传统的OLAP系统无法明确地对这种网状关系维的限制条件进行定义或描述。如果要实现对这种网状关系维进行操纵,需要编程人员有高超的编程技巧,和对实例关系的全面了解,而这对于复杂和庞大的网状关系维而言是无法实现的。如何快速方便地从这种具有网状结构的实体关系中搜索出符合某些限制条件的实体关系,在现有的OLAP系统中尚未有适当的解决方案。
发明内容为了解决现有技术的上述问题,本发明的一个目的是提供一种支持多维DBMS中由网状关系维限定的聚合操作的系统和方法。为了实现上述目的,本发明提供一种基于网状关系维的数据处理方法,其特征在于,包括聚合条件描述步骤,描述对具有网状关系的实体和/或所述实体之间的关系的属性执行的聚合作为聚合条件;限制条件描述步骤,描述该具有网状关系的实体之间的关系的传递规则作为限制条件;转换步骤,将所述聚合条件和所述限制条件转换为由数据库操纵语言所描述的语句。本发明还提供一种基于网状关系维的数据处理系统,其特征在于,包括聚合条件描述装置,描述对具有网状关系的实体和/或所述实体之间的关系的属性执行的聚合作为聚合条件;限制条件描述装置,描述该具有网状关系的实体之间的关系的传递规则作为限制条件;转换装置,将所述聚合条件和所述限制条件转换为由数据库操纵语言所描述的语句。本发明使用简洁的描述方式对网状关系维进行描述,并能够高效地将该描述转换为标准的数据库操纵语言。根据本发明,可以自动生成复杂的数据库查询,减轻用户所需要承受的编程技巧和人力上的负担。根据本发明,可以对超大量具有复杂的网状关系结构的数据表进行数据操纵。根据本发明,增强了多维数据建模的能力,为进行数据挖掘提供一种有效的手段。通过以下结合附图对本发明的最佳实施方式的详细说明,本发明的这些以及其他优点将更加明显。图1A是某跨国公司的子公司地址维表。图1B是跨国公司的子公司资产维表。图1C是跨国公司的各子公司的股权关系维表。图2A是由图1A所得到的实体实例的偏序图。图2B示出图1C中的实体实例的关系图。图3是根据本发明的方法流程图。图4是根据本发明的第一实施方式的系统方框图。图5示出进行聚合条件描述的流程图。图6示出进行限制条件描述的流程图。图7示出了根据本发明将限制条件描述翻译为SQL查询语句的处理流程图。图8示出了根据本发明构造结构化查询语言的查询语句中的WHERE语句的处理流程图。图9示出了图8中A部分的处理流程图。图10示意性地表示了其中可以实现本发明的第一实施方式的计算机系统。图11示出根据本发明第二实施方式的系统方框图。具体实施例方式下面的描述中,提供大量具体的细节以帮助彻底了解本发明。然而,很显然对于本领域技术人员来说,即使没有这些具体细节,并不影响对本发明的理解。并且应该认识到,使用如下的任何具体术语仅仅是为了方便描述,因此,本发明不应当局限于只用在这样的术语所标识和/或暗示的任何特定应用中。比如下文仅以持股的例子进行说明,但是本发明也可以任何对任何具有网状关系的维表进行操作,如包含卖方和买方的买卖关系,包含保险人和被保险人的保险关系等的网状关系维表。除非另有说明,本发明所述的功能可用硬件或软件或它们的结合来运行。然而,在优选实施列中,除非另有说明,这些功能是由处理器,如计算机或电子数据处理器,按照编码,如计算机程序编码,的集成电路来执行的。一般来说,为了实现本发明的实施方式而执行的方法可以是操作系统或特定应用程序的一部分、程序、模块、对象或指令序列。本发明的软件通常包括将由本地计算机呈现成机器可读格式的众多指令,因此是可执行指令。此外,程序包括相对于程序来说驻留在本地或在存储器中找到的变量和数据结构。下面详细描述本发明的第一实施方式。在图1C中,假设持股人(holder)为角色(role)1,被持股人(owner)为角色2。就像图1C中所示出的那样,在网状关系维中,角色1和角色2之间存在复杂的传递关系(transitiverule),这些关系可能包括(1)角色1和角色2之间存在直接传递关系;例如,图1C中第一条记录中,A和B之间具有直接的传递关系。(2)角色1和角色2之间存在间接传递关系;例如,在图1C的记录中,A和C之间具有间接传递关系。这是通过第一条记录中A和B之间具有的直接传递关系以及第二条记录中B和C之间具有的直接传递关系得出的。另外,在上述间接传递关系中,还可以进而分成有环间接传递关系和无环间接传递关系。例如,如图2B所示,A、B和C形成无环间接传递关系,而A、B和D形成有环间接传递关系。通过后面的描述将能够理解,区分实体之间的间接传递关系是否有环或者无环,对于防止最后转换得到的数据库查询程序的执行陷入死循环具有很大的意义。本发明能够根据如上所述那样的角色1和角色2之间的网状关系所限定的限定条件进行聚合操作。请注意,这里网状关系维中包含有两类属性,一类我们称之为角色(role)或者实体(entity),网状关系维就是对这一类属性的关系进行描述,这类属性通常具有传递特征;另一类属性我们称之为值属性(value)(以下简称为属性),是网络关系维中除了角色属性之外的属性,这类属性可以包括实体(角色)的属性或者关系的属性,例如表示类型的属性或者表示数值的属性。在这种网状关系维中,实体(角色)具有将被进行聚合操作的属性。将实体联系起来的关系是用来进行聚合操作的条件。而且关系本身还具有可以被进行限制或者聚合的属性。在这类维中,实例空间表示的实体关系具有网状结构。如果将实体的实例表示为顶点,将关系的实例表示为边,则这些顶点和边构成带标记和带权重的图(labeledandweightedgraph)。例如,在图1C中,在从A到B的关系实例中,其标记属性(即类型属性)为DS,其权重属性(数值属性)为50%。本发明试图从这种具有网状结构的图中搜索出符合某些限制条件的子图(subgraph)。图3示出根据本发明的方法的流程图。在步骤S301,对实体的属性进行聚合条件描述,即描述对于实体(角色)的哪些属性(或者度量)进行何种形式的聚合。在步骤S302,描述网状关系维的限制条件,即描述网状关系维的实体关系传递规则以及其他属性的限制条件。在步骤S303,根据所存储的转换规则将限制条件描述转换为用标准数据库操纵语言例如SQL进行描述的SQL查询语句。在步骤S304,根据所存储的转换规则将聚合条件描述转换为用标准数据库操纵语言例如SQL进行描述的SQL查询语句。在步骤S305,将在步骤S303和S304所得到的SQL查询语句合并起来,形成SQL程序,作为执行聚合操作所得到的结果。SQL程序例如是直接的SQL查询语句(Select)或者视图(CreatView)等以供以后使用。对于本领域技术人员来说,对于上述步骤可以进行任意的组合。例如,将步骤S301和S302合并起来,构成描述步骤;将步骤S303和S304,进而S305合并起来,构成转换步骤。以下将结合本发明的系统对上述每个步骤进行详细说明。图4示出本发明的系统的概略框图。根据本发明进行聚合操作的系统包括聚合条件描述单元401,限制条件描述单元402,限制条件转换单元403,聚合条件转换单元404,限制条件转换规则库405,聚合条件转换规则库406和,合并和输出单元407。聚合条件描述单元401进行聚合条件的描述。具体而言,是确定聚合操作的目标,描述对于哪些属性(attribute)(或者度量(measure))进行何种形式的聚合。根据本发明,可以使用常规的描述语言,例如SQL、已有的OLAP语言或者Datalog等LogicProgram来进行这种描述。下面以图1A-1C的表为例解释如何进行聚合条件描述。例如现在想要按照持股类型(type)对于所有被A公司间接持股的那些子公司的资产的资产总额进行求和的聚合操作。使用Datalog对聚合条件的描述如下?(t,sum<a>):-IndirectSharehold(holder:“A”,owne:x,type:t),Company(cID:x,asset:a).其中在头部描述希望对哪些属性进行何种聚合操作,在此处是希望对于类型t统计资产a的总额。在体部分具体描述哪些维的哪些属性和角色被使用来进行聚合操作。在此处,是具有网状关系的Sharholding维和普通的Company维被使用来进行聚合操作。而且Sharholding维中的属性“type”被使用,角色“holder”和角色“owner”被使用,而Company维中的属性“asset”被使用,角色“cID”被使用。根据本发明,在进行聚合条件描述时,还可以执行迭代聚合,即在一个聚合结果集上进一步进行聚合操作。例如,假设现在希望对holder为“A”的那些间接Owner的资产(asset),求出其中最大的,则这种迭代聚合条件可以描述为?(max<s>):-AssetSum(sum:s).AssetSum(type:t,sum<a>):-IndirectSharehold(holder:“A”,owner:x,type:t),Company(cID:x,asset:a).以上的例子是两重迭代。但是即使聚合操作大于两重迭代,本领域技术人员也能够了解,可以通过如下方式来实现迭代操作即,在前一个聚合结果集上进一步进行下一步聚合操作,直到所有的聚合操作都完成。图5示出进行聚合条件描述的流程图。首先,在步骤S501,描述当前的聚合操作。其次在步骤S502,判断是否存在聚合迭代操作。如果存在则步骤返回S501继续进行下一个聚合操作的描述。如果不存在则结束处理。限制条件描述单元402用于对聚合操作的限制条件进行描述。具体而言,限制条件描述单元402描述聚合条件描述的体部分中所描述的维的限制条件。网状关系维的限制条件的描述包括角色之间的双向关系(bi-aryrelations)的传递规则(transitiverule)的描述。这里的传递规则应当理解为用来描述角色之间的传递关系的逻辑规则。传递规则是在从网状关系维表中搜索具体实体实例(子图)时的限制条件。另外,在进行限制条件描述时,还可以对网状关系维的一些属性进行描述作为搜索具体实体实例(于图)时的其它限制条件。对其它属性进行限制包括对多标记和多权重的图中的标记(类别属性)和权重(数值属性)(相当于关系的属性)进行限制,以及对于角色本身的属性进行限制。所谓多标记,是指图3B所示的角色之间的关系的类别属性,所谓权重是角色之间的关系的数值属性。具体而言,属性“type”是角色“holder”和角色“owner”之间的标记,而属性“percent.”是角色“holder”和角色“owner”之间的权重。图6示出进行限制条件描述的流程图。首先,在步骤S601,对于聚合条件描述的体部分中的角色之间的一种传递关系进行描述;然后,在步骤S602,判断是否需要对聚合条件中涉及该传递关系的其它属性进行描述。如果判断结果为是,则前进到步骤S603,对于其它属性进行描述。否则前进到步骤S604。在步骤S604,判断聚合条件描述的体部分中的角色之间是否还存在其它传递关系。如果判断结果为是,则处理返回到步骤S601继续进行描述。否则处理结束。根据上述处理过程,对于在上述聚合操作描述中的“Indirect_sharehold(Holder:“A”,Owner:x,Type:t)”的具体限制条件可以描述如下IndirectSharehold(holder:x,owner:y,type:t):-Shareholding(holder:x,owner:y,type:t).IndirectSharehold(holder:x,owner:y,type:t):-IndirectSharehold(holder:x,owner:z,type:t),Shareholding(holder:z,owner:y,type:t).上述描述的前两行描述了具有直接传递关系的角色x和角色y的传递规则和对“type”属性的限制。我们称这种具有直接传递关系的x和y的传递规则为非递归传递规则(non-recursiverule)。上述描述的后三行描述了具有间接传递关系的角色x、角色y和角色z的传递规则和对“type”属性的限制。我们称这种具有间接传递关系的x和y的传递规则为递归传递规则(recursiverule)。在进行限制条件描述时,例如还可以加上对于其它属性,例如值属性的限制等,例如这种限制是“percent.”属性不小于预定值。这需要根据聚合操作要求而确定。对于本领域技术人员来说,可以采用任意的逻辑描述语言来进行上述描述,而不限于以上的举例。限制条件转换规则库405和聚合条件转换规则库406中分别存储将限制条件描述和聚合条件描述转换为用标准数据库操纵语言进行描述所使用的那些转换规则。限制条件转换单元403根据限制条件转换规则库405中所存储的转换规则将限制条件描述转换为用标准数据库操纵语言进行描述。聚合条件转换单元404根据聚合条件转换规则库406中所存储的转换规则将聚合条件描述转换为用标准数据库操纵语言进行描述。在限制条件转换规则库405中,具体存储了进行如下的转换处理的规则(1)每个非递归传递规则用关系代数表示,因此都可以被转换为SQL的SELECT查询语句。(2)SELECT块按照如下规则构造使用限制条件描述的头部中与体部分的谓词中的变元关联起来的变元所在的表名称和列名称。(3)FROM块按照如下规则构造使用限制条件描述的体部分中的谓词所指代的表的表名称。如果一个表名被多次使用,则可以在FROM块中定义该表的别名。(4)WHERE块按照如下规则构造如果限制条件描述的体部分中的谓词是比较谓词,则将该内部操作作为条件部分加入;如果限制条件中体部分的谓词变元间有关联关系,则用“=”操作将该关联作为条件部分加入。(5)SQLUNIONALL操作符当限制条件的描述中包括多条传递规则的定义时,SQLUNIONALL操作符将各传递规则的结果合并。(6)递归传递规则使用SQL99标准所支持的CTEs(commonTableExpression)来表达,并且被转换为SQLWITH...AS查询语句。(7)为了避免死循环的事情出现,或者为了记录环状关系,在SELECT块中使用变元“path”和“loop”来记录递归谓词中可变变量的路径。限制条件转换单元403根据上述限制条件转换规则库405中所存储的转换规则将限制条件描述转换为用标准数据库操纵语言例如SQL进行描述的SQL查询语句。下面将参考图7到图9详细描述限制条件转换单元403如何将限制条件描述转换为SQL查询语句。图7示出了根据本发明将限制条件描述翻译为SQL查询语句的处理过程。在步骤S704中,构造限制条件描述的当前传递规则(通常一个传递规则可以作为最小单位翻译成一个SQL查询语句或者翻译成聚合操作的SQL语句的一部分)的SQL查询语句的SELECT部分。在限制条件描述头部的参量(变量)受到位于限制条件描述体部分中(当前传递规则中)的、包含该参量的谓词的限制。因此,在该步骤中,使用对应于限制条件描述头部的参量的表名称和列名称来作为跟随关键字SELECT的属性。在步骤S706中,构造当前传递规则的SQL查询语句的FROM部分。在FROM部分中必须包括的表的名称是在限制条件描述体部分中涉及的那些谓词所对应的表的名称。在步骤S708中,构造当前传递规则的SQL查询语句的WHERE部分。WHERE部分的构造是比较复杂的,在图8和图9中示出根据本发明一种实施方式的构造WHERE部分的处理流程。后文将参照图8和图9对构造WHERE部分的处理进行详细说明。在步骤S710中,判断是否已经处理了限制条件描述中的所有传递规则。如果判断结果为“是”,则执行步骤S718。如果判断结果为“否”,则执行步骤S714。在步骤S714中,在当前构造的SQL查询语句后加入运算符关键字“UNIONALL”(加合)。在步骤S716中,选取该限制条件描述中的下一传递规则。然后,处理返回步骤S704继续执行。在步骤S718中,输出为限制条件描述所构造的SQL查询语句。以下参考图8和图9,说明在根据本发明一个实施方式中用于构造SQL查询语句的WHERE部分的处理流程。结合图7中所描述的内容,在以下的描述中所述的限制条件描述体可以理解为仅包括限制条件描述的一个传递规则。图8示出了根据本发明一个实施方式的构造结构化查询语言的查询语句中的WHERE语句的处理流程图。如图8所示,在步骤S800中,开始该处理流程。在步骤S802中,取限制条件描述体部分中一个未处理的谓词,设该谓词为m。在步骤S804中,判断当前谓词是否为内置谓词。如果判断结果为“是”,则处理转到A部分(将在后文参照图9予以说明)。如果判断结果为“否”,则处理继续执行步骤S806。在步骤S806中,取谓词m的一个未处理参量。设该参量为a。在步骤S808中,判断当前参量a是否为常量。如果判断结果为“是”则执行步骤S816。如果判断结果为“否”,则执行步骤S810。在步骤S816中,向WHERE语句部分添加“m.列名称=a”。之后,该处理继续执行步骤S818。其中,该“列名称”是指当前参量a对应的列名称。在步骤S810中,判断当前参量是否出现在之前处理过的任意谓词n中。如果判断结果为“是”,则执行步骤S812。如果判断结果为“否”,则执行步骤S814。在步骤S812中,向WHERE语句部分添加“n.列名称=m.列名称”。该“列名称”是指当前参量a在谓词n和m中分别对应的列名称。在步骤S814中,记忆当前参量a,和其所处当前谓词m。在步骤S818中,判断当前谓词m是否还有其它参量。如果判断结果为“是”,则该处理返回步骤S806继续执行。如果判断结果为“否”,则执行步骤S820。在步骤S820中,判断该限制条件描述体部分中是否还有未处理的谓词。如果判断结果为“是”,则该处理返回步骤S802继续执行。如果判断结果为“否”,则处理流程结束。图9示出了图8中A部分的处理流程图。如图9所示,在步骤S902中,判断该内置谓词m是否为关系操作谓词,例如==、<>、>、≥=、<、≤=等。本领域的技术人员可以理解,在WHERE语句部分中,只有内置谓词中的关系操作谓词才需要考虑。这样的关系操作谓词通常只有两个变元。因此,如果在该步骤中判断结果为“否”,则处理返回图8中的步骤S802,继续取下一个未处理的谓词;如果判断结果为“是”,则执行步骤S904。在步骤S904中,取谓词m的两个参量a1、a2。在步骤S906中,判断参量a1和a2是否均为变量。如果判断结果为“否”,则执行步骤S908。如果判断结果为“是”,则执行步骤S910。在步骤S908中,设参量a1或者a2出现在谓词n中,则向WHERE语句部分加入“n.列名称1sql操作符m.al”或者“n.列名称2sql操作符m.a2”。其中,列名称1为参量a1对应的谓词n所对应的表中的列名称,列名称2为参量a2对应的谓词n所对应的表中的列名称;sql操作符为该关系操作谓词对应的sql操作符。在步骤S910中,设参量a1出现在谓词n中,并且a2出现在谓词l中,则向WHERE语句部分加入“n.列名称1sql操作符l.列名称2”。其中,列名称1为参量a1对应的谓词n所对应的表中的列名称,列名称2为参量a2对应的谓词l所对应的表中的列名称;sql操作符为该关系操作谓词对应的sql操作符。在执行步骤S908或者S910之后,该流程返回图8,继续执行步骤S820。SQL标准在SQL99标准中,已经能够支持递归的查询。因此,根据SQL99标准递归的限制条件描述可以表达为公共表表达式(CommonTableExpression,CTE)。根据本发明的实施方式,可以将递归的限制条件描述翻译为这种公共表表达式,其中使用“WITH表名称(a1,a2,...)AS”来定义整个递归查询语句。在该递归查询语句中,可以按照与对非递归限制条件描述进行翻译相同的处理流程来生成SELECT、FROM以及WHERE语句部分,并且可以在这些语句中引用该WITH语句部分中定义的“表名称”。最后,产生SELECT语句部分以便产生在递归查询结果中所需的列。根据本发明的一个实施方式,为了避免在执行所翻译的递归查询语句时产生死循环的情况,可以在该WITH语句部分中增加两个参量(也即增加列),一个用于记录在递归查询过程中递归变化的变量所经历的路径(例如定义为参量“path”),另一个用于标记当前该变量的值是否曾经出现在所记录的参量“path”中(例如,定义为布尔值的参量“loop”)。可以理解,如果当前变量的值曾经出现在所记录的“path”中,则表明该递归查询已经陷入死循环;反之,则表明当前该递归查询是安全的。按照上述所说明的转换方法,上述实例的限制条件描述被转换为如下的SQL查询语句请注意,下述的例举中使用了“path”和“loop”来避免死循环的发生。WITHIndirectSharehold(holder,owner,type,path,loop)AS(SELECTsh.holder,sh.owner,sh.type,HEX(sh.owner),0FROMShareholdingshUNIONALLSELECTish.holder,sh.owner,sh.type,ish.path||sh.owner,LOCATE_BLOCK(sh.owner,ish.path)FROMIndirectShareholdish,ShareholdingshWHEREsh.holder=ish.ownerandsh.type=ish.typeandish.loop=0)SELECTholder,owner,typeFROMIndirectSharehold其中,||表示将两个字符串进行合并的操作符,LOCATE_BLOCK()为预先定义的功能函数,用于实现在一个字符串中定位另一个字符串并返回布尔值的功能。还可以在翻译后的SQL查询语句中使用其它SQL本身支持或再开发的功能函数,以提供所生成的SQL查询语句的性能。这可以通过对递归逻辑规则进行翻译的具体计算机算法或程序来实现。本领域的技术人员基于以上所描述的对递归逻辑规则进行的SQL翻译的策略,可以设计各种计算机算法或程序来具体实现其处理流程。为了简洁的目的,这里不再对具体处理流程进行详细描述,但应理解,各种具体处理流程均包括在本发明的范围之内。在聚合条件转换转换规则库406中,具体存储了进行如下的转换处理的规则(1)构造SELECT块、FROM块和WHERE块的方式与将限制条件描述进行转换时所遵守的规则相同。(2)在一个SQL查询语句中,使用临时表来获得满足网状关系维限定的实体实例结果集。(3)在SELECT块中插入具有DISTINCT关键字的聚合功能函数式(functor)(sum,avg,......)。(4)使用SQLSELECT...GROUP进行聚合限制,其中“GROUP”后填入被聚合的属性。聚合条件转换单元404根据上述聚合条件转换规则库406中所存储的转换规则将限制条件描述转换为用标准数据库操纵语言例如SQL进行描述的SQL查询语句。下面是按照上述规则将例举的聚合条件描述进行转换后所产生的SQL查询语句。WITHIndirectSharehold(holder,owner,type,path,loop)AS(SELECTsh.holder,sh.owner,sh.type,HEX(sh.owner),0FROMShareholdingshUNIONALLSELECTish.holder,sh.owner,sh.type,ish.path||sh.owner,LOCATE_BLOCK(sh.owner,ish.path)FROMIndirectShareholdish,ShareholdingshWHEREsh.holder=ish.ownerandsh.type=ish.typeandish.loop=0)SELECTish.type,SUM(DISTINCTc.asset)FROMCompanyc,IndirectShareholdishWHEREish.owner=c.cidandish.holder=“A”GROUPBYish.type对聚合后的结果再进行聚合操作(双重聚合或者多重聚合等迭代聚合)可以使用同样的方法,示例如下WITHIndirectSharehold(holder,owner,type,path,loop)AS(SELECTsh.holder,sh.owner,sh.type,HEX(sh.owner),0FROMShareholdingshUNIONALLSELECTish.holder,sh.owner,sh.type,ish.path||sh.owner,LOCATE_BLOCK(sh.owner,ish.path)FROMIndirectShareholdish,ShareholdingshWHEREsh.holder=ish.ownerandsh.type=ish.typeandish.loop=0),AssetSum(type,sum)AS(SELECTish.type,SUM(DISTINCTc.asset)FROMCompanyc,Indirect_shareholdishWHEREish.owner=c.cidandish.holder=“A”GROUPBYish.type)SELECTMAX(sum)FROMAssetSum此例中,临时表“AssetSum”(资产总和)被当作临时表用于二次聚合操作中。合并和输出单元407将限制条件转换单元403和聚合条件转换单元404所产生的结果合并起来,生成SQL程序,例如直接的SQL查询语句(Select),或者视图(CreatView)。根据本发明,可以通过简单的聚合描述和转换实现对网状关系维的聚合操作。对于本领域技术人员来说,将所述限制条件转换单元403和聚合条件转换单元404合并成一个转换单元实现它们两者的功能,和/或者将所述限制条件转换规则库405和聚合条件转换转换规则库406合并成一个转换规则库,将所有的转换规则放入一个转换规则库中都是可行的。另外,合并和输出单元407也可以和所述两个转换单元合并而以一个功能单元的方式实现。图10示意性地表示了其中可以实现本发明的实施方式的计算机系统。图10中所示的计算机系统包括CPU(中央处理单元)1001、RAM(随机存取存储器)1002、ROM(只读存储器)1003、系统总线1004,HD(硬盘)控制器1005、键盘控制器1006、串行接口控制器1007、并行接口控制器1008、显示器控制器1009、硬盘1010、键盘1011、串行外部设备1012、并行外部设备1013和显示器1014。在这些部件中,与系统总线1004相连的有CPU1001、RAM1002、ROM1003、HD控制器1005、键盘控制器1006,串行接口控制器1007,并行接口控制器1008和显示器控制器1009。硬盘1010与HD控制器1005相连,键盘1011与键盘控制器1006相连,串行外部设备1012与串行接口控制器1007相连,并行外部设备1013与并行接口控制器1008相连,以及显示器1014与显示器控制器1009相连。图10中每个部件的功能在本
技术领域
内都是众所周知的,并且图10所示的结构也是常规的。这种结构不仅用于个人计算机,而且用于手持设备,如PalmPC、PDA(个人数据助理)、移动电话等等。在不同的应用中,图10中所示的某些部件可以被省略。图10中所示的整个系统由通常作为软件存储在硬盘1010中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘1010中,或者从网络下载的软件可被加载到RAM1002中,并由CPU1001执行,以便完成由软件确定的功能。尽管图10中描述的计算机系统能够支持根据本发明的由网状关系维限定的聚合操作的方法,但是该计算机系统只是计算机系统的一个例子。本领域的熟练技术人员可以理解,许多其它计算机系统设计也能实现本发明。本发明还可以实现为一种例如由图10所示计算机系统所使用的计算机程序产品,其包含有用于本发明的方法的代码。在使用之前,可以把代码存储在其它计算机系统的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。第二实施方式根据本发明的第二实施方式,将描述处理和转换处理分别放在客户机和服务器处执行。图11示出根据本发明第二实施方式的系统方框图。其中,与图4相同的部分使用相同的附图标记,并且省略其描述。在第二实施方式中,客户机1包括聚合条件描述单元401,限制条件描述单元402,和收发器1101。服务器2包括限制条件转换单元403,聚合条件转换单元404,限制条件转换规则库405,聚合条件转换规则库406,合并和输出单元407和收发器1102。根据第二实施方式,在客户机1,聚合条件描述单元401和限制条件描述单元402所产生的描述结果通过收发器1101发送给服务器2。服务器2通过收发器1102接收描述结果,收发器1102将描述结果转发给限制条件转换单元403,聚合条件转换单元404进行转换处理。合并和输出单元407将转换结果通过收发器1102发送给客户机。客户机1的收发器1接所接收到的结果存储到未示出的存储器进行存储或者交给未图示的处理器进行处理。根据第二实施方式,客户机本身不需要具有转换功能。仅需将描述发送给服务器进行处理即可,从而节约了客户机端的处理成本。在客户机端和服务器端的计算机系统可以采用图10所示的计算机系统或者其它已知的数据处理装置。应该注意的是,上面所描述的实施方式只是用于说明本发明,并不构成对本发明的限制。虽然结合附图详细描述了本发明的实施方式,但是对于本领域的技术人员来说,仍可以对所述实施方式作出各种修改和变更而不改变本发明的实质和范围。因此,本发明的范围仅由所附权利要求限定。权利要求1.一种基于网状关系维的数据处理方法,其特征在于,包括聚合条件描述步骤,描述对具有网状关系的实体和/或所述实体之间的关系的属性执行的聚合作为聚合条件;限制条件描述步骤,描述该具有网状关系的实体之间的关系的传递规则作为限制条件;转换步骤,将所述聚合条件和所述限制条件转换为由数据库操纵语言所描述的语句。2.根据权利要求1所述的方法,其特征在于,在所述限制条件描述步骤中,还描述实体的属性或者实体之间的关系的属性作为限制条件。3.根据权利要求1或2所述的方法,其特征在于,所述传递规则包括递归型传递规则和非递归型传递规则,当所述数据库操纵语言为SQL语言时,所述非递归型传递规则被翻译为SQLSELECT查询语句,所述递归型传递规则被翻译为SQLWITH...AS查询语句。4.根据权利要求3所述的方法,其特征在于,在所述转换步骤,还记录所述递归型传递规则的传递路径,以防止死循环。5.根据权利要求1或2所述的方法,其特征在于,所述聚合条件描述包括迭代型聚合条件描述,用于基于前一个聚合操作的结果集进一步进行聚合操作。6.根据权利要求1或2所述的方法,其特征在于,当所述数据库操纵语言为SQL语言时,在所述转换步骤,将所述聚合条件描述翻译为SQLSELECT...GROUPBY语句。7.一种基于网状关系维的数据处理系统,其特征在于,包括聚合条件描述装置,用于描述对具有网状关系的实体和/或所述实体之间的关系的属性执行的聚合作为聚合条件;限制条件描述装置,用于描述该具有网状关系的实体之间的关系的传递规则作为限制条件;转换装置,用于将所述聚合条件和所述限制条件转换为由数据库操纵语言所描述的语句。8.根据权利要求7所述的系统,其特征在于,所述限制条件描述装置,还描述实体的属性或者实体之间的关系的属性作为限制条件。9.根据权利要求7或8所述的系统,其特征在于,所述传递规则包括递归型传递规则和非递归型传递规则,当所述数据库操纵语言为SQL语言时,所述非递归型传递规则被翻译为SQLSELECT查询语句,所述递归型传递规则被翻译为SQLWITH...AS查询语句。10.根据权利要求9所述的系统,其特征在于,所述转换装置,还记录所述递归型传递规则的传递路径,以防止死循环。11.根据权利要求7或8所述的系统,其特征在于,所述聚合条件描述包括迭代型聚合条件描述,用于基于前一个聚合操作的结果集进一步进行聚合操作。12.根据权利要求7或8所述的系统,其特征在于,当所述数据库操纵语言为SQL语言时,所述转换装置将所述聚合条件描述翻译为SQLSELECT...GROUPBY语句。13.一种计算机程序产品,该计算机程序产品包括存储在计算机可读存储介质中的程序代码,所述程序代码用于完成权利要求1-6中任何一个权利要求的方法的操作。全文摘要本发明提供一种基于网状关系维的数据处理方法和系统。其中,描述应对具有网状关系的实体和/或所述实体之间的关系的属性执行的聚合作为聚合条件;描述具有网状关系的实体之间的关系的传递规则作为限制条件;将所述聚合条件和所述限制条件转换为由数据库操纵语言所描述的语句。本发明使用简洁的描述方式对网状关系维进行描述,并能够高效地将该描述转换为标准的数据库操纵语言。文档编号G06F17/30GK101093495SQ200610094080公开日2007年12月26日申请日期2006年6月22日优先权日2006年6月22日发明者侯雪桥,胡岗,李波,刘涛,潘越申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1