CN101297290A - 用于控制关系型数据库系统的方法 - Google Patents

用于控制关系型数据库系统的方法 Download PDF

Info

Publication number
CN101297290A
CN101297290A CNA2005800519436A CN200580051943A CN101297290A CN 101297290 A CN101297290 A CN 101297290A CN A2005800519436 A CNA2005800519436 A CN A2005800519436A CN 200580051943 A CN200580051943 A CN 200580051943A CN 101297290 A CN101297290 A CN 101297290A
Authority
CN
China
Prior art keywords
data
database
relation
access path
tables
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CNA2005800519436A
Other languages
English (en)
Other versions
CN101297290B (zh
Inventor
M·默斯特尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mediareif Mostl & Reif Communication And Information Technology Oeg Corp
Original Assignee
Mediareif Mostl & Reif Communication And Information Technology Oeg Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mediareif Mostl & Reif Communication And Information Technology Oeg Corp filed Critical Mediareif Mostl & Reif Communication And Information Technology Oeg Corp
Publication of CN101297290A publication Critical patent/CN101297290A/zh
Application granted granted Critical
Publication of CN101297290B publication Critical patent/CN101297290B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2448Query languages for particular applications; for extensibility, e.g. user defined types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2445Data retrieval commands; View definitions

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Vehicle Body Suspensions (AREA)
  • Control Of Metal Rolling (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

本发明涉及通过使用数据库语言利用提供可用的所述关系表在关系型数据库中执行数据库查询来控制关系数据库系统的方法,关系型数据库包括作为相关数据结构的多个通过关系相互关联的数据表。通过指示处理函数要应用的数据表、并且指示要用于所述处理的所选数据表顺序创建无关系相关操作的可处理数据库指令。确定具体指出对所述数据库的访问顺序的访问路径。为此,根据两个相继数据表间存在的关系利用每两个相继的所选数据表间的关系表计算部分访问路径。然后将所有计算得到的部分访问路径组合成访问路径。

Description

用于控制关系型数据库系统的方法
本发明涉及通过使用数据库语言以及提供一个关系表,在关系型数据库中执行数据库查询来控制关系数据库系统的方法,关系型数据库包括作为相关数据结构的多个通过关系相互关联的数据表。
关系型数据库概念的特征在于,同其他数据库相比,通过减小冗余改善用户友好程度、分开程序和数据、表格结构和数据完整性。
进行了基于关系型数据库的模型开发数据库查询语言的多次尝试,其中,SQL是迄今为止最易用的。同时,将所有其他的方法如OLAP、OQL和TSQL等集成到SQL标准。
在实践中已经证实,仅针对当前状态实际使用的数据库的具体数据结构的查询是有弊端的。改变数据结构会立即改变查询。因此,对一个数据结构的同一查询针对另一数据结构可能看起来完全不同。
在许多情况下,SQL查询的主要元素由基于关系的操作形成,例如投影、联接或者选择,或者由基于集合的操作形成,如集合的并、交、差操作。这意味着总是要根据已有的关系信息使用至少一个数据表和约束的笛卡尔积。
下面的示例1示出了数据结构对查询公式的影响。
示例1:
输出所有位于奥地利维也纳的公司,根据公司名称、公司部门和联系人排序
数据结构1:
关系:companies<->departments<->contact_persons
SELECT companies.*,departments.*,contact_persons.*--------------处理函数
FROM companies,departments,contact_persons---------笛卡尔积;关系信息
WHERE(companies.company_ID=departments.company_#)--------关系信息
AND(departments.department_ID=contact_persons.departmetn_#)-关系信息
AND(companies.city=“Vienna”)-----------------------------------------处理函数
ORDER BY companies.name-----------------------------------------------处理函数
数据结构2:
关系:companies<->area_of_business<->departments<->contact_persons
SELECT companies.*,departments.*,contact_persons.*---------------处理函数
FROM companies,area_of_business,departments,contact_persons-笛卡尔积;关系信息
WHERE(companies.c_ID=area_of_business.c_#)---------------------关系信息
AND(area_of_business.area_ID=departments.area_#)----------------关系信息
AND(departments.d_ID=contact_persons.d_#)------------------------处理函数
ORDER BY companies.name-----------------------------------------------处理函数
可以看到,关系是基于给定数据结构的,因此对于每个数据库语句必须重新编写公式,从而依赖于数据结构。
本发明的目标是创建一种方法,消除数据库语句对数据结构的依赖,从而实现用户的简单使用。
本发明的另一个目标是允许符号长度的减少,从而使查询语句更为清楚明了。
本发明的另一目标是提供上述方法,其可以用只为一个特定数据结构编写的语句同时访问已有的不同数据结构。
根据本发明,上述目标通过如下方法实现
-通过指示处理函数要应用的所述数据表、并且指示要执行的所述处理所遵循的所选数据表的顺序来创建无关系相关操作的可处理数据库语句,
-通过首先根据每两个选择的相继数据表间存在的所述关系利用该两个相继的所选数据表间的所述关系表计算部分访问路径,然后将所有计算得到的部分访问路径组合成访问路径来确定具体指出对所述数据库的访问顺序的所述访问路径。
通过略去所有的关系相关的操作,数据库语句一方面被缩短,从而对于用户来说安排更清楚,另一方面,它呈现的形式与下层数据结构无关,从而在创建和处理速度方面提供了优势。通过使用对于每个数据结构已知的关系表,计算得到确定数据库访问顺序的访问路径,它既可以用于生成SQL语句,也可以在处理中直接使用。
关系表包含对应于和数据库查询相关的数据结构的所有关系,可以进一步包含随意生成的关系。
根据本发明的方法的一个可能实施例可以包含:为确定部分访问路径,根据图论将关系表读入图中,使用此方法形成的图来计算部分访问路径。这意味着根据本发明对访问路径的确定可以通过应用基本已知的技术以简单的方式实现。
实现本发明的另一个模式可以通过访问路径在数据库语句中引入关系相关的操作。引入的关系相关操作使得可以将根据本发明开发的数据库语句转化成程序形式的有效SQL语句,从而无需完全由用户自己创建、输入所有SQL数据库语句,特别是当涉及复杂的查询时。
根据本发明的另一替代实施例,被确定的提供了逐步参考数据表的访问路径可以在数据库语句中分开指示,在访问数据库时,这些数据表的参考被逐步访问。此处查询直接使用可处理数据库语句和确定的访问路径。
当有不同数据结构时,根据本发明的另一实施例,可以通过如下方法将对一个数据结构有效的数据库语句转化成对另一数据结构有效的数据库语句:
-从用于具有与之相关的第一数据结构的第一数据库的数据库语句中清除相关的第一基于关系的操作,
-在清除了第一关系的数据库语句中引入第二基于关系的操作,第二基于关系的操作对应于与第二数据库相关的第二数据结构,
-通过使用第二基于关系的操作的相关的表确定部分访问路径、将它们组合获得访问路径,根据包含第二基于关系的操作的所据库语句执行查询。
特别是对于大型数据库用户,它使得能够划算的将已有的针对特定数据结构的查询语句合并到针对不同数据结构的语句中。
所有上述创造性方法的实施例都适宜实现包含具有关系型数据库的计算机系统、数据处理单元及存储器的关系型数据库系统,所述数据处理单元根据本发明的方法进行工作。
此计算机程序可以是任意形式,但特别是在如具有计算机程序编码装置的软盘、CD或DVD的计算机可读介质上的计算机程序产品,其中计算机程序被加载后,程序使计算机执行根据本发明的方法,创建数据载体或电子载体信号。然而,也可能是包括电子载体信号上的计算机程序的计算机程序产品,其中加载计算机程序后,程序使计算机执行根据本发明的方法。
因此本发明的目标还通过提供数据载体或其等效的、可以读入关系型数据库系统的电子载体信号实现,其中存在于数据载体上的数据库语句没有任何关系相关的操作而只通过指示处理函数要应用的数据表、并且指示要执行的处理所遵循的所选数据表顺序而被创建,其特征还在于数据载体包含具体指明访问数据库顺序的访问路径,且该访问路径通过首先根据每两个选择的相继数据表间存在的关系利用该两个相继的所选数据表间关系表计算部分访问路径,然后将所有计算得到的部分访问路径组合成访问路径而确定。
包含数据库语句的发明数据载体的另一实施例可以包含访问路径,其根据本发明的方法确定,已引入至数据库语句,通过它访问关系型数据库,用于控制数据库系统。
或者,用于被读入根据本发明的关系型数据库系统的数据载体可以具有访问路径,其通过数据库语句访问关系型数据库(在数据载体上单独指示)用于控制数据库系统,访问路径提供逐步对数据表的参考,这些逐步对数据表的参考用于访问数据库。
此外本发明还涉及具有指令的计算机程序,其执行根据本发明的方法。
此外本发明还涉及具有计算机可读介质、以计算机程序编码形式存在的计算机程序产品,其中计算机程序加载后,此程序使计算机执行根据本发明的方法。
最后,本发明还涉及具有在电子载体信息上的计算机程序的计算机程序产品,其中计算机程序加载后,此程序使计算机执行根据本发明的方法。
下面将参考附图中示出的示例应用来详细说明本发明,其中:
图1的示意图是将本发明方法应用于查询示例(示例1)中的有序树;
图2示出的示意图是本发明方法在另一查询示例(示例2)中确定访问路径使用的有序树;
图3示出的示意图是第一数据结构的示例关系表;
图4示出的示意图是第二数据结构的示例关系表;和
图5示出的是本发明方法应用中使用的另一示例扩展关系表。
数据库系统的主要任务是保存和管理数据,通过数据库查询提供数据。
本发明涉及关系型数据库系统,其使用数据库语言来访问保存在数据库中的数据。在示出的示例实施例中,使用广泛应用的数据库语言SQL,但是本发明不限于此。
每个关系型数据库包括多个数据表形式的相关数据结构,其通过关系相互关联。数据表可以理解成如示例表1至表10示出的以行和列组织的数据。
在本说明书中,术语“行关系”指示表中每一行,即例如表1中的“companies”(company_ID、name、street、ZIP、city、no._of_staff)和表2中的“departments”(department_ID、company_#、department_name)。两个数据表间通过至少一个键值域相关联,如1:n;companies(company_ID)<->departments(company_#)被称作“关系”。“companies”表(表1)中的“company_ID”列是主键,在“departments”表(表2)中“company_#”列中可以有其任意数量的值。
Figure A20058005194300091
Figure A20058005194300101
Figure A20058005194300102
Figure A20058005194300103
Figure A20058005194300104
Figure A20058005194300111
Figure A20058005194300112
Figure A20058005194300113
Figure A20058005194300114
Figure A20058005194300121
Figure A20058005194300122
Figure A20058005194300123
Figure A20058005194300124
对于每个数据结构,提供了关系表,其包含与数据库查询相关的数据结构对应的所有关系,可选地还包括任意生成的关系。
Figure A20058005194300132
对于上述数据表1至表10的数据结构,可以用公式表达如下请求,其示出根据本发明的方法可以解决如何复杂的问题。下述示例参考上述数据结构。
示例2:
列出所有公司,包括它们年总事件营业额,其中今年至少建立10次联系,其市场部今年至少被预定3次事件,食物和饮料营业额超过50欧元。
在根据本发明的方法中,本质上要执行如下步骤:
1)形成没有任何关系操作的可处理数据库语句
2)确定访问路径
具体的,执行如下步骤:
1)指示处理函数和处理函数应用的数据表以及它们的列,以及根据执行处理的顺序和结构层次。
SELECT----------------------处理函数
companies--------------------处理函数应用的数据表
all columns(.*)--------------处理函数应用的列
指示“company”表的所有列
确定“invoice_line_item”表中相关列的所有项目总数和,限定在事件发生的年份(即今年)
因此,根据本发明创建的数据库语句结果如下:
SELECT companies.*,
        (SELECT SUM(invoice_line_items.line_item_total)
         WHERE(events.event_date=date.year))
WHERE(SELECT COUNT(contacts.*)
              WHERE(contacts.contact_date=date.year)
)>=10
AND(SELECT COUNT(events.*)
      WHERE(departments.department_name=”marketing”)
      AND(SELECT SUM(invoice_line_items.line_item_total)
       WHERE(additional_invoice_line_items_titles.line_item_title
               IN(“food”,“beverages”))
              )>50
      AND(events.event_date=date.year)
)>=3
[此处的”date.year”替换今年01-01至今年12-31间]
此查询只包含处理函数要应用的表,没有任何关系。因此,不依赖于任何数据结构,与此同时,符号的长度得到缩减,增加了清晰性。例如,消除了通常形成的由关系约束的笛卡尔积,因为此语句已经包含了可以结合关系表确定针对各个数据结构的访问路径时使用的所有信息,因此一方面实现了不依赖具体的数据结构,另一方面,用户查询的输入量缩短,只限于主要内容,这样就增加了清晰性。
2)根据要解决的问题的表述,呈现出使用的数据表的自然顺序,以及查询(语句)中的结构层次,其取决于要处理的子查询(子选择语句SUBSELECT),借助关系表(表11)从中确定部分访问路径,从而生成用于各个数据结构的SQL语句。
上述使用的数据表的顺序和结构层次优选以有序树7(图1)的形式呈现,其包括根节点10和节点11、12、13和14,节点14是节点13的子节点。
作为其信息域21,在有序树7的根节点10只包含了高层查询的所有数据表名称,例如使用在语句中相同的顺序以列表或阵列的形式保存,可选择地不包含重复的数据表名称。对于根节点10,其信息域21包含数据表COMPANIES(表1)。子查询(子选择语句)及它们的下级子查询(子选择语句中的子选择语句)是根节点10的下层,在树结构中是节点11、12、13、14。节点11、12、13、14的信息域22、23、24、25包含了子查询相应的数据表名称,其用在各自的子选择子句中,也优选使用列表或阵列的形式。对于节点13,这些是其信息域24中的数据表EVENTS(表5)、DEPARTMENTS(表2)、EVENTS(表5)。根据查询公式,节点13的子选择子句进一步包含子选择语句,即节点14,然后接着节点14的信息域中有数据表INVOICE_LINE_ITEMS(表9)和ADDITIONAL_INVOICE_LINE_ITEMS_TITLES(表10)。
树7以前序顺序运行:根节点10,节点11,节点12,节点13然后是节点14。
结构层次如下表示:
第1层:companies
根节点10,高层查询
第1.1层:invoice_line_items,events
节点11,主查询中SELECT部分中的子查询
第1.2层:contacts,contacts
节点12,主查询中WHERE部分中的子查询
第1.3层:events,departments,events
节点13,主查询中AND部分中的子查询
第1.3.1层:invoice_line_items,additional_invoice_line_times_titles
节点14,AND子查询中的子查询
接着通过计算部分访问路径确定指定具体数据库访问顺序的访问路径,根据相继数据表间已有的关系,通过两个所选相继数据表间的关系表计算部分访问路径,然后将所有计算得到的部分访问路径组合成访问路径。
注意由于在语句中省略了所有乘积描述(FROM部分),因此用处理函数公式形成的数据表顺序可能导致两次或多次遍历部分访问路径,这样在形成笛卡尔积时,相同的数据表可能被错误的多次考虑,导致错误的查询结果。
通过使用上述关系表(表11)确定的访问路径,现在可以根据本发明将关系操作引入数据库语句(示例2),生成可以由支持SQL标准的任意数据库系统处理的下述SQL语句(引入的操作显示成斜体字)。随后将阐述一种可能的计算方法。
SELECT companies.*,
    (SELECT SUM(invoice_line_items.line_item_total)
         FROM departments,contact_persons,events,invoices,invoice_line_items
         WHERE(companies.company_ID=departments.company_#)
         AND(departments.department_ID=contact_persons.department_#)
         AND(contact_persons.contact_person_ID=events.contact_person_#)
         AND(events.event_ID=invoices.event_#)
         AND(invoices.invoice_ID=invoice_line_items.invoice_#)
         AND(events.event_date=date.year)
    )
FROM companines
WHERE(SELECT COUNT(contacts.*)
    FROM departments,contact_persons,contacts
    WHERE(companies.company_ID=departments.company_#)
    AND(departments.department_ID=contact_persons.department_#)
    AND(contact_persons.contact_person_ID=contact.contact_person_#)
    AND(contacts.contact_date=date.year)
)>=10
AND(SELECT COUNT(events.*)
  FROM departments,contact_persons,events
  WHERE(companies.company_ID=departments.company_#)
  AND(departments.department_ID=contact_persons.department_#)
  AND(contact_persons.contact_person_ID=events.contact_person_#)
  AND(departments.department_name=”marketing”)
  AND(SELECT SUM(invoice_line_items.line_item_total)
    FROM invoices,invoice_line_items,additional_invoice_line_items_titles
    WHERE(events.event_ID=invoices.event_#)
    AND(invoices.invoice_ID=invoice_line_items.invoice_#)
    AND(invoice_line_items.line_item_#=additional_invoice_line_items_titles.line_item
    _ID)
    AND(additional_line_items_titles.line_item_title
               IN(“food”,“beverages”))
    )>50)
    AND(events.event_date=date.year)
)>=3
这种方法得到的语句长度与步骤1)中的相比清楚的显示了可以获得的有关长度和清晰性,尤其是与数据结构无关性的优势。
如果此语句保存成查询,本发明的符号和生成的符号可以同样使用,不再需要重新计算。只有当数据结构和/或语句本身需要改变或修改时才执行重新计算。因此消除了转化成SQL语句所需的短期时间。本领域的技术人员可以理解进一步的优化。
另一种可能是分开指示确定的访问路径,其提供了逐步对数据表的参考,逐步跟随这些数据表参考以访问数据库。此方法生成如下内容:
    WAY companies
    ->departments WHERE(companies.company_ID=departments.company_#)
    ->contact_persons WHERE
departments.department_ID=contact_persons.department_#)
    ->events
    WHERE(contact_persons.contact_person_ID=events.contact_person_#)
    ->invoices WHERE(events.event_ID=invoices.event_#)
    ->invoice_line_items
    WHERE(invoices.invoice_ID=invoice_line_items.invoice_#)
    ->additional_invoice_line_items_titles
WHERE(invoice_line_items.line_item_#=additional_invoice_line_items_titles.line_item_ID)
    contact_persons->contacts
    WHERE(contact_persons.contact_person_ID=contacts.contact_person_#)
SELECT companies.*,
    (SELECT SUM(invoice_line_items.line_item_total)
     WHERE(events.event_date=date.year))
WHERE(SELECT COUNT(contacts.*)
       WHERE(contacts.contact_date=date.year)
)>=10
AND(SELECT COUNT(events.*)
        WHERE(departments.department_name=”marketing”)
        AND(SELECT SUM(invoice_line_items.line_item_total)
                WHERE
(additional_invoice_line_items_titles.line_item_title
                              IN(“food”,“beverages”))
        )>50
        AND(events.event_date=date.year)
)>=3
这样就消除了在语句引入内容,访问路径提供了对数据表的逐步参考。在访问数据库时,逐步跟随这些参考。
下面说明通过图1中描述的有序树来确定访问路径的一种可能的算法,其参考简单的数据结构从而不因为表名称等分神以提供更好的理解。但要注意的是,此处提到的算法只是可用于计算的多种算法中的一种。
总体上,在确定总访问路径时要删除列表中重复的部分路径。
例如,提供的数据表是A、B、C、D、E、F、G、H。
有序树根节点的信息域包含:A、C、F、B。
结果得到如下部分路径:
部分路径AC:A B C
部分路径CF:C D E F
部分路径FB:F E D C B
因此未调整的总访问路径是:A B C D E F E D C B
可以看到,E D C B出现了两次,需要删除。因此正确的总访问路径是:A B C D E F
假定存在图2中示出的树,下面描述根据本发明的方法计算访问路径、通过执行下述步骤将之转化成SQL语句的多种可能的方法中的一种。
数据结构包含数据表A、B、C、D、E......
根据图2表示所基于的查询,为简化的目的获得如下树结构。
根(节点)101的信息域201包含C、A、D
节点102的信息域202包含G、E
节点103的信息域203包含F、I、G
节点104的信息域204包含K、H、K、B
节点105的信息域205包含G、D
属于数据结构的关系表,为了简化表示以简单的方式选择链接,字母相随的数据表通过各自相同的关系域相连,即A<-B、B<->C、C<->D......可以从表12(关系表)中看出,假定如下关系域:
表A    列a、z1
表B    列b、a1
表C    列c、b1
表D    列d、c1
......
Figure A20058005194300201
为给定查询创建的有序树根据所谓的前序顺序遍历所有节点,从第一节点开始,即有序树107的根节点101,然后根据所有其它节点的结构层次访问节点102、103、104、105。
第1层:C、A、D
根(节点)10
第1.1层:E、G
节点102
第1.2层:F、I、G
节点103
第1.2.1层:K、H、K、B
节点104
第1.3层:G、D
节点105
如前所述,图2示出了没有细节的查询树。根101(顶节点)的信息域201包含高层查询中第1层代表的所有数据表名称的列表或阵列或类似结构;如上所述,在此非特定查询中只指示处理函数应用的数据表。指示的数据表顺序是C、A、D。
在下一结构层次1.1中,为高层查询的每个子查询创建节点102、103、104,每个节点中的信息域202、203、205中以列表、阵列或类似结构包含各自子查询使用的数据表名称。例如节点102的顺序是G、E,节点103的顺序是F、I、G等等。
结构层次1.2.1代表子查询1.2(节点103)的子查询,在其信息域204中包含使用的数据表名称K、H、K、B。
在每个节点中,从根101开始遍历数据表名称列表,例如其信息域201中的数据表C、A、D,为列表中的每两个相继数据表计算部分访问路径,如上所述避免重复遍历,以避免不必要的导致错误的乘积计算。
注意在另一节点下的直接节点被称作此节点的(直接)继任者。相应的,另一节点被称作直接前任。
在节点的信息域中所有列表被遍历后,识别前序顺序中的下一个节点。确定下一节点的信息域的列表的第一数据表和其直接前任的信息域的列表的最后数据表间的部分访问路径,然后遍历所述下一节点的列表直到最后的数据表,如上所述。例如,
节点104;
遍历其信息域204中的数据表列表:
K、H、K、B。
根据前序顺序,下一节点是节点105,但节点105的直接前任是节点101,识别G(节点105)和D(节点101)间的链接,计算部分路径。然后遍历树107的节点105的信息域205中的数据表G、D。
如前面所提到的,在遍历每个节点后或遍历的过程中消除重复的部分路径,这样就舍弃包括根节点的各个节点或其前任中所有两次或多次出现的数据表名称和关系信息。
按如下步骤执行每个部分访问路径的计算。
首先,将例如关系表(表12)读入图,图中的每条边包含关系条件,使用图论确定两个数据表间的关系链接。
因此,例如对于第1层,在第一步中计算得到的A和C间的路径是C->A,最短路径是如下列表:
表         关系条件
C  B       b1    b
B  A       a1    a
然后是A->D,路径是A、B、C、D
表         关系条件
A  B       a     a1
B  C       b     b1
C  D       c     c1
这样,完成了第一节点101的信息域201中列表的遍历,现在接下来是调整,即消除具有相同值的行,然后将结果转化成字符串,在合适的位置引入SQL语句中(SELECT后,WHERE前)。
对于第1层,得到下列字符串:
FROM A,B,C,D
WHERE(A.a=B.a1)AND(B.b=C.b1)AND(C.c=D.c1)
这样就到达了当前节点(此例中是根节点)的列表尾部。下一步是确定是否有前任节点。对于根节点,根据定义它没有前任。
总结起来,执行如下步骤:
节点101的信息域201
C->A
A->D
结果:FROM A,B,C,D
      WHERE(A.a=B.a1)AND(B.b=C.b1)AND(C.c=D.c1)
                                                  
下一节点:102,前任节点:101
当前节点的第一数据表和前任节点的最后数据表
D->G
遍历列表
G->E
结果:FROM E,F,G
      WHERE(D.d=E.d1)AND(E.e=F.e1)AND(F.f=G.f1)
                                                  
下一节点:103,前任节点:101
当前节点的第一数据表和前任节点的最后数据表
D->F
遍历列表
F->I
I->G
结果:FROM E,F,G,H,I
      WHERE(D.d=E.d1)AND(E.e=F.e1)AND(F.f=G.f1)AND(G.g=H.g1)
AND(H.h=I.h1)
                                                  
下一节点:104,前任节点:103
当前节点的第一数据表和前任节点的最后数据表
G->K
遍历列表
K->H
H->K
K->B
结果:FROM J,K
      WHERE(I.i=J.i1)AND(J.j=K.j1)
                                                  
下一节点:105,前任节点:101
当前节点的第一数据表和前任节点的最后数据表
D->G
遍历列表
G->D
结果:FROM E,F,G
      WHERE(D.d=E.d1)AND(E.e=F.e1)AND(F.f=G.f1)
根据本发明的方法应用可以包含为如下情况,对于已有数据结构,存在多个已有的无法应用于另一数据结构的不同语句,因为数据表间有不同的关系。在实践中,公司合并时,或者是当从一个项目提供商转换到另一个提供商的过程中转换数据时,或者是由于速度下降改变数据结构时经常遇到这个问题。
由于本发明使得可以生成不参考特定数据结构的数据语句,因此下述过程变得可能。
从具有与之相关的第一数据结构的第一数据库的数据库语句中清除相关的第一关系操作。
然后,将与第二数据库相关的第二数据结构对应的第二关系操作引入清除了第一关系操作的数据库语句中。
现在可以通过确定部分访问路径、使用相关的第二关系表、然后将它们组合得到访问路径,根据包含第二关系操作的数据库语句执行查询。
SELECT A.*
FROM A
WHERE((SELECT COUNT(C.*)
    FROM B,C
    WHERE(A.a=B.a1)
    AND(B.b=C.b1)
    AND(C.field1=100)
)>20)
AND(A.field1=40)
清除:FROMA
清除:FROM B,C
从而在关系表中找到所有关系A-B和B-C和A-C
因此A.a=B.b1以及B.b=C.b1
本发明的语句剩下:
SELECT A.*
WHERE((SELECT COUNT(C.*)
               WHERE(C.field1=100)
)>20)
AND(A.field1=40)
发明方法可以使用新的关系表应用此语句。
为了展示数据结构对数据语句的影响,图3和图4示出了其它两个数据结构3和数据结构4各自不同关系表的示意图,在其上要执行相同的查询。
在图5中,以扩展的形式示出了图4中的数据结构4的关系表。除了通常的数据表之间的关系外,右边的列包含随意分配的名称或宏代码,在调用时可以替代左边列中的数据表设置或执行是。在本发明的主要内容的背景下,它使得能够进一步不依赖于数据结构,因为可能计算得到表名称及表域或给它们别的名称。
图5中的数据结构4的扩展关系表:
在此指示数据表的别名和数据域的别名,以及分割表有关的信息,如companies.city。
示例3:
市场部门有至少3名联系人的所有公司。
首先,根据本发明的示例应用中,指示根据查询所需的数据表和处理函数。
SELECT companies.*
WHERE(
    (SELECT COUNT(contact_persons.*)
           WHERE(department.name=”marketing”))
>=3)
针对数据结构3和数据结构4执行本发明的方法得到各自不同的SQL语句。
对于数据结构3:
SELECT companies.*
FROM companies
WHERE(
  (SELECT COUNT(*)
   FROM departments,contact_persons
   WHERE(companies.company_ID=departments.company_#)
    AND(departments.department_ID=contact_persons.department_#)
    AND(departments.name=”marketing”)
  )
>=3)
对于数据结构4:
SELECT companies.*
FROM companies
WHERE(
    (SELECT COUNT(*)
     FROM contact_persons,department_names
     WHERE(companies.company_ID=contact_persons.company_#)
     AND(contact_persons.department_#
     =department_names.department_ID)
     AND(department_names.title=”marketing”)
    )
>=3)

Claims (13)

1、一种控制方法,其通过使用数据库语言、利用提供的关系表在关系型数据库中执行数据库查询来控制关系型数据库系统,所述关系型数据库包含作为相关数据结构的多个通过关系相互关联的数据表,
其特征在于:
-通过指示处理函数要应用的所述数据表、并且指示要执行的所述处理所遵循的所选数据表的顺序来创建无关系相关操作的可处理数据库语句,
-通过首先根据每两个相继的选择的数据表间存在的所述关系利用该两个相继的所选数据表间的所述关系表计算部分访问路径,然后将所有计算得到的部分访问路径组合成访问路径来确定具体指出对所述数据库的访问顺序的所述访问路径。
2、根据权利要求1的方法,其特征在于所述关系表包含对应于和所述被查询的数据库相关的所述数据结构的所有关系,且可以进一步包含随意生成的关系。
3、根据权利要求1或2的方法,其特征在于为确定所述部分访问路径,将所述关系表根据图论读入图中,使用由此形成的图计算所述部分访问路径。
4、根据权利要求1、2或3的方法,其特征在于通过所述访问路径在所述数据库语句中引入基于关系的操作。
5、根据权利要求1、2或3的方法,其特征在于所述确定的提供对数据表的逐步参考的访问路径可以在所述数据库语句中被分开指示,且对于访问所述数据库所述数据表的所述参考被逐步遵循。
6、根据权利要求1至5中任意一项的方法,其特征在于:
-从用于具有与之相关的第一数据结构的第一数据库的数据库语句中清除所述相关的第一基于关系的操作,
-在清除了所述第一关系的所述数据库语句中引入第二基于关系的操作,所述第二基于关系的操作对应于与第二数据库相关的第二数据结构,
-通过使用所述第二基于关系的操作的所述相关的表确定所述部分访问路径、并将它们组合以获得访问路径,根据包含所述第二基于关系的操作的所述数据库语句执行所述查询。
7、一种关系型数据库系统,包含具有关系型数据库的计算机系统、数据处理单元和存储器,所述数据处理单元根据权利要求1至6中任意一项所述的方法工作。
8、一种数据载体,具有用于控制和读入根据权利要求7的关系型数据库系统的以数据库语言形成的数据库语句,其特征在于:存在于所述数据载体上的所述数据库语句没有任何关系相关的操作而只通过指示处理函数要应用的所述数据表、并且指示要执行的所述处理所遵循的所选数据表的顺序而被创建,其特征还在于所述数据载体包含具体指明访问所述数据库顺序的访问路径,且该访问路径通过首先根据每两个相继的选择的数据表间存在的所述关系利用该两个相继的所选数据表间的所述关系表计算部分访问路径,然后将所有计算得到的部分访问路径组合成访问路径而被确定。
9、根据权利要求8的用于读入根据权利要求7的关系型数据库的数据载体,其特征在于:所述数据载体包含数据库语句,其中引入了根据权利要求1至6中任意一项的方法确定的访问路径,其被使用以通过用于访问所述关系型数据库的所述数据库语句来控制所述数据库系统。
10、根据权利要求8的用于读入根据权利要求7的关系型数据库的数据载体,其特征在于:通过用于访问所述关系型数据库的所述数据库语句来控制所述数据库系统的所述访问路径在所述数据载体上被分开指示,所述访问路径提供对数据表的逐步参考,且对所述数据表的所述参考被逐步遵循以访问所述数据库。
11、一种计算机程序,具有用于执行根据权利要求1至6中任意一项的方法的指令。
12、一种计算机程序产品,具有带有计算机程序编码装置的计算机可读介质,其中在加载所述计算机程序后,使计算机执行根据权利要求1至6中任意一项的方法。
13、一种计算机程序产品,具有在电子载体信号上的计算机程序,其中在加载所述计算机程序后,使计算机执行根据权利要求1至6中任意一项的方法。
CN2005800519436A 2005-10-28 2005-10-28 用于控制关系型数据库系统的方法和设备 Expired - Fee Related CN101297290B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/AT2005/000430 WO2007048148A1 (de) 2005-10-28 2005-10-28 Verfahren zur steuerung eines relationalen datenbanksystems

Publications (2)

Publication Number Publication Date
CN101297290A true CN101297290A (zh) 2008-10-29
CN101297290B CN101297290B (zh) 2013-05-08

Family

ID=35427226

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800519436A Expired - Fee Related CN101297290B (zh) 2005-10-28 2005-10-28 用于控制关系型数据库系统的方法和设备

Country Status (9)

Country Link
EP (1) EP1941395B1 (zh)
JP (1) JP5087547B2 (zh)
CN (1) CN101297290B (zh)
AT (1) ATE476712T1 (zh)
CA (1) CA2626048A1 (zh)
DE (1) DE502005010057D1 (zh)
ES (1) ES2350243T3 (zh)
HK (1) HK1118118A1 (zh)
WO (1) WO2007048148A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306987A (zh) * 2015-10-23 2016-02-03 深圳国微技术有限公司 一种控制ts流接口输出码率的装置
CN106933929A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 调整数据表连接的方法和装置
CN108205593A (zh) * 2017-12-29 2018-06-26 华为技术有限公司 一种查询的方法及装置
CN111125155A (zh) * 2018-10-31 2020-05-08 北京国双科技有限公司 基于访问路径的数据查询方法、装置、存储介质及处理器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102646111A (zh) * 2012-02-16 2012-08-22 中国测绘科学研究院 一种基于知识库的通用关联信息查询树的快速构建方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3779431B2 (ja) * 1997-06-13 2006-05-31 富士通株式会社 リレーショナルデータベース管理装置,中間リンクテーブル自動作成処理方法およびプログラム記憶媒体
JP3856978B2 (ja) * 1999-03-30 2006-12-13 三菱電機株式会社 階層型分布図表示方式及びプログラムを記録したコンピュータ読み取り可能な記録媒体
DK173451B1 (da) * 1999-04-16 2000-11-20 Targit As Fremgangsmåde, apparat og databærer til behandling af forespørgsler til en database
US6834287B1 (en) * 2001-03-14 2004-12-21 Trilogy Development Group, Inc. Classification engine for managing attribute-based data
US20050076045A1 (en) * 2001-03-19 2005-04-07 Pal Stenslet Method and system for handling multiple dimensions in relational databases
US7617179B2 (en) * 2002-06-29 2009-11-10 Ianywhere Solutions, Inc. System and methodology for cost-based subquery optimization using a left-deep tree join enumeration algorithm
CN1560763B (zh) * 2004-02-19 2010-05-05 北京大学 一种可扩展标记语言路径查询翻译为结构查询的方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105306987A (zh) * 2015-10-23 2016-02-03 深圳国微技术有限公司 一种控制ts流接口输出码率的装置
CN105306987B (zh) * 2015-10-23 2018-06-22 深圳国微技术有限公司 一种控制ts流接口输出码率的装置
CN106933929A (zh) * 2015-12-31 2017-07-07 北京国双科技有限公司 调整数据表连接的方法和装置
CN106933929B (zh) * 2015-12-31 2020-02-07 北京国双科技有限公司 调整数据表连接的方法和装置
CN108205593A (zh) * 2017-12-29 2018-06-26 华为技术有限公司 一种查询的方法及装置
CN111125155A (zh) * 2018-10-31 2020-05-08 北京国双科技有限公司 基于访问路径的数据查询方法、装置、存储介质及处理器
CN111125155B (zh) * 2018-10-31 2023-10-27 北京国双科技有限公司 基于访问路径的数据查询方法、装置、存储介质及处理器

Also Published As

Publication number Publication date
HK1118118A1 (en) 2009-01-30
WO2007048148A1 (de) 2007-05-03
EP1941395A1 (de) 2008-07-09
CA2626048A1 (en) 2007-05-03
CN101297290B (zh) 2013-05-08
DE502005010057D1 (de) 2010-09-16
EP1941395B1 (de) 2010-08-04
JP2009514071A (ja) 2009-04-02
JP5087547B2 (ja) 2012-12-05
ATE476712T1 (de) 2010-08-15
ES2350243T3 (es) 2011-01-20

Similar Documents

Publication Publication Date Title
AU2005310977B2 (en) Aggregatable dimension information FN multidimensional enterprise software system
AU2005315254B2 (en) Reporting model generation within a multidimentional enterprise software system
JP6542154B2 (ja) データ検索装置、プログラム、及び記録媒体
AU2005315255B2 (en) Automated relational schema generation within a multidimentional enterprise software system
AU2005310967B2 (en) Automated default dimension selection within a multidimensional enterprise software system
US20070106637A1 (en) Method for Controlling a Relational Database System
US20130117648A1 (en) Spreadsheet data processing method and system
US20070005658A1 (en) System, service, and method for automatically discovering universal data objects
CN100447781C (zh) 用于将可扩展标记语言映射到n维数据结构的方法和系统
CN101297290A (zh) 用于控制关系型数据库系统的方法
JP2006524376A (ja) 汎用データベーススキーマ
JP2005018778A (ja) ディメンジョン属性およびディメンジョン当たり複数の階層を使用するオンライン分析処理のためのシステムおよび方法
JP5056384B2 (ja) 検索プログラム、方法及び装置
CA2503503A1 (en) Data processing method and data processing system
JP3552339B2 (ja) データベースシステム
JP2009048594A (ja) グローバル品目データ、品目管理プログラム、このプログラムにより動作する装置
KR20080068035A (ko) 관계형 데이터베이스 시스템을 제어하기 위한 방법
EP1221107A2 (en) Product catalogue production system

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130508

Termination date: 20151028

EXPY Termination of patent right or utility model