專利名稱:數(shù)據(jù)關(guān)系的處理方法、裝置及移動通訊終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件領(lǐng)域,具體而言,涉及一種數(shù)據(jù)關(guān)系的處理方法、裝置及移動通訊終端。
背景技術(shù):
對于很多依賴每天通過不停收集海量數(shù)據(jù),然后建立屬性對應(yīng)關(guān)系并提供實(shí)時高速查詢的服務(wù)來說,大量的導(dǎo)入和查詢操作,由于鎖的問題,會使得數(shù)據(jù)的導(dǎo)入和查詢的性能均十分低效。圖1是根據(jù)相關(guān)技術(shù)的基于二維表的屬性關(guān)系結(jié)構(gòu)示意圖。如圖1所示的實(shí)施例以人為例來對事物屬性進(jìn)行建模,并基于該建模對人物屬性進(jìn)行快速查找。如圖1所示的關(guān)系數(shù)據(jù)庫中,建立一張二維表式的模型,以人的身份證號作為主鍵,其他關(guān)聯(lián)字段有軍人證、駕駛證、社保號、工行賬戶、建行賬戶等。在用戶提供了社保號之后,如果想快速查找到他的軍人證,需要先找出該用戶的主鍵(即身份證號),然后開始遍歷該二維表,由于該二維表模型采用主鍵與其它關(guān)聯(lián)字段一一對應(yīng)的關(guān)系,因此查找效率低。如果對所有字段建立索引,會導(dǎo)致二維表結(jié)構(gòu)復(fù)雜,同時,在屬性數(shù)據(jù)導(dǎo)入、更新的過程中,由于需要導(dǎo)入所有屬性關(guān)系的數(shù)據(jù),導(dǎo)致了查詢效率和更新效率低的問題。如果對某兩個字段用單獨(dú)的表存儲,關(guān)聯(lián)的效率也比較低。目前針對相關(guān)現(xiàn)有技術(shù)的屬性數(shù)據(jù)關(guān)系模型查詢效率低,數(shù)據(jù)導(dǎo)入、更新效率低的問題,尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種數(shù)據(jù)關(guān)系的處理方法、裝置及移動通訊終端,以解決相關(guān)現(xiàn)有技術(shù)的屬性數(shù)據(jù)關(guān)系模型查詢效率低,數(shù)據(jù)導(dǎo)入、更新效率低的問題,能夠提高屬性數(shù)據(jù)導(dǎo)入和更新的效率。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個方面,提供了一種數(shù)據(jù)關(guān)系的處理方法,該數(shù)據(jù)關(guān)系的處理方法包括設(shè)置第一屬性數(shù)據(jù)為主鍵;調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑; 判斷路徑是否是最短路徑;當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。進(jìn)一步地,在設(shè)置第一屬性數(shù)據(jù)為主鍵之前,方法還包括構(gòu)建屬性關(guān)系數(shù)據(jù)庫, 屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。進(jìn)一步地,調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑的步驟包括調(diào)用屬性關(guān)系數(shù)據(jù)庫,并根據(jù)屬性關(guān)系數(shù)據(jù)庫建立有向圖;以主鍵為出發(fā)點(diǎn),通過寬度搜索算法在有向圖中查詢第
4二屬性數(shù)據(jù),并獲取第二屬性數(shù)據(jù)的值;獲取并記錄第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的一條或多條路徑。進(jìn)一步地,在建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫之后,方法還包括獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑經(jīng)過的第三屬性數(shù)據(jù);建立第一屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系, 同時建立第二屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。進(jìn)一步地,屬性關(guān)系為雙向關(guān)系,將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中包括 將雙向關(guān)系以數(shù)據(jù)表的格式保存至屬性關(guān)系數(shù)據(jù)庫中。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一方面,提供了一種數(shù)據(jù)關(guān)系的處理裝置,該數(shù)據(jù)關(guān)系的處理裝置包括設(shè)置模塊,用于設(shè)置第一屬性數(shù)據(jù)為主鍵;搜索模塊,用于調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑;判斷模塊,用于判斷路徑是否是最短路徑;修復(fù)模塊,用于當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。進(jìn)一步地,裝置還包括構(gòu)建模塊,用于構(gòu)建屬性關(guān)系數(shù)據(jù)庫,屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。進(jìn)一步地,搜索模塊包括調(diào)用模塊,用于調(diào)用屬性關(guān)系數(shù)據(jù)庫,并根據(jù)屬性關(guān)系數(shù)據(jù)庫建立有向圖;查詢模塊,用于以主鍵為出發(fā)點(diǎn),通過寬度搜索算法在有向圖中查詢第二屬性數(shù)據(jù),并獲取第二屬性數(shù)據(jù)的值;保存模塊,用于獲取并記錄第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的一條或多條路徑。進(jìn)一步地,裝置還包括獲取模塊,用于獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑經(jīng)過的第三屬性數(shù)據(jù);創(chuàng)建模塊,用于建立第一屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系,同時建立第二屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。為了實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的又一方面,提供了一種移動通訊終端,包括上述任意一種數(shù)據(jù)關(guān)系的處理裝置。通過本發(fā)明,采用設(shè)置第一屬性數(shù)據(jù)為主鍵;調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑;判斷路徑是否是最短路徑;當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系,上述處理過程,通過查詢兩個屬性數(shù)據(jù)之間的查詢路徑是否是最短路徑來確定,如果兩個屬性數(shù)據(jù)之間的需要經(jīng)過其他屬性關(guān)系才可以查詢到的話,則創(chuàng)建這兩個屬性數(shù)據(jù)之間的屬性關(guān)系,即獲取兩個屬性數(shù)據(jù)之間的最短路徑,使得在下次查詢的時候,可以通過該最短路徑直接從一個屬性數(shù)據(jù)查找到另外一個屬性數(shù)據(jù),并獲取屬性數(shù)據(jù)的值,而且將創(chuàng)建后的二者屬性關(guān)系保存,即不斷完善原來的屬性關(guān)系數(shù)據(jù)庫,使得屬性數(shù)據(jù)關(guān)系趨于完善,從而解決了屬性數(shù)據(jù)關(guān)系模型查詢效率低,數(shù)據(jù)導(dǎo)入、更新效率低的問題,進(jìn)而實(shí)現(xiàn)在提供高速查詢屬性數(shù)據(jù)的同時, 也提供高速的屬性數(shù)據(jù)更新和導(dǎo)入的性能的效果。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)相關(guān)技術(shù)的基于二維表的屬性關(guān)系結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)關(guān)系的處理裝置結(jié)構(gòu)示意圖;圖3是根據(jù)本發(fā)明實(shí)施例的有向完全圖的屬性數(shù)據(jù)關(guān)系結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)關(guān)系的處理方法的流程圖;圖5-6是根據(jù)本發(fā)明第一實(shí)施例的基于有向圖的屬性數(shù)據(jù)關(guān)系的結(jié)構(gòu)示意圖;圖7-8是根據(jù)本發(fā)明第二實(shí)施例的基于有向圖的屬性數(shù)據(jù)關(guān)系的結(jié)構(gòu)示意圖。
具體實(shí)施例方式需要說明的是,在不沖突的情況下,本申請中的實(shí)施例及實(shí)施例中的特征可以相互組合。下面將參考附圖并結(jié)合實(shí)施例來詳細(xì)說明本發(fā)明。圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)關(guān)系的處理裝置結(jié)構(gòu)示意圖。如圖2所示,該裝置包括設(shè)置模塊10,用于設(shè)置第一屬性數(shù)據(jù)為主鍵;搜索模塊30,用于調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑;判斷模塊50,用于判斷路徑是否是最短路徑;修復(fù)模塊70,用于當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。本發(fā)明上述實(shí)施例通過查詢兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系,并判斷兩個屬性數(shù)據(jù)之間的查詢路徑是否是最短路徑,如果兩個屬性數(shù)據(jù)之間的需要經(jīng)過其他屬性關(guān)系才可以查詢到的話,則創(chuàng)建這兩個屬性數(shù)據(jù)之間的屬性關(guān)系,即獲取兩個屬性數(shù)據(jù)之間的最短路徑,在下次查詢的時候,可以利用最短路徑來實(shí)現(xiàn)通過其中一個屬性數(shù)據(jù)就可以直接查找到另外一個屬性數(shù)據(jù),并獲取屬性數(shù)據(jù)的值,而且將創(chuàng)建后的二者屬性關(guān)系保存,即不斷完善原來的屬性關(guān)系數(shù)據(jù)庫,使得屬性數(shù)據(jù)關(guān)系趨于完善,實(shí)現(xiàn)了高速查詢屬性數(shù)據(jù)的同時也提供高速的屬性數(shù)據(jù)更新和導(dǎo)入的性能。本發(fā)明上述實(shí)施例中,該裝置還可以包括構(gòu)建模塊90,用于構(gòu)建屬性關(guān)系數(shù)據(jù)庫,屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。該實(shí)施例中可以采用key-value作為某兩個屬性數(shù)據(jù)之間的關(guān)系存儲來構(gòu)建屬性關(guān)系,多個該類屬性關(guān)系構(gòu)成屬性關(guān)系數(shù)據(jù)庫,具體的,以某個屬性數(shù)據(jù)X作為出發(fā)點(diǎn),指向另外一個屬性數(shù)據(jù)的關(guān)系的數(shù)據(jù),存儲在對應(yīng)的Key-Value存儲中。本發(fā)明上述實(shí)施例的搜索模塊30可以包括調(diào)用模塊301,用于調(diào)用屬性關(guān)系數(shù)據(jù)庫,并根據(jù)屬性關(guān)系數(shù)據(jù)庫建立有向圖;查詢模塊303,用于以主鍵為出發(fā)點(diǎn),通過寬度搜索算法在有向圖中查詢第二屬性數(shù)據(jù),并獲取第二屬性數(shù)據(jù)的值;保存模塊305,用于獲取并記錄第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的一條或多條路徑。該實(shí)施例中對所有屬性數(shù)據(jù)之間的關(guān)系采用上述多個key-value存儲方式存儲,并根據(jù)各個屬性數(shù)據(jù)之間的關(guān)系來建立有向圖,當(dāng)想通過某個屬性數(shù)據(jù)X查詢另外一個屬性數(shù)據(jù)Y的時候,只需要以X作為出發(fā)點(diǎn),使用BFS寬度搜索算,搜索出到Y(jié)的最短路徑,找出Y的值。如果查找到的路徑并非最短路徑(即χ指向Y的關(guān)系路徑),則使用關(guān)系修復(fù)算法修復(fù)X和Y屬性之間的路徑,使得下次查找的時候,可以直接通過X到Y(jié)的路徑獲取數(shù)據(jù)。具體的,如圖3所示,當(dāng)獲得某兩個數(shù)據(jù)的對應(yīng)關(guān)系,以駕駛證和工行賬戶為例子分別以駕駛證為主鍵key、工行賬戶為value導(dǎo)入“駕駛證_>工行賬戶”關(guān)系對應(yīng)的 key-value存儲,再以工行賬戶為key、駕駛證為value導(dǎo)入“工行賬戶_>駕駛證”關(guān)系對應(yīng)的key-value存儲中,也可以通過上述方法導(dǎo)入“工行帳戶<_>建行帳戶”、“駕駛證<_> 設(shè)保號”以及“工行帳戶<_>設(shè)保號”關(guān)系對應(yīng)的key-value存儲。當(dāng)以駕駛證為主鍵查找建行帳戶時,該實(shí)施例的有向圖中可以獲得三條路徑,但都不是最短路徑。優(yōu)選的,該裝置還可以包括獲取模塊110,用于獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑經(jīng)過的一個或多個第三屬性數(shù)據(jù);創(chuàng)建模塊130,用于建立第一屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系,同時建立第二屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。本發(fā)明上述實(shí)施例實(shí)現(xiàn)填補(bǔ)缺失的屬性數(shù)據(jù)及屬性數(shù)據(jù)之間的關(guān)系。上述實(shí)施例實(shí)現(xiàn)使用key-value存儲與搜索算法結(jié)合去實(shí)現(xiàn)屬性快速查詢這一個技術(shù)方案,能夠提供高效的實(shí)時查詢功能的同時擁有高效的數(shù)據(jù)導(dǎo)入功能。圖4是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)關(guān)系的處理方法的流程圖。如圖4所示該方法包括如下步驟步驟S102,通過圖2中的定義模塊10來設(shè)置第一屬性數(shù)據(jù)為主鍵。步驟S104,通過圖2中的搜索模塊30來實(shí)現(xiàn)調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑。步驟S106,通過圖2中的判斷模塊50來判斷路徑是否是最短路徑。步驟S108,通過圖2中的修復(fù)模塊70來實(shí)現(xiàn),當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。本發(fā)明上述實(shí)施例通過查詢兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系,并判斷兩個屬性數(shù)據(jù)之間的關(guān)系,即查詢路徑是否是最短路徑,如果兩個屬性數(shù)據(jù)之間的需要經(jīng)過其他屬性關(guān)系才可以查詢到的話,則創(chuàng)建這兩個屬性數(shù)據(jù)之間的直接屬性關(guān)系,即獲取兩個屬性數(shù)據(jù)之間的最短路徑,在下次查詢的時候,通過其中一個屬性數(shù)據(jù)就可以直接查找到另外一個屬性數(shù)據(jù),并獲取屬性數(shù)據(jù)的值,而且將創(chuàng)建后的二者屬性關(guān)系保存,即不斷完善原來的屬性關(guān)系數(shù)據(jù)庫,使得屬性數(shù)據(jù)關(guān)系趨于完善,實(shí)現(xiàn)了高速查詢屬性數(shù)據(jù)的同時也提供高速的屬性數(shù)據(jù)更新和導(dǎo)入的性能。具體的,假如用戶的查詢無法通過最短路徑查找到,只能通過非最短路徑查找,在這種情況下,可以使用數(shù)據(jù)關(guān)系修復(fù)使得數(shù)據(jù)關(guān)系趨向于完整。具體的,上述步驟S106和步驟S108可以實(shí)現(xiàn),當(dāng)需要根據(jù)值為value的X屬性查找Y屬性的值時,如果X到Y(jié)的關(guān)系可以直接獲取Y屬性的數(shù)據(jù),則直接返回該屬性Y的數(shù)據(jù),否則,可以以X作為起點(diǎn),使用寬度搜索算法,尋找到Y(jié)屬性的路徑,如果有一條路徑可達(dá),則對于中間經(jīng)過的任意兩個的屬性,相互建立key->ValUe的屬性關(guān)系,以獲得在有向圖上增添X屬性到Y(jié)屬性的最短路徑,從而返回Y屬性的值。因此,本發(fā)明提出的使用 key-value存儲去存儲任意兩個屬性之間的關(guān)系??梢愿鶕?jù)某一個提供的屬性,使用BFS寬度搜索算法,快速查找出另外一個屬性,然后可以填補(bǔ)一些缺失的屬性關(guān)系,使得后續(xù)的屬性數(shù)據(jù)查找效率更加高效。本發(fā)明上述實(shí)施例中,在上述判斷步驟S106之后,還可以包括步驟S109,該步驟實(shí)現(xiàn)當(dāng)路徑是最短路徑時,系統(tǒng)可以返回第二屬性數(shù)據(jù)的值給用戶,以實(shí)現(xiàn)用戶通過最短路徑查詢得到所需的數(shù)據(jù)。本發(fā)明上述實(shí)施例中的在設(shè)置第一屬性數(shù)據(jù)為主鍵之前,方法還可以包括如下步驟構(gòu)建屬性關(guān)系數(shù)據(jù)庫,屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。優(yōu)選地,調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù), 以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑的步驟S104可以包括如下步驟調(diào)用屬性關(guān)系數(shù)據(jù)庫,并根據(jù)屬性關(guān)系數(shù)據(jù)庫建立有向圖;以主鍵為出發(fā)點(diǎn),通過寬度搜索算法在有向圖中查詢第二屬性數(shù)據(jù),并獲取第二屬性數(shù)據(jù)的值;獲取并記錄第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的一條或多條路徑。具體的,本發(fā)明該實(shí)施例可以使用key-value存儲去存儲任意兩個屬性之間的關(guān)系以構(gòu)成屬性關(guān)系數(shù)據(jù)庫,然后可以根據(jù)某一個提供的屬性,使用BFS寬度搜索算法,快速查找出另外一個屬性,用以填補(bǔ)一些缺失的屬性。在查找的效率上更加高效。優(yōu)選地,在建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫之后,方法還包括獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑經(jīng)過的第三屬性數(shù)據(jù);建立第一屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系,同時建立第二屬性數(shù)據(jù)與第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。本發(fā)明上述各個實(shí)施例中的屬性關(guān)系為有向圖中的雙向關(guān)系,并以數(shù)據(jù)表的格式將雙向關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中。圖5-6是根據(jù)本發(fā)明第一實(shí)施例的基于有向圖的屬性數(shù)據(jù)關(guān)系的結(jié)構(gòu)示意圖。如圖5所示,該實(shí)施例中在屬性數(shù)據(jù)導(dǎo)入的過程中,分別導(dǎo)入了 “駕駛證<_>社保號”,“社保號<_>工行賬戶”,“建行賬戶<_>工行賬戶”的屬性關(guān)系,因此,該用戶只具備了圖5中的數(shù)據(jù)關(guān)系。該實(shí)施例中,如果用戶想通過駕駛證查找建行賬戶的時候,由于用戶缺少“駕駛證_>建行賬戶”的對應(yīng)關(guān)系,所以無法馬上找到建行賬戶的數(shù)據(jù)出來,需要通過“駕駛證一社保號一工行賬戶一建行賬戶,,這樣一條非最短路徑才能找到,在獲得建行賬戶的數(shù)據(jù)的時候,由于有了 “駕駛證”、“社保號”、“工行賬戶,,和“建行賬戶,,這4個屬性的數(shù)據(jù)及對應(yīng)關(guān)系,于是可以把這4個屬性數(shù)據(jù)按照以駕駛證為主鍵key、工行賬戶為value導(dǎo)入“駕駛證_>工行賬戶”關(guān)系對應(yīng)的key-value存儲,再以工行賬戶為key、駕駛證為value導(dǎo)入“工行賬戶_>駕駛證”關(guān)系對應(yīng)的key-value存儲中,實(shí)現(xiàn)分別把某兩個屬性的對應(yīng)關(guān)系導(dǎo)入到Key-value存儲中,使得其數(shù)據(jù)關(guān)系修復(fù)成如圖6所示的有向圖。如圖6所示,用戶下次來通過駕駛證查詢建行賬戶的時候,會通過圖6中的最短路徑“駕駛證一建行賬戶”來得到建行帳戶的數(shù)據(jù)值。具體的,上述實(shí)施例實(shí)現(xiàn)的代碼片段如下
8//屬性結(jié)構(gòu) struct AttrPoint {
std: :string attr; //屬性名 std::string value; //值
};
該步驟實(shí)現(xiàn)定義相關(guān)屬性的屬性名和該屬性數(shù)據(jù)對應(yīng)的值。 typedef vector<std:string) TATTRLIST; Τ—ATTRLIST AttrList; //記錄了所有屬性
//調(diào)用key-value存儲,通過start點(diǎn)的值key,獲取end的值
extern std:string getValue (const std:string& start , const std::string& end , const std::string& key);
//調(diào)用key-value存儲,對關(guān)系為start->end的存儲,根據(jù)key的值設(shè)置value的值
extern void setValue (const std::string& start , const std::string& end , const std::stringfe key , std::stringfe value);
//修復(fù)關(guān)系數(shù)據(jù)
void build—relationship (std::map <std::string , std::string>& Record)
權(quán)利要求
1.一種數(shù)據(jù)關(guān)系的處理方法,其特征在于,包括 設(shè)置第一屬性數(shù)據(jù)為主鍵;調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)所述主鍵在所述屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的路徑; 判斷所述路徑是否是最短路徑;當(dāng)所述路徑為非最短路徑時,建立所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將所述直接屬性關(guān)系保存至所述屬性關(guān)系數(shù)據(jù)庫中,其中,所述直接屬性關(guān)系為所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在設(shè)置第一屬性數(shù)據(jù)為主鍵之前,所述方法還包括構(gòu)建所述屬性關(guān)系數(shù)據(jù)庫,所述屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,所述屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)所述主鍵在所述屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的路徑的步驟包括調(diào)用所述屬性關(guān)系數(shù)據(jù)庫,并根據(jù)所述屬性關(guān)系數(shù)據(jù)庫建立有向圖; 以所述主鍵為出發(fā)點(diǎn),通過寬度搜索算法在所述有向圖中查詢所述第二屬性數(shù)據(jù),并獲取所述第二屬性數(shù)據(jù)的值;獲取并記錄所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的一條或多條路徑。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,在建立所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將所述直接屬性關(guān)系保存至所述屬性關(guān)系數(shù)據(jù)庫之后,所述方法還包括獲取所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的路徑經(jīng)過的第三屬性數(shù)據(jù); 建立所述第一屬性數(shù)據(jù)與所述第三屬性數(shù)據(jù)之間的直接屬性關(guān)系,同時建立所述第二屬性數(shù)據(jù)與所述第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,其特征在于,所述屬性關(guān)系為雙向關(guān)系,將所述直接屬性關(guān)系保存至所述屬性關(guān)系數(shù)據(jù)庫中包括將所述雙向關(guān)系以數(shù)據(jù)表的格式保存至所述屬性關(guān)系數(shù)據(jù)庫中。
6.一種數(shù)據(jù)關(guān)系的處理裝置,其特征在于,包括 設(shè)置模塊,用于設(shè)置第一屬性數(shù)據(jù)為主鍵;搜索模塊,用于調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)所述主鍵在所述屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的路徑; 判斷模塊,用于判斷所述路徑是否是最短路徑;修復(fù)模塊,用于當(dāng)所述路徑為非最短路徑時,建立所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將所述直接屬性關(guān)系保存至所述屬性關(guān)系數(shù)據(jù)庫中,其中,所述直接屬性關(guān)系為所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括構(gòu)建模塊,用于構(gòu)建所述屬性關(guān)系數(shù)據(jù)庫,所述屬性關(guān)系數(shù)據(jù)庫包括一組或多組屬性關(guān)系,所述屬性關(guān)系為任意兩個屬性數(shù)據(jù)之間的對應(yīng)關(guān)系。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述搜索模塊包括調(diào)用模塊,用于調(diào)用所述屬性關(guān)系數(shù)據(jù)庫,并根據(jù)所述屬性關(guān)系數(shù)據(jù)庫建立有向圖; 查詢模塊,用于以所述主鍵為出發(fā)點(diǎn),通過寬度搜索算法在所述有向圖中查詢所述第二屬性數(shù)據(jù),并獲取所述第二屬性數(shù)據(jù)的值;保存模塊,用于獲取并記錄所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的一條或多條路徑。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括獲取模塊,用于獲取所述第一屬性數(shù)據(jù)與所述第二屬性數(shù)據(jù)之間的路徑經(jīng)過的第三屬性數(shù)據(jù);創(chuàng)建模塊,用于建立所述第一屬性數(shù)據(jù)與所述第三屬性數(shù)據(jù)之間的直接屬性關(guān)系,同時建立所述第二屬性數(shù)據(jù)與所述第三屬性數(shù)據(jù)之間的直接屬性關(guān)系。
10.一種移動通訊終端,其特征在于,包括權(quán)利要求6-9中任意項(xiàng)所述的數(shù)據(jù)關(guān)系的處理裝置。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)關(guān)系的處理方法、裝置及移動通訊終端。其中,該方法包括設(shè)置第一屬性數(shù)據(jù)為主鍵;調(diào)用屬性關(guān)系數(shù)據(jù)庫,根據(jù)主鍵在屬性關(guān)系數(shù)據(jù)庫中搜索第二屬性數(shù)據(jù),以獲取第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的路徑;判斷路徑是否是最短路徑;當(dāng)路徑為非最短路徑時,建立第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間的直接屬性關(guān)系,并將直接屬性關(guān)系保存至屬性關(guān)系數(shù)據(jù)庫中,其中,直接屬性關(guān)系為第一屬性數(shù)據(jù)與第二屬性數(shù)據(jù)之間為最短路徑時對應(yīng)的屬性關(guān)系。通過本發(fā)明,能夠?qū)崿F(xiàn)在提供高速查詢屬性數(shù)據(jù)的同時也提供高速的屬性數(shù)據(jù)更新和導(dǎo)入的性能。
文檔編號G06F17/30GK102214214SQ201110147900
公開日2011年10月12日 申請日期2011年6月2日 優(yōu)先權(quán)日2011年6月2日
發(fā)明者梁捷, 謝玄亮 申請人:廣州市動景計(jì)算機(jī)科技有限公司