要评论数据库范式,首先不得不解说的是函数依靠的概念。设R(U)是特点集U上的联络形式。X和Y是U的子集。若关于R(U)上的恣意一个可能的联络r,假如r中不可能存在两个元组,它们在X上的特点值持平,而在Y上的特点值不等,则称X函数决议Y或Y函数依靠于X,记作X->Y。
总而言之,这段话能够总结为当X特点值决议Y特点值时,则称X决议Y,或Y依靠于X。
举个简略的比如:
规划学生表时,学生的学号能够决议学生的名字,学生名字依靠于学生学号。
在函数依靠中还有普通函数依靠与非普通函数依靠,彻底函数依靠与部分函数依靠,传递函数依靠等几种特别的函数依靠。
(1)普通与非普通函数依靠
设R(U)是特点集上的一个联络形式。X和Y是U的子集。假如X->Y,且Y不归于X则称其为非普通函数依靠。若X->Y且Y归于X,则称X->Y是普通函数依靠。
由此可见一般函数依靠都为普通函数依靠。
(2)彻底函数依靠与部分函数依靠。
在R(U)中,假如X->Y,并且关于X的任何一个真子集X',都有X'-\>Y,则称Y对X彻底函数依靠,记作:X-f>Y.
若X->Y,但Y不彻底函数依靠于X,则称Y对X部分函数依靠,记作X-p>Y。
例如 学生表(学号,课程号,年级,学生宿舍)联络中,部分函数依靠:(学号,课程号) 学生宿舍 因为 学号 学生宿舍 建立
---
接下来开始看看何为范式。
在联络数据库规范化过程中,为不同程度的规划化要求建立的不同规范称为范式。
榜首范式(1NF):
界说:假如联络形式R的一切特点都是不可分的数据项,则称R归于榜首范式,记为R归于1NF。
不到榜首范式
学生(名字,性别年纪)----(因为性别年纪列包括了两个特点)
榜首范式
学生(名字,性别,年纪)---(R的一切特点都不可在分了)
第二范式(2NF):
若联络形式R归于1NF,且每个非主特点都彻底函数依靠于R的键,则R归于2NF。即第二范式首要意图为消除非主特点对主特点的部分函数依靠。
那么为什么需求消除部分依靠呢?
有这样一个联络形式,
学生(学号,名字,系别,住处,课程号,成果)
关于以上联络,学号->名字,学号->系别
存在以下问题:
1,数据冗余
因为名字等部分依靠于(学号,成果),所以增加数据每个系的系名和学生住处重复出现,糟蹋空间。
2,更新反常
因为数据的冗余,当更新数据库中的数据时,系统需求支付很大的价值来保护数据库的完整性,否则会形成数据的不一致。
3,刺进反常
假如某个学生没有选课那么学生有关信息不能刺进。
4,删去反常
若某个系学生悉数毕业,在删去该系学生信息的一起,这个系的相关信息也一并被删去。可是事实上该系依然存在。
一个联络形式中若存在部分函数依靠,则必定有主特点与非主特点之间无联络的无关项,则必定会发生上述问题。所以咱们需求消除部分函数依靠,这就是第二范式所要求做到的。
消除部分函数依靠能够选用投影分化法,将部分函数依靠从其间分化出来。
分化后的联络形式应非主特点对主特点都是彻底函数依靠。
第三范式(3NF):
联络形式R中若不存在这样的键X,特点组Y及非主特点Z(Z不归于Y),使得X->Y,Y->Z建立,且Y->X,则称R归于3NF。
由此可见,第三范式的意图在于消除传递函数依靠,之所以要消除传递函数依靠是因为,假设X->Y,Y->Z,可是Z并不是直接依靠于X,所以对X所做的某些操作不需求影响到Z,而Y即依靠于X,也被依靠着,即Y在某种程度上有其独立性,能够独自存在不被影响决议,有些针对Y的操作势必会一起影响到X与Z,并且Y不归于X,针对X的有些操作不需求影响到Y,针对Y的操作有时不需求影响X,但并没有必要形成这种影响,所以咱们要消除传递函数依靠。
举个比如:
学号 宿舍 费用
062201 A 900
062230 B 1200
062240 B 1200
学号断定宿舍、宿舍断定费用,且有学号不包括宿舍,宿舍不断定学号,契合传递函数依靠条件。
所以以上联络R存在增加反常(建了C宿舍可是没人住无法增加了)删去反常(学生062201退学了宿舍A也删去掉)。
综上为了防止反常,咱们需求消除它。
BC范式:
因为3NF仅仅规则了非主特点的对键的依靠联络。没有限制主特点对键依靠。若存在主特点对键的部分函数依靠与传递函数依靠,必定会发生上面相似的问题。故又引入了BC范式。
设联络形式R∈1NF,假如关于R的每个函数依靠XY,若Y不归于X,则X必含有候选码,那么R∈BCNF。
相关于第三范式,BC范式的要求愈加严厉。第三范式只是要求R为第二范式且非键特点不传递依靠于R的候选键,而BC范式则是对R的每个特点都做要求。
在联络形式STJ(S,T,J)中,S表明学生,T表明教师,J表明课程。
每一教师只教一门课。每门课由一名教师教,某一学生选定某门课,就断定了一个固定的教师。某个学生选修某个教师的课就断定了所选课的称号 : (S,J)T,(S,T)J,TJ
由联络形式的界说能够得到如下结论,若R归于BCNF,则R有:
1.一切非主特点对每一个码都是彻底函数依靠。
2.一切的主特点对每一个不包括它的码,也是彻底函数依靠。
3.没有任何特点彻底函数依靠于非码的任何一组特点。
因为R∈BCNF,按界说排除了任何特点对码的传递依靠与部分依靠,所以R∈3NF。可是若R∈3NF,则R未必归于BCNF。
---
第四范式以及多值依靠还不太懂,一般若到达BC范式,则在函数依靠领域上就现已消除了数据冗余,刺进,和删去反常。
领取专属 10元无门槛券
私享最新 技术干货