本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體而言,涉及一種生成描述信息的方法及裝置。
背景技術(shù):
目前,隨著大數(shù)據(jù)技術(shù)的迅猛發(fā)展,如何便于業(yè)務(wù)人員快速分析數(shù)據(jù),是大數(shù)據(jù)應(yīng)用需要解決的關(guān)鍵問題。
業(yè)務(wù)人員經(jīng)常需要基于基礎(chǔ)數(shù)據(jù)進(jìn)行各種統(tǒng)計(jì)分析,該過程通常需要編寫sql語句在數(shù)據(jù)庫中運(yùn)行。例如:對(duì)于基于多張數(shù)據(jù)表的統(tǒng)計(jì)分析,需要采用人工方式通過數(shù)據(jù)表的元信息來獲取數(shù)據(jù)表之間的連接關(guān)系。假設(shè)第一張數(shù)據(jù)表包含有3個(gè)字段,其分別為:設(shè)備標(biāo)識(shí)(id)、日期以及設(shè)備狀態(tài);第二張數(shù)據(jù)表包含有2個(gè)字段,其分別為:設(shè)備id和公司id;第三張數(shù)據(jù)表包含有2個(gè)字段,其分別為:公司id和公司名稱,那么通過數(shù)據(jù)表的元信息可以獲知,第一張數(shù)據(jù)表和第二張數(shù)據(jù)表可以通過“設(shè)備id”加以連接,第二張數(shù)據(jù)表和第三張數(shù)據(jù)表可以通過“公司id”加以連接,通過連接這三張數(shù)據(jù)表,可以分析出每個(gè)公司在預(yù)設(shè)時(shí)間段內(nèi)(例如:最近1個(gè)月)發(fā)生的特定事件(例如:設(shè)備故障率)。
對(duì)于casebycase的統(tǒng)計(jì)分析,表連接語句可以根據(jù)特定案例來編寫,即業(yè)務(wù)人員需要為每個(gè)案例分別定制不同的sql語句。然而,正是由于casebycase的統(tǒng)計(jì)分析方式需要針對(duì)每個(gè)案例分別編寫sql語句,由此易造成此種操作方式不僅工作效率較低,而且發(fā)生錯(cuò)誤的概率較高。
因此,相關(guān)技術(shù)中并沒有提供在給定若干張數(shù)據(jù)表且可獲知數(shù)據(jù)表之間的關(guān)系的情況下,如何通過采用自動(dòng)生成合法的表連接sql語句的實(shí)現(xiàn)方式來完成數(shù)據(jù)分析。
針對(duì)上述的問題,目前尚未提出有效的解決方案。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種生成描述信息的方法及裝置,以至少解決相關(guān)技術(shù)中無法在給定若干張數(shù)據(jù)表且可獲知數(shù)據(jù)表之間的關(guān)系的情況下,通過采用自動(dòng)生成合法的表連接sql語句的實(shí)現(xiàn)方式來完成數(shù)據(jù)分析的技術(shù)問題。
根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,提供了一種生成描述信息的方法,包括:獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
可選地,根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系包括:選取步驟:從多張數(shù)據(jù)表中選取任意一張待遍歷的數(shù)據(jù)表;查找步驟:查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取步驟,直至多張數(shù)據(jù)表被全部遍歷。
可選地,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息包括:按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
可選地,采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息包括:先根據(jù)下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;聯(lián)合全部分段連接信息,生成描述信息。
可選地,如果下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
根據(jù)本發(fā)明實(shí)施例的另一方面,還提供了一種生成描述信息的裝置,包括:獲取模塊,用于獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;確定模塊,用于根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;生成模塊,用于利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
可選地,確定模塊包括:選取單元,用于從多張數(shù)據(jù)表中選取任意一張待遍歷的數(shù)據(jù)表;查找單元,用于查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;建立單元,用于在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取單元,直至多張數(shù)據(jù)表被全部遍歷。
可選地,生成模塊包括:獲取單元,用于按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;生成單元,用于采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
可選地,生成單元包括:第一生成子單元,用于先根據(jù)下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;第二生成子單元,用于聯(lián)合全部分段連接信息,生成描述信息。
可選地,第一生成子單元,用于在下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
在本發(fā)明實(shí)施例中,采用通過獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息并根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系的方式,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件的描述信息,達(dá)到了不需要人工參與便可以自動(dòng)生成上述描述信息(例如:合法的表連接sql語句)來完成數(shù)據(jù)分析的目的,從而實(shí)現(xiàn)了通過自動(dòng)生成數(shù)據(jù)表之間相互關(guān)系的描述信息不僅提高了數(shù)據(jù)分析效率而且還提升了數(shù)據(jù)分析結(jié)果準(zhǔn)確性的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中無法在給定若干張數(shù)據(jù)表且可獲知數(shù)據(jù)表之間的關(guān)系的情況下,通過采用自動(dòng)生成合法的表連接sql語句的實(shí)現(xiàn)方式來完成數(shù)據(jù)分析的技術(shù)問題。
附圖說明
此處所說明的附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中:
圖1是本發(fā)明實(shí)施例的一種生成描述信息的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖;
圖2是根據(jù)本發(fā)明實(shí)施例的生成描述信息的方法的流程圖;
圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的在多張數(shù)據(jù)表的相互間建立完整的拓?fù)浣Y(jié)構(gòu)的示意圖;
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的生成描述信息的方法的示意圖;
圖5是根據(jù)本發(fā)明實(shí)施例的生成描述信息的裝置的結(jié)構(gòu)框圖;
圖6是根據(jù)本發(fā)明優(yōu)選實(shí)施例的生成描述信息的裝置的結(jié)構(gòu)框圖;
圖7是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)終端的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
實(shí)施例1
根據(jù)本發(fā)明實(shí)施例,還提供了一種生成描述信息的方法實(shí)施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行, 并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
本申請(qǐng)實(shí)施例一所提供的方法實(shí)施例可以在移動(dòng)終端、計(jì)算機(jī)終端或者類似的運(yùn)算裝置中執(zhí)行。以運(yùn)行在計(jì)算機(jī)終端上為例,圖1是本發(fā)明實(shí)施例的一種生成描述信息的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖。如圖1所示,計(jì)算機(jī)終端10可以包括一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器102(處理器102可以包括但不限于微處理器mcu或可編程邏輯器件fpga等的處理裝置)、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器104、以及用于通信功能的傳輸裝置106。本領(lǐng)域普通技術(shù)人員可以理解,圖1所示的結(jié)構(gòu)僅為示意,其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,計(jì)算機(jī)終端10還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
存儲(chǔ)器104可用于存儲(chǔ)應(yīng)用軟件的軟件程序以及模塊,如本發(fā)明實(shí)施例中的生成描述信息的方法對(duì)應(yīng)的程序指令/模塊,處理器102通過運(yùn)行存儲(chǔ)在存儲(chǔ)器104內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的生成描述信息的方法。存儲(chǔ)器104可包括高速隨機(jī)存儲(chǔ)器,還可包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器104可進(jìn)一步包括相對(duì)于處理器102遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至計(jì)算機(jī)終端10。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
傳輸裝置106用于經(jīng)由一個(gè)網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù)。上述的網(wǎng)絡(luò)具體實(shí)例可包括計(jì)算機(jī)終端10的通信供應(yīng)商提供的無線網(wǎng)絡(luò)。在一個(gè)實(shí)例中,傳輸裝置106包括一個(gè)網(wǎng)絡(luò)適配器(networkinterfacecontroller,nic),其可通過基站與其他網(wǎng)絡(luò)設(shè)備相連從而可與互聯(lián)網(wǎng)進(jìn)行通訊。在一個(gè)實(shí)例中,傳輸裝置106可以為射頻(radiofrequency,rf)模塊,其用于通過無線方式與互聯(lián)網(wǎng)進(jìn)行通訊。
在上述運(yùn)行環(huán)境下,本申請(qǐng)?zhí)峁┝巳鐖D2所示的生成描述信息的方法。圖2是根據(jù)本發(fā)明實(shí)施例的生成描述信息的方法的流程圖。如圖2所示,該方法可以包括以下處理步驟:
步驟s20:獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;
步驟s22:根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;
步驟s24:利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
相關(guān)技術(shù)中,以表連接語句為主的記錄多張數(shù)據(jù)表之間相互關(guān)系的描述信息需要 業(yè)務(wù)人員根據(jù)特定案例來進(jìn)行手工編寫,即業(yè)務(wù)人員需要為每個(gè)案例分別定制不同的sql語句,由此不僅造成工作效率較低,而且發(fā)生錯(cuò)誤的概率也較高。然而,通過本發(fā)明實(shí)施例所提供的技術(shù)方案,采用通過獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息并根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系的方式,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件的描述信息,達(dá)到了不需要人工參與便可以自動(dòng)生成上述描述信息(例如:合法的表連接sql語句)來完成數(shù)據(jù)分析的目的,從而實(shí)現(xiàn)了通過自動(dòng)生成數(shù)據(jù)表之間相互關(guān)系的描述信息不僅提高了數(shù)據(jù)分析效率而且還提升了數(shù)據(jù)分析結(jié)果準(zhǔn)確性的技術(shù)效果,尤其是對(duì)于批量的數(shù)據(jù)分析工作而言,其效率提升更為顯著,進(jìn)而解決了相關(guān)技術(shù)中無法在給定若干張數(shù)據(jù)表且可獲知數(shù)據(jù)表之間的關(guān)系的情況下,通過采用自動(dòng)生成合法的表連接sql語句的實(shí)現(xiàn)方式來完成數(shù)據(jù)分析的技術(shù)問題。
可選地,在步驟s22中,根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系可以包括以下執(zhí)行步驟:
選取步驟s220:從多張數(shù)據(jù)表中選取任意一張待遍歷的數(shù)據(jù)表;
查找步驟s222:查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;
建立步驟s224:在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取步驟,直至多張數(shù)據(jù)表被全部遍歷。
在需要建立相互之間的關(guān)聯(lián)關(guān)系的多張數(shù)據(jù)表中,可以先隨機(jī)選取其中一張數(shù)據(jù)表作為起始遍歷的數(shù)據(jù)表或者作為參照數(shù)據(jù)表,然后依次訪問其余數(shù)據(jù)表。由于每張數(shù)據(jù)表都包含有多個(gè)字段(例如:字段1為產(chǎn)品名稱,字段2為產(chǎn)品型號(hào),字段3為生產(chǎn)廠商,字段4為使用壽命),因此,在選定其中一張數(shù)據(jù)表之后,便需要查找與該數(shù)據(jù)表具有相同字段的其他數(shù)據(jù)表。此處,具有相同字段的其他數(shù)據(jù)表可以為一張,當(dāng)然也可以為多張。在查找到具有相同字段的其他數(shù)據(jù)表之后,便可以將此類數(shù)據(jù)表設(shè)置為先前選取的數(shù)據(jù)表的待連接數(shù)據(jù)表,并建立彼此之間的連接關(guān)系。在對(duì)當(dāng)前遍歷的數(shù)據(jù)表的待連接數(shù)據(jù)表查找完畢后,再繼續(xù)遍歷下一張數(shù)據(jù)表,以此類推,直至全部數(shù)據(jù)表均經(jīng)歷過一次遍歷,從而在上述多張數(shù)據(jù)表的相互間建立完整的拓?fù)浣Y(jié)構(gòu)。
例如:圖3是根據(jù)本發(fā)明優(yōu)選實(shí)施例的在多張數(shù)據(jù)表的相互間建立完整的拓?fù)浣Y(jié)構(gòu)的示意圖。如圖3所示(圖3中僅示出多張數(shù)據(jù)表相互間的相同字段),在該示例中,數(shù)據(jù)表1包含的字段為:字段1、字段2、字段3和字段4,數(shù)據(jù)表2包含的字段為:字段1、字段3和字段5,數(shù)據(jù)表3包含的字段為:字段2、字段5和字段7以及數(shù)據(jù) 表4包含的字段為:字段7、字段8、字段9和字段10。根據(jù)上述分析,首先隨機(jī)選取數(shù)據(jù)表1作為起始遍歷的數(shù)據(jù)表或者作為參照數(shù)據(jù)表,然后依次訪問其余數(shù)據(jù)表。通過比較可以發(fā)現(xiàn),數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段(字段1和字段3)以及數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段(字段2),由此,可以確定數(shù)據(jù)表2和數(shù)據(jù)表3均為數(shù)據(jù)表1的待連接數(shù)據(jù)表,并可以據(jù)此在數(shù)據(jù)表1與數(shù)據(jù)表2之間以及數(shù)據(jù)表1與數(shù)據(jù)表3之間建立關(guān)聯(lián)關(guān)系。其次,再遍歷數(shù)據(jù)表2,通過比較可以發(fā)現(xiàn),數(shù)據(jù)表2僅與數(shù)據(jù)表3具有相同字段(字段5),由此,可以確定數(shù)據(jù)表3為數(shù)據(jù)表2的待連接數(shù)據(jù)表,并可以據(jù)此在數(shù)據(jù)表2與數(shù)據(jù)表3之間建立關(guān)聯(lián)關(guān)系。然后,再遍歷數(shù)據(jù)表3,通過比較可以發(fā)現(xiàn),數(shù)據(jù)表3僅與數(shù)據(jù)表4具有相同字段(字段7),由此,可以確定數(shù)據(jù)表4為數(shù)據(jù)表3的待連接數(shù)據(jù)表,并可以據(jù)此在數(shù)據(jù)表3與數(shù)據(jù)表4之間建立關(guān)聯(lián)關(guān)系。最后,再遍歷數(shù)據(jù)表4,通過比較可以發(fā)現(xiàn),除了上述已經(jīng)建立關(guān)聯(lián)關(guān)系的數(shù)據(jù)表3之外,并沒有其他待連接數(shù)據(jù)表。至此,關(guān)于數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4之間相互關(guān)聯(lián)關(guān)系的拓?fù)浣Y(jié)構(gòu)已經(jīng)形成。
可選地,在步驟s24中,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息可以包括以下執(zhí)行步驟:
步驟s240:按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;
步驟s242:采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
在確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系后,可以從起始遍歷的數(shù)據(jù)表或者作為參照數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,并進(jìn)一步獲取與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息。需要說明的是,此處提到的與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表是指從起始遍歷的數(shù)據(jù)表開始到下一個(gè)遍歷的數(shù)據(jù)表為止已經(jīng)被遍歷的全部數(shù)據(jù)表中與下一個(gè)遍歷的數(shù)據(jù)表鄰接的數(shù)據(jù)表。通過獲取上述標(biāo)識(shí)信息可以確定下一個(gè)遍歷的數(shù)據(jù)表與哪個(gè)或哪些已經(jīng)被遍歷的數(shù)據(jù)表之間存在關(guān)聯(lián)關(guān)系,基于此,可以再獲取下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件(即存在哪些相同的字段)。
例如:基于上述已經(jīng)形成的關(guān)于數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4之間相互關(guān)聯(lián)關(guān)系的拓?fù)浣Y(jié)構(gòu),生成描述信息的具體方式如下:
以數(shù)據(jù)表1為起始遍歷的數(shù)據(jù)表或者作為參照數(shù)據(jù)表,然后依次訪問其余數(shù)據(jù)表??紤]到數(shù)據(jù)表2和數(shù)據(jù)表3均為數(shù)據(jù)表1的待連接數(shù)據(jù)表,并已經(jīng)據(jù)此在數(shù)據(jù)表1與數(shù)據(jù)表2之間以及數(shù)據(jù)表1與數(shù)據(jù)表3之間建立過關(guān)聯(lián)關(guān)系,那么可以在數(shù)據(jù)表2和數(shù)據(jù)表3之間先隨機(jī)選擇一個(gè)數(shù)據(jù)表。假設(shè)此次選取的是數(shù)據(jù)表2,那么下一個(gè)遍歷的數(shù)據(jù)表即為數(shù)據(jù)表2,而已經(jīng)遍歷的且與數(shù)據(jù)表2相鄰接的僅有數(shù)據(jù)表1,則此時(shí)的連接條件為數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段(字段1和字段3)。接下來,在對(duì)數(shù)據(jù)表2完成遍歷后,由于數(shù)據(jù)表2僅與數(shù)據(jù)表3之間存在連接關(guān)系,因此,下一個(gè)遍歷的數(shù)據(jù)表即為數(shù)據(jù)表3。在已經(jīng)遍歷的數(shù)據(jù)表1和數(shù)據(jù)表2中,數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段(字段2),數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段(字段5),則此時(shí)的連接條件為數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段(字段2),數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段(字段5)。然后,在對(duì)數(shù)據(jù)表3完成遍歷后,由于數(shù)據(jù)表3僅與數(shù)據(jù)表4之間存在連接關(guān)系,因此,下一個(gè)遍歷的數(shù)據(jù)表即為數(shù)據(jù)表4。在已經(jīng)遍歷的數(shù)據(jù)表1、數(shù)據(jù)表2以及數(shù)據(jù)表3中,數(shù)據(jù)表3僅與數(shù)據(jù)表4具有相同字段(字段7),則此時(shí)的連接條件為數(shù)據(jù)表3與數(shù)據(jù)表4具有相同字段(字段7)。至此,關(guān)于數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4之間相互關(guān)聯(lián)關(guān)系的描述信息已經(jīng)形成。
可選地,在步驟s242中,采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息可以包括以下執(zhí)行步驟:
步驟s2420:先根據(jù)下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;
步驟s2422:聯(lián)合全部分段連接信息,生成描述信息。
在生成描述信息的過程中,數(shù)據(jù)表之間合法的表連接描述信息需要同時(shí)滿足如下三個(gè)條件:
條件一、所有數(shù)據(jù)表均被且僅被連接一次;
條件二、所有連接條件均被且僅被使用一次;
條件三、每個(gè)連接條件中出現(xiàn)的數(shù)據(jù)表需要先被連接。
具體到上述示例中,在已經(jīng)形成的關(guān)于數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4之間相互關(guān)聯(lián)關(guān)系的拓?fù)浣Y(jié)構(gòu)中,數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4已均被連接一次。所有的連接條件,包括:數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段(字段1和 字段3),數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段(字段2),數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段(字段5)以及數(shù)據(jù)表3與數(shù)據(jù)表4具有相同字段(字段7),已均被使用一次。在每遍歷一張數(shù)據(jù)表時(shí),在連接條件中出現(xiàn)的數(shù)據(jù)表必須為已經(jīng)被遍歷過的數(shù)據(jù)表,即在遍歷數(shù)據(jù)表2時(shí),已經(jīng)遍歷的且與數(shù)據(jù)表2相鄰接的僅有數(shù)據(jù)表1,則此時(shí)的連接條件包含數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段1和相同字段3;在遍歷數(shù)據(jù)表3時(shí),已經(jīng)遍歷的且與數(shù)據(jù)表3相鄰接的有數(shù)據(jù)表1和數(shù)據(jù)表2,則此時(shí)的連接條件可以包含數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段2以及數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段5;在遍歷數(shù)據(jù)表4時(shí),已經(jīng)遍歷的且與數(shù)據(jù)表4相鄰接的僅有數(shù)據(jù)表3,則此時(shí)的連接條件僅包含數(shù)據(jù)表3與數(shù)據(jù)表4具有相同字段7。
將得到上述分段連接信息聯(lián)合起來便可以生成最終所要獲得的描述信息,即數(shù)據(jù)表1,連接數(shù)據(jù)表2,其連接條件為:數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段1和相同字段3;連接數(shù)據(jù)表3,其連接條件為:數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段2以及數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段5;連接數(shù)據(jù)表4,其連接條件為:數(shù)據(jù)表3與數(shù)據(jù)表4具有相同字段7。
在優(yōu)選實(shí)施過程中,在步驟s2420中,如果下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
在已經(jīng)形成的關(guān)于數(shù)據(jù)表1、數(shù)據(jù)表2、數(shù)據(jù)表3以及數(shù)據(jù)表4之間相互關(guān)聯(lián)關(guān)系的拓?fù)浣Y(jié)構(gòu)中,不僅包含因連接條件為數(shù)據(jù)表3與數(shù)據(jù)表4具有相同字段7而在數(shù)據(jù)表3與數(shù)據(jù)表4形成的單一連接關(guān)系,而且還包含數(shù)據(jù)表1與數(shù)據(jù)表2之間以及數(shù)據(jù)表1、數(shù)據(jù)表2以及數(shù)據(jù)表3相互間形成的復(fù)雜連接關(guān)系,即對(duì)于數(shù)據(jù)表1與數(shù)據(jù)表2兩者之間的連接關(guān)系而言,在遍歷數(shù)據(jù)表2時(shí),已經(jīng)遍歷的且與數(shù)據(jù)表2相鄰接的僅有數(shù)據(jù)表1,則此時(shí)的連接條件包含數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段1和相同字段3,而正是由于數(shù)據(jù)表1與數(shù)據(jù)表2之間具有2個(gè)相同字段,因此,數(shù)據(jù)表1與數(shù)據(jù)表2之間存在兩種連接關(guān)系,其為數(shù)據(jù)表1與數(shù)據(jù)表2具有相同字段1和相同字段3的并集;對(duì)于數(shù)據(jù)表1、數(shù)據(jù)表2以及數(shù)據(jù)表3三者之間的連接關(guān)系而言,在遍歷數(shù)據(jù)表3時(shí),已經(jīng)遍歷的且與數(shù)據(jù)表3相鄰接的有數(shù)據(jù)表1和數(shù)據(jù)表2,而且數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段2以及數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段5,因此,數(shù)據(jù)表3與已經(jīng)遍歷的數(shù)據(jù)表1和數(shù)據(jù)表2之間分別存在連接關(guān)系,其為數(shù)據(jù)表1與數(shù)據(jù)表3具有相同字段2以及數(shù)據(jù)表2與數(shù)據(jù)表3具有相同字段5的并集。
下面將結(jié)合以下優(yōu)選實(shí)施方式對(duì)上述優(yōu)選實(shí)施過程作進(jìn)一步地描述。
圖4是根據(jù)本發(fā)明優(yōu)選實(shí)施例的生成描述信息的方法的示意圖。如圖4所示,假設(shè)當(dāng)前總共有4張數(shù)據(jù)表,其分別為數(shù)據(jù)表a、數(shù)據(jù)表b、數(shù)據(jù)表c以及數(shù)據(jù)表d,在數(shù)據(jù)表的元信息中定義了f1、f2、f3為連接字段,即包含這些字段的數(shù)據(jù)表可以連接在一起。
具體地,上述4張數(shù)據(jù)表所包含的連接字段分別為:
數(shù)據(jù)表a包含:連接字段f3;
數(shù)據(jù)表b包含:連接字段f1,連接字段f2以及連接字段f3;
數(shù)據(jù)表c包含:連接字段f1;
數(shù)據(jù)表d包含:連接字段f1和連接字段f2。
由此,可以得到這4張數(shù)據(jù)表之間存在如下連接條件:
(數(shù)據(jù)表a,數(shù)據(jù)表b)之間存在的連接條件:數(shù)據(jù)表a.連接字段f3=數(shù)據(jù)表b.連接字段f3;
(數(shù)據(jù)表b,數(shù)據(jù)表c)之間存在的連接條件:數(shù)據(jù)表b.連接字段f1=數(shù)據(jù)表c.連接字段f1;
(數(shù)據(jù)表b,數(shù)據(jù)表d)之間存在的連接條件:數(shù)據(jù)表b.連接字段f1=數(shù)據(jù)表d.連接字段f1,數(shù)據(jù)表b.連接字段f2=數(shù)據(jù)表d.連接字段f2;
(數(shù)據(jù)表c,數(shù)據(jù)表d)之間存在的連接條件:數(shù)據(jù)表c.連接字段f1=數(shù)據(jù)表d.連接字段f1;
即數(shù)據(jù)表a和數(shù)據(jù)表b通過f3字段連接,數(shù)據(jù)表b和數(shù)據(jù)表c通過f1字段連接,數(shù)據(jù)表b和數(shù)據(jù)表d通過f1和f2兩個(gè)字段連接以及數(shù)據(jù)表c和數(shù)據(jù)表d通過f1字段連接。
在該優(yōu)選實(shí)施例中,如何根據(jù)數(shù)據(jù)表間的連接關(guān)系生成合法的描述信息(例如:表連接語句),該優(yōu)選實(shí)施例將其抽象為圖的遍歷問題,即,采用圖頂點(diǎn)來表示數(shù)據(jù)表,采用圖的邊來表示數(shù)據(jù)表之間的連接關(guān)系,上述舉例中的數(shù)據(jù)表以及相互間的連接關(guān)系可以表示為:
首先從數(shù)據(jù)表a開始,依次連接其它3張數(shù)據(jù)表,為生成合法的表連接語句,其具體方式如下:從圖頂點(diǎn)a出發(fā),按一定順序到達(dá)其它頂點(diǎn),并將當(dāng)前到達(dá)頂點(diǎn)與它 前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊加到連接條件中,即可生成以圖頂點(diǎn)為連接表,圖的邊為連接條件的合法表連接語句,每個(gè)表和連接條件在該語句中出現(xiàn)且僅出現(xiàn)一次,且連接條件中出現(xiàn)的表已經(jīng)先進(jìn)行“join”(對(duì)應(yīng)圖頂點(diǎn)已經(jīng)到達(dá)過)。
該優(yōu)選實(shí)施例通過采用圖的遍歷方法(包括:深度優(yōu)先遍歷和廣度優(yōu)先遍歷)來確定頂點(diǎn)的到達(dá)次序。以廣度優(yōu)先遍歷為例,從頂點(diǎn)a出發(fā),將該頂點(diǎn)計(jì)為第1層,先到達(dá)與它有邊連接的第2層頂點(diǎn),即與a距離為1的頂點(diǎn),再依次到達(dá)與a距離遞增的各層頂點(diǎn),同一層內(nèi)到達(dá)順序隨機(jī)。在上述示例中,頂點(diǎn)a為第1層,頂點(diǎn)b為第2層,頂點(diǎn)c、d均與b相連,同屬第3層,所以這4個(gè)頂點(diǎn)的到達(dá)次序?yàn)閍、b、c、d或者a、b、d、c。
假設(shè)以到達(dá)次序a、b、c、d為例,來展開表連接語句的生成過程:
第一步、從頂點(diǎn)a出發(fā),到達(dá)頂點(diǎn)b后,join頂點(diǎn)b,并將頂點(diǎn)b與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊加到連接條件中,由于在到達(dá)頂點(diǎn)b之前只到達(dá)過頂點(diǎn)a,因此,可以將頂點(diǎn)b與頂點(diǎn)a之間的邊添加到連接條件中,生成ajoinbona.f3=b.f3;
第二步、從頂點(diǎn)b出發(fā),到達(dá)頂點(diǎn)c后,join頂點(diǎn)c,并將頂點(diǎn)c與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊添加到連接條件中,由于在到達(dá)頂點(diǎn)c之前已經(jīng)到達(dá)過頂點(diǎn)a和頂點(diǎn)b,但頂點(diǎn)c只與頂點(diǎn)b之間有邊,所以將頂點(diǎn)c與頂點(diǎn)b之間的邊添加到連接條件中,生成joinconb.f1=c.f1;
第三步、從頂點(diǎn)c觸發(fā),到達(dá)頂點(diǎn)d后,join頂點(diǎn)d,并將頂點(diǎn)d與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊添加到連接條件中,由于在到達(dá)頂點(diǎn)d之前已經(jīng)到達(dá)過頂點(diǎn)a、頂點(diǎn)b以及頂點(diǎn)c,而頂點(diǎn)d與頂點(diǎn)b、頂點(diǎn)c之間有邊,所以將頂點(diǎn)d與頂點(diǎn)b、頂點(diǎn)c之間的邊添加到連接條件中,生成joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1;
在所有頂點(diǎn)全部到達(dá)后,便可生成最終的表連接語句ajoinbona.f3=b.f3joinconb.f1=c.f1joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1。
因此,數(shù)據(jù)表a、數(shù)據(jù)表b、數(shù)據(jù)表c以及數(shù)據(jù)表d之間合法的表連接語句如下:
ajoinbona.f3=b.f3joinconb.f1=c.f1joindonb.f1=d.f1andb.f2=d.f2andc.f1=d.f1。
假設(shè)以到達(dá)次序a、b、d、c為例,來展開表連接語句的生成過程:
第一步、從頂點(diǎn)a出發(fā),到達(dá)頂點(diǎn)b后,join頂點(diǎn)b,并將頂點(diǎn)b與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊加到連接條件中,由于在到達(dá)頂點(diǎn)b之前只到達(dá)過頂點(diǎn)a,因此,可以將頂點(diǎn)b與頂點(diǎn)a之間的邊添加到連接條件中,生成ajoinbona.f3=b.f3;
第二步、從頂點(diǎn)b出發(fā),到達(dá)頂點(diǎn)d后,join頂點(diǎn)d,并將頂點(diǎn)d與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊添加到連接條件中,由于在到達(dá)頂點(diǎn)d之前已經(jīng)到達(dá)過頂點(diǎn)a和頂點(diǎn)b,但頂點(diǎn)d只與頂點(diǎn)b之間有邊,所以將頂點(diǎn)d與頂點(diǎn)b之間的邊添加到連接條件中,生成joindonb.f1=d.f1andb.f2=d.f2;
第三步、從頂點(diǎn)d出發(fā),到達(dá)頂點(diǎn)c后,join頂點(diǎn)c,并將頂點(diǎn)c與它前邊已經(jīng)到達(dá)過的頂點(diǎn)之間的邊添加到連接條件中,由于在到達(dá)頂點(diǎn)c之前已經(jīng)到達(dá)過頂點(diǎn)a、頂點(diǎn)b以及頂點(diǎn)d,而頂點(diǎn)c與頂點(diǎn)b、頂點(diǎn)d之間有邊,所以將頂點(diǎn)c與頂點(diǎn)b、頂點(diǎn)d之間的邊添加到連接條件中,生成joinconb.f1=c.f1andc.f1=d.f1;
在所有頂點(diǎn)全部到達(dá)后,便可生成最終的表連接語句ajoinbona.f3=b.f3joindonb.f1=d.f1andb.f2=d.f2joinconb.f1=c.f1andc.f1=d.f1。
因此,數(shù)據(jù)表a、數(shù)據(jù)表b、數(shù)據(jù)表c以及數(shù)據(jù)表d之間合法的表連接語句如下:
ajoinbona.f3=b.f3joindonb.f1=d.f1andb.f2=d.f2joinconb.f1=c.f1andc.f1=d.f1。
另外,與合法的表連接語句相對(duì),不合法的表連接語句的示例如下:
ajoinbona.f3=b.f3joinconb.f1=c.f1andc.f1=d.f1joindonb.f1=d.f1andb.f2=d.f2;
在該表連接語句中的連接條件“c.f1=d.f1”在“joind”之前出現(xiàn)是不合法的,其原因在于,連接條件中的數(shù)據(jù)表d需要先“join”,即當(dāng)前遍歷的數(shù)據(jù)表為數(shù)據(jù)表c,已經(jīng)遍歷的數(shù)據(jù)表僅為數(shù)據(jù)表a和數(shù)據(jù)表b,其并不包括數(shù)據(jù)表d,因此,數(shù)據(jù)表d不能出現(xiàn)在關(guān)于連接數(shù)據(jù)表c的連接條件中,而只能在繼續(xù)遍歷數(shù)據(jù)表d后,出現(xiàn)在關(guān)于連接數(shù)據(jù)表d的連接條件中。
需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù) 人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的生成描述信息的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
實(shí)施例2
根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述生成描述信息的裝置的結(jié)構(gòu)框圖,如圖5所示,該裝置包括:獲取模塊10,用于獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;確定模塊20,用于根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;生成模塊30,用于利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
可選地,圖6是根據(jù)本發(fā)明優(yōu)選實(shí)施例的生成描述信息的裝置的結(jié)構(gòu)框圖,如圖6所示,確定模塊20包括:選取單元200,用于從多張數(shù)據(jù)表中選取任意一張待遍歷的數(shù)據(jù)表;查找單元202,用于查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;建立單元204,用于在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取單元,直至多張數(shù)據(jù)表被全部遍歷。
可選地,如圖6所示,生成模塊30包括:獲取單元300,用于按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;生成單元302,用于采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
可選地,生成單元302包括:第一生成子單元(圖中未示出),用于先根據(jù)下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接 條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;第二生成子單元(圖中未示出),用于聯(lián)合全部分段連接信息,生成描述信息。
可選地,第一生成子單元(圖中未示出),用于在下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
實(shí)施例3
本發(fā)明的實(shí)施例可以提供一種計(jì)算機(jī)終端,該計(jì)算機(jī)終端可以是計(jì)算機(jī)終端群中的任意一個(gè)計(jì)算機(jī)終端設(shè)備??蛇x地,在本實(shí)施例中,上述計(jì)算機(jī)終端也可以替換為移動(dòng)終端等終端設(shè)備。
可選地,在本實(shí)施例中,上述計(jì)算機(jī)終端可以位于計(jì)算機(jī)網(wǎng)絡(luò)的多個(gè)網(wǎng)絡(luò)設(shè)備中的至少一個(gè)網(wǎng)絡(luò)設(shè)備。
可選地,圖7是根據(jù)本發(fā)明實(shí)施例的一種計(jì)算機(jī)終端的結(jié)構(gòu)框圖。如圖7所示,該計(jì)算機(jī)終端可以包括:一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器以及存儲(chǔ)器。
其中,存儲(chǔ)器可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的生成描述信息的方法和裝置對(duì)應(yīng)的程序指令/模塊,處理器通過運(yùn)行存儲(chǔ)在存儲(chǔ)器內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的生成描述信息的方法。存儲(chǔ)器可包括高速隨機(jī)存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器可進(jìn)一步包括相對(duì)于處理器遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過網(wǎng)絡(luò)連接至終端。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
處理器可以通過傳輸裝置調(diào)用存儲(chǔ)器存儲(chǔ)的信息及應(yīng)用程序,以執(zhí)行下述步驟:
s1,獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;
s2,根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;
s3,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:選取步驟:從多張數(shù)據(jù)表 中選取任意一張待遍歷的數(shù)據(jù)表;查找步驟:查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取步驟,直至多張數(shù)據(jù)表被全部遍歷。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:先根據(jù)下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;聯(lián)合全部分段連接信息,生成描述信息。
可選的,上述處理器還可以執(zhí)行如下步驟的程序代碼:如果下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
采用本發(fā)明實(shí)施例,采用通過獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息并根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系的方式,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件的描述信息,達(dá)到了不需要人工參與便可以自動(dòng)生成上述描述信息(例如:合法的表連接sql語句)來完成數(shù)據(jù)分析的目的,從而實(shí)現(xiàn)了通過自動(dòng)生成數(shù)據(jù)表之間相互關(guān)系的描述信息不僅提高了數(shù)據(jù)分析效率而且還提升了數(shù)據(jù)分析結(jié)果準(zhǔn)確性的技術(shù)效果,進(jìn)而解決了相關(guān)技術(shù)中無法在給定若干張數(shù)據(jù)表且可獲知數(shù)據(jù)表之間的關(guān)系的情況下,通過采用自動(dòng)生成合法的表連接sql語句的實(shí)現(xiàn)方式來完成數(shù)據(jù)分析的技術(shù)問題。
本領(lǐng)域普通技術(shù)人員可以理解,圖7所示的結(jié)構(gòu)僅為示意,計(jì)算機(jī)終端也可以是智能手機(jī)(如android手機(jī)、ios手機(jī)等)、平板電腦、掌聲電腦以及移動(dòng)互聯(lián)網(wǎng)設(shè)備(mobileinternetdevices,mid)、pad等終端設(shè)備。圖7其并不對(duì)上述電子裝置的 結(jié)構(gòu)造成限定。例如,計(jì)算機(jī)終端還可包括比圖7中所示更多或者更少的組件(如網(wǎng)絡(luò)接口、顯示裝置等),或者具有與圖7所示不同的配置。
本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過程序來指令終端設(shè)備相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(read-onlymemory,rom)、隨機(jī)存取器(randomaccessmemory,ram)、磁盤或光盤等。
實(shí)施例4
本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以用于保存上述實(shí)施例一所提供的生成描述信息的方法所執(zhí)行的程序代碼。
可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以位于計(jì)算機(jī)網(wǎng)絡(luò)中計(jì)算機(jī)終端群中的任意一個(gè)計(jì)算機(jī)終端中,或者位于移動(dòng)終端群中的任意一個(gè)移動(dòng)終端中。
可選地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:
s1,獲取多張數(shù)據(jù)表中每張數(shù)據(jù)表所包含的字段信息;
s2,根據(jù)字段信息確定多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系;
s3,利用多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系生成描述信息,其中,描述信息用于記錄多張數(shù)據(jù)表相互間的連接次序以及相鄰數(shù)據(jù)表之間所使用的連接條件。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:選取步驟:從多張數(shù)據(jù)表中選取任意一張待遍歷的數(shù)據(jù)表;查找步驟:查找與選取的數(shù)據(jù)表所包含的字段信息中具有一個(gè)或多個(gè)相同字段的數(shù)據(jù)表,并將查找到的數(shù)據(jù)表設(shè)置為選取的數(shù)據(jù)表的待連接數(shù)據(jù)表;在選取的數(shù)據(jù)表與待連接數(shù)據(jù)表之間建立關(guān)聯(lián)關(guān)系;返回選取步驟,直至多張數(shù)據(jù)表被全部遍歷。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:按照多張數(shù)據(jù)表相互間的關(guān)聯(lián)關(guān)系從初始遍歷的數(shù)據(jù)表開始依次獲取下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,與下一個(gè)遍歷的數(shù)據(jù)表相鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,其中,鄰接的數(shù)據(jù)表為已經(jīng)遍歷過的數(shù)據(jù)表;采用獲取到的下一個(gè)遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息,鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息以及下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件生成描述信息。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:先根據(jù)下一個(gè) 遍歷的數(shù)據(jù)表的標(biāo)識(shí)信息和鄰接的數(shù)據(jù)表的標(biāo)識(shí)信息建立下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的關(guān)聯(lián)關(guān)系后,再記錄下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件,分別生成與已經(jīng)遍歷的數(shù)據(jù)表對(duì)應(yīng)的分段連接信息;聯(lián)合全部分段連接信息,生成描述信息。
可選地,存儲(chǔ)介質(zhì)還被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:如果下一個(gè)遍歷的數(shù)據(jù)表同時(shí)與多個(gè)數(shù)據(jù)表相鄰接和/或下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段時(shí),則記錄的下一個(gè)遍歷的數(shù)據(jù)表與鄰接的數(shù)據(jù)表之間的連接條件是由下一個(gè)遍歷的數(shù)據(jù)表與多個(gè)數(shù)據(jù)表相鄰接所產(chǎn)生的連接條件和/或由下一個(gè)遍歷的數(shù)據(jù)表與部分相鄰接的數(shù)據(jù)表存在多個(gè)相同的字段所產(chǎn)生的連接條件的并集。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、只讀存儲(chǔ)器(rom,read-only memory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、移動(dòng)硬盤、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。