數(shù)據(jù)完整性(Data Integrity)是指數(shù)據(jù)的精確性(Accuracy) 和可靠性(Reliability)。它是應(yīng)防止數(shù)據(jù)庫中存在不符合語義規(guī)定的數(shù)據(jù)和防止因錯誤信息的輸入輸出造成無效操作或錯誤信息而提出的。數(shù)據(jù)完整性分為四類:實體完整性(Entity Integrity)、域完整
性(Domain Integrity)、參照完整性(Referential Integrity)、用戶定義的完整性(User-definedIntegrity)。
9.1.1 實體完整性(Entity Integrity)
實體完整性規(guī)定表的每一行在表中是惟一的實體。表中定義的UNIQUE PRIMARYKEY 和IDENTITY 約束就是實體完整性的體現(xiàn)。
9.1.2 域完整性(Domain Integrity)
域完整性是指數(shù)據(jù)庫表中的列必須滿足某種特定的數(shù)據(jù)類型或約束。其中約束又包括取值范圍、精度等規(guī)定。表中的CHECK、FOREIGN KEY 約束和DEFAULT、 NOT NULL定義都屬于域完整性的范疇。
9.1.3 參照完整性(Referential Integrity)
參照完整性是指兩個表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)對應(yīng)一致。它確保了有主關(guān)鍵字的表中對應(yīng)其它表的外關(guān)鍵字的行存在,即保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中擴散。參照完整性是建立在外關(guān)鍵字和主關(guān)鍵字之間或外關(guān)鍵字和惟一性關(guān)鍵字之間的關(guān)系上的。在SQL Server 中,參照完整性作用表現(xiàn)在如下幾個方面:
禁止在從表中插入包含主表中不存在的關(guān)鍵字的數(shù)據(jù)行;
禁止會導(dǎo)致從表中的相應(yīng)值孤立的主表中的外關(guān)鍵字值改變;
禁止刪除在從表中的有對應(yīng)記錄的主表記錄。
9.1.4 用戶定義的完整性(User-defined Integrity)
不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。SQL Server 提供了定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)方法來處理它們,而不是用應(yīng)用程序來承擔(dān)這一功能。其它的完整性類型都支持用戶定義的完整性。
性(Domain Integrity)、參照完整性(Referential Integrity)、用戶定義的完整性(User-definedIntegrity)。
9.1.1 實體完整性(Entity Integrity)
實體完整性規(guī)定表的每一行在表中是惟一的實體。表中定義的UNIQUE PRIMARYKEY 和IDENTITY 約束就是實體完整性的體現(xiàn)。
9.1.2 域完整性(Domain Integrity)
域完整性是指數(shù)據(jù)庫表中的列必須滿足某種特定的數(shù)據(jù)類型或約束。其中約束又包括取值范圍、精度等規(guī)定。表中的CHECK、FOREIGN KEY 約束和DEFAULT、 NOT NULL定義都屬于域完整性的范疇。
9.1.3 參照完整性(Referential Integrity)
參照完整性是指兩個表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)對應(yīng)一致。它確保了有主關(guān)鍵字的表中對應(yīng)其它表的外關(guān)鍵字的行存在,即保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無意義的數(shù)據(jù)在數(shù)據(jù)庫中擴散。參照完整性是建立在外關(guān)鍵字和主關(guān)鍵字之間或外關(guān)鍵字和惟一性關(guān)鍵字之間的關(guān)系上的。在SQL Server 中,參照完整性作用表現(xiàn)在如下幾個方面:
禁止在從表中插入包含主表中不存在的關(guān)鍵字的數(shù)據(jù)行;
禁止會導(dǎo)致從表中的相應(yīng)值孤立的主表中的外關(guān)鍵字值改變;
禁止刪除在從表中的有對應(yīng)記錄的主表記錄。
9.1.4 用戶定義的完整性(User-defined Integrity)
不同的關(guān)系數(shù)據(jù)庫系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關(guān)系數(shù)據(jù)庫的約束條件,它反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。SQL Server 提供了定義和檢驗這類完整性的機制,以便用統(tǒng)一的系統(tǒng)方法來處理它們,而不是用應(yīng)用程序來承擔(dān)這一功能。其它的完整性類型都支持用戶定義的完整性。