数据库基础(4)函数依赖公理和推论(Armstrong公理),属性闭包和求候选键的技巧
函数依赖里面,函数依赖公理,Armstrong公理以及属性闭包的定义都有必要仔细学习
1.逻辑蕴含基本定义
2.Armstrong公理和推论–可以用来判断一个函数依赖X -> Y 是否逻辑蕴含于函数依赖集F
Armstrong推论(三个规则)的推出过程
使用Armstrong公理判断逻辑蕴含的例题(这个就要自己多练练就熟悉了)
3.函数依赖集F闭包(F+)和属性集闭包(X+)的概念
首先理解什么是F+ (函数依赖集F的闭包)
例题
属性闭包
简单来说,属性闭包X+指的就是 所有X可以决定的属性的集合
我们也可以用属性闭包判断 X - > Y 是否蕴含于F
一道求属性闭包的例题
(1)求A+,先把A所决定的所有的属性依次扫描:
A+=A
A0=AB (因为有A -> B存在,所以A决定了B,就把B和A放在一起)
A1=ABC (由于A0=AB, AB中的B又决定了C(B->C),所以我们把C也加入属性闭包的集合中)
ABC没有可以决定的属性了,因此最终A+=ABC
(2)求属性集AD的闭包(AD+)
这道题和(1)题同理,
首先看F中是否有AD直接决定的属性,看了一下,发现没有 AD-> a 的情况存在
然后,我们考虑AD中的A或D是否有直接决定的属性,扫描一下,发现有!
AD+=AD
AD0=ADB (因为有A->B,所以把B加入属性闭包)
AD1=ADBC (因为第二项是B->C,所以把C也加入属性闭包)
因此最后 AD+ = ADBC
(3)第三题就自己做吧~~ 不展示过程啦,道理是一样的
4.关于求候选键的技巧
如果一道题中,给了依赖关系让我们求候选键,最佳方式是利用属性闭包算法来做,比如下面的题:
解题
我们先依次求ABD的属性闭包:
A+ = A
B+ = B
D+ = DAB
由于D决定了AB,但是没有决定C,CD在一起可以决定ABCD,所以第一题中R的候选键是CD
数据库基础(4)函数依赖公理和推论(Armstrong公理),属性闭包和求候选键的技巧相关推荐
- 数据库基础1—函数依赖 多值依赖
在数据库知识中有讲到数据库的函数依赖,好几种依赖,希望能进行一下总结: 一.函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制 ...
- 系统架构师(软考)----数据库基础
数据库系统结构 三级模式 外模式:有多少个用户就有多少个 外部视图 用户看到的或使用到的那部分数据 概念模式:全局只有一个 全体数据的逻辑结构 内模式:内部视图 存储记录的类型.存储域 两级映像: 外 ...
- 基本函数依赖和候选键_白话详解数据库函数依赖和Armstrong公理及其引理
一.函数依赖 1. 函数依赖 定义:设 R(U) 是属性集合 U={ A1, A2, ... , An } 上的一个关系模式,X, Y 是 U 上的两个子集,若对 R(U) 的任意一个可能的关系 r ...
- 函数依赖与 Armstrong公理
函数依赖的定义: 如果存在模式(id,name),其中id是主码. 那么函数依赖可以写为id->name 满足函数依赖(a->b)的条件 对实例中的所有元组对t1和t2,如果t1[a]=t ...
- 数据库基础_关系与关系模式
文章目录 前言 一.函数依赖的一般概念 1. X->Y 函数依赖 2.Sample 3.概念_各种依赖关系 二.键,各种键 1.候选键.超码 2.全键 3.外键 4.主属性与非主属性(非码属性) ...
- 【数据库复习】函数依赖
首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的.教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈-我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转 ...
- 【数据库】数据库基础
数据库基础 正文开始@Assassin 目录: 数据库基础 1. 基本概念: 2. 常用数据模型: 3. 常用SQL操作: 4. 关系型数据库: 4.1 索引: 5. 数据库完整性: 6. 关系数据理 ...
- 数据库基础内容(超级详细)
数据库基础 文章目录 数据库基础 数据库基本概念 概述: MySql运行机制: 数据库结构简介 数据库软件 Mysql安装准备: Mysql服务安装 MySQL卸载: Mysql登录: SQL语言的概 ...
- 【数据库基础】正则化(Normalization)P1:UNF、1NF、2NF、3NF
写下此文,希望能深入浅出地总结[正则化]的要点 此为正则化第二部分:[数据库基础]正则化(Normalization)P2:BCNF,MVD,4NFhttps://blog.csdn.net/YFY2 ...
- 数据库基础(常见面试题)
数据库基础(面试常见题) 一.数据库基础 1. 数据抽象:物理抽象.概念抽象.视图级抽象,内模式.模式.外模式 2. SQL语言包括数据定义.数据操纵(Data Manipulation),数据控制( ...
最新文章
- 浙江大学软件学院2020年保研上机模拟练习 7-2 Distance of Triples
- 如果卷积神经网络存在根本性的缺陷,你会怎么看?
- Java基础学习总结(18)——网络编程
- 2018年10月17日普级B组【模拟赛】
- 团队DevOps实践之一
- VLFeat在matlab中的使用
- c++绝对值函数_Python自带自定义高阶函数实战
- -1.#IND,1.#INF 的判断
- JDK的安装 - JDK8(1.8.0_301)
- 3dmax如何删除多余的时间帧
- [OpenCV] 练习题实现代码 使用 cv.addWeighted 函数在文件夹中创建图像的幻灯片放映,并在图像之间进行平滑过渡
- Springboot中自定义文件映射
- 通用产品 云OA SaaS三管齐下
- Element-UI(一) 表格table中实现“加载更多”的功能
- 视频是新时代的文本,微信也不得不认了!
- 三阶PLL环路参数计算
- 论文 | 知识图谱自动构建 Automatic Knowledge Graph Construction
- 【Java课堂】接口详解
- 深度学习Dya1-初识Python(Python环境搭建及numpy、matplotlib包安装)
- 如何评价架构的优劣(转)
热门文章
- 在华为服务器 RH 2288H V2上装 windows 2008
- Qt笔记——MOC(莫克)
- hql中 oracle当前时间,hql oracle 比较 日期时间
- 套料排版代码python_XSuperNEST全自动套料解决方案
- java的三种流程控制语录_Java 流程控制语句
- 链表的基本操作(单链表)
- ftok函数(file to key)
- 读写分离_摸手教程基于ShardingSphereJDBC的MySQL读写分离
- python测试用例不通过发送报告_python+unittest 多用例测试执行失败的问题
- c++ 创建文件夹_C/C++编程笔记:vscode搭建C/C++环境,初学编程可收藏