请教候选码与主码有区别吗

能解释下吗
谢谢!
书上原文“若一个关系有多个候选码,则选其中一个为主码,主码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性”
= =!感觉好晕。能举个例子吗
谢谢!

一、含义不同:

主码唯一标识,候选码是可以作为主码的码,主码一定是候选码的子集,但候选码不一定是主码。

二、作用不同:

主码:被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码;此外,应该选择哪些从不或极少变化的属性;

候选码:如果任意超码的真子集不能包括超码,则称其为候选码;超码包括候选码;

建立主键应该遵循的原则

主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

以上内容参考:百度百科-主关键字

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2020-02-01
主码和候选码都是用来唯一标识关系的。

一个关系中可以有多个候选码,只需选其中之一作为主码,主码里包含的属性叫做主属性。

举个例子
学生表中:
属性:学号、姓名、性别、年龄、班级、系
一般学号就可以唯一的标识出一个同学的身份,我们可以设置学号为主码。是最简单的候选码。

那么 学号+姓名当然也可以作为唯一标识,也可以用来作为候选码
同理,学号+姓名+性别也可以作为候选码
以此类推
最极端的情况是全表都用来做主码,这时的主码也叫全码。

你所选择的候选码中包含的属所有性叫做主属性,其他属性成为非主属性。例如,当你设置学生+姓名作为主码时,主属性就是学号和姓名,性别、年龄、班级、系是非主属性本回答被网友采纳
第2个回答  2014-07-14
主码是从候选码中选择一个,主码的属性可能不止一个,候选码是最小的超码,候选码中不能包含无关的属性,举例:学号作为主码,那么学号加姓名就不能是一个候选码,因为学号本身就是一个候选码,姓名是一个无关属性
第3个回答  2008-07-03
一个表里只能有一个主键,但是能满足作为主键条件的不只一个,比如说表里有这样的两个字段:身份证号,准考证号.如果把身份证号作为主键,那么准考证号就是候选键了关系数据库中的关系就是表,属性就是字段
如果上表中再加一个"性别",那么性别就是非主属性了
第4个回答  2012-06-27
这个是对的。所有码都是一个集合。  所有可以用来在实体集中标识唯一实体的集合,都是超码。  如果任意超码的真子集不能包括超码,则称其为候选码。  被数据库设计者选中的,用来在同一实体集中区分不同实体的候选码。  超码包括候选码,候选码包括主码。
相似回答