一、函数依赖
1 .函数依赖
定义:设r(u )为属性集合U={ A1,A2,An }上的一个关系模型,x,y为u上的两个子集,对于r ) u的任意一个可能的关系r,r中的两组在x中属性值相等,y中的属性。
口语:在某关系r中,属性(组) y的值由属性(组) x的值决定。 另外,在关系r中,如果两个元组的x属性值相同,则可以说这两个元组的y属性值也相同。
为什么被称为函数依赖? 的定义:定义域中的任意x只对应一个y。 属性之间的依存关系:对于相同的x属性值,有y属性值,只对应一个。
本质:函数依赖的本质是反映某个关系中属性之间的制约关系或依赖关系。 函数依赖于数据。
例:1. U={学号、姓名、年龄、专业}
{学号}
{姓名、年龄、专业}
函数依赖分为非平凡函数依赖和平凡函数依赖。 非平凡的函数依赖:是的
但是,但是
被称为
依赖不平凡的函数。 也就是说,x决定y,但y不在x中,这被称为非平凡的函数依赖。 否则就是平凡的函数依赖。
2 .完全函数依赖和部分函数依赖
定义:在关系r(u )中,如果
且对于x任意的照片子集X‘有x’
y称为y的完全函数依赖于x,表示为: 否则,y函数部分依赖于x,标记为。
口语:完全函数依赖是指属性组x的所有属性都可以一起(即完全)决定属性y,不能去除任何属性。 相反,部分函数依赖是指属性组x的一些属性可以确定y,不需要全部。
如果Insight )属性(组) y的一些函数依赖于属性组x,则在属性组x中存在属性)组y的非控制冗馀。 在设计数据库时,必须避免这种情况。 (支持2NF。
例: U={学号、姓名、年龄、班号、班长、班号、成绩}
(学号、课号)。
欧陆
(学号、课号)。
{姓名、年龄}
(学号、课号)。
{成绩}
解释:一个学号决定性别和年龄,一个学号决定成绩。 于是,我
和
是的
有些函数是依赖的。
3 .传递函数依赖
定义:在r(u )中,如果
而且
据说z传递函数依赖于x。
白字:据说如果x函数确定y,y函数确定z,且y、z不包含在x中,z不包含在y中,y不能确定x,则z传递函数依赖于x。 小心!若
得到
但是,不能说z传递函数依赖于x。
Insight :传递函数依赖具有非控制冗馀性。
例:学生(学校编号、姓名、系编号、系部长) )。
{学号}
{系列号}
{系列号}
{系主任}
{学号}
{系主任}
传达“系部长”依赖“学号”。
图标:
注:上述照片来自哈佛大学战德臣老师的PPT
4 .关于函数依赖的概念
(1) .候补键
定义:将k作为r(u )的属性或属性的组合,如果
中,k称为r(u )上的候选键。
口语:关系r(u )中的属性)组)对于k,当u的完全函数依赖于k时,即k中的所有属性都可以一起决定u时,将k称为r ) u的候补。
(2) .主键
如果有多个候补键,可以选择其中一个候补键作为主键。
(3) .主属性
任意一个候补键中包含的属性称为主属性,其他属性称为非主属性。
(4) .门诊钥匙
r(u )中的属性)组) x是另一关系s ) u而不是r的候选时
的候选键,则称 X 为 R(U) 的外来键,简称外键。白话:一个关系的外键是另一关系的候选键。
(5). 逻辑蕴含
定义:设 F 是关系 R(U) 中的一个函数依赖集合,X、Y 是 R 的属性子集,如果能从 F 这个函数依赖集合中推导出
,则称 F 逻辑蕴含
,或者说
是 F 的逻辑蕴含。记作
。
(6). 闭包
定义 :被 F 逻辑蕴含的所有函数依赖集合称为 F 的闭包,记作
。
白话:也就是说,能从 函数依赖集 F 中推导出的所有函数依赖组成的集合,称为 F 的闭包。(学过泛函的话应该能感觉到有种完备的概念)。
如果
,则称 F 是一个 全 函数依赖族。(函数依赖完备集)。
二、函数依赖的 Armstrong 公理及其引理
设 F 为 R(U) 的一组函数依赖,记为 R(U, F) 。
1. 函数依赖的 Armstrong 公理
(1). 自反律
若
,则
被 F 逻辑蕴含。
白话:若 属性集 Y 包含于 X,X 包含于 U,则
,则
。也就是说 如果属性集 Y 属于 X,则 X 可以决定 Y,又可以说 属性集 X 可以决定 他的属性 子集。(平凡函数依赖)
(2). 增广律
若
,且
,则
被 F 逻辑蕴含。
白话:如果
在 F 这个函数依赖集合中,另一属性(组) Z 是属性集 U 中的元素,那么从 F 中可以推导出 XZ 函数决定 YZ。
(3). 传递律
若
,且
,则
被 F 逻辑蕴含。
2. 函数依赖的 Armstrong 的引理
2.1 引理1
(1). 合并律
若
且
,则
。 证明:根据增广律可以得到
,
,再根据传递律得到,
。
(2). 伪传递律
若
且
,则
。 证明:证明方法依然是 增广律 和 传递律。
(3). 分解律
若
且
,则
。 证明:根据自反律可以得到
,再根据传递律,得证
。
2.2 引理2
如果 A1,A2,... ,An是属性,则
当且仅当对每个 Ai 有
2.3 属性(集)闭包 和 引理3
(1). 属性(集)闭包定义
对 R(U, F) ,
,令:
= Ai 用 armstrong 三个公理 可从 F 导出
,称
为 X 关于 F 的属性(集)闭包。
区分 闭包和属性(集)闭包: 闭包指的是 F的闭包,该集合包含的元素是函数依赖。 属性集闭包是 X属性(集) 关于 F 的属性(集)闭包,该集合包含的元素是属性。
(2). 引理3
若 从 F 这个函数依赖集合中可以用 Armstrong 公理 导出
,当且仅当
。
解释:只有 Y 这个属性 在 X 关于 F 的属性(集)闭包中,才能推出
,只要能推出 X 决定 Y,那 Y 一定在 X 关于 F 的属性(集)闭包中。
2.4 覆盖 和 引理4、5
(1) 覆盖
定义:对 R(U) 上的两个函数依赖集合 F、G,如果
,则称 F 和 G 也是等价的,也称作 F 覆盖 G 或者 G 覆盖 F。
(2) 引理4
(3) 引理5
每个函数依赖集 F 可被一个 其右端至多有一个属性的函数依赖集 G 覆盖。
2.5 最小覆盖
(1). 最小覆盖
F 满足:F 中每个函数依赖的右边部分都是单个属性;
对任何
,有 F -
不等价于 F;
对任何
,( F-
不等价于F。
则 F 为 最小覆盖 或者 最小依赖集。
解释: 对于第 2 点,如果去掉
这个函数依赖,那么从 F 中不能推导出
,也就是说 F 中的每一个函数依赖都是必需的,一个不能少。 对于第 3 点,Z 是 函数依赖的 左边部分 的一个子集,如果去掉
这个函数依赖,加上 X 子集
的依赖依然不等价于F,即
是不能由
代替的。
(2). 定理
每个函数依赖集 F 都有等价的最小覆盖 F‘。