前言

定义:设K为关系模式R<U, F>中的属性或属性组。若U完全依赖K,则K称为R的一个候选码(Candidate Key)。换句话说,R中所有属性完全依赖于K,不存在K’是K的真子集,使得U完全依赖K’成立,则K是关系模式R的候选码。候选码可以通过函数依赖推出,其推出算法如下:

候选码求解算法、

对于给定的关系模式R<U, F>,依照函数依赖集F将U中的属性分为以下四类:
L类属性: 在F中只出现在函数依赖的左部的属性;
R类属性: 在F中只出现在函数依赖的右部的属性;
LR类属性: 分别出现在F中的函数依赖左部和右部的属性;
N类属性: 不在F中的函数依赖中出现的属性

L类属性和N类属性必包含于任何候选码中,R类属性必不包含于任何候选码中, LR类属性不能确定是否在候选码中,假设X是LR码中的属性或属性组,则转换求X在F下的属性闭包,如果属性闭包包含所有的属性,则X是候选码,否则X不是候选码
注:候选码不一定只有一个,求候选码,需要写出全部的候选码。

示例1】关系模式R(A1,A2,A3,A4)上的函数依赖集F={A1→A2,A3→A2,A2→A3,A2→A4},求R的候选码
解:A1是L属性,则候选码一定包含A1
A1F+_F^+F+​={A1A2A3A4},包含了所有属性,因此A1是候选码。

示例2】设R<U, F>,其中: U={A,B,C,D,E},F={A→BC, CD→E, B→D, E→A},求R的所有候选码
解:R中无L、N类属性,A, B,C,D,E均为LR类属性。
AF+_F^+F+​={ABCDE},包含所有属性,因此A是候选码
BF+_F^+F+​={BD},不包含所有属性,因此B不是候选码
CF+_F^+F+​={C},不包含所有属性,因此C不是候选码
DF+_F^+F+​={D},不包含所有属性,因此D不是候选码
EF+_F^+F+​={EABCD},包含所有属性,因此E是候选码
因为A、E是候选码,A、E与任何属性的组合都会是U对A、对E的部分依赖。其余的候选码只需在BCD组合中去找。
BCF+_F^+F+​={ABCDE},包含所有属性,因此BC是候选码
BDF+_F^+F+​={BD},不包含所有属性,因此BD不是候选码
CDF+_F^+F+​={ABCDE},包含所有属性,因此CD是候选码
因为:{BC}是{BCD}的真子集,BCD一定不是码

总结

依据定理:F为属性集U上的一组函数依赖,X,Y ⊆U,X→Y能由F 根据Armstrong公理导出的充分必要条件是Y⊆XF+_F^+F+​,换句话说:F蕴含不蕴含X→Y,可以由Y是不是X关于F的闭包的子集进行推导。将候选码求解问题转换为,求属性闭包问题,如果某个属性或属性组的属性闭包包含了所有属性,但其真子集不包含所有属性,那么这个属性或属性组就是候选码。候选码求解是常考题目,只有得到了候选码,才可能得到主属性、非主属性,才可能完成范式的判定。

候选码求解算法——数据库考试复习相关推荐

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

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

  2. 狂学数据库之候选码的算法

    候选码的算法 闭包的介绍 候选码的算法 背景 例子 在了解候选码的算法之前,先了解一下闭包 闭包的介绍 计算属性集闭包的思路是:从给定的属性集出发,如果发现包含了某个函数依赖左边的 属性,就把其右边的 ...

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

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

  4. 2021PHP算法期末考试-复习试题

    求1-500中能被3整除的数之和,还有统计多少个. 我的答案是 :167 $sum =0; for($i =0;$i<=500;$i++){if($i%3==0){$sum++;} } echo ...

  5. 西北工业大学算法理论考试复习

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

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

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

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

  8. 候选码的求解基本方法集合

    候选码的求解基本方法集合 一.求解候选码基本算法的具体步骤. 第1 步,求关系模式R < U , F > 的最小函数依赖集F 第2 步, 按照上面的定义, 分别计算出UL ,UR , UB ...

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

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

最新文章

  1. Linux学习(十五)---Python定制篇---apt软件管理和远程登录
  2. [html] 当html中使用map标签时,area中coords值如何精确定位呢?
  3. pyppeteer:比 selenium 更高效的爬虫利器
  4. java win10 通知_如何在Java中创建Windows通知
  5. linux下升级python
  6. stm32 r8025
  7. 树状结构搜索功能_百度搜索算法全解析SEO课程笔记
  8. ObjC学习5-变量和数据类型
  9. 互联网企业架构初期选择--初期技术选型
  10. 全网首发:制作LINUX安装软件包,要处理哪些系统目录和文件(1)
  11. matlab 窗函数频谱,功率谱、频率分辨率、频谱泄漏与窗函数
  12. PPT的配色方法(师从于珞珈老师)
  13. android蓝牙取sbc音频数据
  14. 使用 Pixel 3 的 Photobooth 自动拍摄最美自拍照
  15. 云服务器初始化失败怎么办,提示交互式登录进程初始化失败是什么原因?解决方法步骤教程...
  16. 使用逻辑回归对信用卡诈骗分析
  17. Playframework介绍
  18. lm做自相关做几阶_lm检验(lm检验怎么判断是几阶自相关)
  19. Android动画-Interpolator(插值器)大全
  20. 结算从业人员常用词典1.0

热门文章

  1. 转载几个版本的“购票日历”
  2. 华为、中兴对比 [zz]
  3. core dumped
  4. FFT(快速傅里叶变换)中频率和实际频率的关系
  5. python财务管理系统_SSM个人财务管理系统,源码分享
  6. python有道词典-Python3基础 访问在线的有道词典
  7. Zigbee/SiliconLabs解读sdk文档(2) —— 睡眠终端设备
  8. 用python的selenium写爬虫通过绝对坐标点击元素
  9. 计算机信息技术在儿科中的应用,学生管理计算机信息论文
  10. 照片怎么改像素分辨率?照片分辨率怎么调成300dpi?