碼是資料系統中的基本概念。所謂碼就是能唯一標識實體的屬性,他是整個實體集的性質,而不是單個實體的性質。它包括超碼,候選碼,主碼。超碼是乙個或多個屬性的
集合,這些屬性可以讓我們在乙個實體集中唯一地標識乙個實體。如果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 的值,那麼 就是碼,就是碼。並且 等也都...