欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于控制關系型數(shù)據(jù)庫系統(tǒng)的方法

文檔序號:6554016閱讀:569來源:國知局

專利名稱::用于控制關系型數(shù)據(jù)庫系統(tǒng)的方法用于控制關系型數(shù)據(jù)庫系統(tǒng)的方法
技術領域
:本發(fā)明涉及通過使用數(shù)據(jù)庫語言以及提供一個關系表,在關系型數(shù)據(jù)庫中執(zhí)行數(shù)據(jù)庫查詢來控制關系數(shù)據(jù)庫系統(tǒng)的方法,關系型數(shù)據(jù)庫包括作為相關數(shù)據(jù)結構的多個通過關系相互關聯(lián)的數(shù)據(jù)表。關系型數(shù)據(jù)庫概念的特征在于,同其他數(shù)據(jù)庫相比,通過減小冗余改善用戶友好程度、分開程序和數(shù)據(jù)、表格結構和數(shù)據(jù)完整性。進行了基于關系型數(shù)據(jù)庫的模型開發(fā)數(shù)據(jù)庫查詢語言的多次嘗試,其中,SQL是迄今為止最易用的。同時,將所有其他的方法如OLAP、OQL和TSQL等集成到SQL標準。在實踐中已經(jīng)證實,僅針對當前狀態(tài)實際使用的數(shù)據(jù)庫的具體數(shù)據(jù)結構的查詢是有弊端的。改變數(shù)據(jù)結構會立即改變查詢。因此,對一個數(shù)據(jù)結構的同一查詢針對另一數(shù)據(jù)結構可能看起來完全不同。在許多情況下,SQL査詢的主要元素由基于關系的操作形成,例如投影、聯(lián)接或者選擇,或者由基于集合的操作形成,如集合的并、交、差操作。這意味著總是要根據(jù)已有的關系信息使用至少一個數(shù)據(jù)表和約束的笛卡爾積。下面的示例1示出了數(shù)據(jù)結構對査詢公式的影響。薪幼厥存位于,邀#維逸謝游公豕被薪公^名薪、公眾薪/7浙凝系義鎮(zhèn)序示例1:關系companies<國>departments<->contact_persons----------處理函數(shù)笛卡爾積;關系信關系信AND(departments.department_ID=contact_persons.departmetn—#)-關系信息AND(companies.city="Vienna")-----------------------------------------處理函數(shù)ORDERBYcompanies.name-----------------------------------------------處理函數(shù)關系companies<->area—of—business<->departments<->contact_personsSELECTcompanies.*,departments.*,contact_persons.*---------------處理函數(shù)FROMcompanies,area_of—business,departments,contact__persons-笛卡爾積;關系信息WHERE(companies.c_ID=area_of—business.c—#)---------------------關系信息AND(area—of—business.area一ID=departmentsarea—#)----------------關系信息AND(departments.d—ID=contact_persons.d_#)------------------------處理函數(shù)ORDERBYcompanies.name-----------------------------------------------處理函數(shù)可以看到,關系是基于給定數(shù)據(jù)結構的,因此對于每個數(shù)據(jù)庫語句必須重新編寫公式,從而依賴于數(shù)據(jù)結構。本發(fā)明的目標是創(chuàng)建一種方法,消除數(shù)據(jù)庫語句對數(shù)據(jù)結構的依賴,從而實現(xiàn)用戶的簡單使用。本發(fā)明的另一個目標是允許符號長度的減少,從而使査詢語句更為清楚明了。本發(fā)明的另一目標是提供上述方法,其可以用只為一個特定數(shù)據(jù)結構編寫的語句同時訪問已有的不同數(shù)據(jù)結構。根據(jù)本發(fā)明,上述目標通過如下方法實現(xiàn)一通過指示處理函數(shù)要應用的所述數(shù)據(jù)表、并且指示要執(zhí)行的所述處理所遵循的所選數(shù)據(jù)表的順序來創(chuàng)建無關系相關操作的可處理數(shù)據(jù)庫語句,一通過首先根據(jù)每兩個選擇的相繼數(shù)據(jù)表間存在的所述關系利用該兩個相繼的所選數(shù)據(jù)表間的所述關系表計算部分訪問路徑,然后將所有計算得到的部分訪問路徑組合成訪問路徑來確定具體指出對所述數(shù)據(jù)庫的訪問順序的所述訪問路徑。通過略去所有的關系相關的操作,數(shù)據(jù)庫語句一方面被縮短,從而對于用戶來說安排更清楚,另一方面,它呈現(xiàn)的形式與下層數(shù)據(jù)結構無關,從而在創(chuàng)建和處理速度方面提供了優(yōu)勢。通過使用對于每個數(shù)據(jù)結構已知的關系表,計算得到確定數(shù)據(jù)庫訪問順序的訪問路徑,它既可以用于生成SQL語句,也可以在處理中直接使用。關系表包含對應于和數(shù)據(jù)庫查詢相關的數(shù)據(jù)結構的所有關系,可以進一步包含隨意生成的關系。根據(jù)本發(fā)明的方法的一個可能實施例可以包含為確定部分訪問路徑,根據(jù)圖論將關系表讀入圖中,使用此方法形成的圖來計算部分訪問路徑。這意味著根據(jù)本發(fā)明對訪問路徑的確定可以通過應用基本己知的技術以簡單的方式實現(xiàn)。實現(xiàn)本發(fā)明的另一個模式可以通過訪問路徑在數(shù)據(jù)庫語句中弓I入關系相關的操作。引入的關系相關操作使得可以將根據(jù)本發(fā)明開發(fā)的數(shù)據(jù)庫語句轉化成程序形式的有效SQL語句,從而無需完全由用戶自己創(chuàng)建、輸入所有SQL數(shù)據(jù)庫語句,特別是當涉及復雜的查詢時。根據(jù)本發(fā)明的另一替代實施例,被確定的提供了逐步參考數(shù)據(jù)表的訪問路徑可以在數(shù)據(jù)庫語句中分開指示,在訪問數(shù)據(jù)庫時,這些數(shù)據(jù)表的參考被逐步訪問。此處查詢直接使用可處理數(shù)據(jù)庫語句和確定的訪問路徑。當有不同數(shù)據(jù)結構時,根據(jù)本發(fā)明的另一實施例,可以通過如下方法將對一個數(shù)據(jù)結構有效的數(shù)據(jù)庫語句轉化成對另一數(shù)據(jù)結構有效的數(shù)據(jù)庫語句一從用于具有與之相關的第一數(shù)據(jù)結構的第一數(shù)據(jù)庫的數(shù)據(jù)庫語句中清除相關的第一基于關系的操作,—在清除了第一關系的數(shù)據(jù)庫語句中引入第二基于關系的操作,第二基于關系的操作對應于與第二數(shù)據(jù)庫相關的第二數(shù)據(jù)結構,一通過使用第二基于關系的操作的相關的表確定部分訪問路徑、將它們組合獲得訪問路徑,根據(jù)包含第二基于關系的操作的所據(jù)庫語句執(zhí)行查詢。特別是對于大型數(shù)據(jù)庫用戶,它使得能夠劃算的將已有的針對特定數(shù)據(jù)結構的査詢語句合并到針對不同數(shù)據(jù)結構的語句中。所有上述創(chuàng)造性方法的實施例都適宜實現(xiàn)包含具有關系型數(shù)據(jù)庫的計算機系統(tǒng)、數(shù)據(jù)處理單元及存儲器的關系型數(shù)據(jù)庫系統(tǒng),所述數(shù)據(jù)處理單元根據(jù)本發(fā)明的方法進行工作。此計算機程序可以是任意形式,但特別是在如具有計算機程序編碼裝置的軟盤、CD或DVD的計算機可讀介質上的計算機程序產(chǎn)品,其中計算機程序被加載后,程序使計算機執(zhí)行根據(jù)本發(fā)明的方法,創(chuàng)建數(shù)據(jù)載體或電子載體信號。然而,也可能是包括電子載體信號上的計算機程序的計算機程序產(chǎn)品,其中加載計算機程序后,程序使計算機執(zhí)行根據(jù)本發(fā)明的方法。因此本發(fā)明的目標還通過提供數(shù)據(jù)載體或其等效的、可以讀入關系型數(shù)據(jù)庫系統(tǒng)的電子載體信號實現(xiàn),其中存在于數(shù)據(jù)載體上的數(shù)據(jù)庫語句沒有任何關系相關的操作而只通過指示處理函數(shù)要應用的數(shù)據(jù)表、并且指示要執(zhí)行的處理所遵循的所選數(shù)據(jù)表順序而被創(chuàng)建,其特征還在于數(shù)據(jù)載體包含具體指明訪問數(shù)據(jù)庫順序的訪問路徑,且該訪問路徑通過首先根據(jù)每兩個選擇的相繼數(shù)據(jù)表間存在的關系利用該兩個相繼的所選數(shù)據(jù)表間關系表計算部分訪問路徑,然后將所有計算得到的部分訪問路徑組合成訪問路徑而確定。包含數(shù)據(jù)庫語句的發(fā)明數(shù)據(jù)載體的另一實施例可以包含訪問路徑,其根據(jù)本發(fā)明的方法確定,已引入至數(shù)據(jù)庫語句,通過它訪問關系型數(shù)據(jù)庫,用于控制數(shù)據(jù)庫系統(tǒng)?;蛘?,用于被讀入根據(jù)本發(fā)明的關系型數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)載體可以具有訪問路徑,其通過數(shù)據(jù)庫語句訪問關系型數(shù)據(jù)庫(在數(shù)據(jù)載體上單獨指示)用于控制數(shù)據(jù)庫系統(tǒng),訪問路徑提供逐步對數(shù)據(jù)表的參考,這些逐步對數(shù)據(jù)表的參考用于訪問數(shù)據(jù)庫。此外本發(fā)明還涉及具有指令的計算機程序,其執(zhí)行根據(jù)本發(fā)明的方法。此外本發(fā)明還涉及具有計算機可讀介質、以計算機程序編碼形式存在的計算機程序產(chǎn)品,其中計算機程序加載后,此程序使計算機執(zhí)行根據(jù)本發(fā)明的方法。最后,本發(fā)明還涉及具有在電子載體信息上的計算機程序的計算機程序產(chǎn)品,其中計算機程序加載后,此程序使計算機執(zhí)行根據(jù)本發(fā)明的方法。下面將參考附圖中示出的示例應用來詳細說明本發(fā)明,其中圖1的示意圖是將本發(fā)明方法應用于查詢示例(示例1)中的有序樹;圖2示出的示意圖是本發(fā)明方法在另一查詢示例(示例2)中確定訪問路徑使用的有序樹;圖3示出的示意圖是第一數(shù)據(jù)結構的示例關系表;圖4示出的示意圖是第二數(shù)據(jù)結構的示例關系表;和圖5示出的是本發(fā)明方法應用中使用的另一示例擴展關系表。數(shù)據(jù)庫系統(tǒng)的主要任務是保存和管理數(shù)據(jù),通過數(shù)據(jù)庫查詢提供數(shù)據(jù)。本發(fā)明涉及關系型數(shù)據(jù)庫系統(tǒng),其使用數(shù)據(jù)庫語言來訪問保存在數(shù)據(jù)庫中的數(shù)據(jù)。在示出的示例實施例中,使用廣泛應用的數(shù)據(jù)庫語言SQL,但是本發(fā)明不限于此。每個關系型數(shù)據(jù)庫包括多個數(shù)據(jù)表形式的相關數(shù)據(jù)結構,其通過關系相互關聯(lián)。數(shù)據(jù)表可以理解成如示例表1至表IO示出的以行和列組織的數(shù)據(jù)。在本說明書中,術語"行關系"指示表中每一行,即例如表1中的"companies"(company—ID、name、street、ZIP、city、no.—of—staff)禾口表2中的"departments"(department—ID、company—#、department—name)。兩個數(shù)據(jù)表間通過至少一個鍵值域相關聯(lián),如l:n;companies(company—ID)<->departments(company—#)被稱作"關系"。"companies,,表(表1)中的"company—ID"列是主鍵,在"departments,,表(表2)中"company—#"列中可以有其任意數(shù)量的值。表l:companies(公司)<table>tableseeoriginaldocumentpage9</column></row><table><table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>表5:events(事件)<table>tableseeoriginaldocumentpage11</column></row><table>表6:events—status(事件狀態(tài))<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>對于上述數(shù)據(jù)表1至表10的數(shù)據(jù)結構,可以用公式表達如下請求,其示出根據(jù)本發(fā)明的方法可以解決如何復雜的問題。下述示例參考上述數(shù)據(jù)結構。^幼公眾,包翁&//7牟^事#,盧親^^今年至少簏立^汰薪孔顛場眾辨趙省縱3汰靴會激微/措蕭艦50軀。在根據(jù)本發(fā)明的方法中,本質上要執(zhí)行如下步驟1)形成沒有任何關系操作的可處理數(shù)據(jù)庫語句2)確定訪問路徑具體的,執(zhí)行如下步驟1)指示處理函數(shù)和處理函數(shù)應用的數(shù)據(jù)表以及它們的列,以及根據(jù)執(zhí)行處理的順序和結構層次。SELECT----------------------處理函數(shù)companies--------------------處理函數(shù)應用的數(shù)據(jù)表allcolumns(.*)--------------處理函數(shù)應用的列指示"company"表的所有列確定"invoice一line—item"表中相關列的所有項目總數(shù)和,限定在事件發(fā)生的年份(即今年)因此,根據(jù)本發(fā)明創(chuàng)建的數(shù)據(jù)庫語句結果如下SELECTcompanies.*,(SELECTSUM(invoice一line一items.line—item_t.otal)WHERE(events.event一date-date.year))WHERE(SELECTCOUNT(contacts."WHERE(contacts.contact_date=date.year))>=10AND(SELECTCOUNT(events."WHERE(departments.department—name=,,marketing,,)AND(SELECTSUM(invoice一line一items.line—item—total)WHERE(additional—invoiceJine一items—titles.line—item一titleIN("food","beverages")))>50AND(events.event一date=date.year))>=3[此處的"date.year"替換今年01-01至今年12-31間〗此査詢只包含處理函數(shù)要應用的表,沒有任何關系。因此,不依賴于任何數(shù)據(jù)結構,與此同時,符號的長度得到縮減,增加了清晰性。例如,消除了通常形成的由關系約束的笛卡爾積,因為此語句已經(jīng)包含了可以結合關系表確定針對各個數(shù)據(jù)結構的訪問路徑時使用的所有信息,因此一方面實現(xiàn)了不依賴具體的數(shù)據(jù)結構,另一方面,用戶查詢的輸入量縮短,只限于主要內容,這樣就增加了清晰性。2)根據(jù)要解決的問題的表述,呈現(xiàn)出使用的數(shù)據(jù)表的自然順序,以及査詢(語句)中的結構層次,其取決于要處理的子査詢(子選擇語句SUBSELECT),借助關系表(表11)從中確定部分訪問路徑,從而生成用于各個數(shù)據(jù)結構的SQL語句。上述使用的數(shù)據(jù)表的順序和結構層次優(yōu)選以有序樹7(圖1)的形式呈現(xiàn),其包括根節(jié)點IO和節(jié)點11、12、13和14,節(jié)點14是節(jié)點3的子節(jié)點。作為其信息域21,在有序樹7的根節(jié)點IO只包含了高層查詢的所有數(shù)據(jù)表名稱,例如使用在語句中相同的順序以列表或陣列的形式保存,可選擇地不包含重復的數(shù)據(jù)表名稱。對于根節(jié)點10,其信息域21包含數(shù)據(jù)表COMPANIES(表l)。子查詢(子選擇語句)及它們的下級子查詢(子選擇語句中的子選擇語句)是根節(jié)點IO的下層,在樹結構中是節(jié)點ll、12、13、14。節(jié)點11、12、13、14的信息域22、23、24、25包含了子查詢相應的數(shù)據(jù)表名稱,其用在各自的子選擇子句中,也優(yōu)選使用列表或陣列的形式。對于節(jié)點13,這些是其信息域24中的數(shù)據(jù)表EVENTS(表5)、DEPARTMENTS(表2)、EVENTS(表5)。根據(jù)查詢公式,節(jié)點13的子選擇子句進一步包含子選擇語句,即節(jié)點14,然后接著節(jié)點14的信息域中有數(shù)據(jù)表INVOICE—LINE—ITEMS(表9)和ADDITIONAL—INVOICE—LINE—ITEMS_TITLES(表10)。樹7以前序順序運行根節(jié)點10,節(jié)點11,節(jié)點12,節(jié)點13然后是節(jié)點14。(結構層次如下表示第1層compa"fes根節(jié)點IO,高層查詢第1.1層〖"voz.ce_/z>7e—"ems,eve敏節(jié)點ll,主查詢中SELECT部分中的子査詢第1.2層cowto幼節(jié)點12,主查詢中WHERE部分中的子査詢第1.3層eve她,de/cJT加e她,eve他節(jié)點13,主查詢中AND部分中的子査詢第1.3.1層/vo/c6—/if"e—"ews,acil^'"cwa/—i'打vo!'ce—/i'打e—fz'mes—rif/es節(jié)點14,AND子查詢中的子査詢接著通過計算部分訪問路徑確定指定具體數(shù)據(jù)庫訪問順序的訪問路徑,根據(jù)相繼數(shù)據(jù)表間已有的關系,通過兩個所選相繼數(shù)據(jù)表間的關系表計算部分訪問路徑,然后將所有計算得到的部分訪問路徑組合成訪問路徑。注意由于在語句中省略了所有乘積描述(FROM部分),因此用處理函數(shù)公式形成的數(shù)據(jù)表順序可能導致兩次或多次遍歷部分訪問路徑,這樣在形成笛卡爾積時,相同的數(shù)據(jù)表可能被錯誤的多次考慮,導致錯誤的查詢結果。通過使用上述關系表(表11)確定的訪問路徑,現(xiàn)在可以根據(jù)本發(fā)明將關系操作引入數(shù)據(jù)庫語句(示例2),生成可以由支持SQL標準的任意數(shù)據(jù)庫系統(tǒng)處理的下述SQL語句(引入的操作顯示成斜體字)。隨后將闡述一種可能的計算方法。SELECTcompanies,*,(SELECTSUM(invoice—line—items.line—item—total)AND(events.event-date=date.year))WHERE(SELECTCOUNT(contacts,)爿Mr鄉(xiāng)"r加e敏(5fe戸咖e《7》co咖"jew肌鄉(xiāng)"幽e"fJAND(contacts.contact一date-date,year))>=10AND(SELECTCOUNT(events."^TffiT五(i:ow/"m'e&c柳j"^y一/D二(sfepa/Y柳7^1.compa打少J^WDf^/",加e船.cfej7aWm加一/D-co/""Cj7e/w肌c/^7"r加cw/JXM)^pe,肌c贈a"jDe,/z一/D-eve她.C(她"jm^一存,AND(departments,department—name=,,marketing")AND(SELECTSUM(i謂ice—line—items.line—item—total)一邱AND(additional一line一items一titles.line—item—titleIN("food","beverages")))>50)AND(events.event—date=date.year))〉=3這種方法得到的語句長度與步驟l)中的相比清楚的顯示了可以獲得的有關長度和清晰性,尤其是與數(shù)據(jù)結構無關性的優(yōu)勢。如果此語句保存成査詢,本發(fā)明的符號和生成的符號可以同樣使用,不再需要重新計算。只有當數(shù)據(jù)結構和/或語句本身需要改變或修改時才執(zhí)行重新計算。因此消除了轉化成SQL語句所需的短期時間。本領域的技術人員可以理解進一步的優(yōu)化。另一種可能是分開指示確定的訪問路徑,其提供了逐步對數(shù)據(jù)表的參考,逐歩跟隨這些數(shù)據(jù)表參考以訪問數(shù)據(jù)庫。此方法生成如下內容->de/w/加加51JWi/EitE—附戸"i^!.co附戸";/—/Z)-cte;7ar加e船.c:om/7""少—iie;7"r驗敝^p"W膨"/—/Z-co"to"J7"5ww.de/7"/Y/ne"fJ->統(tǒng)船->i'"voi'ce」tVieJfe附SELECTcompanies.*,(SELECTSUM(invoice一line一items.line—item—total)WHERE(events.event—date=date.year))WHERE(SELECTCOUNT(contacts,)WHERE(contacts.contact—date=date.year))>=10AND(SELECTCOUNT(events.*)WHERE(departments.department—name="marketing,,)AND(SELECTSUM(i謂ice一line一items.line一item一total)WHERE(additional—invoice—line—items—titles.Hnejtem—titleIN("food","beverages")))>50AND(events.event—date,date.year))>-3這樣就消除了在語句引入內容,訪問路徑提供了對數(shù)據(jù)表的逐步參考。在訪問數(shù)據(jù)庫時,逐步跟隨這些參考。下面說明通過圖1中描述的有序樹來確定訪問路徑的一種可能的算法,其參考簡單的數(shù)據(jù)結構從而不因為表名稱等分神以提供更好的理解。但要注意的是,此處提到的算法只是可用于計算的多種算法中的一種??傮w上,在確定總訪問路徑時要刪除列表中重復的部分路徑。例如,提供的數(shù)據(jù)表是A、B、C、D、E、F、G、H。有序樹根節(jié)點的信息域包含A、C、F、B。結果得到如下部分路徑部分路徑AC:ABC部分路徑CF:CDEF部分路徑FB:FEDCB因此未調整的總訪問路徑是ABCDEFEDCB可以看到,EDCB出現(xiàn)了兩次,需要刪除。因此正確的總訪問路徑是ABCDEF假定存在圖2中示出的樹,下面描述根據(jù)本發(fā)明的方法計算訪問路徑、通過執(zhí)行下述步驟將之轉化成SQL語句的多種可能的方法中的一種。數(shù)據(jù)結構包含數(shù)據(jù)表A、B、C、D、E......根據(jù)圖2表示所基于的查詢,為簡化的目的獲得如下樹結構。根(節(jié)點)101的信息域201包含C、A、D節(jié)點102的信息域202包含G、E節(jié)點103的信息域203包含F(xiàn)、I、G節(jié)點104的信息域204包含K、H、K、B節(jié)點105的信息域205包含G、D屬于數(shù)據(jù)結構的關系表,為了簡化表示以簡單的方式選擇鏈接,字母相隨的數(shù)據(jù)表通過各自相同的關系域相連,即A<-B、B<->C、C<->D......可以從表12(關系表)中看出,假定如下關系域.-表A列a、zl表B列b、al表C列c、bl表D列d、cl表12:圖2的關系表FromTable(來自哪個表)FromColumn沐自哪一列)ToTable(至哪個表)ToColumn(至哪一列)TypeofRelation(關系類型)ABall:nBbCbll:nCcDcll:nDdEcH:n<table>tableseeoriginaldocumentpage20</column></row><table>為給定査詢創(chuàng)建的有序樹根據(jù)所謂的前序順序遍歷所有節(jié)點,從第一節(jié)點開始,即有序樹107的根節(jié)點101,然后根據(jù)所有其它節(jié)點的結構層次訪問節(jié)點102、103、104、105。第l層C、j、D根(節(jié)點)io第1.1層£、G節(jié)點102第1.2層F、/、G節(jié)點103第1.2.1層尺、//、尺、5節(jié)點104第1.3層(、£>節(jié)點105如前所述,圖2示出了沒有細節(jié)的查詢樹。根IOI(頂節(jié)點)的信息域201包含高層査詢中第1層代表的所有數(shù)據(jù)表名稱的列表或陣列或類似結構;如上所述,在此非特定査詢中只指示處理函數(shù)應用的數(shù)據(jù)表。指示的數(shù)據(jù)表順序是C、A、D。在下一結構層次1.1中,為高層査詢的每個子査詢創(chuàng)建節(jié)點102、103、104,每個節(jié)點中的信息域202、203、205中以列表、陣列或類似結構包含各自子查詢使用的數(shù)據(jù)表名稱。例如節(jié)點102的順序是G、E,節(jié)點103的順序是F、I、G等等。結構層次1.2.1代表子查詢1.2(節(jié)點103)的子査詢,在其信息域204中包含使用的數(shù)據(jù)表名稱K、H、K、B。在每個節(jié)點中,從根101幵始遍歷數(shù)據(jù)表名稱列表,例如其信息域201中的數(shù)據(jù)表C、A、D,為列表中的每兩個相繼數(shù)據(jù)表計算部分訪問路徑,如上所述避免重復遍歷,以避免不必要的導致錯誤的乘積計算。注意在另一節(jié)點下的直接節(jié)點被稱作此節(jié)點的(直接)繼任者。相應的,另一節(jié)點被稱作直接前任。在節(jié)點的信息域中所有列表被遍歷后,識別前序順序中的下一個節(jié)點。確定下一節(jié)點的信息域的列表的第一數(shù)據(jù)表和其直接前任的信息域的列表的最后數(shù)據(jù)表間的部分訪問路徑,然后遍歷所述下一節(jié)點的列表直到最后的數(shù)據(jù)表,如上所述。例如,節(jié)點104;遍歷其信息域204中的數(shù)據(jù)表列表K、H、K、B。根據(jù)前序順序,下一節(jié)點是節(jié)點105,但節(jié)點105的直接前任是節(jié)點101,識別G(節(jié)點105)和D(節(jié)點101)間的鏈接,計算部分路徑。然后遍歷樹107的節(jié)點105的信息域205中的數(shù)據(jù)表G、D。如前面所提到的,在遍歷每個節(jié)點后或遍歷的過程中消除重復的部分路徑,這樣就舍棄包括根節(jié)點的各個節(jié)點或其前任中所有兩次或多次出現(xiàn)的數(shù)據(jù)表名稱和關系信息。按如下步驟執(zhí)行每個部分訪問路徑的計算。首先,將例如關系表(表12)讀入圖,圖中的每條邊包含關系條件,使用圖論確定兩個數(shù)據(jù)表間的關系鏈接。因此,例如對于第1層,在第一步中計算得到的A和C間的路徑是C->A,最短路徑是如下列表表關系條件CBblbBAala然后是A》D,路徑是A、B、C、D表關系條件ABaalBCbblCDccl這樣,完成了第一節(jié)點101的信息域201中列表的遍歷,現(xiàn)在接下來是調整,即消除具有相同值的行,然后將結果轉化成字符串,在合適的位置引入SQL語句中(SELECT后,WHERE前〉。對于第1層,得到下列字符串-FROMA,B,C,DWHERE(A.a=B.al)AND(B.b=C.bl)AND(C.c=D.cl)這樣就到達了當前節(jié)點(此例中是根節(jié)點)的列表尾部。下一步是確定是否有前任節(jié)點。對于根節(jié)點,根據(jù)定義它沒有前任。總結起來,執(zhí)行如下步驟節(jié)點101的信息域201C->AA->D結果FROMA,B,C,DWHERE(A.a-B.al)AND(B.b=CM)AND(C.c=D.cl)下一節(jié)點102,前任節(jié)點101當前節(jié)點的第一數(shù)據(jù)表和前任節(jié)點的最后數(shù)據(jù)表D->G遍歷列表G->E結果FROME,F,GWHERE(D.d=E.dl)AND(E.e=F.el)AND(Rf-G.fl)___下一節(jié)點103,前任節(jié)點:101當前節(jié)點的第一數(shù)據(jù)表和前任節(jié)點的最后數(shù)據(jù)表D->F遍歷列表F->II->G結果FROME,F,QH,IWHERE(D.d-E.dl)AND(E.e-F.el)AND(F.^Gfl)AND(G.g=H.gl)AND(H.h=I.hl)__下一節(jié)點104,前任節(jié)點:103當前節(jié)點的第一數(shù)據(jù)表和前任節(jié)點的最后數(shù)據(jù)表G->K遍歷列表K陽〉HH->KK->B結果FROMJ,KWHERE(I.i=J.il)AND(J.j=K.jl)下一節(jié)點105,前任節(jié)點101當前節(jié)點的第一數(shù)據(jù)表和前任節(jié)點的最后數(shù)據(jù)表D->G遍歷列表G->D結果FROME,F,GWHERE(D.d-E.dl)AND(E.e=F.el)AND(F.f=G.fl)根據(jù)本發(fā)明的方法應用可以包含為如下情況,對于已有數(shù)據(jù)結構,存在多個己有的無法應用于另一數(shù)據(jù)結構的不同語句,因為數(shù)據(jù)表間有不同的關系。在實踐中,公司合并時,或者是當從一個項目提供商轉換到另一個提供商的過程中轉換數(shù)據(jù)時,或者是由于速度下降改變數(shù)據(jù)結構時經(jīng)常遇到這個問題。由于本發(fā)明使得可以生成不參考特定數(shù)據(jù)結構的數(shù)據(jù)語句,因此下述過程變得可能。從具有與之相關的第一數(shù)據(jù)結構的第一數(shù)據(jù)庫的數(shù)據(jù)庫語句中清除相關的第一關系操作。然后,將與第二數(shù)據(jù)庫相關的第二數(shù)據(jù)結構對應的第二關系操作引入清除了第一關系操作的數(shù)據(jù)庫語句中?,F(xiàn)在可以通過確定部分訪問路徑、使用相關的第二關系表、然后將它們組合得到訪問路徑,根據(jù)包含第二關系操作的數(shù)據(jù)庫語句執(zhí)行查詢。SELECTA,FROMAWHERE((SELECTCOUNT(C,)FROMB,CWHERE(A.a=B.al)AND(B.b=C.bl)AND(C.fieldl=100))>20)AND(A.fieldl=40)清除FROMA清除FROMB,C從而在關系表中找到所有關系A-B和B-C和A-C因lt匕A.a=B.M以及B.b=C.bl本發(fā)明的語句剩下SELECTA,*WHERE((SELECTCOUNT(C."WHERE(C.fieldl=100))>20)AND(A.fieldl=40)發(fā)明方法可以使用新的關系表應用此語句。為了展示數(shù)據(jù)結構對數(shù)據(jù)語句的影響,圖3和圖4示出了其它兩個數(shù)據(jù)結構3和數(shù)據(jù)結構4各自不同關系表的示意圖,在其上要執(zhí)行相同的查詢。在圖5中,以擴展的形式示出了圖4中的數(shù)據(jù)結構4的關系表。除了通常的數(shù)據(jù)表之間的關系外,右邊的列包含隨意分配的名稱或宏代碼,在調用時可以替代左邊列中的數(shù)據(jù)表設置或執(zhí)行是。在本發(fā)明的主要內容的背景下,它使得能夠進一步不依賴于數(shù)據(jù)結構,因為可能計算得到表名稱及表域或給它們別的名稱。圖5中的數(shù)據(jù)結構4的擴展關系表在此指示數(shù)據(jù)表的別名和數(shù)據(jù)域的別名,以及分割表有關的信息,如companies.city。示例3.-市場部門有至少3名聯(lián)系人的所有公司。首先,根據(jù)本發(fā)明的示例應用中,指示根據(jù)查詢所需的數(shù)據(jù)表和處理函數(shù)。SELECTcompanies.*WHERE((SELECTCOUNT(contact_persons.*)WHERE(department.name="marketing,,)>=3)針對數(shù)據(jù)結構3和數(shù)據(jù)結構4執(zhí)行本發(fā)明的方法得到各自不同的SQL語句。對于數(shù)據(jù)結構3:SELECTcompanies.*FROMcompaniesWHERE((SELECTCOUNT("FROMdepartments,contact_personsWHERE(companies.company一ID-departments.company一弁)AND(departments.department—ID=contact_persons.department—#)AND(departments.name-,,marketing"))>=3)對于數(shù)據(jù)結構4:SELECTcompanies.*FROMcompaniesWHERE((SELECTCOUNT(*)FROMcontact_persons,department—namesWHERE(companies.company—ID=contact_persons.company—#)AND(contact_persons.department—#-department—names,department—ID)AND(department—names.title-,,marketing,,)>=3)權利要求1、一種控制方法,其通過使用數(shù)據(jù)庫語言、利用提供的關系表在關系型數(shù)據(jù)庫中執(zhí)行數(shù)據(jù)庫查詢來控制關系型數(shù)據(jù)庫系統(tǒng),所述關系型數(shù)據(jù)庫包含作為相關數(shù)據(jù)結構的多個通過關系相互關聯(lián)的數(shù)據(jù)表,其特征在于—通過指示處理函數(shù)要應用的所述數(shù)據(jù)表、并且指示要執(zhí)行的所述處理所遵循的所選數(shù)據(jù)表的順序來創(chuàng)建無關系相關操作的可處理數(shù)據(jù)庫語句,—通過首先根據(jù)每兩個相繼的選擇的數(shù)據(jù)表間存在的所述關系利用該兩個相繼的所選數(shù)據(jù)表間的所述關系表計算部分訪問路徑,然后將所有計算得到的部分訪問路徑組合成訪問路徑來確定具體指出對所述數(shù)據(jù)庫的訪問順序的所述訪問路徑。2、根據(jù)權利要求1的方法,其特征在于所述關系表包含對應于和所述被查詢的數(shù)據(jù)庫相關的所述數(shù)據(jù)結構的所有關系,且可以進一步包含隨意生成的關系。3、根據(jù)權利要求1或2的方法,其特征在于為確定所述部分訪問路徑,將所述關系表根據(jù)圖論讀入圖中,使用由此形成的圖計算所述部分訪問路徑。4、根據(jù)權利要求1、2或3的方法,其特征在于通過所述訪問路徑在所述數(shù)據(jù)庫語句中引入基于關系的操作。5、根據(jù)權利要求1、2或3的方法,其特征在于所述確定的提供對數(shù)據(jù)表的逐步參考的訪問路徑可以在所述數(shù)據(jù)庫語句中被分開指示,且對于訪問所述數(shù)據(jù)庫所述數(shù)據(jù)表的所述參考被逐步遵循。6、根據(jù)權利要求1至5中任意一項的方法,其特征在于—從用于具有與之相關的第一數(shù)據(jù)結構的第一數(shù)據(jù)庫的數(shù)據(jù)庫語句中清除所述相關的第一基于關系的操作,一在清除了所述第一關系的所述數(shù)據(jù)庫語句中引入第二基于關系的操作,所述第二基于關系的操作對應于與第二數(shù)據(jù)庫相關的第二數(shù)據(jù)結構,一通過使用所述第二基于關系的操作的所述相關的表確定所述部分訪問路徑、并將它們組合以獲得訪問路徑,根據(jù)包含所述第二基于關系的操作的所述數(shù)據(jù)庫語句執(zhí)行所述查詢。7、一種關系型數(shù)據(jù)庫系統(tǒng),包含具有關系型數(shù)據(jù)庫的計算機系統(tǒng)、數(shù)據(jù)處理單元和存儲器,所述數(shù)據(jù)處理單元根據(jù)權利要求1至6中任意一項所述的方法工作。8、一種數(shù)據(jù)載體,具有用于控制和讀入根據(jù)權利要求7的關系型數(shù)據(jù)庫系統(tǒng)的以數(shù)據(jù)庫語言形成的數(shù)據(jù)庫語句,其特征在于存在于所述數(shù)據(jù)載體上的所述數(shù)據(jù)庫語句沒有任何關系相關的操作而只通過指示處理函數(shù)要應用的所述數(shù)據(jù)表、并且指示要執(zhí)行的所述處理所遵循的所選數(shù)據(jù)表的順序而被創(chuàng)建,其特征還在于所述數(shù)據(jù)載體包含具體指明訪問所述數(shù)據(jù)庫順序的訪問路徑,且該訪問路徑通過首先根據(jù)每兩個相繼的選擇的數(shù)據(jù)表間存在的所述關系利用該兩個相繼的所選數(shù)據(jù)表間的所述關系表計算部分訪問路徑,然后將所有計算得到的部分訪問路徑組合成訪問路徑而被確定。9、根據(jù)權利要求8的用于讀入根據(jù)權利要求7的關系型數(shù)據(jù)庫的數(shù)據(jù)載體,其特征在于所述數(shù)據(jù)載體包含數(shù)據(jù)庫語句,其中引入了根據(jù)權利要求1至6中任意一項的方法確定的訪問路徑,其被使用以通過用于訪問所述關系型數(shù)據(jù)庫的所述數(shù)據(jù)庫語句來控制所述數(shù)據(jù)庫系統(tǒng)。10、根據(jù)權利要求8的用于讀入根據(jù)權利要求7的關系型數(shù)據(jù)庫的數(shù)據(jù)載體,其特征在于通過用于訪問所述關系型數(shù)據(jù)庫的所述數(shù)據(jù)庫語句來控制所述數(shù)據(jù)庫系統(tǒng)的所述訪問路徑在所述數(shù)據(jù)載體上被分開指示,所述訪問路徑提供對數(shù)據(jù)表的逐步參考,且對所述數(shù)據(jù)表的所述參考被逐步遵循以訪問所述數(shù)據(jù)庫。11、一種計算機程序,具有用于執(zhí)行根據(jù)權利要求1至6中任意一項的方法的指令。12、一種計算機程序產(chǎn)品,具有帶有計算機程序編碼裝置的計算機可讀介質,其中在加載所述計算機程序后,使計算機執(zhí)行根據(jù)權利要求1至6中任意一項的方法。13、一種計算機程序產(chǎn)品,具有在電子載體信號上的計算機程序,其中在加載所述計算機程序后,使計算機執(zhí)行根據(jù)權利要求1至6中任意一項的方法。全文摘要本發(fā)明涉及通過使用數(shù)據(jù)庫語言利用提供可用的所述關系表在關系型數(shù)據(jù)庫中執(zhí)行數(shù)據(jù)庫查詢來控制關系數(shù)據(jù)庫系統(tǒng)的方法,關系型數(shù)據(jù)庫包括作為相關數(shù)據(jù)結構的多個通過關系相互關聯(lián)的數(shù)據(jù)表。通過指示處理函數(shù)要應用的數(shù)據(jù)表、并且指示要用于所述處理的所選數(shù)據(jù)表順序創(chuàng)建無關系相關操作的可處理數(shù)據(jù)庫指令。確定具體指出對所述數(shù)據(jù)庫的訪問順序的訪問路徑。為此,根據(jù)兩個相繼數(shù)據(jù)表間存在的關系利用每兩個相繼的所選數(shù)據(jù)表間的關系表計算部分訪問路徑。然后將所有計算得到的部分訪問路徑組合成訪問路徑。文檔編號G06F17/30GK101297290SQ200580051943公開日2008年10月29日申請日期2005年10月28日優(yōu)先權日2005年10月28日發(fā)明者M·默斯特爾申請人:梅迪爾雷夫默斯特爾和雷夫通信與信息技術Oeg公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
嫩江县| 潍坊市| 秦皇岛市| 博客| 永州市| 卫辉市| 凤城市| 浮梁县| 拉萨市| 阳原县| 任丘市| 简阳市| 望奎县| 启东市| 南宫市| 沈阳市| 峨眉山市| 巴中市| 玛沁县| 建德市| 合阳县| 阿巴嘎旗| 霍林郭勒市| 东安县| 镇平县| 黄陵县| 襄城县| 杭锦后旗| 呼玛县| 玛沁县| 梅州市| 夏津县| 凤山市| 双峰县| 镇江市| 云安县| 永宁县| 舞钢市| 闽侯县| 大丰市| 丹寨县|