概述 數據完整性指資料庫中數據的 正確性、相容性和一致性 。包括現實世界中的應用需求的完整性。數據的完整性由完整性規則來定義。 關係模型的完整性規則是對關係的某種約束,提供一種手段來保證用戶對資料庫的修改時不會破壞資料庫中數據的完整性。保證數據是有意義的。 關係模型分三類約束:實體完整性約束、參照完 ...
概述
數據完整性指資料庫中數據的正確性、相容性和一致性。包括現實世界中的應用需求的完整性。數據的完整性由完整性規則來定義。
關係模型的完整性規則是對關係的某種約束,提供一種手段來保證用戶對資料庫的修改時不會破壞資料庫中數據的完整性。保證數據是有意義的。
關係模型分三類約束:實體完整性約束、參照完整性約束和用戶自定義完整性約束。 前兩者是必須滿足的條件,稱作關係的兩個不變性。由DBMS自動支持
實體完整性約束(Entity Integrity Constraint)
此約束指關係的主屬性,主碼不能為空,在關係資料庫系統中,一個關係對應一張表,實體完整性指在數據存儲數據的表中,主鍵/碼不能取控值 NULL
參照完整性約束 (Referential Integrity Constraint)
現實世界中實體之間往往存在某種聯繫,在關係模型中這種聯繫通過關係來描述
參照完整性約束就說定義外碼和主碼之間的引用規則,是對關係間引用數據的一種限制。若屬性(屬性組)X 是基本關係 R 的外碼,它與基本關係 S 的主碼 Y 對應,那麼 R 中每個元組在 F 上的值要麼取 NULL,要麼等於 S中對應元組的主碼值。 R 和 S 可以是不同的關係,也可以是同一關係。
如:
教師(職工號,姓名,性別,系編號)
系(系編號,系名,辦公地點)
上述兩個關係之間存在屬性的引用,系編碼既是 系
關係的主碼又是教師
關係的外部碼。那麼教師
關係中系編碼屬性的取值需要參照 系
關係中系編碼的值或為 NULL。
用戶定義完整性約束 (User-defined Integrity constraint)
此約束針對某一應用環境的完整性約束條件,反映了某一具體應用所涉及的數據應滿足的要求。關係模型提供定義和檢驗的機制,此類規則一般在建立資料庫表的同時進行定義,如果某些條件未建立在庫表一級,則應在各個模塊的具體編程中通過程式進行檢查和控制。
關係模型完整性約束檢驗
在對資料庫進行修改時須檢驗是否滿足對上述三類完整性約束
插入操作
首先檢查實體完整性約束,檢查插入行在主碼屬性上的值是否已存在,不存在,可以執行插入,否則不可插入。再檢查參照完整性約束,如果是向被參照關係插入,則不需要考慮此約束;如果向參照關係插入,則檢查插入行在外碼屬性上的值是否已在相應被參照關係的主碼屬性中存在,存在,可插入,否則不可插入,或者將插入行的外碼屬性的值改為NULL,再插入,最後檢查自定義完整性約束,包括數據的類性、精度、取值範圍、是否允許空值、是否有預設值等,滿足即可執行插入操作,否則給出錯誤信息。
刪除操作
一般只需對被參照關係檢查參照完整性約束。如果主鍵被引用則不可刪,或將參照關係中對應行的外碼屬性改為為NULL,再刪除
更新操作
結合刪除 和 插入操作,先刪除再插入。