資料庫中的碼

2021-07-31 20:13:01 字數 1024 閱讀 7535

資料庫中什麼是超碼、候選碼、主碼?

碼是資料系統中的基本概念。所謂碼就是能唯一標識實體的屬性,他是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。

超碼是乙個或多個屬性的集合,這些屬性可以讓我們在乙個實體集中唯一地標識乙個實體。如果k是乙個超碼,那麼k的任意超集也是超碼,也就是說如果k是超碼,那麼所有包含k的集合也是超碼。

候選碼是從超碼中選出的,自然地候選碼也是乙個或多個屬性的集合。因為超碼的範圍太廣,很多是我們並不感興趣即無用處的。所以候選碼是最小超碼,它們的任意真子集都不能成為超碼。例如,如果k是超碼,那麼所有包含k的集合都不能是候選碼;如果k,j都不是超碼,那麼k和j組成的集合(k,j)有可能是候選碼。

主碼是從多個候選碼中任意選出乙個做為主碼,如果候選碼只有乙個,那麼候選碼就是主碼。雖然說主碼的選擇是比較隨意的,但在實際開發中還是要靠一定的經驗,不然開發出來的系統會出現很多問題。一般來說主碼都應該選擇那此從不或者極少變化的的屬性。

超碼:乙個或多個屬性的集合,這些屬性的組合可以使我們在乙個實體集中唯一的標識乙個實體。

例如:學生是乙個實體,則學生的集合是乙個實體集,而超碼是用來在學生的集合中區分不同的學生。假設學生(實體)具有多個屬性:學號,身份證號,姓名,性別。因為通過學號可以找到唯一乙個學生,所以是乙個超碼,同理、、、、、也是超碼.在這裡,因為不同的學生可能擁有相同的姓名,所以姓名不可以區別乙個學生,既不是乙個超碼,、也不是。

雖然超碼可以唯一標識乙個實體,但是可能大多數超碼中含有多餘的屬性。所以我們需要候選碼。

候選碼:如果任意超碼的真子集不能包括超碼,則稱其為候選碼;超碼包括候選碼;

在上例中,只有、都是候選碼;另外,如果性別和姓名可以唯一標識乙個學生,則也為超碼。

主碼:被資料庫設計者選中的,用來在同一實體集中區分不同實體的候選碼;此外,應該選擇哪些從不或極少變化的屬性;

總結:  所有碼都是乙個集合。  所有可以用來在實體集中標識唯一實體的集合,都是超碼。  如果任意超碼的真子集不能包括超碼,則稱其為候選碼。  被資料庫設計者選中的,用來在同一實體集中區分不同實體的候選碼。  超碼包括候選碼,候選碼包括主碼。

資料庫中的超碼 候選碼 主碼

碼是資料系統中的基本概念。所謂碼就是能唯一標識實體的屬性,他是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。超碼是乙個或多個屬性的 集合,這些屬性可以讓我們在乙個實體集中唯一地標識乙個實體。如果k是乙個超碼,那麼k的任意超集也是超碼,也就是說如果k是超碼,那麼所有包含k的集合也是...

資料庫中 碼 候選碼 主碼 的區別

主碼 ps 元組理解為一張表的某一行,屬性理解為一張表的某一列,屬性名就是列的名字 字段 1 碼 碼是可以確定乙個元組的所有資訊的屬性名或屬性名組。例如在 中,假設知道 a 的值就能確定 a,b,c,d 的值,假設知道 c,d 的值就可以確定 a,b,c,d 的值,那麼 就是碼,就是碼。並且 等也都...

資料庫中 碼 主碼 候選碼的辨別

主碼 subseteq 候選碼 subseteq 碼 ps 元組理解為一張表的某一行,屬性理解為一張表的某一列,屬性名就是列的名字 字段 1 碼 碼是可以確定乙個元組的所有資訊的屬性名或屬性名組。例如在 中,假設知道 a 的值就能確定 a,b,c,d 的值,假設知道 c,d 的值就可以確定 a,b,...