數據庫完整性約束


(1)域完整性:是指一個列的輸入有效性,是否允許為空值。強制域完整性的方法有:限制類型(通過設定列的數據類型)、格式(通過CHECK約束和規則)或可能值的范圍(通過FOREIGN KEY約束、CHECK約束、DEFAULT定義、NOT NULL定義和規則)。如:學生的考試成績必須在0~100之間,性別只能是“男”或“女”。
(2)實體完整性:是指保證表中所有的行唯一。實體完整性要求表中的所有行都有一個唯一標識符。這個唯一標識符可能是一列,也可能是幾列的組合,稱為主鍵。也就是說,表中的主鍵在所有行上必須取唯一值。強制實體完整性的方法有:索引、UNIQUE約束、PRIMARY KEY約束或IDENTITY屬性。如:student表中sno(學號)的取值必須唯一,它唯一標識了相應記錄所代表的學生,學號重復是非法的。學生的姓名不能作為主鍵,因為完全可能存在兩個學生同名同姓的情況。
(3)參照完整性:是指保證主關鍵字(被引用表)和外部關鍵字(引用表)之間的參照關系。它涉及兩個或兩個以上表數據的一致性維護。外鍵值將引用表中包含此外鍵的記錄和被引用表中主鍵與外鍵相匹配的記錄關聯起來。在輸入、更改或刪除記錄時,參照完整性保持表之間已定義的關系,確保鍵值在所有表中一致。這樣的一致性要求確保不會引用不存在的值,如果鍵值更改了,那么在整個數據庫中,對該鍵值的所有引用要進行一致的更改。參照完整性是基於外鍵與主鍵之間的關系。例如學生學習課程的課程號必須是有效的課程號,score表(成績表)的外鍵cno(課程號)將參考course表(課程表)中主鍵cno(課程號)以實現數據完整性。

(4)用戶定義完整性

  實體完整性和參照完整性適用於任何關系型數據庫系統,它主要是針對關系的主關鍵字和外部關鍵字取值必須有效而做出的約束。用戶定義完整性則是根據應用環境的要求和實際的需要,對某一具體應用所涉及的數據提出約束性條件。這一約束機制一般不應由應用程序提供,而應有由關系模型提供定義並檢驗,用戶定義完整性主要包括字段有效性約束和記錄有效性。


域完整性、實體完整性及參照完整性分別在列、行、表上實施。數據完整性任何時候都可以實施,但對已有數據的表實施數據完整性時,系統要先檢查表中的數據是否滿足所實施的完整性,只有表中的數據滿足了所實施的完整性,數據完整性才能實施成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM