【函数依赖,完全函数依赖与传递函数依赖,函数依赖相关的几个概念,关于函数依赖的公理和定理,函数依赖集的最小覆盖,关系的第1范式和第2范式,关系的第三范式和Boyce-Codd范式】

本文主要是介绍【函数依赖,完全函数依赖与传递函数依赖,函数依赖相关的几个概念,关于函数依赖的公理和定理,函数依赖集的最小覆盖,关系的第1范式和第2范式,关系的第三范式和Boyce-Codd范式】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、函数依赖
    • 1.函数依赖的定义
    • 2.函数依赖的示例
    • 3.函数依赖的特性
    • 4.函数依赖的提取练习
  • 二、完全函数依赖与传递函数依赖
    • 1.部分函数依赖与完全函数依赖的定义
    • 2.传递函数依赖的定义
  • 三、函数依赖相关的几个概念
    • 1.候选键的定义
    • 2.外来键的定义
    • 3.逻辑蕴含的定义
    • 4.闭包
  • 四、关于函数依赖的公理和定理
    • 1.函数依赖的Armstrong公理
    • 2.关于函数依赖的推论一一定理
    • 3.属性闭包
  • 五、函数依赖集的最小覆盖
    • 1.覆盖的概念
    • 2.属性闭包的计算算法
  • 六、函数集的最小覆盖
    • 1.函数依赖集的性质
    • 2.最小覆盖
  • 七、关系的第1范式和第2范式
    • 1.关系的1NF
    • 2.关系的2NF
  • 八、关系的第三范式和Boyce-Codd范式
    • 1.关系的3NF
    • 2.关系的BCNF

一、函数依赖

1.函数依赖的定义

【definition】函数依赖
设R(U)是属性集合U={A1,A2,A3…,An}上的一个关系模式,X,Y是U上的两个子集,若对R(U)的任意一个可能的关系r,r中不可能有两个元组满足在X中的属性值相等而与Y中的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,记作X→Y。在这里插入图片描述

2.函数依赖的示例

在这里插入图片描述
(在属性A相同时,属性B也相同就是属性B依赖于属性B)

3.函数依赖的特性

在这里插入图片描述

4.函数依赖的提取练习

在这里插入图片描述

二、完全函数依赖与传递函数依赖

1.部分函数依赖与完全函数依赖的定义

【definition】部分或完全函数依赖
在这里插入图片描述
在这里插入图片描述

2.传递函数依赖的定义

在这里插入图片描述
在这里插入图片描述

三、函数依赖相关的几个概念

1.候选键的定义

【definition】候选键(唯一性,最小性)
在这里插入图片描述
说明;
1.可任选一候选键作为R的主键(Primary Key)
2.包含在任一候选键中的属性称为主属性(Primary Attribute),其他属性称为非主属性
3.若K是R的一个候选键,K属于S,则称S为K的一个超键(Super Key)
在这里插入图片描述
这里的主键就是学号或课号。主属性就是学号或课号。

2.外来键的定义

若D(U)中的属性或属性组合X并非R的候选键,但X却是另一关系的候选键,则称X为R的外来键(Foreign Key),简称外键。
在这里插入图片描述

3.逻辑蕴含的定义

【definition】逻辑蕴含
在这里插入图片描述

4.闭包

被F逻辑蕴含的所有函数依赖集合称为F的闭包(Closure),记作F+。
在这里插入图片描述
在这里插入图片描述

四、关于函数依赖的公理和定理

1.函数依赖的Armstrong公理

在这里插入图片描述
公理的作用是由已知的函数依赖推导出隐含的函数依赖。

2.关于函数依赖的推论一一定理

在这里插入图片描述
在这里插入图片描述

3.属性闭包

【definition】属性(集)闭包
在这里插入图片描述
在这里插入图片描述

五、函数依赖集的最小覆盖

1.覆盖的概念

【definition】覆盖
在这里插入图片描述

2.属性闭包的计算算法

在这里插入图片描述

六、函数集的最小覆盖

1.函数依赖集的性质

【引理6】每个函数依赖集F可被一个其右端至多有一个属性函数依赖集G覆盖。在这里插入图片描述

2.最小覆盖

定理:每个函数依赖集F都有等价的最小覆盖F’。

在这里插入图片描述
定理:每个函数依赖集F都有等价的最小覆盖F’。
总结:在这里插入图片描述

七、关系的第1范式和第2范式

1.关系的1NF

【definition】1NF
若关系模式R(U)中关系的每个分量都是不可分的数据项(值,原子),则称R(U)属于第一范式,记为:在这里插入图片描述

2.关系的2NF

【definition】2NF
R(U)属于1NF且U中的每一非主属性完全依赖于候选键,则称R(U)属于第二范式,记为:R(U)属于2NF。
在这里插入图片描述
第二范式消除了非主属性对候选键的部分依赖。

八、关系的第三范式和Boyce-Codd范式

1.关系的3NF

【definition】3NF
在这里插入图片描述
在这里插入图片描述
第三范式消除了非主属性对候选键的传递依赖。
例:在这里插入图片描述
关系模式分解成3NF
在这里插入图片描述

2.关系的BCNF

【definition】BCNF
在这里插入图片描述
例;在这里插入图片描述
【定理】若R(U,F)属于BCNF,则R(U,F)就一定属于第二范式。

这篇关于【函数依赖,完全函数依赖与传递函数依赖,函数依赖相关的几个概念,关于函数依赖的公理和定理,函数依赖集的最小覆盖,关系的第1范式和第2范式,关系的第三范式和Boyce-Codd范式】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/390997

相关文章

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

hdu1171(母函数或多重背包)

题意:把物品分成两份,使得价值最接近 可以用背包,或者是母函数来解,母函数(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v)(1 + x^v+x^2v+.....+x^num*v) 其中指数为价值,每一项的数目为(该物品数+1)个 代码如下: #include<iostream>#include<algorithm>

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

poj 1287 Networking(prim or kruscal最小生成树)

题意给你点与点间距离,求最小生成树。 注意点是,两点之间可能有不同的路,输入的时候选择最小的,和之前有道最短路WA的题目类似。 prim代码: #include<stdio.h>const int MaxN = 51;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int P;int prim(){bool vis[MaxN];

poj 2349 Arctic Network uva 10369(prim or kruscal最小生成树)

题目很麻烦,因为不熟悉最小生成树的算法调试了好久。 感觉网上的题目解释都没说得很清楚,不适合新手。自己写一个。 题意:给你点的坐标,然后两点间可以有两种方式来通信:第一种是卫星通信,第二种是无线电通信。 卫星通信:任何两个有卫星频道的点间都可以直接建立连接,与点间的距离无关; 无线电通信:两个点之间的距离不能超过D,无线电收发器的功率越大,D越大,越昂贵。 计算无线电收发器D

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

hdu 1102 uva 10397(最小生成树prim)

hdu 1102: 题意: 给一个邻接矩阵,给一些村庄间已经修的路,问最小生成树。 解析: 把已经修的路的权值改为0,套个prim()。 注意prim 最外层循坏为n-1。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstri