基于最近鄰搜索的關(guān)系表集合外鍵識(shí)別方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明屬于數(shù)據(jù)庫(kù)
技術(shù)領(lǐng)域:
,具體涉及一種新型的關(guān)系表集合外鍵識(shí)別技術(shù)?!?br>背景技術(shù):
】[0002]數(shù)據(jù)庫(kù)模式是理解數(shù)據(jù)庫(kù)結(jié)構(gòu)與特征的基礎(chǔ),在數(shù)據(jù)建模、查詢優(yōu)化、數(shù)據(jù)索引等方面具有重要作用。在關(guān)系數(shù)據(jù)庫(kù)中,主鍵、外鍵關(guān)系是數(shù)據(jù)庫(kù)模式的重要組成部分。雖然絕大多數(shù)的數(shù)據(jù)庫(kù)管理系統(tǒng)支持顯式地指定表與表之間的外鍵關(guān)系,但在實(shí)際數(shù)據(jù)庫(kù)應(yīng)用中,往往有很多原因?qū)е峦怄I關(guān)系不完整,如開發(fā)者對(duì)數(shù)據(jù)理解不夠透徹、數(shù)據(jù)自身存在不一致性、設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)考慮到效率等。同時(shí),隨著數(shù)據(jù)庫(kù)關(guān)系模式復(fù)雜度的增加,人工識(shí)別數(shù)據(jù)表之間的外鍵越來(lái)越困難。自動(dòng)識(shí)別數(shù)據(jù)表之間的外鍵關(guān)系,不僅是查詢優(yōu)化和數(shù)據(jù)集成的基礎(chǔ),而且有助于數(shù)據(jù)庫(kù)開發(fā)者和維護(hù)者改進(jìn)數(shù)據(jù)庫(kù)設(shè)計(jì)。因此,如何有效識(shí)別數(shù)據(jù)表之間的外鍵關(guān)系具有重要理論意義與實(shí)際應(yīng)用價(jià)值。[0003]鑒于外鍵識(shí)別的重要性,國(guó)內(nèi)外許多研究者已做過(guò)相關(guān)研究,主流的研究方法是將外鍵識(shí)別分為兩個(gè)階段:首先發(fā)現(xiàn)關(guān)系表集合中的包含依賴,縮小外鍵候選集的范圍,然后利用外鍵的特征識(shí)別外鍵。在關(guān)系數(shù)據(jù)庫(kù)中,"外鍵中的元組集合是其參照的主鍵元組集合的子集",所以外鍵一定滿足包含依賴。但是,僅僅發(fā)現(xiàn)包含依賴是不夠的,比如數(shù)據(jù)庫(kù)中的自增列,在很多數(shù)據(jù)庫(kù)實(shí)例中,自增列之間滿足包含依賴關(guān)系,但實(shí)際上它們各自是獨(dú)立的,是相應(yīng)表的主鍵,相互之間并沒(méi)有外鍵關(guān)系。給定一個(gè)數(shù)據(jù)庫(kù)實(shí)例,滿足包含依賴但并不是外鍵的屬性在所有的包含依賴中占有很大比例。因此,為了能準(zhǔn)確地發(fā)現(xiàn)數(shù)據(jù)表集合中的外鍵,需要采用有效的方法過(guò)濾掉非外鍵包含依賴。[0004]RostinA等針對(duì)大量的數(shù)據(jù)庫(kù)系統(tǒng)實(shí)例進(jìn)行統(tǒng)計(jì),總結(jié)出了外鍵的十個(gè)特征(外鍵元組應(yīng)該覆蓋很多主鍵元組,作為外鍵的屬性往往不再作為主鍵被其他外鍵參照等),RostinA等利用這些特征使用機(jī)器學(xué)習(xí)來(lái)識(shí)別外鍵,但他們提出的這些特征都很容易找出反例。[0005]MeihuiZhang等也通過(guò)分析提出了外鍵的另一特征--"外鍵元組是其參照的主鍵元組的均勻隨機(jī)樣本",據(jù)此設(shè)計(jì)算法并實(shí)現(xiàn),取得了很好的實(shí)驗(yàn)結(jié)果。現(xiàn)在外鍵發(fā)現(xiàn)的研究主要集中在單個(gè)屬性的外鍵識(shí)別,很少有研究考慮了多屬性的外鍵識(shí)別,主要原因可能是多屬性外鍵識(shí)別的算法復(fù)雜度較高,而且由于數(shù)據(jù)庫(kù)管理系統(tǒng)引入了自增列,數(shù)據(jù)庫(kù)設(shè)計(jì)者很少在數(shù)據(jù)庫(kù)系統(tǒng)中設(shè)計(jì)多屬性外鍵。[0006]除了基于包含依賴的外鍵識(shí)別方法,Lopes等提出了使用SQL查詢歷史來(lái)推斷外鍵,該方法主要基于"SQL查詢中的JOIN操作往往是在主鍵和外鍵上進(jìn)行連接",這種方法需要大量的SQL查詢歷史,而SQL查詢?nèi)罩疽话闶请y以獲得的。此外,這種方法本身也可能帶來(lái)一些誤報(bào),比如:T2.ID和T3.ID都參考Tl.ID,實(shí)際查詢時(shí)也有可能連接(JOIN)T2和T3表,但是T2.ID和T3.ID之間沒(méi)有外鍵關(guān)系。[0007]外鍵識(shí)別本質(zhì)上是依靠外鍵和主鍵之間固有的語(yǔ)義聯(lián)系,現(xiàn)有技術(shù)方法從不同角度反映屬性之間的語(yǔ)義關(guān)聯(lián)程度,但現(xiàn)有算法對(duì)外鍵特征考慮并不全面,無(wú)法處理不同領(lǐng)域的外鍵識(shí)別問(wèn)題。另一方面,現(xiàn)有的外鍵識(shí)別算法模型復(fù)雜,難以應(yīng)用到大規(guī)模關(guān)系表集合上。【
發(fā)明內(nèi)容】[0008]本發(fā)明的目的是解決大規(guī)模關(guān)系表集合中外鍵識(shí)別問(wèn)題,使用統(tǒng)計(jì)特征表示關(guān)系表中的屬性,將關(guān)系表外鍵識(shí)別問(wèn)題轉(zhuǎn)化成高維空間中最近鄰搜索問(wèn)題,提出了一種高效簡(jiǎn)潔的外鍵識(shí)別方法一一基于最近鄰搜索的關(guān)系表集合外鍵識(shí)別方法。該方法在提高外鍵識(shí)別效率的同時(shí)還能保證外鍵識(shí)別的準(zhǔn)確度,易于應(yīng)用到大規(guī)模關(guān)系表集合上。[0009]本發(fā)明提供的基于最近鄰搜索的關(guān)系表集合外鍵識(shí)別方法的具體步驟如下:[0010]第1、識(shí)別關(guān)系表集合中的包含依賴[0011]定義1:如果A,B滿足如下兩個(gè)條件,則屬性對(duì)(A,B)滿足包含依賴,記作、m、[0012]其中A表示依賴屬性,B表示被參照屬性::[0013](1)A,B有相同的屬性個(gè)數(shù);[0014](2)屬性A中的元組包含在屬性B中;[0015]關(guān)系表中少量的數(shù)據(jù)不一致性可能是由于誤操作、網(wǎng)絡(luò)傳輸以及數(shù)據(jù)集成等原因造成的,應(yīng)適當(dāng)放松包含依賴的限制,以得到更合理的結(jié)果;[0016]定義2:C,D分別為兩個(gè)屬性,包含系數(shù)定義如下:[0017][0018]在實(shí)際應(yīng)用中,如果C和D滿足σ(C,D)彡Θ,其中Θ是自定義的,就認(rèn)為C和D滿足包含依賴,如設(shè)定Θ=0.95,表示C中的元組有95%以上都在D中。[0019]第1.1、使用并行算法識(shí)別關(guān)系表集合中的單列包含依賴,其具體步驟包括:[0020]第I.1.1、查詢屬性中的所有元組,去除屬性中的重復(fù)元組并對(duì)元組按從小到大進(jìn)行排序(e.g.SELECTDISTINCTattributeFROMtableORDERBYattribute);[0021]第I.I.2、假設(shè)屬性集合為U1,A2,…,An},初始時(shí),屬性A1能夠參照的屬性為(A1,A2,…,AiDAi+1,…,AJ,ie{1,2,3,…,η};各屬性有一個(gè)指向最小元組的指針;[0022]第I.1.3、通過(guò)移動(dòng)指針并行地按序遍歷第I.I.1步得到的屬性元組,通過(guò)比較元組值是否存在于某個(gè)屬性中,確定屬性之間的參照與被參照關(guān)系,當(dāng)元組aeA1,__i__則可以確定__?__從Ai的候選屬性集合中刪除A,按此方法遍歷所有元組值,如果Ai的候選屬性集合中仍有屬性,即為包含屬性;[0023]第1.2、識(shí)別關(guān)系表集合中的多列包含依賴,其具體步驟包括:[0024]第1.2.1、候選屬性對(duì)集合剪枝[0025]包含依賴的投影包含性質(zhì):[0026]若m個(gè)屬性滿足包含依賴,則其中任意m-1個(gè)屬性必定也對(duì)應(yīng)滿足包含依賴,即'為;VV…氣山^[0027]該性質(zhì)可以用來(lái)對(duì)多列包含依賴候選集剪枝,假設(shè)現(xiàn)有A、B、C、D、E、F六個(gè)屬性,A、B、C在關(guān)系表1中,D、E、F在關(guān)系表2中,通過(guò)第I.1步得到_____則可以推出,僅、aiiF、傲:《保A沉·《/>以'即這五組屬性對(duì)不用再比較;所述外鍵識(shí)別方法的屬性對(duì)生成策略是自底向上的生成候選屬性對(duì),利用較少屬性的候選對(duì)判斷結(jié)果,對(duì)更多屬性的屬性對(duì)進(jìn)行剪枝;[0028]第1.2.2、查詢候選屬性組合的所有元組,去除重復(fù)元組并按從小到大進(jìn)行排序,排序方法:先按組合中第一屬性的大小排序,若第一屬性值相等,按第二屬性的大小排序,依此類推;[0029]第1.2.3、使用與第I.1.2步和第I.1.3步類似的方法,并行遍歷第1.2.2步得到的屬性元組,確定屬性組合之間的包含關(guān)系;[0030]第2、從包含依賴集合中篩選出外鍵[0031]鑒于主鍵、外鍵屬性本質(zhì)上的語(yǔ)義相關(guān)性,通過(guò)查找屬性集合中主鍵的最近鄰找出對(duì)應(yīng)的外鍵;[0032]第2.1、以屬性的統(tǒng)計(jì)特征來(lái)表示一個(gè)屬性,經(jīng)過(guò)第I.I.1步以及第1.2.2步,屬性元組均已排序,使用以下特征來(lái)表示一個(gè)屬性:[0033]不同值個(gè)數(shù)(DistinctTuples,DT):是指屬性中不同值個(gè)數(shù),[0034]屬性名(AttributeName,N):屬性的名稱,[0035]平均值(Average,A):是指數(shù)值型屬性的平均值,字符型該屬性記為0,[0036]方差(Variance,V):是指數(shù)值型屬性的方差,字符型該屬性記為0,[0037]屬性值平均長(zhǎng)度(AverageLength,AL):是指字符型屬性的平均長(zhǎng)度,數(shù)值型屬性該特征記為〇,[0038]中位數(shù)(Median,M):是指屬性的中位數(shù);[0039]第2.2、對(duì)屬性的統(tǒng)計(jì)特征進(jìn)行歸一化,主要考慮以下兩方面:[0040]第2.2.1、對(duì)于數(shù)值型屬性而言,屬性值取值范圍會(huì)影響屬性對(duì)之間的比較,將每對(duì)屬性都除以被參照屬性的取值范圍來(lái)消除這種偏差;[0041]第2.2.2、對(duì)于字符型屬性而言,屬性值的長(zhǎng)度也會(huì)影響屬性對(duì)之間的比較,將每對(duì)屬性都除以被參照屬性的屬性值平均長(zhǎng)度來(lái)消除這種偏差;[0042]第2.3、字符串之間的距離使用編輯距離來(lái)度量,F(xiàn)astMap算法能夠?qū)⑻卣髦械淖址愋娃D(zhuǎn)換成向量,并保持原有的相似度,這樣得到一個(gè)能夠代表原屬性的特征向量,記作featurex,其中X表示屬性名;[0043]定義3:屬性間距離定義為特征向量的歐氏距離:[0044]dist(A,B)=||featureA-featureB[0045]其中A,B是包含依賴屬性集合中的屬性,一個(gè)特征向量,是屬性X的特征表示;[0046]通過(guò)研究發(fā)現(xiàn),所有滿足包含依賴的屬性對(duì)的距離具有如圖2所示的特點(diǎn),即主鍵、外鍵之間的距離普遍遠(yuǎn)小于普通包含依賴屬性對(duì)之間的距離;因此,在一個(gè)數(shù)據(jù)當(dāng)前第1頁(yè)1 2 3