目录
1.函数依赖的定义
定义:设有一关系模式R (U ),X 和Y 为其属性U 的子集,即X⊆U ,Y ⊆U 。设t 、s 是关系R 中的任意两个元组,如果t [X ] = s [X ],且t [Y ] = s [Y ],那么称Y 函数依赖于X ,或称X 作为决定因子决定Y 函数,即称X →Y 在关系模式R (U )上成立。
其中左边(即X)称为决定因子,右边(即Y)称为函数依赖。通俗地说就是X决定Y, 或者说Y被X决定。记作X->Y。
说明:决定因子和函数依赖都是属性的集合。确认一个函数依赖,需要弄清属性数据间的语义,而语义是现实世界的客观反映,不是主观的臆断。如果Y ⊆X ,显然X →Y成立,将该依赖称为平凡函数依赖(Trivial Functional Dependency)。平凡函数依赖必然成立,它不反映新的语义。例如,{X ,Y }→{X }
2.函数依赖的种类
部分函数数依赖
定义:设X 、Y 是某关系的不同属性集,如X →Y ,且不存在X′⊂X ,使X ′→Y ,则Y 称完全函数依赖(Full Function Dependency)于X ,记为X Y ;否则称部分函数依赖(Partial Functional Dependency)于X ,记为X Y
上例子:
学生”关系表中,其主键为复合键(学号,课程号),非键属性与主键的依赖关系如下。
除成绩属性完全依赖复合主键外,姓名、系名、住址、电话、Email 属性只依赖于复合主键中的学号,即该关系存在部分函数依赖。
传递依赖
定义:设X 、Y 、Z 是某关系的不同属性集,如果X →Y , ,Y →Z ,则称Z 对X 存在函数传递依赖(Transitive Functional Dependency)
上例子:下面的学生表中,存在学号→系名,系名→住址,故学号→住址的决定关系,这就是属于是传递依赖
多值依赖
定义:设U 是关系模式R 的属性集,X 和Y 是U 的子集,Z =U−X −Y ,xyz 表示属性集XYZ 的值。对R 的关系r ,在r 中存在元组(x , y 1 , z 1 )和(x , y 2 , z 2 )时,也存在元组(x , y 1 , z 2 )和(x , y 2 , z 1 ),那么称多值依赖(Multi Valued Dependency,MVD),即X →→Y 在模式R 上成立
上例子:关系Teaching(Course,Teacher,Book)的属性有课程、教师和参考书,其属性间约束的语义:一门课程可以有多个任课教师,也可以有多本参考书;每个任课教师可以任意选择他的参考书。例如,存在(课程A,教师1,参考书1)、(课程A,教师2,参考书2)、(课程 A,教师1,参考书2)和(课程 A,教师2,参考书1)等元组,即该关系存在多值依赖Course→→Teacher,Course→→Book。简单来说,对任意确定的课程都有一组教师的取值与之对应,同样每个课程都有一组参考书与之对应,而教师的取值与参考书的取值是相互独立的。
如上面标注的情况在关系表中发生时,就会导致数据的冗余。
3.规范化设计范式
定义
是一种基于函数依赖理论对关系进行分析及分解处理的形式化技术,它将一个有异常数据操作的关系分解成更小的、结构良好的关系,使该关系有最小的冗余或没有冗余。关系规范化给设计者提供了对关系属性进行合理定义的指导。有了规范化关系设计,我们对数据库可以实现高效的、正确的操作
规范化种类:
关系数据库的规范化有6种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低规则要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规则要求的称为第二范式(2NF),其余范式依次类推。高级范式包含低级范式的全部规则要求。
第一范式
在关系数据库中,第一范式(1NF)是对关系表的基本要求,不满足第一范式的二维表不是关系。第一范式指关系表的属性列不能重复,并且每个属性列都是不可分割的基本数据项。若一个关系表存在重复列或可细分属性列,则该关系表不满足规范化的1NF范式,该表存在冗余数据,对该表进行数据操作访问也必然会出现异常。 举例:“学生”关系表中,关系表中的“联系方式”属性是一个不明确的数据项,用户可以填写电话数据,也可以填写邮箱数据,即该属性列可以再细分“电话”“电子邮件”等。因此,该关系不满足关系规范化的1NF范式。
第二范式
如果关系满足第一范式,并消除了关系中的属性部分函数依赖,该关系满足第二范式。第二范式规则要求关系表中所有数据都要和该关系表的主键有完全函数依赖。如果一个关系中某些属性数据只和主键的一部分存在依赖关系,该关系就不符合第二范式。 举例:“学生”关系表中,其主键为复合键(学号,课程号),非键属性与主键的依赖关系如下。除成绩属性完全依赖复合主键外,姓名、系名、住址、电话、Email 属性只依赖于复合主键中的学号,即该关系存在部分函数依赖,即不满足第二范式。
第三范式
第三范式(3NF)要求关系先满足2NF范式,并且所有非主键属性均不存在传递函数依赖。 例如,对图4-44中“学生”关系中某学生的“住址”进行更新,而其他同系学生的住址没有修改,则会出现数据不一致问题。此时的数据更新异常是因为“学生”关系表中存在属性传递函数依赖,该表不满足3NF范式导致的。
巴斯-科德范式
巴斯-科德(Boyce-Codd)范式,也可称为BCNF范式。该范式是在3NF范式基础上,要求关系中所有函数依赖的决定因子必须是候选键。
第四范式
一个满足BCNF范式的关系,可能存在多值依赖情况,从而导致数据冗余。当一个关系满足BCNF范式并消除了多值依赖时,该关系就满足4NF范式。
举例:上面的“学生”“系信息”“课程成绩”关系表均满足BCNF范式。但在“系信息”关系表中,存在如下多值依赖:系编号→→办公电话,系编号→→学生住址。系办公电话与学生住址不相关,故该关系存在多值依赖,不满足4NF范式。为使“系信息”关系满足4NF范式,需要将其拆分为“系编码”“电话目录”和“学生住址”关系。图4-46所示的关系表均满足4NF范式。
第五范式
如果一个关系为消除其中连接依赖,进行投影分解,所分解的各个关系均包含原关系的一个候选键,则这些分解后的关系满足5NF范式。连接依赖是函数依赖的一种形式,其定义如下:对关系R 及其属性的子集A ,B ,C ,…,Z ,当且仅当R 的每个合法元组都与其在A ,B ,C ,…,Z 上投影的连接结果相同时,则称关系R 满足连接依赖。