關係完整性約束

關係完整性約束

關係完整性約束是為保證資料庫中數據的正確性和相容性,對關係模型提出的某種約束條件或規則。完整性通常包括域完整性,實體完整性、參照完整性和用戶定義完整性,其中域完整性,實體完整性和參照完整性,是關係模型必須滿足的完整性約束條件。

域版

域完整性是保證資料庫欄位取值的合理性。

屬性值應是域中的值,這是關係模式規定了的。除此之外,一個屬性能否為NULL,這是由語義決定的,也是域完整性約束的主要內容。域完整性約束(domain Integrity constrains)是最簡單、最基本的約束。在當今的關係DBMS中,一般都有域完整性約束檢查功能。

包括檢查(CHECK)、默認值(DEFAULT)、不為空(NOT NULL)、外鍵(FOREIGN KEY)等約束。

實體版

實體完整性(Entity integrity)是指關係的主關鍵字不能重複也不能取“空值"。

一個關係對應現實世界中一個實體集。現實世界中的實體是可以相互區分、識別的,也即它們應具有某種惟一性標識。在關係模式中,以主關鍵字作為唯一性標識,而主關鍵字中的屬性(稱為主屬性)不能取空值,否則,表明關係模式中存在著不可標識的實體(因空值是“不確定\"的),這與現實世界的實際情況相矛盾,這樣的實體就不是一個完整實體。按實體完整性規則要求,主屬性不得取空值,如主關鍵字是多個屬性的組合,則所有主屬性均不得取空值。

如表1.1將編號作為主關鍵字,那么,該列不得有空值,否則無法對應某個具體的職工,這樣的表格不完整,對應關係不符合實體完整性規則的約束條件。

參照版

參照完整性(Referential Integrity)是定義建立關係之間聯繫的主關鍵字與外部關鍵字引用的約束條件。

關係資料庫中通常都包含多個存在相互聯繫的關係,關係與關係之間的聯繫是通過公共屬性來實現的。所謂公共屬性,它是一個關係R(稱為被參照關係或目標關係)的主關鍵字,同時又是另一關係K(稱為參照關係)的外部關鍵字。如果參照關係K中外部關鍵字的取值,要么與被參照關係R中某元組主關鍵字的值相同,要么取空值,那么,在這兩個關係間建立關聯的主關鍵字和外部關鍵字引用,符合參照完整性規則要求。如果參照關係K的外部關鍵字也是其主關鍵字,根據實體完整性要求,主關鍵字不得取空值,因此,參照關係K外部關鍵字的取值實際上只能取相應被參照關係R中已經存在的主關鍵字值。

在學生管理資料庫中,如果將選課表作為參照關係,學生表作為被參照關係,以“學號\"作為兩個關係進行關聯的屬性,則“學號\"是學生關係的主關鍵字,是選課關係的外部關鍵字。選課關係通過外部關鍵字“學號’’參照學生關係。

用戶定義版

實體完整性和參照完整性適用於任何關係型資料庫系統,它主要是針對關係的主關鍵字和外部關鍵字取值必須有效而做出的約束。用戶定義完整性(user defined integrity)則是根據套用環境的要求和實際的需要,對某一具體套用所涉及的數據提出約束性條件。這一約束機制一般不應由應用程式提供,而應有由關係模型提供定義並檢驗,用戶定義完整性主要包括欄位有效性約束和記錄有效性。

相關詞條

熱門詞條

聯絡我們