数据库技术:求候选关键字 A→D,E→D,D→B,BC→D,DC→A

数据库技术:求候选关键字 A→D,E→D,D→B,BC→D,DC→A,第1张

题目要补充完整,必须给出集合U

已知R(U,F),其中   U={A,B,C,D,E}, F={A→D,E→D,D→B,BC→D,DC→A},求候选关键字。

①取L类属性(仅出现在F的函数依赖左侧的)——E,C

②求EC关于F的闭包(即由EC可以推出哪些属性)——(EC)+ = ABCDE,包含了U的全部属性,故EC为候选关键字

注: 若U={A,B,C,D,E,P},P不在F中左侧或右侧,则P为N类属性,(ECP)+ =ABCDEP,同样包含了U的全部属性,那么候选关键字就为ECP

附:

定理一:对于给定的关系模式R(U,F),若X(X属于U)是L类属性,则X必为R的任一候选码的成员(组成部分)。

推论一:已知R(U,F),若X(X属于U)是L属性,且X+F包含了R的全部属性U,则X必为R的唯一候选码。

定理二:给定R(U,F),若X(X属于U)是R类属性,则X不在任何候选码中。

定理三:给定R(U,F),若X是R的N类属性,则X必包含在R的任一候选码中。

推论二:已知R(U,F),若X是R的N类和L类属性组成的属性集,且X+包含了R的全部属性U,则X是R的唯一候选码。

1 R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W}

L:

R:Z

LR:W,X,Y

N:

候选键:(W)或(Y)

2 R(U,F),U={a,b,c,d,e}, F={={d→b,b→d, ad→b,ac→d}

L:a,c

R:

LR:b,d

N:e

候选键:(a,c,e)

超键就是指一组字段可以唯一确定一条数据,而候选键是最简洁的超键,也就是只有必要字段,

举例来说明,假如有一个班级,班级中没有同名的学生,有如下一张表。

std_id last_name first_name gender score

10001 张 三 男 85

10002 李 四 男 86

10005 妹 子 女 95

10006 李 三 男 88

这张表里,因为我们前面说到这个班级里没有同名的学生。

因此last_name+first_name就是一个超键,因为可以唯一确定一行数据,同时也是一个候选键,因为这两个字段去掉任何一个都不再能唯一确定一行数据。

更明显的区别在于,last_name+first_name+gender还是一个超键,但是已经不再是候选键了,因为在确定唯一一条数据的时候,gender不是必要的字段。

也就是说候选键是可以唯一确定一条数据的必要字段的最小集合,而候选键加上任何的额外字段都是超键。

在上面的例子中,std_id自己就是一个候选键,std_id+任何额外的字段都是候选键。

同时从习惯而言,一般会把这种std_id字段定义为主键,主键并不一定只是一个字段,如果我们上面的表增加一列班级id(class_id),同时加入每个班级中的std_id都是从10001开始的话,我们就可以用class_id+std_id来作为主键。

自己的理解,希望可以帮到题主。


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

原文地址: http://outofmemory.cn/sjk/6697053.html

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

发表评论

登录后才能评论

评论列表(0条)

保存