数据库的关系中如何确定候选码

数据库的关系中如何确定候选码,第1张

(1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中;

(2)如果有属性不在函数依赖集中任何函数依赖的右边出现,那么它必须包含在候选码中;

(3)如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。

(4)如果有属性或属性组能唯一标识元组,则它就是候选码;

题目要补充完整,必须给出集合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 >的最小函数依赖集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 依次进行判断找出所有的候选码后,算法结束. 简而言之:取最小依赖集,计算UL闭包,

如果UL闭包包含全属性,则UL为唯一侯选码,如果不包含,

则依次与UB属性组合后再求闭包是否包含全属性。

(UL为空时,直接取UB依次组合求闭包)


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

原文地址: https://outofmemory.cn/sjk/6739109.html

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

发表评论

登录后才能评论

评论列表(0条)

保存