數(shù)據(jù)完整性是指:1、域完整性,即一個(gè)列的輸入有效性,是否允許為空值;2、實(shí)體完整性,即保證表中所有的行唯一;3、參照完整性,即保證主關(guān)鍵字(被引用表)和外部關(guān)鍵字(引用表)之間的參照關(guān)系。
本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。
存儲(chǔ)在數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)值均正確的狀態(tài)。如果數(shù)據(jù)庫(kù)中存儲(chǔ)有不正確的數(shù)據(jù)值,則該數(shù)據(jù)庫(kù)稱為已喪失數(shù)據(jù)完整性。
數(shù)據(jù)完整性(Data Integrity)是指數(shù)據(jù)的精確性(Accuracy) 和可靠性(Reliability)。它是應(yīng)防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義規(guī)定的數(shù)據(jù)和防止因錯(cuò)誤信息的輸入輸出造成無效操作或錯(cuò)誤信息而提出的。
數(shù)據(jù)完整性分為以下3類:
(1)域完整性:是指一個(gè)列的輸入有效性,是否允許為空值。強(qiáng)制域完整性的方法有:限制類型(通過設(shè)定列的數(shù)據(jù)類型)、格式(通過CHECK約束和規(guī)則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規(guī)則)。如:學(xué)生的考試成績(jī)必須在0~100之間,性別只能是“男”或“女”。
(2)實(shí)體完整性:是指保證表中所有的行唯一。實(shí)體完整性要求表中的所有行都有一個(gè)唯一標(biāo)識(shí)符。這個(gè)唯一標(biāo)識(shí)符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。強(qiáng)制實(shí)體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。如:student表中sno(學(xué)號(hào))的取值必須唯一,它唯一標(biāo)識(shí)了相應(yīng)記錄所代表的學(xué)生,學(xué)號(hào)重復(fù)是非法的。學(xué)生的姓名不能作為主鍵,因?yàn)橥耆赡艽嬖趦蓚€(gè)學(xué)生同名同姓的情況。
(3)參照完整性:是指保證主關(guān)鍵字(被引用表)和外部關(guān)鍵字(引用表)之間的參照關(guān)系。它涉及兩個(gè)或兩個(gè)以上表數(shù)據(jù)的一致性維護(hù)。外鍵值將引用表中包含此外鍵的記錄和被引用表中主鍵與外鍵相匹配的記錄關(guān)聯(lián)起來。在輸入、更改或刪除記錄時(shí),參照完整性保持表之間已定義的關(guān)系,確保鍵值在所有表中一致。這樣的一致性要求確保不會(huì)引用不存在的值,如果鍵值更改了,那么在整個(gè)數(shù)據(jù)庫(kù)中,對(duì)該鍵值的所有引用要進(jìn)行一致的更改。參照完整性是基于外鍵與主鍵之間的關(guān)系。例如學(xué)生學(xué)習(xí)課程的課程號(hào)必須是有效的課程號(hào),score表(成績(jī)表)的外鍵cno(課程號(hào))將參考course表(課程表)中主鍵cno(課程號(hào))以實(shí)現(xiàn)數(shù)據(jù)完整性。
域完整性、實(shí)體完整性及參照完整性分別在列、行、表上實(shí)施。數(shù)據(jù)完整性任何時(shí)候都可以實(shí)施,但對(duì)已有數(shù)據(jù)的表實(shí)施數(shù)據(jù)完整性時(shí),系統(tǒng)要先檢查表中的數(shù)據(jù)是否滿足所實(shí)施的完整性,只有表中的數(shù)據(jù)滿足了所實(shí)施的完整性,數(shù)據(jù)完整性才能實(shí)施成功。