候选码、主码、超码、全码、主属性、非主属性、非码属性的定义理解
候选码、主码、超码、全码、主属性、非主属性、非码属性的定义理解
候选码(码):设K为R<U,F>中的属性或属性组合,若U完全依赖K,则K为R的候选码。
具体一些,比如一个学生表,有了学号可以查到一个学生所有个人信息,这就是所说的完全依赖。
超码:如果说U部分依赖K,则K为R的候选码,候选码是最小的超码,如果任意超码的真子集不能包括超码,则称其为候选码,超码包括候选码。
主码:若候选码只有一个,则该候选码为主码。若候选码多于一个,则选定其中一个为主码。候选码可以作为主码,主码一定是候选码,但候选码不一定是主码。
理解:主码是人为挑选出来的,是随机的,不是确定的。
实例:如果说有学生(学号,姓名,身份证),候选码就是(学号,身份证),主码可以是学号,也可以是身份证,随您喜欢
主属性:包含任何一个候选码的属性集合称为主属性。
比如,竞赛表(竞赛编号,竞赛名称,竞赛组织者) PS:竞赛名称和竞赛组织者都可以重复
很明显可以看出竞赛编号能够唯一标识整张竞赛表,因此候选码是竞赛编号,并且仅此一个候选码,其他属性都不能唯一标识整张表,所竞赛编号同时也是主码。
这时候判断一下这几个属性or属性组是否是主属性,(竞赛编号)(竞赛编号,竞赛名称)(竞赛名称,竞赛组织者),(竞赛编号)只有一个属性,这个属性是主码,主码必定为候选码,因此属性含有一个候选码,这个属性是主属性。(竞赛编号,竞赛名称)有两个属性,其中竞赛编号是候选码,而竞赛名称不是候选码,那他是啥呢~前面有提到了,因为它跟候选码在同一个属性组里,所以,竞赛名称是超码,回过头来,最后得出该属性组含有了一个候选码,因此该属性组中的各个属性都是主属性。(竞赛名称,竞赛组织者)有两个属性,可以看出这两个属性都不是候选码,因此这个属性组不包含候选码,属性组中中得各个元素称为非主属性。
do you know?~
非主属性(或非码属性):不包含任何一个候选码的属性集合称为非主属性。
实例:对于表Student(A,B,C),有关系集合R{A→B,B→C},可以得出A为候选码(求候选码求不阐述啦博客里有),则A为主属性,BC为非主属性。
全码:所有属性都是候选码,则称为全码。
写得比较散QAQ但是偶自己在几个月后看还是有所收获的,相信大家能有所收获XD有不对的或者疑问的可及时指出