数据库中的非主属性和主属性、以及候选码和关键码分别指什么?

数据库中的非主属性和主属性、以及候选码和关键码分别指什么?,第1张

1、非主属性

不包含在任何一个候选码中的属性称为非主属性。非主属性是相对与主属性来定义的。

2、主属性

在一个关系中,如果一个属性是构成某一个候选关键字(候选码)的属性集中的一个属性,则称它为主属性(Primeattribute)。

3、候选码

若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。

4、关键码

关键码在数据结构中关键码指的是数据元素中能起标识作用的数据项,例如,书目信息中的登陆号和书名等。其中能起唯一标识作用的关键码称为“主关键码”,如登陆号;反之称为“次关键码”。

扩展资料

求解候选码基本算法的具体步骤:

第1 步,求关系模式R<U,F >的最小函数依赖集F。

第2步,按照上面的定义,分别计算出UL,UR,UB(UL表示仅在函数依赖集中各依赖关系式左边出现的属性的集合;UR表示仅在函数依赖集中各依赖关系式右边出现的属性的集合;另记UB=U-UL-UR)。

第3步,若UL≠Φ,计算UL的闭包,若UL+=U,则UL为R的唯一的候选码,算法结束;若UL+≠U,转第4步,若UL=Φ,转第5步。

第4步,将UL依次与UB中的属性组合,利用上述的定义4判断该组合属性是否是候选码;找出所有的候选码后,算法结束。

第5步,对UB中的属性及属性组合利用上述的定义4依次进行判断;找出所有的候选码后,算法结束.。

主键字段可以允许为null,但是不代表其中所有的值都能为null,这个需要应用上进行处理的,这个字段id值是没有空值的,这样字段是否允许非空就没有意义了,像这种定义方式应该定义结构的人没有好好地深思熟虑的,针对主键字段定义为非空是非常有必要的,可以提升数据库的效率。像这种情况,该字段上只允许一条记录中为null,否则会报错的。

先说候选码,候选码就是可以区别一个元组(即表中的一行数据)的属性或属性的集合,比如学生表student(id,name,age,sex,deptno),其中的id是可以唯一标识一个元组的,所以id是可以作为候选码的,既然id都可以做候选码了,那么id和name这两个属性的组合可不可以唯一区别一个元组呢?显然是可以的,此时的id可以成为码,id和name的组合也可以成为码,但是id和name的组合不能称之为候选码,因为即使去掉name属性,剩下的id属性也完全可以唯一标识一个元组,就是说,候选码中的所有属性都是必须的,缺少了任何一个属性,就不能唯一标识一个元组了,给候选码下一个精确的定义就是:可以唯一标识一个元组的最少的属性集合。而码是没有最少属性这个要求的。另外,一个表的候选码可能有多个,从这些个候选码中选择一个做为主码,至于选择哪一个候选码,这个是无所谓的,只要是从候选码中选的就行。

至于主属性,刚才提到了,一个表可以有多个候选码,那么对于某个属性来说,如果这个属性存在于所有的候选码中,它就称之为主属性


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/6659516.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-26
下一篇2023-03-26

发表评论

登录后才能评论

评论列表(0条)

    保存