程錄慶 (南京人口管理干部學(xué)院信息科學(xué)系,江蘇 南京210042)
在數(shù)據(jù)庫(kù)技術(shù)日益成熟的背景下,人們?cè)絹?lái)越多地關(guān)注數(shù)據(jù)質(zhì)量的提高,對(duì)于一個(gè)企業(yè)管理信息系統(tǒng),數(shù)據(jù)質(zhì)量的低下可能制約企業(yè)的發(fā)展。錯(cuò)誤、冗余、不一致的數(shù)據(jù)將導(dǎo)致市場(chǎng)動(dòng)作的低效率,影響企業(yè)的客戶關(guān)系,誤導(dǎo)企業(yè)的戰(zhàn)略決策。數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)具有相當(dāng)復(fù)雜性質(zhì)的系統(tǒng),而且又是一個(gè)和工作人員的工作質(zhì)量、使用人員的實(shí)際需求密切相關(guān)的系統(tǒng)。作為現(xiàn)代化的信息社會(huì)的產(chǎn)物之一,數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量綜合評(píng)價(jià)相當(dāng)復(fù)雜,涉及很多內(nèi)容,如系統(tǒng)的可靠性、兼容性、安全性、經(jīng)濟(jì)性、先進(jìn)性,系統(tǒng)的功能完備性、系統(tǒng)的響應(yīng)及時(shí)性、用戶操作方便性及數(shù)據(jù)結(jié)構(gòu)合理性,還有數(shù)據(jù)本身的質(zhì)量特性:完整性、規(guī)范性、穩(wěn)定性等[1]。其中最重要的還是系統(tǒng)中數(shù)據(jù)本身的質(zhì)量,它影響著系統(tǒng)的其他各項(xiàng)性能。
對(duì)于質(zhì)量這一概念的描述中有一個(gè)較為流行的說(shuō)法是:“質(zhì)量是一組固有特性滿足要求的程度[2]?!睌?shù)據(jù)約束是客觀世界的數(shù)據(jù)所應(yīng)遵循的語(yǔ)義限制,是客觀存在于數(shù)據(jù)中的規(guī)律,是數(shù)據(jù)的固有特性。所以,正確認(rèn)識(shí)和處理好這種客觀存在于數(shù)據(jù)中的規(guī)律對(duì)于數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量影響重大。據(jù)筆者觀察,很多實(shí)際應(yīng)用的數(shù)據(jù)庫(kù)系統(tǒng)由于不重視本行業(yè)數(shù)據(jù)應(yīng)有的規(guī)律而造成數(shù)據(jù)結(jié)構(gòu)松散、系統(tǒng)質(zhì)量的低下,有個(gè)很明顯的現(xiàn)象:一些數(shù)據(jù)庫(kù)系統(tǒng)建設(shè)之初由于數(shù)據(jù)量較少,系統(tǒng)的各方面性能都很好,然而過(guò)了若干時(shí)期 (幾年或十幾年),數(shù)據(jù)容量成倍增加,導(dǎo)致系統(tǒng)性能的下降,甚至變得不可用。這一方面和系統(tǒng)硬件有關(guān),然而根本問(wèn)題還是在數(shù)據(jù)的組織與管理質(zhì)量不佳。質(zhì)量問(wèn)題會(huì)是將來(lái)數(shù)據(jù)庫(kù)系統(tǒng)研究的新領(lǐng)域。下面,筆者從數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)修復(fù)、數(shù)據(jù)的輸入、數(shù)據(jù)查詢等幾個(gè)方面討論數(shù)據(jù)約束對(duì)數(shù)據(jù)庫(kù)系統(tǒng)質(zhì)量的影響。
數(shù)據(jù)約束,狹義地,也稱完整性約束,是客觀世界的數(shù)據(jù)所應(yīng)遵循的語(yǔ)義限制,對(duì)于商業(yè)系統(tǒng)中的數(shù)據(jù)來(lái)講,這種語(yǔ)義限制就是領(lǐng)域知識(shí)和業(yè)務(wù)規(guī)則。具體的商業(yè)規(guī)則限定了數(shù)據(jù)的屬性值應(yīng)符合其所反映現(xiàn)實(shí)的上下文 (context)。例如,一個(gè)企業(yè)的客戶關(guān)系數(shù)據(jù)庫(kù)可能有這樣的規(guī)則:①一個(gè)新的客戶在第一次購(gòu)買時(shí)享有15%的折扣;而一個(gè)VIP客戶在任何時(shí)候購(gòu)買任何產(chǎn)品享有25%的折扣;②一個(gè)地址為美國(guó)的客戶,“街道”、“城市”、“州”字段確定 “郵政編碼”。反映到數(shù)據(jù)庫(kù)上來(lái),就是對(duì)數(shù)據(jù)取值的約束,違反規(guī)則的數(shù)據(jù)就是臟數(shù)據(jù)[3]。
現(xiàn)實(shí)的此類對(duì)數(shù)據(jù)約束的規(guī)則可能較為復(fù)雜,有些約束是在整個(gè)數(shù)據(jù)庫(kù)范圍內(nèi)成立的,有普遍性;有些是在某個(gè)局部數(shù)據(jù)集內(nèi)成立;有些是需要滿足特定條件才成立;還可能存在規(guī)則之間的相互矛盾情況 (如條件函數(shù)依賴自身的不一致)。數(shù)據(jù)建模的一個(gè)重要任務(wù)是將數(shù)據(jù)庫(kù)所描述的對(duì)象所提供的關(guān)于數(shù)據(jù)的上下文語(yǔ)義 (contextual semantic)表達(dá)成規(guī)范而系統(tǒng)的數(shù)據(jù)約束。目前,這種數(shù)據(jù)約束的表達(dá)形式主要是數(shù)據(jù)依賴 (data dependency),隨著研究的深入,將會(huì)出現(xiàn)更多形式的數(shù)據(jù)約束表達(dá)。
自1971年美國(guó)IBM公司研究員CODD E.F.創(chuàng)新地提出關(guān)系數(shù)據(jù)模型以來(lái),這種存儲(chǔ)和處理數(shù)據(jù)的模式得到極大限度的應(yīng)用,在數(shù)據(jù)庫(kù)應(yīng)用領(lǐng)域占有統(tǒng)治地位。數(shù)據(jù)依賴是應(yīng)用關(guān)系模型的出發(fā)點(diǎn),CODD自己提出了函數(shù)依賴 (FD,functional dependency)和包含依賴 (IND,inclusion dependency),不久,F(xiàn)agin和Zaniolo又提出了多值依賴 (MD,Multivalued Dependencies),此后,各種數(shù)據(jù)依賴的概念相繼提出,其中較有影響的應(yīng)屬于Rissanen和Aho等人提出的連接依賴 (JD,JoinDependency),F(xiàn)agin、Maher M J和 Srivastava D提出的受限生成元組依賴 (CTGD,Const rained Tuple-Generating Dependencies)等。上述基于關(guān)系模型的數(shù)據(jù)依賴都是上個(gè)世紀(jì)提出的,均可采用統(tǒng)一的如下形式的一階謂詞描述[4]:
2007年,英國(guó)愛丁堡大學(xué)樊文飛教授等提出條件函數(shù)依賴 (CFD,conditional function dependency)和條件包含依賴 (CIND,conditional inclusion dependency)[5,6],通過(guò)條件表的約束增強(qiáng)函數(shù)依賴和包含依賴對(duì)實(shí)際語(yǔ)義的表達(dá)能力,并象經(jīng)典函數(shù)依賴一樣,對(duì)其推理規(guī)則及完備性作了系統(tǒng)的研究和證明。條件函數(shù)依賴一經(jīng)提出,受到數(shù)據(jù)庫(kù)研究者的廣泛關(guān)注,被認(rèn)為將在數(shù)據(jù)清洗、提高數(shù)據(jù)質(zhì)量上產(chǎn)生極大影響。2009年,胡艷麗等提出內(nèi)置謂詞 (built-in predicates)函數(shù)依賴[7],ChenWenguang等提出內(nèi)置謂詞條件依賴[8],這兩者分別是對(duì)函數(shù)依賴和條件函數(shù)依賴的擴(kuò)展研究。
除了數(shù)據(jù)依賴,也有應(yīng)用人工智能中的語(yǔ)義表 (semantic tableau)來(lái)表達(dá)數(shù)據(jù)約束的,同樣也用于數(shù)據(jù)庫(kù)的數(shù)據(jù)修復(fù),如文獻(xiàn) [9]提到的方法。不過(guò),這種數(shù)據(jù)約束表達(dá)方法的完備性有待證明。當(dāng)然,數(shù)據(jù)約束的表達(dá)還包括不能表達(dá)成上述數(shù)據(jù)依賴的數(shù)據(jù)約束,但可以其他條件表達(dá)式表達(dá),如這樣一類約束:薪水表中的獎(jiǎng)金一項(xiàng)不能大于基本工資一項(xiàng)。
可以對(duì)如上所述的數(shù)據(jù)約束作一個(gè)簡(jiǎn)單的分類:第1類是傳統(tǒng)的數(shù)據(jù)依賴,這類數(shù)據(jù)約束是在整個(gè)數(shù)據(jù)庫(kù)范圍內(nèi)成立的,如函數(shù)依賴、多值依賴、連接依賴和包含依賴等,稱之為Ⅰ類約束;第2類是傳統(tǒng)數(shù)據(jù)依賴在一定條件下成立,即在局部的數(shù)據(jù)集內(nèi)成立,如條件函數(shù)依賴、條件包含依賴和內(nèi)置謂詞函數(shù)依賴等,稱之為Ⅱ類約束;第3類為不能表達(dá)成前2類的數(shù)據(jù)約束,如一些特殊規(guī)則,稱之為Ⅲ類約束。
Ⅰ類約束通常是在整個(gè)數(shù)據(jù)庫(kù)范圍內(nèi)成立的數(shù)據(jù)規(guī)則,它決定了數(shù)據(jù)庫(kù)結(jié)構(gòu)的設(shè)計(jì)。以關(guān)系數(shù)據(jù)模型為例,理想性質(zhì)的關(guān)系數(shù)據(jù)模式是通過(guò)對(duì)原始的泛關(guān)系依據(jù)關(guān)系數(shù)據(jù)理論進(jìn)行模式分解得到。這一過(guò)程會(huì)運(yùn)用到關(guān)系模式的求碼、范式判斷、分解以及分解后無(wú)損依賴和無(wú)損連接的判斷等技術(shù),這些技術(shù)都是環(huán)環(huán)緊扣的,重要的是,這些技術(shù)的運(yùn)用都是以關(guān)系屬性間的數(shù)據(jù)依賴 (這里指的是Ⅰ類約束)為前題的,所以,正確分析屬性數(shù)據(jù)間應(yīng)遵循的約束是設(shè)計(jì)優(yōu)良關(guān)系模式的第一步,這個(gè)分析搞錯(cuò)了,以下的步驟就毫無(wú)意義了[10]。
Ⅰ類約束是面向數(shù)據(jù)庫(kù)全局的,所以影響的是數(shù)據(jù)的全局結(jié)構(gòu)。數(shù)據(jù)約束是反映客觀數(shù)據(jù)所蘊(yùn)含的語(yǔ)義的,建立數(shù)據(jù)庫(kù)的目的是要準(zhǔn)確地映射客觀事實(shí),只有遵循數(shù)據(jù)約束規(guī)則的數(shù)據(jù)結(jié)構(gòu)才是自然的,科學(xué)的,有效的。對(duì)于其他的數(shù)據(jù)模型,也是一樣,只有尊重?cái)?shù)據(jù)的固有特性,其設(shè)計(jì)的結(jié)構(gòu)才是合理的;否則,只能是別扭的、質(zhì)量低下的。
Ⅱ類約束,是Ⅰ類約束在某個(gè)條件下成立的約束形式,面向的是局部的數(shù)據(jù)集。目前研究得最多的是條件函數(shù)依賴 (conditional function dependency),條件函數(shù)依賴 (CFD)是在一定條件下成立的函數(shù)依賴,這對(duì)傳統(tǒng)的函數(shù)依賴 (FD)表示數(shù)據(jù)約束是一個(gè)極大的擴(kuò)展。首先,傳統(tǒng)的FD對(duì)數(shù)據(jù)的約束是全局的,而CFD是表達(dá)一定條件下數(shù)據(jù)的約束,是局部的,可以說(shuō),在這一點(diǎn)上,CFD比FD對(duì)數(shù)據(jù)約束的表達(dá)要精細(xì)得多,這也使得CFD更適應(yīng)新的數(shù)據(jù)庫(kù)技術(shù)要求,如數(shù)據(jù)集成。另外,與傳統(tǒng)的數(shù)據(jù)依賴主要用于數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)不同,CFD則可廣泛用于數(shù)據(jù)的自動(dòng)清洗和數(shù)據(jù)修復(fù)[11]。為提高數(shù)據(jù)的質(zhì)量,數(shù)據(jù)庫(kù)的擁有者會(huì)雇傭大量的人力通過(guò)手工的方式來(lái)作數(shù)據(jù)庫(kù)系統(tǒng)的數(shù)據(jù)修復(fù),而CFD這種新的數(shù)據(jù)約束表達(dá)方式的出現(xiàn)提供了利用計(jì)算機(jī)程序自動(dòng)完成數(shù)據(jù)清洗和數(shù)據(jù)修復(fù)工作的可行方法。值得注意的是,條件函數(shù)依賴本身也存在不一致的問(wèn)題,即CFD本身是 “臟”的。CFD表達(dá)的是數(shù)據(jù)庫(kù)應(yīng)遵循的一套完整性約束,其本源還是反映數(shù)據(jù)庫(kù)擁有者所制定的業(yè)務(wù)規(guī)則和領(lǐng)域知識(shí),也就是說(shuō),CFD是不一致的,則必然是業(yè)務(wù)規(guī)則存在相互矛盾的地方,這時(shí)要作出修改的是業(yè)務(wù)規(guī)則本身。
輸入到數(shù)據(jù)庫(kù)中的數(shù)據(jù)應(yīng)該是滿足約束的數(shù)據(jù),否則,數(shù)據(jù)進(jìn)入系統(tǒng)就是垃圾,所以將數(shù)據(jù)約束轉(zhuǎn)化成數(shù)據(jù)輸入系統(tǒng)的條件控制就很重要了。一般商用的數(shù)據(jù)庫(kù)系統(tǒng)軟件提供多種工具可供用于數(shù)據(jù)輸入的控制,如SQL SERVER提供的關(guān)鍵字、非空、約束、規(guī)則、觸發(fā)器、存儲(chǔ)過(guò)程等,合理的利用這些工具將數(shù)據(jù)在客觀世界中受到的約束表達(dá)成相應(yīng)的計(jì)算機(jī)程序,進(jìn)而控制數(shù)據(jù)的入庫(kù),使系統(tǒng)中的數(shù)據(jù)是一致的、完整的。數(shù)據(jù)輸入的質(zhì)量對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的質(zhì)量有重要影響。
無(wú)論怎么控制數(shù)據(jù)的輸入,數(shù)據(jù)庫(kù)總會(huì)因?yàn)楦鞣N原因產(chǎn)生導(dǎo)致數(shù)據(jù)與其應(yīng)受到的約束不符,這些原因可能是:①DBMS系統(tǒng)沒(méi)有統(tǒng)一的維護(hù)約束的機(jī)制;②加入了新的約束;③原有的約束是 “軟”的,只在查詢時(shí)間考慮;④基于中間件的不同數(shù)據(jù)源的集成。很多情況下,對(duì)于這些不一致的數(shù)據(jù)進(jìn)行清洗并不適合,如在數(shù)據(jù)虛擬集成的情況下,作數(shù)據(jù)修復(fù)可能導(dǎo)致雖然不一致但有用的數(shù)據(jù)丟失。此外,還考慮一個(gè)因素就是此時(shí)數(shù)據(jù)庫(kù)中絕大部分的數(shù)據(jù)還是一致的,只有少部分不一致。這種情形下,可以根據(jù)現(xiàn)有約束進(jìn)行查詢重寫 (query reformulation),以從不一致的源數(shù)據(jù)中獲得符合約束的一致性查詢結(jié)果。這一方法也稱為一致性查詢應(yīng)答 (CQA,consistent query answering)[12]。掌握查詢重寫技術(shù)有利于數(shù)據(jù)庫(kù)系統(tǒng)的工作人員和使用人員在操作數(shù)據(jù)庫(kù)時(shí)避免對(duì)數(shù)據(jù)庫(kù)的破壞。
數(shù)據(jù)庫(kù)系統(tǒng)的任務(wù)在于將宏觀的信息轉(zhuǎn)化為計(jì)算機(jī)存儲(chǔ)的形式,將人處理信息的模式轉(zhuǎn)化為計(jì)算機(jī)處理模式。然而,這種轉(zhuǎn)化并不是簡(jiǎn)單的物理的或邏輯的一個(gè)映射,畢竟宏觀世界和機(jī)器世界是如此的不同,對(duì)于人來(lái)講,一個(gè)簡(jiǎn)單的信息規(guī)則,到了機(jī)器領(lǐng)域可能就是一個(gè)復(fù)雜的數(shù)據(jù)約束表達(dá)。找出計(jì)算機(jī)表達(dá)和處理數(shù)據(jù)的規(guī)律,是提高數(shù)據(jù)質(zhì)量的根本之道。提高數(shù)據(jù)庫(kù)質(zhì)量是數(shù)據(jù)庫(kù)技術(shù)發(fā)展到今天的一個(gè)必然選擇,也是研究的熱點(diǎn)。筆者討論了數(shù)據(jù)約束對(duì)數(shù)據(jù)庫(kù)質(zhì)量的幾個(gè)方面的影響,數(shù)據(jù)約束分析是數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ),也是進(jìn)行數(shù)據(jù)錄入、修復(fù)和一致性查詢應(yīng)答的依據(jù)。下一步的研究將考慮是否能在數(shù)據(jù)庫(kù)系統(tǒng)質(zhì)量綜合評(píng)價(jià)體系中引入數(shù)據(jù)約束符合程度作為一個(gè)指標(biāo),研究其可行性和對(duì)數(shù)據(jù)庫(kù)質(zhì)量評(píng)價(jià)的意義。
[1]徐羅丁.建立數(shù)據(jù)庫(kù)系統(tǒng)的綜合評(píng)價(jià)體系 [J].情報(bào)探索,1995(6):6-8.
[2]宋敏,覃正.國(guó)外數(shù)據(jù)質(zhì)量管理研究綜述 [J].情報(bào)雜志,2007(2):7-9.
[3]Fei Chiang,Ren'ee J Miller.Discovering Data Quality Rules [A].Very Large DataBase Endowment(VLDB'08)[C].ACM Press,2008:24-30.
[4]胡艷麗,張維明,羅旭輝,等.基于數(shù)據(jù)依賴的數(shù)據(jù)修復(fù)研究進(jìn)展 [J].計(jì)算機(jī)科學(xué),2009(10):11-14.
[5]Bohannon P,F(xiàn)an W,Geerts F,et al.Conditional functional dependencies for data cleaning [A].The 23rd International Conference on Database Engineering(ICDE)[C].IEEE,2007:746-755.
[6]Cong Gao,F(xiàn)an Wenfei,Geerts Floris,et al.Improving Data Quality:Consistency and Accuracy [A].Very Large DataBase Endowment(VLDB'07)[C].ACM Press,2008:23-28.
[7]胡艷麗,張維明,肖衛(wèi)東,等.內(nèi)置謂詞函數(shù)依賴及其推理規(guī)則 [J].國(guó)防科技大學(xué)學(xué)報(bào),2009(5):58-63.
[8]Chen Wenguang,F(xiàn)an Wenfei,Ma Shuai.Analyses and Validation of Conditional Dependencies with Built-in Predicates [A].Proceedings of the 20th International Conference on Database and Expert Systems Applications (C).Springer,2009:576-591.
[9]劉全,伏玉琛,凌興宏.一種基于語(yǔ)義tableau的數(shù)據(jù)庫(kù)修正方法 [J].計(jì)算機(jī)科學(xué),2006(6):901-904.
[10]程錄慶,張智光.關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)中的數(shù)據(jù)依賴確定與語(yǔ)義分析 [J].計(jì)算機(jī)與現(xiàn)代化,2008(12):164-168.
[11]Fan Wenfei,Geerts Floris,Jia Xibei,et al.Conditional Functional Dependencies for Capturing Data Inconsistencies [A].ACM Transactions on Database Systems [C].ACM Press,2008:1-44.
[12]Arenas M,Bertossi L,Chomicki J.Consistent Query Answers in Inconsistent Databases [A].ACM Symposium on Principles of Database Systems(PODS)[C].ACM Press,1999:68-79.