:关系数据理论
Posted karshey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:关系数据理论相关的知识,希望对你有一定的参考价值。
文章目录
存在的问题
为什么要引入范式?
因为关系模式存在一些问题:
规范化-几个范式
引入范式就是为了解决上述的问题。
函数依赖
平凡的函数依赖与非平凡的函数依赖
举例:A在这个班级中,给我这个班级的所有名单,我就能找到A——平凡的函数依赖。
完全函数依赖与部分函数依赖
举例:
学号->姓名,(学号,班级)->姓名。
(学号,班级)->姓名多此一举了——部分函数依赖。
学号->姓名——完全函数依赖。
ps:完全函数依赖,真子集是推不出的,要整个集合刚好能推出才行。
码
候选码
严格的定义:
好理解的定义:
有这样一个集合,它可以推出所有的属性,但它的任意一个真子集无法推出所有属性。
——刚好这一整个集合才能推出所有属性。
举例:
有F=A->B,B->C,D->E;
则候选码为AD
,因为AD可以推出ABCDE,而它的真子集A或D都不能退出ABCDE。
一个F中可以有多个候选码,候选码不唯一。
举例:
有F=A->B,B->C,D->E,E->D;
则候选码为AD、AE
。
例题:
解:
注意:U表示所有属性,F表示关系。
步骤:(对字母)
- 只出现在左边的一定是候选码
- 只出现在右边的一定不是候选码
- 左右边都出现的不一定
- 左右边都不出现的一定是候选码
按照步骤来分析:
A:左右边都出现了,可能
B:只有左边出现,一定是
C:左右边都出现了,可能
D:只有左边出现,一定是
E:只有左边出现,一定是
G:只有右边出现,一定不是
则:
一定是:BD
一定不是:G
可能:ACE
接下来求一定是的闭包。
BD的闭包:BD能推出来的所有属性。表示为(BD)+=BD
。(BD的闭包就是BD)
BD的闭包不是全体,则接下来把所有可能的加进去求闭包。
即求(ABD)+、(BCD)+、(BDE)+
(ABD)+=ABCDEG
(BCD)+=ABCDEG
(BDE)+=ABCDEG
所以候选码为ABD、BCD、BDE
其他码的概念
超码
:能推出所有属性的属性集。如上题的超码为ABD、ABCD、ABCDEG。
候选码
:最小的超码。
主码
:从候选码中任意挑出一个为主码。
主属性
:包含在任意一个候选码中的属性。如上题的主属性为A、B、C、D、E
非主属性
:不包含在候选码中的属性,上题为G。
码
:我们把主码、候选码都简称为码
全码
:所有的属性都是码,成为全码。
范式
范式的种类:
- 第一范式:1NF
- 第二范式:2NF
- 第三范式:3NF
- 第BC范式:BCNF
- 第四范式:4NF
- 第五范式:5NF
各范式的联系:
第一范式:1NF
所有的关系模式都满足1NF,1NF的要求是表中无表。
反例:
第二范式:2NF
在1NF的基础上,不存在非主属性
对码
的部分函数依赖
。
第三范式:3NF
在2NF的基础上,不存在非主属性
对码
的传递函数依赖
。
传递函数依赖:
A->B,B->C,则A->C,这就是传递函数依赖。
如图,R1、R2中无传递函数依赖。
思考:为什么全码一定是3NF?
答:因为全码里没有非主属性,所以一定是3NF。
BCNF
在3NF的基础上不存在主属性对码的部分和传递函数依赖。
是3NF也是BCNF的例子:
是3NF但不是BCNF的例子:
3NF与BCNF的关系:
数据依赖的公理系统
公理系统
理解:
- 自反律:Y属于X,则X可以推出Y——小明在A班,如果能拿到A班所有人的名单,则可以找到小明——大可以找小。
- 增广律:已知X->Y,则XZ->YZ;
- 传递律:X->Y,Y->Z——X->Z;
三个定理
求最小函数的依赖集
概念:
一个很清晰的讲解:关系数据库理论之最小函数依赖集:下面的最小函数依赖的图都来自这个链接,举例也是
解:
模式分解
模式分解有两个准则:
- 无损连接性
- 保持函数依赖
step3中左边一样的是指:
若:F=A->B,A->C…,则有ABC,这里A就是一样的左边。
step4:CE是候选码,且没有出现在分类AD、ED、DB、BCD、DCA中所以就单独分一类(如果出现了就不管它);GH也要单独分一类。
以上是关于:关系数据理论的主要内容,如果未能解决你的问题,请参考以下文章