首页 > 试题广场 >

一个表的候选码一定是主码。 请问这句话的说法是正确的吗?

[单选题]
一个表的候选码一定是主码。  请问这句话的说法是正确的吗?
  • 正确
  • 错误
主码也就是主键,是惟一标识表中的每一行的字段或者多个字段的组合,它可以实现表的实体完整性
每个表只能有惟一的主码,且不能为空
这需要理清几个概念:


1)候选键: 关系中的一个属性组,其值能唯一标识一个元组,若从该属性组中去掉任何一个属性,它就不具有这一性质了。(即该属性组内不应该存在一个真子集也能标识一个元组)。这样的属性组称作候选码。

2)主键:当有多个候选码时,可以选定一个作为主码,选定的候选码称主键

3)外键: 关系R中的一个属性组,它不是R的候选码,但它与另一个关系S的候选码相对应,则称这个属性组为R的外码或外键。

发表于 2018-08-21 09:22:42 回复(0)
K->U
U完全依赖于K,则K为表的候选码

候选码可以有多个。若多于一个,则选定其中一个为 主码。
发表于 2019-09-15 16:50:18 回复(0)
候选码可以唯一标识一个实体,可以有一个或者多个。
主码唯一且非空,也是唯一标识一个实体的码。
如果候选码有多个,可以从中选定一个主码。
发表于 2018-10-17 14:11:46 回复(0)
B
发表于 2018-01-09 13:39:33 回复(0)
我擦,看反了,以前做过反过来的题。
一个表的主码一定是候选码。反过来不成立。

候选码:可以区别一个元组(即表中的一行数据)的属性或者是属性的集合

比如学生表student(id,name,age,sex,deptno),其中id是可以唯一标识一个元组的,所以id是可以作为候选码的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,此时的id可以成为码,id和name的组合也可以成为码,但是id和name的组合不能称之为候选码,因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,

即:候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了。

给候选码下一个更精确的定义就是:可以唯一标识一个元组的最少的属性集合。而码是没有最少属性这个要求的。
一个表的候选码可能有多个,从这些个候选码中选择一个做为主码,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。

发表于 2019-08-16 19:40:41 回复(0)