主码和候选码的区别
主码唯一标识,候选码是可以作为主码的码,主码一定是候选码的子集,但候选码不一定是主码。
主码:被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;
候选码:如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码;
所有码都是一个集合,所有可以用来在实体集中标识唯一实体的集合,都是超码。如果任意超码的真子集不能包括超码,则称其为候选码。被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。超码包括候选码,候选码包括主码。
拓展资料
1、若关系中的某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识,则称该属性组为(超级码)候选码。
2、例如:在学生实体中,“学号”是能唯一的区分学生实体的,同时又假设“姓名”、“班级”的属性组合足以区分学生实体,那么{学号}和{姓名,班级}都是(超级码)候选码。
3、简单的说,候选码(超级码)就是可以被选为主码的属性或属性组。当一个关系有N个属性或属性组可以唯一标识时,则说明该关系有N个候选码,可以选定其中一个作为主码。
4、候选码中出现过的属性称为主属性;非主属性就是不包含在任何候选码中的属性
5、例如:关系 工人(工号,身份证号,姓名,性别,部门).显然工号和身份证号都能够唯一标示这个关系,所以都是候选码。工号、身份证号这两个属性就是主属性。如果主码是一个属性组,那么属性组中的属性都是主属性。
参考资料:百度百科:候选码
一个关系中可以有多个候选码,只需选其中之一作为主码,主码里包含的属性叫做主属性。
举个例子
学生表中:
属性:学号、姓名、性别、年龄、班级、系
一般学号就可以唯一的标识出一个同学的身份,我们可以设置学号为主码。是最简单的候选码。
那么 学号+姓名当然也可以作为唯一标识,也可以用来作为候选码
同理,学号+姓名+性别也可以作为候选码
以此类推
最极端的情况是全表都用来做主码,这时的主码也叫全码。
2012-01-04
参考自苗雪兰著《数据库系统原理及应用教程》P24-25
码也称关键字,能唯一标识一个实体。码可以是属性或属性组,但属性组中不能含有多余的属性。
当实体集中含多个码时,选定其中一个码作为主码,其他的码就是候选码。
补充:实体集中不能位移表示实体属性的叫次码。一个主码值对应一个实例,而一个次码值对应多个实例。
广告 您可能关注的内容 |