算法:按以下步骤求候选键:
1.只在FD右部出现的属性,不属于候选码;
2.只在FD左部出现的属性,一定存在于某候选码当中;
3.外部属性一定存在于任何候选码当中;
4.其他属性逐个与2,3的属性组合,求属性闭包,直至X的闭包等于U,若等于U,则X为候选码。

例1:R<U,F>,U=(A,B,C,D,E,G),F={AB-->C,CD-->E,E-->A.A-->G},求候选码。

因G只在右边出现,所以G一定不属于候选码;而B,D只在左边出现,所以B,D一定属于候选码;BD的闭包还是BD,则对BD进行组合,除了G以外,BD可以跟A,C,E进行组合
  先看ABD
  ABD本身自包ABD,而AB-->C,CD-->E,A-->G,所以ABD的闭包为ABDCEG=U
  再看BDC
  CD-->E,E-->A,A-->G,BDC本身自包,所以BDC的闭包为BDCEAG=U
  最后看BDE
  E-->A,A-->G,AB-->C,BDE本身自包,所以BDE的闭包为BDEAGC=U

因为(ABD)、(BCD)、(BDE)的闭包都是ABCDEG所以本问题的候选码有3个分别是ABD、BCD和BDE

例2:R<U,F>,U=(A,B,C),F={AB-->C,C-->B},求候选码。

因为A只出现在左边,所以A一定是候选键。A的闭包还是A,则对A进行组合,可以和B,C进行组合。

首先看AB,AB本身自包AB,而AB-->C,所以AB的闭包是ABC=U。

再看AC,AC本身自包AC,而C-->B,所以AC的闭包是ABC=U。

因为AB,AC的闭包都是ABC,也就是U,所以候选键是AB,AC。

原文:https://blog.csdn.net/weiyongle1996/article/details/73481163

根据函数依赖求候选码相关推荐

  1. 数据库函数依赖与候选码求解

    函数依赖 1.理解函数依赖: (1)完全函数依赖(F):多个属性[即复合属性]决定一个属性.例:AB两个属性决定属性C. (2)部分函数依赖(P):单个属性就可决定一个属性.例:A属性决定B属性 (3 ...

  2. 数据库求候选码的算法

    [例1]关系模型R<U,F>,U={A,B,C,D},F={B→D,AB→C},求R候选码. 在求解之前先要明白一些定理.我们把函数依赖集中F中的属性分为四类: L类:所有依赖关系中仅出现 ...

  3. 数据库候选关键词怎么求_数据库中候选码求法.(比较全的哦)

    =ABCDE,又有E→A,求E+=ABCDE而CD→E,求(CD)+=ABCDE,可以得出属性A,E,CD为候选码;除去A,E,CD外,根据一般求解法求两个属性组合的闭包,可以得到(BC)+=ABCD ...

  4. 如何求一个关系模式的候选码

    首先来看候选码的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码. 若W是候选键,则必须满足两个条件:W的闭包是U:W没有冗余. 设关系模式R中U=ABC.......等N个属 ...

  5. mysql是如何设置候选码_如何求一个关系模式的候选码

    首先来看候选码的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码. 若W是候选键,则必须满足两个条件:W的闭包是U:W没有冗余. 设关系模式R中U=ABC.......等N个属 ...

  6. 数据库原理之候选码的判断方法

    1.如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中(继续求它的闭包,如果他的闭包是属性全集,则为候选码,如果不是,则需要结合其他属性求闭包,继而判断是否是候选码) 2.只在函数依赖集右 ...

  7. 数据库~如何快速、准确选取候选码(候选键)?

    1, 定义:若关系中某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(候选键). 2.,条件:若W是候选码,则必须满足两个条件 ①W的闭包为全集U ②W没有冗余(如何求闭包,下一篇博客) 3. ...

  8. 候选码求解算法——数据库考试复习

    前言 定义:设K为关系模式R<U, F>中的属性或属性组.若U完全依赖K,则K称为R的一个候选码(Candidate Key).换句话说,R中所有属性完全依赖于K,不存在K'是K的真子集, ...

  9. 求解关系模式的候选码——数据库原理

    首先来看候选码的定义:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码. 若W是候选键,则必须满足两个条件:W的闭包是U:W没有冗余. 设关系模式R中U=ABC.......等N个属 ...

最新文章

  1. 使用Masonry实现UILabel和UIIMageView自适应长度居中
  2. 数据结构分析之——图
  3. 防护疫情防御插画|后疫情时代宣传不可小觑
  4. 吴恩达深度学习5.3练习_Sequence Models_Neural machine translation with attention
  5. linux mysql更改用户权限
  6. 原生开发什么意思_什么是原生开发?什么是混合开发?两者有什么区别?
  7. CentOS 6下SSH限制IP和用户登录
  8. github html5 预览,github 上如何直接预览仓库中的html
  9. windows安装解压版mysql
  10. 【原创手写笔记】面试准备,关于Adaboost GBDT算法你需要知道的那些
  11. postman 的基础使用
  12. ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
  13. MIPS汇编指令翻译机器码
  14. https://api-hmugo-web.itheima.net 不在以下 request 合法域名列表中,请参考文档:https://developers.weixin.qq.com/minip
  15. 无人机飞控平台ArduPilot源码入门教程 — 简介
  16. 简易javascript图片轮播代码
  17. 有缘相聚,因skycc 营销软件
  18. 收藏,国自然摘要400字符,如何浓缩出精华?(附空白申请模板)
  19. 笔记本电脑连不上网怎么回事
  20. ug怎么修改显示精度_UG 模具设计实用技巧

热门文章

  1. JavaScript取整数
  2. 无法启动此程序 因为计算机中丢失 msvcp71.dll,Win7开机异常并提示msvcp71.dll文件丢失的解决方法...
  3. python challenge 答案
  4. Asp.Net customErrors与httpErrors的区别 先看一下简单的对比
  5. 关于在字符数组中利用scanf函数输入空格等问题
  6. 本地电脑Git如何连接Github账户
  7. 【开源软件】服务器状态监控通知平台
  8. 虚拟内存越大越好吗_手机如何选择屏幕分辩率?720p、1080P,数值越大越好吗?...
  9. 关于医保卡的正确使用
  10. 知乎怎么获取流量密码