1.候選碼的定義:如果關系中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組為候選碼;
2.主碼的定義:如果一個關系有多個候選碼,則選定其中一個為主碼;
3.主屬性定義:候選碼的諸屬性稱為主屬性;
4.非主屬性定義:不包含在任何候選碼中的屬性稱為非主屬性;
5.實體完整性規則:如果屬性(一個或者一組屬性)A是基本關系R的主屬性,則A不能取空值。
碼是數據系統中的基本概念。所謂碼就是能唯一標識實體的屬性,是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。
超碼是一個或多個屬性的集合,這些屬性可以讓我們在一個實體集中唯一地標識一個實體。如果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可以是主屬性,當為主屬性時,為瞭保持實體完整性,不可以取空值。