數(shù)據(jù)庫的“完整性”是指數(shù)據(jù)的正確性和相容性。完整性是指數(shù)據(jù)庫中數(shù)據(jù)在邏輯上的一致性、正確性、有效性和相容性。完整性對于數(shù)據(jù)庫系統(tǒng)的重要性:1、數(shù)據(jù)庫完整性約束能夠防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中添加不合語義的數(shù)據(jù);2、合理的數(shù)據(jù)庫完整性設計,能夠同時兼顧數(shù)據(jù)庫的完整性和系統(tǒng)的效能;3、完善的數(shù)據(jù)庫完整性有助于盡早發(fā)現(xiàn)應用軟件的錯誤。
本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。
數(shù)據(jù)庫完整性(Database Integrity)是指數(shù)據(jù)庫中數(shù)據(jù)在邏輯上的一致性、正確性、有效性和相容性。
數(shù)據(jù)庫完整性由各種各樣的完整性約束來保證,因此可以說數(shù)據(jù)庫完整性設計就是數(shù)據(jù)庫完整性約束的設計。數(shù)據(jù)庫完整性約束可以通過DBMS或應用程序來實現(xiàn),基于DBMS的完整性約束作為模式的一部分存入數(shù)據(jù)庫中。通過DBMS實現(xiàn)的數(shù)據(jù)庫完整性按照數(shù)據(jù)庫設計步驟進行設計,而由應用軟件實現(xiàn)的數(shù)據(jù)庫完整性則納入應用軟件設計。
數(shù)據(jù)庫完整性對于數(shù)據(jù)庫應用系統(tǒng)非常關鍵,其作用主要體現(xiàn)在以下幾個方面:
1.數(shù)據(jù)庫完整性約束能夠防止合法用戶使用數(shù)據(jù)庫時向數(shù)據(jù)庫中添加不合語義的數(shù)據(jù)。
2.利用基于DBMS的完整性控制機制來實現(xiàn)業(yè)務規(guī)則,易于定義,容易理解,而且可以降低應用程序的復雜性,提高應用程序的運行效率。同時,基于DBMS的完整性控制機制是集中管理的,因此比應用程序更容易實現(xiàn)數(shù)據(jù)庫的完整性。
3.合理的數(shù)據(jù)庫完整性設計,能夠同時兼顧數(shù)據(jù)庫的完整性和系統(tǒng)的效能。比如裝載大量數(shù)據(jù)時,只要在裝載之前臨時使基于DBMS的數(shù)據(jù)庫完整性約束失效,此后再使其生效,就能保證既不影響數(shù)據(jù)裝載的效率又能保證數(shù)據(jù)庫的完整性。
4.在應用軟件的功能測試中,完善的數(shù)據(jù)庫完整性有助于盡早發(fā)現(xiàn)應用軟件的錯誤。
數(shù)據(jù)庫完整性約束可分為6類:列級靜態(tài)約束、元組級靜態(tài)約束、關系級靜態(tài)約束、列級動態(tài)約束、元組級動態(tài)約束、關系級動態(tài)約束。動態(tài)約束通常由應用軟件來實現(xiàn)。不同DBMS支持的數(shù)據(jù)庫完整性基本相同。
在實施數(shù)據(jù)庫完整性設計的時候,有一些基本的原則需要把握:
1.根據(jù)數(shù)據(jù)庫完整性約束的類型確定其實現(xiàn)的系統(tǒng)層次和方式,并提前考慮對系統(tǒng)性能的影響。一般情況下,靜態(tài)約束應盡量包含在數(shù)據(jù)庫模式中,而動態(tài)約束由應用程序?qū)崿F(xiàn)。
2.實體完整性約束、參照完整性約束是關系數(shù)據(jù)庫最重要的完整性約束,在不影響系統(tǒng)關鍵性能的前提下需盡量應用。用一定的時間和空間來換取系統(tǒng)的易用性是值得的。
3.另一方面,觸發(fā)器的多級觸發(fā)不好控制,容易發(fā)生錯誤,非用不可時,最好使用Before型語句級觸發(fā)器。
4.在需求分析階段就必須制定完整性約束的命名規(guī)范,盡量使用有意義的英文單詞、縮寫詞、表名、列名及下劃線等組合,使其易于識別和記憶,如:CKC_EMP_REAL_INCOME_EMPLOYEE、PK_EMPLOYEE、CKT_EMPLOYEE。如果使用CASE工具,一般有缺省的規(guī)則,可在此基礎上修改使用。
5.要根據(jù)業(yè)務規(guī)則對數(shù)據(jù)庫完整性進行細致的測試,以盡早排除隱含的完整性約束間的沖突和對性能的影響。
6.要有專職的數(shù)據(jù)庫設計小組,自始至終負責數(shù)據(jù)庫的分析、設計、測試、實施及早期維護。數(shù)據(jù)庫設計人員不僅負責基于DBMS的數(shù)據(jù)庫完整性約束的設計實現(xiàn),還要負責對應用軟件實現(xiàn)的數(shù)據(jù)庫完整性約束進行審核。
7.應采用合適的CASE工具來降低數(shù)據(jù)庫設計各階段的工作量。好的CASE工具能夠支持整個數(shù)據(jù)庫的生命周期,這將使數(shù)據(jù)庫設計人員的工作效率得到很大提高,同時也容易與用戶溝通。