主码 超码 候选码
碼是數(shù)據(jù)系統(tǒng)中的基本概念。所謂碼就是能唯一標(biāo)識(shí)實(shí)體的屬性,他是整個(gè)實(shí)體集的性質(zhì),而不是單個(gè)實(shí)體的性質(zhì)。它包括超碼,候選碼,主碼。
超碼是一個(gè)或多個(gè)屬性的集合,這些屬性可以讓我們?cè)谝粋€(gè)實(shí)體集中唯一地標(biāo)識(shí)一個(gè)實(shí)體。如果K是一個(gè)超碼,那么K的任意超集也是超碼,也就是說如果K是超碼,那么所有包含K的集合也是超碼。
候選碼是從超碼中選出的,自然地候選碼也是一個(gè)或多個(gè)屬性的集合。因?yàn)槌a的范圍太廣,很多是我們并不感興趣即無用處的。所以候選碼是最小超碼,它們的任意真子集都不能成為超碼。例如,如果K是超碼,那么所有包含K的集合都不能是候選碼;如果K,J都不是超碼,那么K和J組成的集合(K,J)有可能是候選碼。
從多個(gè)候選碼中任意選出一個(gè)做為主碼,如果候選碼只有一個(gè),那么候選碼就是主碼。雖然說主碼的選擇是比較隨意的,但在實(shí)際開發(fā)中還是要靠一定的經(jīng)驗(yàn),不然開發(fā)出來的系統(tǒng)會(huì)出現(xiàn)很多問題。一般來說主碼都應(yīng)該選擇那此從不或者極少變化的的屬性。
超碼:一個(gè)或多個(gè)屬性的集合,這些屬性的組合可以使我們?cè)谝粋€(gè)實(shí)體集中唯一的標(biāo)識(shí)一個(gè)實(shí)體。
例如:學(xué)生是一個(gè)實(shí)體,則學(xué)生的集合是一個(gè)實(shí)體集,而超碼是用來在學(xué)生的集合中區(qū)分不同的學(xué)生。假設(shè)學(xué)生(實(shí)體)具有多個(gè)屬性:學(xué)號(hào),身份證號(hào),姓名,性別。因?yàn)橥ㄟ^學(xué)號(hào)可以找到唯一一個(gè)學(xué)生,所以{學(xué)號(hào)}是一個(gè)超碼,同理{學(xué)號(hào),身份證號(hào)}、{學(xué)號(hào),身份證號(hào),姓名}、{學(xué)號(hào),身份證號(hào),姓名,性別}、{身份證號(hào)}、{身份證號(hào),姓名}、{身份證號(hào),姓名、性別}也是超碼.在這里,因?yàn)椴煌膶W(xué)生可能擁有相同的姓名,所以姓名不可以區(qū)別一個(gè)學(xué)生,既{姓名}不是一個(gè)超碼,{性別}、{姓名、性別}也不是。雖然超碼可以唯一標(biāo)識(shí)一個(gè)實(shí)體,但是可能大多數(shù)超碼中含有多余的屬性。所以我們需要候選碼。
候選碼:如果任意超碼的真子集不能包括超碼,則稱其為候選碼;超碼包括候選碼;
在上例中,只有{學(xué)號(hào)}、{身份證號(hào)}都是候選碼;另外,如果性別和姓名可以唯一標(biāo)識(shí)一個(gè)學(xué)生,則{姓名,性別}也為超碼。主碼:被數(shù)據(jù)庫設(shè)計(jì)者選中的,用來在同一實(shí)體集中區(qū)分不同實(shí)體的候選碼;此外,應(yīng)該選擇哪些從不或極少變化的屬性;
總結(jié)
- 上一篇: MySQL批量update数据(更新的数
- 下一篇: mac终端操作文件或文件夹(持续更新)