關係資料模型的三大完整性約束
資料完整性
要想了解這三類完整性約束,先要了解什麼是資料完整性。
資料庫中的資料是從外界輸入的,而資料的輸入由於種種原因,會發生輸入無效或錯誤資訊。保證輸入的資料符合規定,成為了資料庫系統,尤其是多使用者的關係資料庫系統首要關注的問題。資料完整性因此而提出。
資料完整性(Data Integrity)是指資料的精確性(Accuracy) 和可靠性(Reliability)。即資料完整性是指資料庫中儲存的資料是有意義的或正確的,和現實世界相符。它是應防止資料庫中存在不符合語義規定的資料,和防止因錯誤資訊的輸入輸出造成無效操作或錯誤資訊而提出的。
資料完整性分為三類:實體完整性(Entity Integrity)、參照完整性
資料庫採用多種方法來保證資料完整性,包括外來鍵、約束、規則和觸發器。系統很好地處理了這幾者的關係,並針對不同的具體情況用不同的方法進行,相互交叉使用,相補缺點。
關係模型允許定義三類完整性約束;實體完整性、參照完整性和使用者定義的完整性。其中實體完整性和參照完整性是關係模型必須滿足的完整性約束條件,體現了具體領域中的語義約束。
一、實體完整性
實體完整性要求每個資料表都必須有主鍵,而作為主鍵的所有欄位,其屬性必須是獨一及非空值。
實體完整性要保證關係中的每個元組都是可識別的和惟一的,指關係資料庫中所有的表都必須有主鍵,
而且表中不允許存在無主鍵值的記錄和主鍵值相同的記錄。因為實體必須可區分。
實際上,當在表中定義了主鍵時,資料庫管理系統會自動保證資料的實體完整性,即保證不允許存在主鍵值為空的記錄以及主鍵值重複的記錄。
二、參照完整性
參照完整性也稱為引用完整性。參照的完整性要求關係中不允許引用不存在的實體。與實體完整性是關係模型必須滿足的完整性約束條件,目的是保證資料的一致性。
現實世界中的實體之間往往存在著某種聯絡,在關係模型中,實體以及實體之間的聯絡都是用關係來表示的,這樣就自然存在著關係與關係之間的引用。
而參照完整性就是描述實體之間的聯絡的。參照完整性一般是指多個實體或關係之間的關聯關係。
例如,若基本關係 R 的外來鍵為 F,它與基本關係 S 的主鍵 K 相對應(基本關係 R 和 S 不一定是不同的關係),則對於 R 中的每個元組在 F 上的值必須為:
(1)空值,F 的每個屬性值均為空值。
(2)S 中某個元組中的主鍵值。
即參照的關係中的屬性值必須能夠在被參照關係找到或者取空值,否則不符合資料庫的語義。
在實際操作時如更新、刪除、插入一個表中的資料,通過參照引用相互關聯的另一個表中的資料,來檢查對錶的資料操作是否正確,不正確則拒絕操作。
三、使用者定義完整性
使用者定義完整性也成為域完整性或語義完整性。使用者自定義完整性是針對某一具體關係資料庫的約束條件,它反映某一具體應用所涉及的資料必須滿足的語義要求。
實際上就是指明關係中屬性的取值範圍,防止屬性的值與應用語義矛盾。
關係模型應提供定義和檢驗這類完整性的機制,以便用統一的系統方法處理它們,而不要由應用程式承擔這一功能
主要包括非空約束、唯一約束、檢查約束、主鍵約束、外來鍵約束。