数据库如何规范化?速看

要评论数据库范式,首先不得不解说的是函数依靠的概念。设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范式,则在函数依靠领域上就现已消除了数据冗余,刺进,和删去反常。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180627A0SAPN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券