星期三, 11月 29, 2006

資料處理的完整性問題

莫非定律中,有一條是這麼說:凡是可能出錯的事,準會出錯。

在資料處理的流程中,有人力介入的地方,就可能會出錯 -- 而且通常都真的會出錯。例如說,用人力處理資料時,就很難維護資料的完整性(Data Integrity,或譯為資料的整合性)。

資料的完整性並不等同於資料的完備性(Completeness)。用 Google 可以在網路上找到許多不同的解釋,而我在此是想用這個詞彙來強調「資料物件之間的連結正確無誤」的特性。

例如說,網頁有個圖檔的連結,但是這個連結在點選後卻找不到正確的內容,這就是完整性出了問題。或者,應該以某種規則來指定檔案的名稱,但是卻發現了例外。又或者,資料庫的某特定欄位應該儲存「地理」資訊,事後卻發現它含有「年齡」的資料。

要檢驗資料物件之間,是否連結完整並正確,通常需要很高的人力成本。然而,如果系統從設計規劃時,就開始重視資料的完整性,我們就可以利用電腦工具來檢驗、防止錯誤,從而降低維護的成本。

沒有控管資料完整性,會增加後續處理的困難。例如,目前處理「淡新檔案」的詮釋資料,就有發現某個欄位填寫有誤(連結所提供的資訊不正確)。碰到這樣的狀況,自己是該假裝沒看見,放任它繼續出錯,還是自行將它更正?如果自己只知道它出錯,卻沒有能力更正,那又該怎麼辦呢?若要有效率地利用流程更正錯誤,或許該「彙整可疑的狀況」批次處理。只是,自己真有興趣、真有時間精力去做這件事情嗎?

資料間缺乏完整性,最終也會破壞系統所能提供的服務品質。

4 則留言:

被掛掉的阿尼 提到...

沒錯, 所有系統分析的書都會花一章來講這個, 但所有的人唸完都只記得 erd, dfd, uml等一堆技術性的東西. 所以很多系統後來要花大錢擦屁股, 這也是我老闆case接不完的原因^^

lcat 提到...

想太多了,有錯就改,怎麼可以矇上眼睛假裝看不到!

有辦法寫程式去修改,沒辦法就花錢找人去修改!

tu 提到...

呵呵, 貓還是很具理想性的 :)

lcat 提到...

如果要做,當然做有實用性的啊!資料如果錯誤太多,實用性不高,不如把時間省下來做別的東西吧?

不然你自己一筆一筆慢慢改,錯誤慢慢修正,總有改到可用的時候。