龍 宇
(南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210003)
摘 要: 評(píng)估關(guān)系數(shù)據(jù)庫(kù)的質(zhì)量的過(guò)程對(duì)數(shù)據(jù)庫(kù)產(chǎn)業(yè)至關(guān)重要。評(píng)估關(guān)系數(shù)據(jù)庫(kù)的質(zhì)量包含兩種獨(dú)立的審計(jì)方式:一種是對(duì)圖表中描述的數(shù)據(jù)庫(kù)結(jié)構(gòu)的審計(jì),另一種是在指定點(diǎn)對(duì)數(shù)據(jù)庫(kù)內(nèi)容進(jìn)行審計(jì)。數(shù)據(jù)庫(kù)圖表審計(jì)主要檢查設(shè)計(jì)缺陷,是否有違背數(shù)據(jù)庫(kù)準(zhǔn)則以及偏離原始數(shù)據(jù)模型的情況,同時(shí)測(cè)量數(shù)據(jù)庫(kù)的大小、復(fù)雜性和結(jié)構(gòu)質(zhì)量。數(shù)據(jù)庫(kù)內(nèi)容審計(jì)則比較選擇的數(shù)據(jù)的狀態(tài)屬性,以確定是否有不正確的數(shù)據(jù),并檢查是否有丟失和多余的記錄。上述兩種方式的目的都是為了啟動(dòng)數(shù)據(jù)清理過(guò)程,以確?;蚧謴?fù)數(shù)據(jù)的質(zhì)量。
關(guān)鍵詞: 數(shù)據(jù)質(zhì)量;數(shù)據(jù)模型;架構(gòu)分析;數(shù)據(jù)有效性;數(shù)據(jù)一致性
0 引言
大多數(shù)IT用戶的現(xiàn)有數(shù)據(jù)庫(kù)都是長(zhǎng)期演進(jìn)的產(chǎn)品,許多年前就被設(shè)計(jì)出來(lái)了。當(dāng)關(guān)系數(shù)據(jù)庫(kù)剛開始進(jìn)入市場(chǎng)時(shí),它們中很多都是從早期的分層或網(wǎng)絡(luò)數(shù)據(jù)庫(kù)中通過(guò)數(shù)據(jù)遷移生成的。因此,從一開始,關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)原則就是能適應(yīng)來(lái)自非關(guān)系型系統(tǒng)的不兼容的數(shù)據(jù),后來(lái),隨著數(shù)據(jù)結(jié)構(gòu)的侵蝕,造成了不受控制的演變結(jié)果。用戶需求隨著時(shí)間的推移發(fā)生變化,數(shù)據(jù)模型必須改變以保持同步。如果數(shù)據(jù)模型變得過(guò)時(shí),由于程序錯(cuò)誤以及使用方式的不一致,使得無(wú)效數(shù)據(jù)值能進(jìn)入數(shù)據(jù)庫(kù),那么類似的錯(cuò)誤數(shù)據(jù)將會(huì)在數(shù)據(jù)庫(kù)中成倍增加,這些問(wèn)題會(huì)使得數(shù)據(jù)質(zhì)量大幅降低,并最終導(dǎo)致數(shù)據(jù)崩潰。
1 數(shù)據(jù)質(zhì)量影響因素
數(shù)據(jù)質(zhì)量下降的主要原因有:(1)數(shù)據(jù)遷移時(shí)的妥協(xié);(2)未能預(yù)見(jiàn)到未來(lái)的需求;(3)缺乏數(shù)據(jù)獨(dú)立性;(4)規(guī)范化不當(dāng);(5)存儲(chǔ)不當(dāng);(6)不一致和不正確的數(shù)據(jù)更新;(7)數(shù)據(jù)測(cè)試的不準(zhǔn)確性。
1.1 數(shù)據(jù)遷移時(shí)的妥協(xié)
許多用戶的數(shù)據(jù)庫(kù)從一開始質(zhì)量就很低,因?yàn)橛脩舻臄?shù)據(jù)源自傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng),如IMS、IDMS或ADABAS。為了使數(shù)據(jù)遷移變得更容易,因權(quán)宜之計(jì)而犧牲了關(guān)系數(shù)據(jù)庫(kù)的部分原則,如數(shù)據(jù)庫(kù)數(shù)組中的數(shù)據(jù)項(xiàng)放入一行或者以blob形式來(lái)隱藏改變的數(shù)據(jù)結(jié)構(gòu)或提高性能。這些妥協(xié)仍困擾著用戶,并且成為錯(cuò)誤的根源,同時(shí)還導(dǎo)致很難調(diào)整數(shù)據(jù)庫(kù)[1]。
1.2 未能預(yù)見(jiàn)未來(lái)的需求
在一個(gè)數(shù)據(jù)庫(kù)生命周期的起始,設(shè)計(jì)者必須對(duì)數(shù)據(jù)總量以及數(shù)據(jù)的使用方式作出相關(guān)的假設(shè),設(shè)計(jì)者還需要預(yù)見(jiàn)到數(shù)據(jù)將如何演變。數(shù)據(jù)庫(kù)的設(shè)計(jì)是基于這些假設(shè)的。如果假設(shè)被證明是正確的,該數(shù)據(jù)庫(kù)可以正常發(fā)展;如果假設(shè)不正確,數(shù)據(jù)庫(kù)結(jié)構(gòu)很快就會(huì)過(guò)時(shí),格式也將與內(nèi)容不一致,它還將變得越來(lái)越難以適應(yīng),數(shù)據(jù)量的增長(zhǎng)超出預(yù)期,數(shù)據(jù)的使用方式與原先預(yù)測(cè)的也有很大不同。因此,它成為重新設(shè)計(jì)數(shù)據(jù)庫(kù)的一個(gè)必要條件[2]。
1.3 缺乏數(shù)據(jù)獨(dú)立性
數(shù)據(jù)庫(kù)設(shè)計(jì)人員往往無(wú)法準(zhǔn)確預(yù)測(cè)數(shù)據(jù)庫(kù)的實(shí)際增長(zhǎng),也無(wú)法預(yù)見(jiàn)它會(huì)如何被使用。當(dāng)他們開始設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),他們很可能會(huì)僅從一個(gè)單一的應(yīng)用觀點(diǎn)出發(fā)來(lái)設(shè)計(jì),而不是從所有可能的應(yīng)用的全局觀點(diǎn)出發(fā)。因此,從一開始,對(duì)于應(yīng)用程序來(lái)講數(shù)據(jù)就不是獨(dú)立的。隨后,數(shù)據(jù)庫(kù)結(jié)構(gòu)需要能兼容更多的、不同的應(yīng)用程序,但設(shè)計(jì)的彈性越大,就越脆弱。在某些方面它就不再足夠健壯。
1.4 規(guī)范化不當(dāng)
數(shù)據(jù)庫(kù)結(jié)構(gòu)的每個(gè)臨時(shí)補(bǔ)丁都具有一定的負(fù)面影響。創(chuàng)建新的子表時(shí),附加屬性是必需的。與此不同的是,本地?cái)?shù)據(jù)庫(kù)管理員只需將它們添加到現(xiàn)有的表。因此,數(shù)據(jù)庫(kù)中的行變得越來(lái)越長(zhǎng),并更難處理。當(dāng)需要增加新的鍵時(shí),它們以索引的形式添加,于是,索引越來(lái)越多。當(dāng)數(shù)據(jù)組添加到現(xiàn)有行時(shí),違背了第二準(zhǔn)則。為了避免產(chǎn)生新的子表,會(huì)出現(xiàn)重復(fù)的數(shù)據(jù)項(xiàng),這又違反第一準(zhǔn)則[3]。
1.5 存儲(chǔ)過(guò)程濫用
另一個(gè)導(dǎo)致數(shù)據(jù)丟失以及數(shù)據(jù)依賴性的因素就是存儲(chǔ)過(guò)程的使用。如果存儲(chǔ)程序只用于訪問(wèn)操作,并確保數(shù)據(jù)的完整性,這是可以接受的。然而,它們經(jīng)常被誤用來(lái)執(zhí)行程序的邏輯,而不是放在單獨(dú)的規(guī)則模塊中或放置在客戶端組件程序中以檢查業(yè)務(wù)規(guī)則,開發(fā)人員在存儲(chǔ)過(guò)程中將其隱藏,使得它們對(duì)一些工具不再可見(jiàn),從而導(dǎo)致存儲(chǔ)過(guò)程充滿了選擇和循環(huán)、集和聲明,這就是濫用的典型跡象。
1.6 不一致和不正確的數(shù)據(jù)更新
一個(gè)數(shù)據(jù)庫(kù)的內(nèi)容不僅受到錯(cuò)誤使用程序的影響,而且受到數(shù)據(jù)不一致變化的影響。例如,在兩個(gè)不同的表中存放有相同的數(shù)據(jù),當(dāng)在一個(gè)表改變其數(shù)據(jù)屬性,但沒(méi)有改變另一個(gè)表中相應(yīng)字段的屬性時(shí),該屬性就不再與該屬性的類型兼容。法蘭克福股市一度不得不關(guān)閉了半天,就是因?yàn)閿?shù)據(jù)庫(kù)中的無(wú)效值導(dǎo)致的數(shù)據(jù)異常錯(cuò)誤[4]。與此同時(shí),另一個(gè)問(wèn)題是丟失和冗余記錄。丟失的記錄是那些仍然有用但已有意或無(wú)意刪了的記錄。冗余記錄是那些應(yīng)該被刪除,但由于某些原因卻沒(méi)有被刪除的記錄。它們?nèi)匀辉跀?shù)據(jù)庫(kù)中占據(jù)著寶貴的空間,盡管它們已不再使用。
1.7 測(cè)試數(shù)據(jù)不足
測(cè)試應(yīng)用系統(tǒng)時(shí),測(cè)試人員往往集中在他們可以很容易地看到的地方,即用戶界面,而忽略了他們看不到的東西,也就是數(shù)據(jù)庫(kù)。它需要大量的單調(diào)的努力掃描幾千行的數(shù)據(jù),以查看該內(nèi)容是什么,它們應(yīng)該是什么。大多數(shù)測(cè)試人員沒(méi)有時(shí)間仔細(xì)看一些隨機(jī)樣本。實(shí)際上,內(nèi)容檢查應(yīng)該做到自動(dòng)化。但問(wèn)題是,沒(méi)有一個(gè)公司愿意去做這件事。一次對(duì)英國(guó)超過(guò)150名高級(jí)IT工作者的調(diào)查發(fā)現(xiàn),超過(guò)40%的受訪者聲明他們的數(shù)據(jù)是不可靠的,可能無(wú)法滿足他們的業(yè)務(wù)需要。但他們沒(méi)有采取措施去清理和糾正數(shù)據(jù)[5]。
2 數(shù)據(jù)質(zhì)量的研究與發(fā)展
從1980年關(guān)系數(shù)據(jù)庫(kù)的出現(xiàn)開始,數(shù)據(jù)庫(kù)的質(zhì)量一直是研究人員關(guān)注的話題。關(guān)于這個(gè)問(wèn)題的最早出版物主要設(shè)想制定一個(gè)將現(xiàn)有的層次型數(shù)據(jù)庫(kù)轉(zhuǎn)化為關(guān)系數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn),以這樣的方式來(lái)保持?jǐn)?shù)據(jù)的語(yǔ)義完整性,同時(shí)實(shí)現(xiàn)最佳的關(guān)系架構(gòu)。美國(guó)的Premerlani、布拉哈以及戴維斯和歐洲的埃諾是上述理論的早期研究人員。埃諾研究的是數(shù)據(jù)庫(kù)架構(gòu)的一致性與實(shí)體關(guān)系模型數(shù)據(jù)庫(kù)模式[6],而戴維斯研究的是將現(xiàn)有的文件系統(tǒng)轉(zhuǎn)化為適當(dāng)?shù)年P(guān)系結(jié)構(gòu)[7]。Premerlani和布拉哈研究數(shù)據(jù)庫(kù)結(jié)構(gòu)的逆向轉(zhuǎn)化工程[8]。
當(dāng)然,關(guān)于如何更好地設(shè)計(jì)出高品質(zhì)的數(shù)據(jù)庫(kù),已經(jīng)有了一些著作,如1972年,E.F.Codd發(fā)表了文章“數(shù)據(jù)庫(kù)子語(yǔ)言的關(guān)系完整性”,奠定了規(guī)范化數(shù)據(jù)結(jié)構(gòu)標(biāo)準(zhǔn)的基礎(chǔ)[9]。到1990年,已經(jīng)有很多文獻(xiàn)研究如何更好地設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)。1990年之后,他對(duì)數(shù)據(jù)質(zhì)量的研究工作轉(zhuǎn)向現(xiàn)有關(guān)系數(shù)據(jù)庫(kù),以便提升它們的質(zhì)量,并且在這里將質(zhì)量加入標(biāo)準(zhǔn)化規(guī)則。歐洲的埃諾和Henrard和美國(guó)的布拉哈和Premerlani在這個(gè)領(lǐng)域中具有權(quán)威。布拉哈和Premerlani挑出了一些他們研究數(shù)據(jù)庫(kù)時(shí)發(fā)現(xiàn)的缺陷,如缺少主鍵,不匹配的引用,枚舉域缺少標(biāo)準(zhǔn)。
彼得和Richards于1994年刊登在通訊ACM上的文章對(duì)傳統(tǒng)的數(shù)據(jù)庫(kù)逆向過(guò)程具有里程碑意義。這篇文章中對(duì)于數(shù)據(jù)庫(kù)的關(guān)鍵不足之處進(jìn)行了描述,并且講述了應(yīng)當(dāng)如何解決[10]。彼得于1996年出版了有關(guān)數(shù)據(jù)逆向工程的著作,也標(biāo)志著將傳統(tǒng)數(shù)據(jù)庫(kù)轉(zhuǎn)化到現(xiàn)有的關(guān)系型數(shù)據(jù)庫(kù)的研究工作達(dá)到高潮。與彼得的研究并行的工程是新型數(shù)據(jù)研究,用于檢測(cè)質(zhì)量比較差的企業(yè)數(shù)據(jù)。這項(xiàng)工作的早期出版物出現(xiàn)于1996年,作者是Y.Wand和R.Wang[11]。該作者指出,他們調(diào)查的500家年銷售額超過(guò)2千萬(wàn)美元的中型公司中,60%的公司數(shù)據(jù)質(zhì)量存在問(wèn)題,其中主要問(wèn)題是為用戶定義的數(shù)據(jù)質(zhì)量比較差。他們承認(rèn)數(shù)據(jù)有問(wèn)題,但無(wú)法精確定義它們。所以Y.Wand和R.Wang著手于重新定義最經(jīng)常報(bào)道的、質(zhì)量比較差的數(shù)據(jù),包括:
?。?)表述不完整,即現(xiàn)實(shí)世界不能完全映射到數(shù)據(jù);
?。?)模棱兩可的表示,即現(xiàn)實(shí)世界被數(shù)據(jù)歪曲;
?。?)無(wú)意義的狀態(tài),即數(shù)據(jù)描述了一些在現(xiàn)實(shí)世界中不存在的東西;
?。?)不正確的狀態(tài),即數(shù)據(jù)是亂碼;
?。?)過(guò)時(shí)的狀態(tài),即數(shù)據(jù)不再是最新的。
為了彌補(bǔ)這些缺陷,作者提出了一套用戶應(yīng)該努力滿足的質(zhì)量標(biāo)準(zhǔn)。這些是準(zhǔn)確度和精密度、可靠性、及時(shí)性和流動(dòng)性、完整性、一致性。
除了改善數(shù)據(jù)的不足,作者還查明產(chǎn)生缺陷的原因,并提出一種修復(fù)的方法。兩年后,該通訊ACM中貢獻(xiàn)了很多以“檢查數(shù)據(jù)質(zhì)量”為主題的文章。編者強(qiáng)調(diào),這些數(shù)據(jù)構(gòu)成了信息時(shí)代的原材料,其質(zhì)量必須認(rèn)真對(duì)待。關(guān)于這個(gè)問(wèn)題的研究,有三篇文章值得特別注意:R.Wang的總數(shù)據(jù)質(zhì)量管理,K.Orr的數(shù)據(jù)質(zhì)量和系統(tǒng)理論和D.Kaplan、R. Krishnan、R. Padman以及J.Peters的評(píng)估數(shù)據(jù)質(zhì)量的信息統(tǒng)計(jì)系統(tǒng)。這些文章給出了一個(gè)深刻的洞察數(shù)據(jù)質(zhì)量問(wèn)題的方法以及解決這些問(wèn)題的方法。
K.Orr將數(shù)據(jù)質(zhì)量定義為與現(xiàn)實(shí)世界的一致性。數(shù)據(jù)質(zhì)量為1(100%)表明數(shù)據(jù)的表現(xiàn)形式與真實(shí)世界達(dá)到完美的一致性,而數(shù)據(jù)質(zhì)量為0表示沒(méi)有相似性。K.Orr承認(rèn),沒(méi)有數(shù)據(jù)庫(kù)的質(zhì)量達(dá)到100%,數(shù)據(jù)庫(kù)總有一些差錯(cuò),并且隨著時(shí)間流逝,數(shù)據(jù)與現(xiàn)實(shí)之間的差距還在增長(zhǎng),因?yàn)楝F(xiàn)實(shí)是不斷變化的。也許數(shù)據(jù)內(nèi)容可以保持更新,但數(shù)據(jù)結(jié)構(gòu)卻不能隨時(shí)改變?,F(xiàn)有的數(shù)據(jù)庫(kù)主要是靜態(tài)的,因此,數(shù)據(jù)庫(kù)時(shí)間越久,它們與現(xiàn)實(shí)之間的差距越大。K.Orr強(qiáng)調(diào)需要定期調(diào)整數(shù)據(jù)結(jié)構(gòu)[12]。
在ACM通信中有相似的文章,雷德曼描述了數(shù)據(jù)質(zhì)量不佳對(duì)整個(gè)組織的影響。在操作層面,質(zhì)量差的數(shù)據(jù)直接導(dǎo)致客戶的不滿、成本增加和較低的工作滿意度。低數(shù)據(jù)質(zhì)量導(dǎo)致運(yùn)營(yíng)成本增加,而且會(huì)將時(shí)間花費(fèi)在檢測(cè)和糾正錯(cuò)誤上。據(jù)統(tǒng)計(jì),40%~60%的公司服務(wù)預(yù)算是由于數(shù)據(jù)質(zhì)量不佳而引起。在戰(zhàn)術(shù)層面,糟糕的數(shù)據(jù)質(zhì)量會(huì)影響管理者的決策。由不正確的數(shù)據(jù)而產(chǎn)生的一絲懷疑可以阻礙管理人員作出決定。在戰(zhàn)略層面上,數(shù)據(jù)質(zhì)量偏低讓人難以遵循一個(gè)給定的策略,因?yàn)闆](méi)有人能確保數(shù)據(jù)的可靠性。如果在無(wú)意中使用了這些低質(zhì)量的數(shù)據(jù)就會(huì)產(chǎn)生錯(cuò)誤。綜上所述,數(shù)據(jù)質(zhì)量不佳對(duì)整個(gè)組織的質(zhì)量有顯著影響,甚至可能威脅到整個(gè)系統(tǒng)架構(gòu)的存在[13]。Wang強(qiáng)調(diào)測(cè)量數(shù)據(jù)質(zhì)量的必要性,為此他提出了一套IQ衡量標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)可以衡量數(shù)據(jù)的準(zhǔn)確性、及時(shí)性、完整性和一致性。準(zhǔn)確性基于表的每列中不正確數(shù)據(jù)的百分比。及時(shí)性通過(guò)表的最近更新進(jìn)行測(cè)量。完整性根據(jù)每行中丟失或默認(rèn)數(shù)據(jù)的數(shù)量計(jì)算。一致性則記錄違背完整性標(biāo)準(zhǔn)的數(shù)據(jù)。這些度量的加權(quán)用來(lái)衡量表的質(zhì)量[14]。
有關(guān)數(shù)據(jù)質(zhì)量的研究,更近的貢獻(xiàn)是艾肯、艾倫等人的文章。文章講述了衡量成熟的數(shù)據(jù)管理過(guò)程的方式。這篇文章中出現(xiàn)了在2007年4月發(fā)表在IEEE計(jì)算機(jī)雜志上的定義模型過(guò)程的數(shù)據(jù)管理。在這個(gè)模型中,強(qiáng)調(diào)了定期審計(jì)數(shù)據(jù)的必要性。這些審計(jì)應(yīng)針對(duì)缺陷的檢測(cè),并把這件事作為日常管理。用戶組織應(yīng)根據(jù)數(shù)據(jù)的好壞程度進(jìn)行分級(jí)。
另一篇由Kim、Kishore和Sanders寫的文章講述了在電子商務(wù)過(guò)程中數(shù)據(jù)質(zhì)量的重要性。沒(méi)有高質(zhì)量數(shù)據(jù)的保證,電子商務(wù)將會(huì)變成不可靠的,而不可靠的電子商務(wù)永遠(yuǎn)不會(huì)被客戶或業(yè)務(wù)合作伙伴接受。為了留住用戶的信心,數(shù)據(jù)必須接近于100%準(zhǔn)確[15]。
最后,在一篇題為“軟件質(zhì)量改進(jìn)的一個(gè)銅子彈”中,Michael Blaha建議先從數(shù)據(jù)出發(fā)。在花費(fèi)大量資金投入到改善軟件質(zhì)量之前,用戶應(yīng)該首先確保他們的數(shù)據(jù)是有序的。Blaha列出在數(shù)據(jù)中的一些共同的缺陷,例如外鍵超載,模棱兩可的主鍵,數(shù)據(jù)冗余,空引用;在開始數(shù)據(jù)再造項(xiàng)目之前,首先有必要認(rèn)識(shí)到這些問(wèn)題。
綜上所述,需要一直關(guān)注數(shù)據(jù)質(zhì)量問(wèn)題,但由于用戶量的增加,數(shù)據(jù)管理的數(shù)量也大幅增長(zhǎng),如管理大數(shù)據(jù)時(shí),需要提升數(shù)據(jù)質(zhì)量的控制能力。周期性的數(shù)據(jù)審計(jì)不再是浪費(fèi),而是一項(xiàng)絕對(duì)必要的事情。
3 檢查數(shù)據(jù)庫(kù)結(jié)構(gòu)的預(yù)定義規(guī)則
數(shù)據(jù)庫(kù)的許多特征可以通過(guò)分析數(shù)據(jù)庫(kù)模式實(shí)現(xiàn)靜態(tài)檢查。該檢查的模式是檢查數(shù)據(jù)本身的一個(gè)先決條件。
3.1 檢查供應(yīng)商的特定功能
數(shù)據(jù)庫(kù)的許多功能源自特定的供應(yīng)商,也就是說(shuō),它們不是標(biāo)準(zhǔn)的SQL。因此,使用時(shí)要格外小心,比如一些選項(xiàng)應(yīng)該禁止,因?yàn)樗鼈儠?huì)影響性能或阻止數(shù)據(jù)的傳輸。像NULL選項(xiàng),處于相同的原因,也應(yīng)該禁止。具體哪些功能應(yīng)該禁止由經(jīng)驗(yàn)豐富的數(shù)據(jù)庫(kù)分析師決定。
3.2 檢查標(biāo)準(zhǔn)形式
不使用供應(yīng)商特定的功能可能會(huì)降低性能,但它使數(shù)據(jù)庫(kù)更獨(dú)立,即數(shù)據(jù)變得更加便攜。SQL語(yǔ)言并沒(méi)有指定每個(gè)記錄都需要具有一個(gè)主鍵,但它可以是一個(gè)強(qiáng)制要求。有一個(gè)外鍵也并非必要,但是,如果該表是依賴于另一個(gè)表的,則至少需要定義一個(gè)外鍵。在任何情況下,一個(gè)表都不應(yīng)該存在相同類型的重復(fù)數(shù)據(jù)。這種明顯違背一般準(zhǔn)則的現(xiàn)象可以被識(shí)別并很容易偵查到。
3.3 檢查數(shù)據(jù)約束
一組數(shù)據(jù)需要多少屬性以及每一行的生命周期都是可以限定的,這就要檢查這些約束是否超標(biāo)。
綜上所述,可以得出結(jié)論,設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)該有一組強(qiáng)制執(zhí)行的規(guī)則。典型的違反規(guī)則的情況如下:
?。?)表中缺少唯一的標(biāo)識(shí)符;
(2)從屬表中丟失外鍵;
(3)表包含重復(fù)的數(shù)據(jù)屬性;
(4)表包含一個(gè)子組;
?。?)表沒(méi)有外部視圖;
?。?)表沒(méi)有索引;
?。?)主鍵包含了太多的子鍵;
(8)空選項(xiàng)丟失;
(9)刪除選項(xiàng)丟失;
?。?0)表中有不兼容的數(shù)據(jù)類型;
?。?1)屬性的數(shù)量超過(guò)上限;
?。?2)行的長(zhǎng)度超過(guò)了最大允許長(zhǎng)度;
?。?3)架構(gòu)沒(méi)有得到充分評(píng)價(jià)。
檢查上述規(guī)則并報(bào)告相應(yīng)的違規(guī)行為是架構(gòu)審計(jì)工具的任務(wù),然后數(shù)據(jù)庫(kù)管理員可以據(jù)此修正數(shù)據(jù)庫(kù)架構(gòu)。DLIAudit、ADAAudit和SQLAudit等工具檢查IMS、ADABAS、DB-2、Oracle和MS-SQL數(shù)據(jù)庫(kù)是否存在違規(guī)行為。這些結(jié)果就是數(shù)據(jù)架構(gòu)缺陷報(bào)告,可以用于數(shù)據(jù)庫(kù)功能重建。
4 驗(yàn)證數(shù)據(jù)庫(kù)內(nèi)容
驗(yàn)證一個(gè)給定的數(shù)據(jù)庫(kù)的內(nèi)容要求存在一種準(zhǔn)則。首先應(yīng)該規(guī)定表中應(yīng)該有哪些屬性。通常,企業(yè)架構(gòu)師知道正確數(shù)據(jù)的格式。因此他們更有資格定義數(shù)據(jù)驗(yàn)證規(guī)則,這些規(guī)則俗稱業(yè)務(wù)規(guī)則(BR)。
在這里所描述的方法,一種是對(duì)象約束語(yǔ)言(OCL)規(guī)范,它被用來(lái)作為驗(yàn)證數(shù)據(jù)正確性的基礎(chǔ)。OCL是一種用UML模型來(lái)指定和驗(yàn)證準(zhǔn)則的文本語(yǔ)言。雖然OCL是一種用來(lái)驗(yàn)證數(shù)據(jù)合理性的功能強(qiáng)大的語(yǔ)言,但是對(duì)于業(yè)務(wù)架構(gòu)師以及測(cè)試工程師而言,它的功能顯得有些不足,僅僅是一種指定語(yǔ)義模型的常規(guī)語(yǔ)言。業(yè)務(wù)規(guī)則語(yǔ)言提供的概念從業(yè)務(wù)建模的角度在概念層面很容易理解。
4.1 把數(shù)據(jù)驗(yàn)證準(zhǔn)則轉(zhuǎn)換為SQL約束
為了驗(yàn)證特定數(shù)據(jù)庫(kù)的內(nèi)容是否違反了業(yè)務(wù)定義準(zhǔn)則,在BR語(yǔ)言中,將數(shù)據(jù)驗(yàn)證規(guī)則語(yǔ)言自動(dòng)轉(zhuǎn)換成一個(gè)SQL語(yǔ)句,這個(gè)過(guò)程需要兩步。
第一步,業(yè)務(wù)規(guī)則被轉(zhuǎn)換成OCL約束。有人可能會(huì)問(wèn),為什么這些規(guī)則不能直接轉(zhuǎn)換成SQL。原因是OCL含有特殊的指向規(guī)則,它們用來(lái)描述數(shù)據(jù)實(shí)體之間的關(guān)系。OCL的優(yōu)勢(shì)是它通過(guò)一個(gè)基本的直接圖模型實(shí)現(xiàn)“語(yǔ)義導(dǎo)航”。這種模型是一個(gè)域模型(如作為UML或?qū)嶓w關(guān)系模型),是獨(dú)立的底層數(shù)據(jù)庫(kù)模型。這樣可使數(shù)據(jù)驗(yàn)證規(guī)則適應(yīng)數(shù)據(jù)庫(kù)模式的變化。在這方面,OCL成為業(yè)務(wù)規(guī)則和SQL之間的橋梁。
第二步,將第一步所生成的OCL約束轉(zhuǎn)換成SQL語(yǔ)句。為每個(gè)OCL約束創(chuàng)建一個(gè)完整視圖。德穆思提出了把OCL約束轉(zhuǎn)化為SQL的方法,為將OCL表達(dá)式映射為SQL語(yǔ)句奠定了基礎(chǔ)。這種轉(zhuǎn)變必須考慮使用指定了OCL約束的域模型和底層數(shù)據(jù)庫(kù)模式。因此,框架需要允許將OCL約束映射到任意數(shù)據(jù)基本模式。
4.2 執(zhí)行SQL語(yǔ)句和評(píng)估SQL查詢結(jié)果
生成的SQL代碼,即完整性視圖,在目標(biāo)數(shù)據(jù)庫(kù)上執(zhí)行。完整性視圖的目的在于鑒別關(guān)系表中所有行有哪些違反數(shù)據(jù)定義規(guī)則。這些規(guī)則的違反記錄被存儲(chǔ)在臨時(shí)表,即一個(gè)完整性視圖,用于進(jìn)一步評(píng)價(jià)。一般而言,這些完整性視圖提供了信息的數(shù)據(jù)質(zhì)量,因?yàn)樗鼈兊臏y(cè)量包含其中以某種方式違反了完整性的所有的行規(guī)則。這些違反規(guī)則的情況通過(guò)完整性視圖確定。如果完整性視圖沒(méi)有行,則數(shù)據(jù)質(zhì)量=1,這意味著沒(méi)有違反規(guī)則的情況;反之,數(shù)據(jù)質(zhì)量=0,意味著完整性視圖中的行的數(shù)目與原表是一樣的,目標(biāo)數(shù)據(jù)庫(kù)表每行都是錯(cuò)誤的。當(dāng)兩個(gè)或多個(gè)列不能滿足同一個(gè)規(guī)則時(shí),仍然只算一次。
5 結(jié)束語(yǔ)
本文列出了數(shù)據(jù)質(zhì)量下降的原因并仔細(xì)分析了各種因素帶來(lái)的影響,介紹了數(shù)據(jù)質(zhì)量檢測(cè)研究的發(fā)展過(guò)程并給出不同階段研究人員的成果,提出了檢查數(shù)據(jù)庫(kù)結(jié)構(gòu)的預(yù)定義規(guī)則并給出設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)該有一組強(qiáng)制執(zhí)行的規(guī)則,提出了驗(yàn)證數(shù)據(jù)庫(kù)內(nèi)容的流程,對(duì)于以后的數(shù)據(jù)質(zhì)量研究具有指導(dǎo)意義。
參考文獻(xiàn)
[1] KAPLAN D, KRISHNAN R, PADMAN R, et al. Assessing data quality in accounting information systems [C]. Comm. of ACM, 1998:41-78.
[2] BLAHA M. A manager′s guide to database technology building and purchasing better Applications[M]. Englewood Cliffs:Prentice-Hall, 2001.
[3] DATE C J. An introduction to database systems[M]. Addison-Wesley Pub, Reading Mass, 1975.
[4] KUBICA J, MOORE A.Probabilistic noise identification and data cleaning[C]. In:Proc.of the Third IEEE Conference on Data Mining,2003:22-39.
[5] HUANG K T, LEE Y W, WANG R Y.Quality information and knowledge management[M]. New Jersey: Prentice Hall,1998.
[6] HAINAUT J L. Strategies for data reengineering[C]. IEEE Proc. of 9th WCRE, Richmond, 2002:26-63.
[7] DAVIS K. Step by step data model reverse engineering [C]. Proc. of 2nd WCRE, IEEE Computer Society Press, Toronto, 1995:317-330.
[8] PREMERLENI W, BLAHA M. An approach for reengineering of relational databases[C]. Comm. of ACM, 1994:42-79.
[9] CODD E F. A relational model of data for large shared data banks [C]. CACM,1970:377-390.
[10] AIKEN P, MUNTZ A, RICHARDS R. DOD legacy systems reverse engineering data requirements[C]. Comm. of ACM,1994,2(5):26-63.
[11] WAND Y, WANG R. Anchoring data quality dimensions in ontological foundations[C]. Comm. of ACM, 1996,11(11):86-125.
[12] ORR K. Data quality and system theory[C]. Comm. of ACM, 1998,2(2):66-107.
[13] REDMAN T. The impact of poor data quality on the typical enterprise[C]. Comm. of ACM, 1998, 2(2):79-120.
[14] WANG R. Total data quality management[C]. Comm. of ACM, 1998,2(2):58-99.
[15] YONG J K, KISHORE R, SANDERS G L. From DQ to EQ-understanding data quality in the context of E-business systems[C]. Comm. of ACM, 2005:75-123.