程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 完整性描述

完整性描述

編輯:關於SqlServer

引用完整性
引用完整性指被引用表中的主關鍵字和引用表中的外部主關鍵字

之間的關系。如被引用行是否可以被刪除等。

在現實生活中的實體之間總是存在著某種聯系,在關系模型中實

體與實體之間的聯系都是用關系來描述的,這樣就存在關系與關

系之間的引用。例如,有學生實體和班級兩個實體集合:

學生(學號,姓名,性別,年齡,班級編號)其中學號為主碼。

班級(班級編號,學生數量,班主任姓名),其中班級編號為主

碼。

這兩個關系之間存在著屬性的引用,即學生關系引用了班級關系

的主關鍵字"班級編號",顯然,學生關系中的"班級編號"值必須

是在班級表中確實存在的班級的班級編號,即班級關系中有該班

級的記錄。這說明學生關系中某個屬性的取值要參照班級關系的

屬性取值。

在這種情況下,"班級編號"不是學生關系的主關鍵字,但是卻是

班級關系的主碼,則稱"班級編號"是學生關系的外關鍵字。

外關鍵字的定義:

設FK是基本關系R的一個或一組屬性,但不一定是關系R的主關鍵

字。如果FK與基本關系S的主關鍵字相對應,則稱FK是基本關系R

的外關鍵字,並稱基本關系R為引用關系,基本關系S為被引用關

系。

在上例中,"班級編號"是學生關系的外關鍵字,學生關系是引用

關系,班級關系是被引用關系。

引用完整性就是定義外關鍵字與主關鍵字之間的引用規則。如果

要刪除被引用的對象,那麼也要刪除引用它的所有對象,或者把

引用值設置為空(如果允許的話)。例如,前面的學生和班級關系

中,刪除某個班級元組之前,必須先刪除相應的引用該班級的學

生元組。這就是引用完整性。

圖3-1,綜合了三種關系數據的完整性。由圖中可以看到,實體

完整性是對應元組或行而言域完整性是對應屬性或列而言,引用

完整性是對不同表之間的屬性或列的引用關系而言。

實體完整性指表中行的完整性。要求表中的所有行都有唯一的標

識符,稱為主關鍵字。主關鍵字是否可以修改,或整個列是否可

以被刪除,取決於主關鍵字與其他表之間要求的完整性。

實體完整性規則規定基本關系的所有主關鍵字對應的主屬性都不

能取空值,例如,學生選課的關系選課(學號,課程號,成績)

中,學號和課程號共同組成為主關鍵字,則學號和課程號兩個屬

性都不能為空。因為沒有學號的成績或沒有課程號的成績都是不

存在的。

對於實體完整性,有如下規則:

· 實體完整性規則針對基本關系。一個基本關系表通常對應一

個實體集,例如,學生關系對應學生集合。

· 現實世界中的實體是可以區分的,它們具有一種唯一性質的

標識。例如,學生的學號,教師的職工號等。

在關系模型中,主關鍵字作為唯一的標識,且不能為空。

域完整性
域完整性指列的值域的完整性。如數據類型、格式、值域范圍、

是否允許空值等。

域完整性限制了某些屬性中出現的值,把屬性限制在一個有限的

集合中。例如,如果屬性類型是整數,那麼它就不能是101.5或

任何非整數。

用戶自定義完整性
用戶自定義完整性指針對某一具體關系數據庫的約束條件,它反

映某一具體應用所涉及的數據必須滿足的語義要求。 
 


  1. 上一頁:
  2. 下一頁: