一種最小函數(shù)依賴的增量計(jì)算方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,特別涉及一種最小函數(shù)依賴的增量計(jì)算方法。
【背景技術(shù)】
[0002] 隨著信息化進(jìn)程在各行各業(yè)的快速推進(jìn),海量、動(dòng)態(tài)數(shù)據(jù)庫(kù)的涌現(xiàn)使數(shù)據(jù)分析與 處理面臨嚴(yán)峻考驗(yàn)。數(shù)據(jù)庫(kù)是變化的,數(shù)據(jù)所反映的知識(shí)也是變化的,如何高效、動(dòng)態(tài)地維 護(hù)數(shù)據(jù)挖掘所得知識(shí)是數(shù)據(jù)庫(kù)領(lǐng)域的一個(gè)重要課題。近些年來(lái),數(shù)據(jù)庫(kù)完整性約束正被廣 泛應(yīng)用于數(shù)據(jù)分析與處理,以及檢測(cè)不一致數(shù)據(jù)、提高數(shù)據(jù)質(zhì)量等方面。
[0003] 目前,政府部門、企業(yè)等單位的信息系統(tǒng)及數(shù)據(jù)中心絕大部分以關(guān)系數(shù)據(jù)庫(kù)管理 為核心,為了從中快速、準(zhǔn)確地識(shí)別出錯(cuò)誤、不一致等異常數(shù)據(jù)需要高效可行的技術(shù)與方法 支持,數(shù)據(jù)質(zhì)量檢測(cè)工具需求越來(lái)越大。從用途方面上考慮,數(shù)據(jù)質(zhì)量檢測(cè)方法適用于:業(yè) 務(wù)數(shù)據(jù)處理與統(tǒng)計(jì)、數(shù)據(jù)歸檔、數(shù)據(jù)倉(cāng)庫(kù)維護(hù)、數(shù)據(jù)清洗、數(shù)據(jù)集成或整合之中。為此,未來(lái) 幾年在政府、事業(yè)、企業(yè)等單位的信息化建設(shè)過(guò)程中引入數(shù)據(jù)質(zhì)量管理平臺(tái),建立各個(gè)層次 上數(shù)據(jù)質(zhì)量檢測(cè)系統(tǒng),將成為必然趨勢(shì)。錯(cuò)誤、不一致等異常數(shù)據(jù)檢測(cè)方法及相應(yīng)的檢測(cè)工 具具有很好的產(chǎn)業(yè)前景。
[0004] 函數(shù)依賴(Functional Dependency,縮寫為FD)是關(guān)系數(shù)據(jù)庫(kù)的重要約束之一, 不僅是數(shù)據(jù)庫(kù)設(shè)計(jì)的基礎(chǔ),而且是數(shù)據(jù)質(zhì)量監(jiān)測(cè)、控制的依據(jù)。雖然函數(shù)依賴可以在數(shù)據(jù)庫(kù) 管理系統(tǒng)作為數(shù)據(jù)約束定義,但許多情況下,在構(gòu)建數(shù)據(jù)庫(kù)時(shí),沒有明確定義函數(shù)依賴,或 者并非在構(gòu)造數(shù)據(jù)庫(kù)時(shí)能夠明確制定,需要通過(guò)數(shù)據(jù)集挖掘或計(jì)算函數(shù)依賴,并且隨著數(shù) 據(jù)庫(kù)的變化還需要對(duì)它們進(jìn)行維護(hù),以保證檢測(cè)異常數(shù)據(jù)的準(zhǔn)確性。
[0005] 關(guān)于函數(shù)依賴集的計(jì)算算法已研宄多年,最具代表性的兩種算法是按照層次 的算法(例如 Y. Huhtala, J. Karkk ainen 等在 1999 年公開的《TANE:An efficient algorithm for discovering functional and approximate dependencies〉〉)和深度優(yōu) 先的算法(例如 C. M. Wyss, C. Giannella, E. L. Robertson 等在 2001 年公開的《FastFDs:A heuristic-driven, depth-first algorithm for mining functional dependencies from relation instances-extended for abstract》),隨著數(shù)據(jù)庫(kù)的變化,函數(shù)依賴也可能發(fā)生 變化,即原有的函數(shù)依賴不再成立、新的函數(shù)依賴產(chǎn)生。目前計(jì)算數(shù)據(jù)庫(kù)變化后的函數(shù)依賴 及最小函數(shù)依賴的方式主要有兩種:
[0006] (1)重新計(jì)算:針對(duì)變化后的數(shù)據(jù)庫(kù)按照某一函數(shù)依賴計(jì)算方法重新計(jì)算函數(shù)依 賴,不利用數(shù)據(jù)集變化的部分(即增加的元組,刪除的元組,修改的元組)、原來(lái)計(jì)算出的最 小函數(shù)依賴集及劃分信息。
[0007] (2)增量計(jì)算:主要根據(jù)數(shù)據(jù)集變化的部分、原有的最小函數(shù)依賴集及劃分信息, 增量檢測(cè)原有的最小函數(shù)依賴是否成立,并計(jì)算新增的最小函數(shù)依賴。
[0008] 目前,針對(duì)動(dòng)態(tài)變化的數(shù)據(jù)庫(kù),計(jì)算函數(shù)依賴集及最小函數(shù)依賴的算法均是采用 重新計(jì)算的方式,如TANE算法和FastFDs算法以及基于它們改進(jìn)的算法。針對(duì)變化的數(shù)據(jù) 庫(kù),采用重新計(jì)算最小函數(shù)依賴方式,重復(fù)計(jì)算與變化前數(shù)據(jù)庫(kù)相同的最小函數(shù)依賴,隨著 數(shù)據(jù)庫(kù)的增大,時(shí)間效率較低。在實(shí)際應(yīng)用中,隨著數(shù)據(jù)庫(kù)的變化,大部分最小函數(shù)依賴仍 然不變或成立,因此,重新計(jì)算是沒有必要的。
[0009] 所以,提出一種計(jì)算效率高、靈活性強(qiáng)、通過(guò)增量計(jì)算方式來(lái)計(jì)算最小函數(shù)依賴的 方法具有重要的應(yīng)用價(jià)值。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種最小函數(shù)依賴的增量計(jì) 算方法,該方法是采用增量計(jì)算的方式,從變化的關(guān)系數(shù)據(jù)集中計(jì)算最小函數(shù)依賴,計(jì)算效 率高,且計(jì)算結(jié)果準(zhǔn)確。
[0011] 為了克服現(xiàn)有方法和技術(shù)的不足,本發(fā)明根據(jù)變化數(shù)據(jù)集、關(guān)系表變化前的最小 函數(shù)依賴集及劃分信息,增量檢測(cè)原有的最小函數(shù)依賴是否成立,并計(jì)算新增的最小函數(shù) 依賴。
[0012] 本發(fā)明技術(shù)方案所涉及的數(shù)學(xué)定義首先列舉如下:
[0013] 函數(shù)依賴的定義:令R是一個(gè)關(guān)系模式,Xe R,Y e R,函數(shù)依賴X -Y成立的條 件是:對(duì)于模式為R的關(guān)系表r及r中任意兩個(gè)元組&和12,以及所有B e X,如果tl [B] =t2[B],則 tjY] = t2[Y]。若Y e X,X -Y是平凡的。
[0014] 最小函數(shù)依賴的定義:令R是一個(gè)關(guān)系模式,XgR,Y e R,函數(shù)依賴x -γ成立, 若對(duì)于任意非空Z(yǔ)(=X,z - Y不成立,則X - Y是最小函數(shù)依賴。
[0015] 本發(fā)明僅研宄最小非平凡函數(shù)依賴的增量計(jì)算方法。下文提到的函數(shù)依賴均指非 平凡函數(shù)依賴、最小函數(shù)依賴均指最小非平凡函數(shù)依賴。
[0016] 等價(jià)類的定義:屬性集X的某一等價(jià)類[t]x是指在給定關(guān)系表中,所有與元組t在 X上取值對(duì)應(yīng)相等(簡(jiǎn)稱與t在X上取值相等)的元組的集合。
[0017] 劃分的定義:屬性集X上的劃分是在給定關(guān)系表r中,X的所有等價(jià)類的集合,記 為JT x,I JTxI表示在JTx中等價(jià)類的數(shù)目。
[0018] 判定函數(shù)依賴X - Y是否成立的方法:若I π x| = I π χ?{γ} I,則函數(shù)依賴X - Y成 立;否則,不成立。本發(fā)明按照該方法判定函數(shù)依賴是否成立。
[0019] 判定函數(shù)依賴X -Y是否為最小函數(shù)依賴的方法:函數(shù)依賴X -Y成立,且若對(duì)于 任意Zc=X,Z - Y不成立,則X - Y是最小函數(shù)依賴;否則不是最小函數(shù)依賴。本發(fā)明按照 該方法判定函數(shù)依賴是否是最小函數(shù)依賴。
[0020] 假設(shè)給定關(guān)系模式為R的關(guān)系表r,規(guī)定如下標(biāo)識(shí)符:
[0021] Λ r :按給定的周期捕獲到變化的增量元組集;
[0022] I R| :R中包括的屬性個(gè)數(shù);
[0023] rnew:變化后的新關(guān)系表;
[0024] Partitions :關(guān)系表r變化前的劃分信息集;
[0025] Partitions_new :rnew的劃分信息集;
[0026] FDs_old(r):關(guān)系表r變化前的最小非平凡函數(shù)依賴集;
[0027] FDs_new(rnew):關(guān)系表r變化后的最小非平凡函數(shù)依賴集。
[0028] 在基于上述數(shù)學(xué)定義基礎(chǔ)上,下面來(lái)具體說(shuō)明本發(fā)明一種最小函數(shù)依賴的增量計(jì) 算方法的具體技術(shù)方案。
[0029] 本發(fā)明一種最小函數(shù)依賴的增量計(jì)算方法,已知關(guān)系表變化前的最小非平凡函數(shù) 依賴集、增量元組集、變化前的關(guān)系表的劃分信息集,首先根據(jù)增量元組集中所有元組的操 作類型及屬性值,修改劃分信息集中的劃分信息,然后增量檢測(cè)原有的每條最小非平凡函 數(shù)依賴在變化后的關(guān)系表中是否仍為最小非平凡函數(shù)依賴,如果是,則保留在最小非平凡 函數(shù)依賴集中;如果不是,則從最小非平凡函數(shù)依賴集中刪除,并計(jì)算關(guān)系表變化后新增的 最小非平凡函數(shù)依賴。
[0030] 具體步驟如下:
[0031] (1)選擇關(guān)系模式為R的初始關(guān)系表r進(jìn)行操作,將增量元組記錄到Λ r中,得到 變化后的新關(guān)系表rnOT;
[0032] (2)根據(jù)增量元組集Λ r中所有元組操作類型及屬性值,修改Partitions中的劃 分信息;
[0033] (3)初始時(shí),令 FDs_new(rnew) = FDs_old(r);
[0034] (4)從Λ r中讀取一條元組tp;
[0035] (5)根據(jù)元組tp的操作類型,進(jìn)行最小函數(shù)依賴的增量計(jì)算,方法如下:
[0036] (5-1)如果tp是增加的元組,修改FDs_new(r new)的步驟如下:
[0037] (5-1-1)讀取FDs_new(r