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