專(zhuān)利名稱(chēng):一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)處理領(lǐng)域,特別涉及一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法。
背景技術(shù):
在信息系統(tǒng)建設(shè)過(guò)程中,由于數(shù)據(jù)獲取、數(shù)據(jù)輸入、數(shù)據(jù)傳遞、數(shù)據(jù)裝載、數(shù)據(jù)集成與維護(hù)等環(huán)節(jié)出現(xiàn)異?;蝈e(cuò)誤現(xiàn)象,難免產(chǎn)生錯(cuò)誤、不一致、重復(fù)等數(shù)據(jù)質(zhì)量問(wèn)題,這些問(wèn)題已成為數(shù)據(jù)集成和資源整合與應(yīng)用的主要障礙。目前,政府部門(mén)、企業(yè)等單位的信息系統(tǒng)及數(shù)據(jù)中心絕大部分以關(guān)系數(shù)據(jù)庫(kù)管理為核心,從中快速、準(zhǔn)確地識(shí)別出錯(cuò)誤、不一致、重復(fù)等異常數(shù)據(jù)需要高效可行的技術(shù)與方法支持,檢測(cè)的對(duì)象涉及數(shù)據(jù)表的記錄或?qū)傩约?jí)別。為了減少人工核查的工作強(qiáng)度、提高檢測(cè)的準(zhǔn)確度,數(shù)據(jù)質(zhì)量檢測(cè)工具需求越來(lái)越大,其可以應(yīng)用到任何數(shù)據(jù)庫(kù)應(yīng)用部門(mén),包括政府、企業(yè)、事業(yè)單位等,尤其像電信、銀行、證券、保險(xiǎn)等數(shù)據(jù)量大的服務(wù)行業(yè)。從用途方面考慮,數(shù)據(jù)質(zhì)量檢測(cè)方法適用于業(yè)務(wù)數(shù)據(jù)處理與統(tǒng)計(jì)、數(shù)據(jù)歸檔、數(shù)據(jù)倉(cāng)庫(kù)維護(hù)、數(shù)據(jù)清洗、數(shù)據(jù)集成或整合等領(lǐng)域。在當(dāng)今信息化時(shí)代,數(shù)據(jù)質(zhì)量如同企業(yè)產(chǎn)品質(zhì)量一樣重要,是企業(yè)生存和社會(huì)服務(wù)體系的命脈。統(tǒng)計(jì)表明,一般的應(yīng)用系統(tǒng)的數(shù)據(jù)庫(kù)中存在將近10 %的錯(cuò)誤,這些臟數(shù)據(jù)造成一些國(guó)家每年數(shù)億美元的損失。為此,未來(lái)幾年在政府、事業(yè)、企業(yè)等單位的信息化建設(shè)過(guò)程中引入數(shù)據(jù)質(zhì)量管理平臺(tái)、建立各個(gè)層次上數(shù)據(jù)質(zhì)量檢測(cè)系統(tǒng)將成為必然趨勢(shì)。錯(cuò)誤、 不一致、重復(fù)等異常數(shù)據(jù)檢測(cè)方法及相應(yīng)的檢測(cè)工具具有很好的產(chǎn)業(yè)前景。目前檢測(cè)關(guān)系數(shù)據(jù)庫(kù)中異常數(shù)據(jù)(即錯(cuò)誤、不一致、重復(fù)等數(shù)據(jù))的方式主要有五種(1)手工方式,用人工來(lái)檢測(cè)所有異常數(shù)據(jù)。(2)專(zhuān)門(mén)編寫(xiě)應(yīng)用程序,檢測(cè)特定的關(guān)系數(shù)據(jù)庫(kù)或文件中異常數(shù)據(jù)。(3)采用數(shù)據(jù)質(zhì)量規(guī)則自動(dòng)檢測(cè)的方法。相關(guān)研究關(guān)注基于某一類(lèi)數(shù)據(jù)規(guī)則的檢測(cè)方法,如文獻(xiàn)[1] (Wenfei Fan,etc. Conditional functional dependencies for capturing data inconsistencies. ACM Transactions on Database Systems, ν 33, η 2,June 1,2008.)提出基于 CFD (Conditional Funtional D印endencies,條件函數(shù)依賴(lài))約束的檢測(cè)方法,文獻(xiàn)[2] (Lukasz Ciszak,etc. Application of Clustering and Association Methods in Data Cleaning. Proceedings of the International Multiconference on Computer Science and Information Technology, 2008 :97-103.)提出基于聚類(lèi)和關(guān)聯(lián)規(guī)則的方法。(4)運(yùn)用數(shù)據(jù)清洗工具及數(shù)據(jù)倉(cāng)庫(kù)ETL工具,提供交互式的系統(tǒng)框架,制定數(shù)據(jù)清洗或解決沖突流程,通過(guò)編譯和調(diào)試每個(gè)檢測(cè)與變換過(guò)程,產(chǎn)生數(shù)據(jù)清洗或集成執(zhí)行計(jì)劃。(5)通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)定義數(shù)據(jù)完整性約束,如商用數(shù)據(jù)庫(kù)管理系統(tǒng)Oracle、 SQL Sever等,采用標(biāo)準(zhǔn)的SQL語(yǔ)言把各種完整性約束作為數(shù)據(jù)庫(kù)模式定義的一部分,在輸入、刪除或修改數(shù)據(jù)時(shí)檢測(cè)違背約束的異常數(shù)據(jù)。這些數(shù)據(jù)庫(kù)管理系統(tǒng)可對(duì)三種不同類(lèi)型的完整性約束進(jìn)行設(shè)置及檢測(cè),即實(shí)體完整性、參照完整性約束與外部碼、用戶(hù)自定義完整性約束(包括非空約束、對(duì)屬性的CHECK約束、對(duì)元組的CHECK約束、觸發(fā)器等實(shí)現(xiàn)用戶(hù)的各種完整性要求)。上述方法大多只能解決特定類(lèi)型數(shù)據(jù)質(zhì)量問(wèn)題,通用性較差,并且針對(duì)多種約束或規(guī)則需要多次掃描檢測(cè)關(guān)系中的所有元組,檢測(cè)效率較低。因此,需要提供一種通用性高、效率高的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,該方法可檢測(cè)多種類(lèi)型的數(shù)據(jù)質(zhì)量問(wèn)題,通用性強(qiáng),且檢測(cè)效率高。本發(fā)明的目的通過(guò)以下的技術(shù)方案實(shí)現(xiàn)一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,包括以下步驟(1)選擇檢測(cè)對(duì)象,檢測(cè)對(duì)象具體是指一個(gè)或多個(gè)關(guān)系表;(2)判斷是否需要新定義規(guī)則或修改原有規(guī)則,是則新定義或修改檢測(cè)對(duì)象及其之間的蘊(yùn)涵規(guī)則,并將規(guī)則存儲(chǔ)到規(guī)則庫(kù)中,然后進(jìn)入步驟(3);否則直接進(jìn)入步驟(3);(3)從規(guī)則庫(kù)中讀取與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的、元組變量列表相同的規(guī)則,存入清空的規(guī)則臨時(shí)表中,然后計(jì)算檢測(cè)關(guān)系中違背規(guī)則臨時(shí)表中規(guī)則的元組,并將這些元組放入一個(gè)集合中;(4)判斷檢測(cè)規(guī)則庫(kù)中是否還有與檢測(cè)對(duì)象有關(guān)的、未讀取的檢測(cè)規(guī)則,有則進(jìn)入步驟(3),沒(méi)有則進(jìn)入步驟(5);(5)輸出違背規(guī)則庫(kù)中與檢測(cè)對(duì)象有關(guān)的規(guī)則的所有元組,提供給用戶(hù)修復(fù)。所述步驟O)中的蘊(yùn)涵規(guī)則包括以下信息規(guī)則編號(hào),每一規(guī)則對(duì)應(yīng)有唯一編號(hào);檢測(cè)關(guān)系列表,具體為規(guī)則所涉及到的檢測(cè)對(duì)象關(guān)系表名稱(chēng)列表;元組變量列表,包括規(guī)則所涉及的所有元組變量信息;A公式,具體為涉及一個(gè)或多個(gè)元組變量的公式,或?yàn)榭眨肗ULL表示;B公式,具體為涉及一個(gè)或多個(gè)元組變量的公式。所述步驟O)中的蘊(yùn)涵規(guī)則的形式定義為B,含義為如果檢測(cè)對(duì)象滿(mǎn)足公式A,也必須滿(mǎn)足公式B。作為優(yōu)選方案,所述步驟O)的規(guī)則庫(kù)中每條規(guī)則的元組變量數(shù)目不超過(guò)2,因此每條規(guī)則涉及到的檢測(cè)關(guān)系表數(shù)目也不超過(guò)2,對(duì)于元組變量個(gè)數(shù)大于兩個(gè)的規(guī)則需轉(zhuǎn)換成兩條或兩條以上的規(guī)則定義。更進(jìn)一步的,蘊(yùn)涵規(guī)則中的元組變量為約束變?cè)?,一個(gè)元組變量的描述具體為元組變量類(lèi)別、元組變量符及所對(duì)應(yīng)的關(guān)系表名,所述元組變量類(lèi)別分為存在性元組變量和全稱(chēng)性元組變量,存在性元組變量用存在量詞符號(hào)3表示,具體形式為(3元組變量符名,關(guān)系表名);全稱(chēng)性元組變量用全稱(chēng)量詞符號(hào)V或空來(lái)表示,具體形式為(元組變量符名,關(guān)系表名)或(V元組變量符名,關(guān)系表名)。
所述步驟(3)中,元組變量列表相同的規(guī)則是指元組變量列表中元組變量個(gè)數(shù)、 元組變量類(lèi)別及對(duì)應(yīng)的關(guān)系表名均相同的規(guī)則集合。所述步驟(3) (5)中,與檢測(cè)對(duì)象有關(guān)的規(guī)則判斷依據(jù)是如果一條規(guī)則的檢測(cè)關(guān)系列表中包括檢測(cè)對(duì)象關(guān)系表名,則該規(guī)則與檢測(cè)對(duì)象有關(guān)。所述步驟(3)中,首先從規(guī)則庫(kù)中讀取與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的、元組變量列表相同的規(guī)則子集,存入清空的規(guī)則臨時(shí)表中,并將讀取過(guò)的規(guī)則編號(hào)記錄在一個(gè)初始值為空的序列中,再開(kāi)始檢測(cè),檢測(cè)過(guò)程具體如下(3-1)判斷當(dāng)前規(guī)則臨時(shí)表中規(guī)則的檢測(cè)關(guān)系列表中涉及幾個(gè)關(guān)系表,如果為1 個(gè),則進(jìn)入步驟(3-2);如果為2個(gè),則進(jìn)入步驟(3-3);(3-2)從數(shù)據(jù)庫(kù)中讀取檢測(cè)關(guān)系列表所表示的數(shù)據(jù)表R,然后計(jì)算R中違背規(guī)則臨時(shí)表中規(guī)則的元組,步驟如下(3-2-1)判斷規(guī)則臨時(shí)表中元組變量列表中元組變量的個(gè)數(shù),如果為1,進(jìn)入步驟 (3-2-2);如果為2,進(jìn)入步驟(3-2-3);(3-2-2)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為1的規(guī)則所定義的A和 B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則i = 1,2, L, n,提取的結(jié)果分別記為rj和ri_B ;判斷數(shù)據(jù)表R中的每一條元組是否滿(mǎn)足 Cr1 _Α/νI1 —均ν (r2 —乂/W2 —均ν…ν 0; —乂/νχ —均,若滿(mǎn)足,貝丨」將該元組放入集合Vio中;對(duì)于其中任意規(guī)則如果提取的公式ri_A為空,則將判斷公式中的化j/viJ)替換為(彳_5);(3-2-3)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為2的規(guī)則所定義的A和 B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則i = 1,2,L, n,提取的結(jié)果分別記為rj和ri_B ;判斷數(shù)據(jù)表R中的每?jī)蓷l元組是否滿(mǎn)足 0;—Wzw1—均v(r2—均ν···ν(>;—乂八^;—均,若滿(mǎn)足,貝丨J將這兩條元組放入集合Vio中;對(duì)于其中任意規(guī)則如果提取的公式ri_A為空,則將判斷公式中的化j/viJ)替換為(彳_5);(3-3)從數(shù)據(jù)庫(kù)中讀取檢測(cè)關(guān)系列表所表示的數(shù)據(jù)表禮、&,然后計(jì)算禮、R2中違背規(guī)則臨時(shí)表中規(guī)則的元組,步驟如下(3-3-1)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為2的規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則ri; i = 1,2, L, n,提取的結(jié)果分別記為 rt_A 禾口 rj ;(3-3-2)分別將數(shù)據(jù)表R1中的每一條元組和數(shù)據(jù)表&中的每一條元組進(jìn)行比對(duì), 判斷兩條元組是否滿(mǎn)足O;v(r2 _^Λ〃2 ▽...▽(/;,若滿(mǎn)足,則將這兩條元組放入集合Vio中;對(duì)于其中任意規(guī)則如果提取的公式ri_A為空,則將判斷公式中的化-^ri —灼替換為_(kāi)Β)。在所述步驟(3-2)和(3-3)中,當(dāng)判斷數(shù)據(jù)表元組是否滿(mǎn)足臨時(shí)表中規(guī)則時(shí),如果某規(guī)則的檢測(cè)關(guān)系元組變量t前有“ 3 ”符修飾,則需要在該檢測(cè)關(guān)系的所有元組中查找是
否存在一條元組,滿(mǎn)足涉及變量t的公式。本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果1、本發(fā)明的數(shù)據(jù)質(zhì)量檢測(cè)方法通用性強(qiáng)?;诮y(tǒng)一形式的數(shù)據(jù)質(zhì)量規(guī)則,不局限于特定質(zhì)量問(wèn)題的解決,可以檢測(cè)多種類(lèi)型的數(shù)據(jù)質(zhì)量問(wèn)題。2、本發(fā)明中所采用的數(shù)據(jù)質(zhì)量蘊(yùn)涵規(guī)則,每條規(guī)則涉及的關(guān)系數(shù)目和元組變量個(gè)數(shù)均不超過(guò)2,不僅形式簡(jiǎn)潔、使用與維護(hù)方便,而且可以表達(dá)函數(shù)依賴(lài)、主外鍵、非重復(fù)、屬性值域、屬性之間多種約束及關(guān)系。3、本發(fā)明中對(duì)于多條數(shù)據(jù)質(zhì)量規(guī)則,讀取元組變量列表相同的規(guī)則放入檢測(cè)規(guī)則臨時(shí)表中,再在檢測(cè)過(guò)程中同時(shí)用檢測(cè)規(guī)則臨時(shí)表中的所有規(guī)則對(duì)檢測(cè)關(guān)系進(jìn)行檢測(cè),大大減少了掃描檢測(cè)關(guān)系次數(shù),提高了檢測(cè)效率。例如假設(shè)定義10條數(shù)據(jù)質(zhì)量規(guī)則,可劃分為3個(gè)元組變量列表完全相同的規(guī)則子集,若每次讀取一條規(guī)則對(duì)檢測(cè)關(guān)系中的元組進(jìn)行檢測(cè),至少需要掃描檢測(cè)關(guān)系10次;而每次讀取一個(gè)元組變量列表完全相同的規(guī)則子集對(duì)檢測(cè)關(guān)系中的元組進(jìn)行檢測(cè),掃描檢測(cè)關(guān)系的次數(shù)可以降為3次。4、本發(fā)明將多種數(shù)據(jù)約束統(tǒng)一為用蘊(yùn)涵關(guān)系表達(dá)的一階公式(稱(chēng)為蘊(yùn)涵規(guī)則)作為檢測(cè)方法的輸入條件,數(shù)據(jù)約束的定義不依賴(lài)于任何數(shù)據(jù)庫(kù)管理系統(tǒng),檢測(cè)方法不依賴(lài)于任何應(yīng)用處理系統(tǒng)及其程序代碼,獨(dú)立性強(qiáng),適用于檢測(cè)任何關(guān)系型數(shù)據(jù)庫(kù)或結(jié)構(gòu)化文件。5、本發(fā)明方法靈活性強(qiáng)。蘊(yùn)涵規(guī)則庫(kù)可以修改,且可以定義多個(gè)數(shù)據(jù)庫(kù)或多個(gè)結(jié)構(gòu)化文件的檢測(cè)規(guī)則;檢測(cè)操作可以在數(shù)據(jù)庫(kù)或文件穩(wěn)定狀態(tài)下任何時(shí)期實(shí)施。
圖1是本發(fā)明方法的流程示意圖。
具體實(shí)施例方式下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。實(shí)施例1本實(shí)施例以一個(gè)包含兩個(gè)關(guān)系數(shù)據(jù)集的數(shù)據(jù)庫(kù)為例,結(jié)合圖1來(lái)說(shuō)明本發(fā)明實(shí)施方式。(1)兩個(gè)關(guān)系模式為職工關(guān)系(職工號(hào),姓名,部門(mén)號(hào),工資),即Emp (Eno, Ename,Dno,Esal);部門(mén)關(guān)系(部門(mén)號(hào),部門(mén)名,經(jīng)理編號(hào)),即D印t (Dno,Dname,Mno)。假設(shè)一個(gè)數(shù)據(jù)庫(kù)實(shí)例按照上述兩個(gè)關(guān)系模式已構(gòu)建完成,兩個(gè)關(guān)系分別包含10000條記錄和 100條記錄,在創(chuàng)建數(shù)據(jù)庫(kù)關(guān)系表時(shí)沒(méi)有定義任何數(shù)據(jù)完整性約束。表1蘊(yùn)涵規(guī)則示例規(guī)則編號(hào)檢測(cè)關(guān)系列表元組變量列表A公式B公式TDlEmp(t,Emp)NULLt[Esal]S 2000ID2Emp(tl, Emp) (t2,Emp)tl[Dno]='D2' At2[Dno]='D6'tl[Esal]> t2[Esal]ID3Emp(tl, Emp) (t2, Emp)tl[Eno]=t2[Eno]11 [Ename] =t2 [Ename] Atl[Dno]=t2[Dno] Atl[Esal]=t2[Esal]ID4Dept(tl, Dept) (t2, Dept)tl[Dno]=t2[Dno]tl [Dname]= t2[Dname] Atl[Mno]=t2[Mno]ID5Emp, Dept(t l,Emp) (彐 t2,Dept)NULLtl[Dno]=t2[Dno]ID6Emp, Dept(tl, Dept) (3t2, Emp)NULLtl[Mno]=t2[Eno](2)用戶(hù)選擇檢測(cè)對(duì)象Emp和D印t關(guān)系表,按照本發(fā)明給定的蘊(yùn)涵規(guī)則形式,定義 6條蘊(yùn)涵規(guī)則,如表1所示,其中元組變量列表用形式([3 ]元組變量符名,關(guān)系表名)表示一個(gè)元組變量信息,[3_]是選項(xiàng),若有存在量詞符號(hào)3,表示元組變量為存在性變量;否則, 無(wú)存在量詞符號(hào)3或有全稱(chēng)量詞符號(hào)V,表示元組變量為全稱(chēng)性變量;A和B公式中,t[Attr] 表示元組t的Attr屬性值。將這6條規(guī)則存入規(guī)則庫(kù)。(3)從規(guī)則庫(kù)中讀取IDl規(guī)則及與其具有相同元組變量列表的規(guī)則(表1中不存在與IDl具有相同元組變量列表的規(guī)則),存入清空的檢測(cè)規(guī)則臨時(shí)表Temp中,用IDl規(guī)則檢測(cè)Emp關(guān)系表中的所有記錄,計(jì)算違背這條規(guī)則的元組集合。計(jì)算方法如下從數(shù)據(jù)庫(kù)中讀取檢測(cè)數(shù)據(jù)表Emp,接著,計(jì)算Emp中違背檢測(cè)規(guī)則臨時(shí)表Temp中規(guī)則的元組,步驟如下從IDl規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,即ID1_A和ID1_B,其中ID1_A為空,用NULL表示;計(jì)算Emp關(guān)系表中滿(mǎn)足,ID1—B 的元組集,即對(duì)Emp中的每條元組t判斷其是否滿(mǎn)足,ID1—B,若滿(mǎn)足,則將它放入集合Vio 中。(4)規(guī)則庫(kù)仍存在未讀取的、與檢測(cè)對(duì)象Emp或D印t有關(guān)的檢測(cè)規(guī)則,從規(guī)則庫(kù)中讀取ID2規(guī)則及與其具有相同元組變量列表的規(guī)則ID3,存入清空的檢測(cè)規(guī)則臨時(shí)表Temp 中,用ID2和ID3規(guī)則同時(shí)對(duì)Emp中每?jī)蓷l元組檢測(cè),計(jì)算出違背它們的元組并放入Vio中, 具體方法如下(4-1)從ID2和ID3規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,分別為ID2_A和ID2_B、ID3_A和ID3_B ;(4-2)從數(shù)據(jù)庫(kù)中讀取檢測(cè)數(shù)據(jù)表Emp,計(jì)算Emp關(guān)系表中滿(mǎn)足(ID2—AΛ,ID2_B)V (ID3—AA,ID3—B)的元組,即對(duì)Emp關(guān)系表中的每?jī)蓷l元組tl、t2判斷其是否滿(mǎn)足(ID2—ΑΛ,ID2_B)V (ID3—ΑΛ,ID3—B),若滿(mǎn)足,則將它們放入Vio中。(5)規(guī)則庫(kù)仍存在未讀取的、與檢測(cè)對(duì)象Emp或D印t有關(guān)的檢測(cè)規(guī)則,從規(guī)則庫(kù)中讀取ID4規(guī)則及與其具有相同元組變量列表的規(guī)則(表1中不存在與ID4具有相同元組變量列表的規(guī)則),存入清空的檢測(cè)規(guī)則臨時(shí)表Temp中,用ID4規(guī)則檢測(cè)D印t關(guān)系表中的所有記錄,計(jì)算違背這條規(guī)則的元組集合。計(jì)算方法如下從數(shù)據(jù)庫(kù)中讀取檢測(cè)數(shù)據(jù)表D印t,接著,計(jì)算D印t中違背檢測(cè)規(guī)則臨時(shí)表Temp中規(guī)則的元組,步驟如下從ID4規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,為ID4_A和ID4_B ;計(jì)算D印t關(guān)系表中滿(mǎn)足(ID4—ΑΛ,ID4—B)的元組集,即對(duì) Dept關(guān)系表中的每?jī)蓷l元組tl、t2判斷其是否滿(mǎn)足(ID4—ΑΛ,ID4—B),若滿(mǎn)足,則將它們放入Vio中。 (6)規(guī)則庫(kù)還存在未讀取的、與檢測(cè)對(duì)象Emp或D印t有關(guān)的檢測(cè)規(guī)則,從規(guī)則庫(kù)中讀取ID5規(guī)則及與其具有相同元組變量列表的規(guī)則(表1中不存在與ID5具有相同元組變量列表的規(guī)則),存入清空的檢測(cè)規(guī)則臨時(shí)表Temp中,用ID5規(guī)則檢測(cè)Emp和D印t關(guān)系表中的所有記錄,計(jì)算違背這條規(guī)則的元組集合。計(jì)算方法如下從ID5規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,即
ID5_B,其中ID5_A為空,用NULL表示,由于D印t的元組變量前有3符號(hào),所以對(duì)
Emp關(guān)系表中的每條元組tl,在D印t中查找是否存在t2滿(mǎn)足^ID5—B,若滿(mǎn)足,則將tl、t2 放入Vio中。(7)規(guī)則庫(kù)還存在未讀取的、與檢測(cè)對(duì)象Emp或D印t有關(guān)的檢測(cè)規(guī)則,從規(guī)則庫(kù)中讀取ID6規(guī)則及與其具有相同元組變量列表的規(guī)則(表1中不存在與ID6具有相同元組變量列表的規(guī)則),存入清空的檢測(cè)規(guī)則臨時(shí)表Temp中,用ID6規(guī)則檢測(cè)Emp和D印t關(guān)系表中的所有記錄,計(jì)算違背這條規(guī)則的元組集合。計(jì)算方法如下從ID6規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,即 ID6_B,其中ID6A_為空,用NULL表示,由于Emp的元組變量前有3符號(hào),所以對(duì)
Dept關(guān)系表中的每條元組tl,在Emp中查找是否存在t2滿(mǎn)足,ID6—B,若滿(mǎn)足,則將tl、t2 放入Vio中。(8)規(guī)則庫(kù)中已不存在未讀取的、與檢測(cè)對(duì)象Emp或D印t有關(guān)的檢測(cè)規(guī)則,輸出計(jì)算出來(lái)的違背規(guī)則庫(kù)中規(guī)則的元組集合Vio,提供給用戶(hù)修復(fù)。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化, 均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,包括以下步驟(1)選擇檢測(cè)對(duì)象,檢測(cè)對(duì)象具體是指一個(gè)或多個(gè)關(guān)系表;(2)判斷是否需要新定義規(guī)則或修改原有規(guī)則,是則新定義或修改檢測(cè)對(duì)象及其之間的蘊(yùn)涵規(guī)則,并將規(guī)則存儲(chǔ)到規(guī)則庫(kù)中,然后進(jìn)入步驟(3);否則直接進(jìn)入步驟(3);(3)從規(guī)則庫(kù)中讀取與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的、元組變量列表相同的規(guī)則,存入清空的規(guī)則臨時(shí)表中,然后計(jì)算檢測(cè)關(guān)系中違背規(guī)則臨時(shí)表中規(guī)則的元組,并將這些元組放入一個(gè)集合中;(4)判斷檢測(cè)規(guī)則庫(kù)中是否還有與檢測(cè)對(duì)象有關(guān)的、未讀取的檢測(cè)規(guī)則,有則進(jìn)入步驟 (3),沒(méi)有則進(jìn)入步驟(5);(5)輸出違背規(guī)則庫(kù)中與檢測(cè)對(duì)象有關(guān)的規(guī)則的所有元組,提供給用戶(hù)修復(fù)。
2.根據(jù)權(quán)利要求1所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟O)中的蘊(yùn)涵規(guī)則包括以下信息規(guī)則編號(hào),每一規(guī)則對(duì)應(yīng)有唯一編號(hào);檢測(cè)關(guān)系列表,具體為規(guī)則所涉及到的檢測(cè)對(duì)象關(guān)系表名稱(chēng)列表;元組變量列表,包括規(guī)則所涉及的所有元組變量信息;A公式,具體為涉及一個(gè)或多個(gè)元組變量的公式,或?yàn)榭?,用NULL表示;B公式,具體為涉及一個(gè)或多個(gè)元組變量的公式。
3.根據(jù)權(quán)利要求2所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟O)中的蘊(yùn)涵規(guī)則的形式定義為ΑιΒ,含義為如果檢測(cè)對(duì)象滿(mǎn)足公式A,也必須滿(mǎn)足公式B。
4.根據(jù)權(quán)利要求2所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟O)的規(guī)則庫(kù)中每條規(guī)則的元組變量數(shù)目不超過(guò)2,因此每條規(guī)則涉及到的檢測(cè)關(guān)系表數(shù)目也不超過(guò)2,對(duì)于元組變量個(gè)數(shù)大于兩個(gè)的規(guī)則需轉(zhuǎn)換成兩條或兩條以上的規(guī)則定義。
5.根據(jù)權(quán)利要求2所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述蘊(yùn)涵規(guī)則中的元組變量為約束變?cè)?,一個(gè)元組變量的描述具體為元組變量類(lèi)別、元組變量符及所對(duì)應(yīng)的關(guān)系表名,所述元組變量類(lèi)別分為存在性元組變量和全稱(chēng)性元組變量,存在性元組變量用存在量詞符號(hào)3表示,具體形式為(3元組變量符名,關(guān)系表名);全稱(chēng)性元組變量用全稱(chēng)量詞符號(hào)V或空來(lái)表示,具體形式為(元組變量符名,關(guān)系表名)或(V元組變量符名,關(guān)系表名)。
6.根據(jù)權(quán)利要求1所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟(3)中,元組變量列表相同的規(guī)則是指元組變量列表中元組變量個(gè)數(shù)、元組變量類(lèi)別及對(duì)應(yīng)的關(guān)系表名均相同的規(guī)則集合。
7.根據(jù)權(quán)利要求1所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟(3) (5)中,與檢測(cè)對(duì)象有關(guān)的規(guī)則判斷依據(jù)是如果一條規(guī)則的檢測(cè)關(guān)系列表中包括檢測(cè)對(duì)象關(guān)系表名,則該規(guī)則與檢測(cè)對(duì)象有關(guān)。
8.根據(jù)權(quán)利要求1所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,所述步驟(3)中,首先從規(guī)則庫(kù)中讀取與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的、元組變量列表相同的規(guī)則子集,存入清空的規(guī)則臨時(shí)表中,并將讀取過(guò)的規(guī)則編號(hào)記錄在一個(gè)初始值為空的序列中,再開(kāi)始檢測(cè),檢測(cè)過(guò)程具體如下(3-1)判斷當(dāng)前規(guī)則臨時(shí)表中規(guī)則的檢測(cè)關(guān)系列表中涉及幾個(gè)關(guān)系表,如果為1個(gè),則進(jìn)入步驟(3-2);如果為2個(gè),則進(jìn)入步驟(3-3);(3-2)從數(shù)據(jù)庫(kù)中讀取檢測(cè)關(guān)系列表所表示的數(shù)據(jù)表R,然后計(jì)算R中違背規(guī)則臨時(shí)表中規(guī)則的元組,步驟如下(3-2-1)判斷規(guī)則臨時(shí)表中元組變量列表中元組變量的個(gè)數(shù),如果為1,進(jìn)入步驟 (3-2-2);如果為2,進(jìn)入步驟(3-2-3);(3-2-2)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為1的規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則i = 1,2, L, η, 提取的結(jié)果分別記為和ri_B ;判斷數(shù)據(jù)表R中的每一條元組是否滿(mǎn)足 Cr1 _Α/νI1 —均ν (r2 —乂/W2 —均ν…ν 0; —乂/νχ —均,若滿(mǎn)足,貝丨」將該元組放入集合Vio中;對(duì)于其中任意規(guī)則如果提取的公式ri_A為空,則將判斷公式中的化j/viJ)替換為(彳_5);(3-2-3)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為2的規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則i = 1,2, L,η, 提取的結(jié)果分別記為和ri_B ;判斷數(shù)據(jù)表R中的每?jī)蓷l元組是否滿(mǎn)足 0;—Wzw1—均v(r2—均ν···ν(>;—乂八^;—均,若滿(mǎn)足,貝丨J將這兩條元組放入集合Vio中;對(duì)于其中任意規(guī)則如果提取的公式ri_A為空,則將判斷公式中的化j/viJ)替換為(彳_5);(3-3)從數(shù)據(jù)庫(kù)中讀取檢測(cè)關(guān)系列表所表示的數(shù)據(jù)表札、&,然后計(jì)算禮、R2中違背規(guī)則臨時(shí)表中規(guī)則的元組,步驟如下(3-3-1)從規(guī)則臨時(shí)表中每條元組變量個(gè)數(shù)為2的規(guī)則所定義的A和B公式中提取元組屬性取值及關(guān)系的邏輯表達(dá)式,設(shè)對(duì)于規(guī)則ri; i = 1,2, L,n,提取的結(jié)果分別記為ri_A 和 ;(3-3-2)分別將數(shù)據(jù)表R1中的每一條元組和數(shù)據(jù)表&中的每一條元組進(jìn)行比對(duì),判斷兩條元組是否滿(mǎn)足O;v(r2 _J/v〃2 ▽...▽(/;,若滿(mǎn)足,則將這兩條元組放入集合Vio中,對(duì)于其中任意規(guī)則ri,如果提取的公式ri_A為空,則將判斷公式中的化j/viJ)替換為(彳_5)。
9.根據(jù)權(quán)利要求8所述的基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,其特征在于,在所述步驟(3-2)和(3-3)中,當(dāng)判斷數(shù)據(jù)表元組是否滿(mǎn)足臨時(shí)表中規(guī)則時(shí),如果某規(guī)則的檢測(cè)關(guān)系元組變量t前有“ 3 ”符修飾,則需要在該檢測(cè)關(guān)系的所有元組中查找是否存在一條元組,滿(mǎn)足涉及變量t的公式。
全文摘要
本發(fā)明公開(kāi)了一種基于蘊(yùn)涵規(guī)則的數(shù)據(jù)質(zhì)量自動(dòng)檢測(cè)方法,該方法首先需選擇檢測(cè)對(duì)象,定義或修改檢測(cè)對(duì)象及其之間的蘊(yùn)涵規(guī)則,并將規(guī)則存儲(chǔ)到規(guī)則庫(kù)中;然后從規(guī)則庫(kù)中讀取與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的、元組變量列表相同的規(guī)則,將它們存入清空的規(guī)則臨時(shí)表中,然后計(jì)算檢測(cè)關(guān)系中違背規(guī)則臨時(shí)表中規(guī)則的元組,并將這些元組放入一個(gè)集合中;如果規(guī)則庫(kù)中已不存在與檢測(cè)對(duì)象有關(guān)的、尚未讀取過(guò)的規(guī)則,則輸出違背規(guī)則庫(kù)中與檢測(cè)對(duì)象有關(guān)的規(guī)則的所有元組,提供給用戶(hù)修復(fù)。該方法通用性強(qiáng),且檢測(cè)速度快,形式簡(jiǎn)潔,使用與維護(hù)方便,獨(dú)立性和靈活性強(qiáng),不依賴(lài)于數(shù)據(jù)庫(kù)管理系統(tǒng),適用于檢測(cè)任何關(guān)系型數(shù)據(jù)庫(kù)或結(jié)構(gòu)化文件。
文檔編號(hào)G06F17/30GK102411600SQ20111021890
公開(kāi)日2012年4月11日 申請(qǐng)日期2011年8月2日 優(yōu)先權(quán)日2011年8月2日
發(fā)明者劉波, 許陽(yáng)陽(yáng), 賴(lài)偉 申請(qǐng)人:暨南大學(xué)