規則2.1實體完整性規則(Entity Integrity)
若屬性A是基本關系R的主屬性,則屬性A不能取空值
空值就是“不知道”或“不存在”或“無意義”的值
???? 例:
選修(學號,課程號,成績)
“學號、課程號”為主碼
“學號”和“課程號”兩個屬性都不能取空值
實體完整性規則的說明
(1)實體完整性規則是針對基本關系而言的。
???????? 一個基本表通常對應現實世界的一個實體集。
(2)現實世界中的實體是可區分的,即它們具有某種唯??
????????? 一性標識。
(3)關系模型中以主碼作為唯一性標識。
(4)主碼中的屬性即主屬性不能取空值。
?? 主屬性取空值,就說明存在某個不可標識的實體,即存在不可區分的實體,這與第(2)點相矛盾,因此這個規則稱為實體完整性
規則2.2?參照完整性規則
若屬性(或屬性組)F是基本關系R的外碼它與基本關系S的主碼Ks相對應(基本關系R和S不一定是不同的關系),則對于R中每個元組在F上的值必須為:
或者取空值(F的每個屬性值均為空值)
或者等于S中某個元組的主碼值
即外碼要么為空,要么為參照關系的主碼的值
參照完整性規則的說明
關系R和S不一定是不同的關系
目標關系S的主碼Ks 和參照關系的外碼F必須定義在同一個(或一組)域上
外碼并不一定要與相應的主碼同名
當外碼與相應的主碼屬于不同關系時,往往取相同的名 字,以便于識別
規則2.3 用戶定義的完整性規則
針對某一具體關系數據庫的約束條件,反映某一具體應用所涉及的數據必須滿足的語義要求
關系模型應提供定義和檢驗這類完整性的機制,以便用統一的系統的方法處理它們,而不需由應用程序承擔這一功能