概述
資料完整性指資料庫中資料的正確性、相容性和一致性,包括現實世界中的應用需求的完整性,資料的完整性由完整性規則來定義,
關系模型的完整性規則是對關系的某種約束,提供一種手段來保證用戶對資料庫的修改時不會破壞資料庫中資料的完整性,保證資料是有意義的,
關系模型分三類約束:物體完整性約束、參照完整性約束和用戶自定義完整性約束, 前兩者是必須滿足的條件,稱作關系的兩個不變性,由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,再洗掉
更新操作
結合洗掉 和 插入操作,先洗掉再插入,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/119321.html
標籤:MySQL
上一篇:Python學習日記(三十八) Mysql資料庫篇 六
下一篇:Centos上安裝MySQL
