關系數據庫完整性有哪些?
1.實體完整性
實體完整性指表中行的完整性。主要用于保證操作的數據(記錄)非空、唯一且不重復。即實體完整性要求每個關系表有且僅有一個主鍵,每個主鍵值必須唯一,而且不允許為“空”或重復。
由于主鍵是實體數據(記錄)的惟一標識,若主屬性取空值,關系中就會存在不可標識(區分)的實體數據(記錄),這與實體的定義矛盾,而對于非主屬性可以取空值(NULL),因此,將此規則稱為實體完整性規則
2.域完整性
域完整性是指數據庫表中的列必須滿足某種特定的數據類型或約束。其中約束又包括取值范圍、精度等。表中的check、foreign key約束和default、not null定義都屬于域完整性的范疇。
3.參照完整性
參照完整性屬于表間規則。對于永久關系的相關表,在更新、插入或者刪除記錄時,如果只改其一,就會影響數據的完整性。如刪除父表的某記錄后,子表的相應記錄未刪除,致使這些記錄稱為孤立記錄。對于更新、插入、刪除表間數據的完整性,統稱為參照完整性。
在關系數據庫中,關系之間的聯系是通過公共屬性實現的。這個公共屬性經常是一個表的主鍵,同時是另一個表的外鍵。參照完整性體現在兩個方面:實現了表與表之間的聯系,外鍵的取值必須是另一個表的主鍵的有效值,或是“空”值。
4.用戶定義完整性
用戶定義完整性是對數據表中字段屬性的約束,用戶定義完整性規則也稱域完整性規則。包括字段的值域、字段類型和字段的有效規則等約束,是由確定關系結構時所定義的字段屬性決定的。