屬性與碼

在《數據庫系統概論》(第四版)——王珊、薩師煊編著中:
1.候選碼的定義:如果關係中的某一屬性組的值能唯一地標識一個元祖,則稱該屬性組爲候選碼;
主碼的定義:如果一個關係有多個候選碼,則選定其中一個爲主碼;
主屬性定義:候選碼的諸屬性稱爲主屬性;
非主屬性定義:不包含在任何候選碼中的屬性稱爲非主屬性;
實體完整性規則:如果屬性(一個或者一組屬性)A是基本關係R的主屬性,則A不能取空值。
根據上面的定義,如果有下表:
工號 |   姓名 |  住址  |  年齡  |  職位

假設工號、姓名和職位都可以唯一標識一個實體,說明都是候選碼,那三者也應該都是主屬性,三者根據實體完整性規則不可以取空值,餘下是非主屬性(還是說選定了工號作爲主碼以後,工號是主屬性,其餘是非主屬性,工號不可以取空值)

2.碼的定義是什麼?
以下定義出自熱心網友:
碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性,他是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。  超碼是一個或多個屬性的集合,這些屬性可以讓我們在一個實體集中唯一地標識一個實體。如果K是一個超碼,那麼K的任意超集也是超碼,也就是說如果K是超碼,那麼所有包含K的集合也是超碼。  候選碼是從超碼中選出的,自然地候選碼也是一個或多個屬性的集合。因爲超碼的範圍太廣,很多是我們並不感興趣即無用處的。所以候選碼是最小超碼,它們的任意真子集都不能成爲超碼。例如,如果K是超碼,那麼所有包含K的集合都不能是候選碼;如果K,J都不是超碼,那麼K和J組成的集合(K,J)有可能是候選碼。
按照上面碼的定義看看外碼的定義如下:
設F是基本關係R的一個或者一組屬性,但不是關係R的碼。K(s)是基本關係S的主碼。如果F與K(s)相對對應,則稱F是R的外碼。
綜上:F是非主屬性組,必定可以取空值,但是課本例子包括課後題都說F可以是主屬性,當爲主屬性時,爲了保持實體完整性,不可以取空值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章