[TOC]

函数依赖

  • X→Y,表示Y依赖于X;
  • X→Y,且Y→X不成立,Y→Z,则X→Z,表示Z传递依赖于X。

函数依赖性质

  • 自反性
  • 传递性
  • 增广性 A → C 可以推出 AB → BC
52686998926
52686998926

函数依赖的种类

完全函数依赖:在关系模式R(u)中,X,Y是U的子集,Y函数依赖于X 并且 Y非函数依赖于X的子集,则称Y完全函数依赖于X。X f >Y)—> Y依赖于X,但未必都依赖X的子集。

部分函数依赖:在关系模式R(u)中,X,Y是U的子集,Y函数依赖于X 并且 Y函数依赖于X的子集)

函数依赖:某个属性集决定另一个属性集时,例如学生学号属性集Sno决定学生姓名属性集Sname,称Sname函数依赖于Sname )

平凡函数依赖:Y函数依赖于X,并且Y包含于X,例如(Sno)->(Sno)、(Sno、Sname)->(Sno))

非平凡函数依赖:Y函数依赖于X,并且Y不包含于X,例如(Sno,Sname)->(Ssex))

候选键: 能够唯一表示一个元组,且不含多属性
超键: 是指能够唯一表示一个元组的属性集
主属性:表示候选键中的属性
非主属性:不包含在主键中的属性

判断主键的方法 :若属性集为{ A , B, C},A+ = ABC。 则A为主键。(属性闭包判断法)

范式 Normal Forms

(1)第一范式1NF:关系中的所以属性值都是不可分割的原子值;
(2)第二范式2NF:如果关系是1NF,且每个非主属性都完全依赖于候选键;
(3)第三范式3NF:如果关系是1NF,且每个非主属性都不传递依赖于候选键;
(4)鲍依斯-科得(巴斯)范式BCNF范式:如果关系是1NF,且每个属性都不传递依赖于候选键。

BCNF意味着在关系模式中每一个决定因素都包含候选键,也就是说,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键。

52687012974
52687012974

属性闭包

定义:闭包就是由一个属性直接或间接推导出的所有属性的集合。

表示:B的闭包用B+表示。

计算:关系R的属性集X的闭包的步骤如下:

  1. 设最终将成为闭包的属性集是Y,把Y初始化为X;
    . 检查F中的每一个函数依赖A→B,如果属性集A中所有属性均在Y中,而B中有的属性不在Y中,则将 其加入到Y中;
  2. 重复第二步,直到没有属性可以添加到属性集Y中为止。 最后得到的Y就是X+

举例:

例1: R = {A,B,C,D,E}

​ F = {B→CD, D→E, B→A, E→C, AD→B }

​ 则 B+ = B ; B+ = BCD; B+ = BCDA; B+ = BCDAE。(推导过程是属性依赖传递的过程。

​ 所以最终B+ 包含了R中所有属性。 故B is a key for R。

例2: 有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},计算(AE)闭包。

(1) 令X={AE},X(0)=AE

(2)在F中寻找尚未使用过的左边是AE的子集的函数依赖,结果是: A→D, E→C;所以 X(1)=X(0)DC=ACDE, 显然 X(1)≠X(0).

(3) 在F中寻找尚未使用过的左边是ACDE的子集的函数依赖, 结果是: CD→I;所以 X(2)=X(1)I=ACDEI。虽然X(2)≠X(1),但F中寻找尚未使用过函数依赖的左边已经没有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI。

例3:f={a->b,b->c,a->d,e->f};由a可直接得到b和d,间接得到c,则a的闭包就是{a,b,c,d}

关系模式分解

关系模式分解必须遵守两个准则
(1)无损联接性:信息不失真(不增减信息)。
(2)函数依赖保持性:不破坏属性间存在的依赖关系

无损连接分解

R的无损分解为X Y,那么 x∩y →x 或者 x∩y → y.

####Dependency Preserving Decomposition 依赖保持分解

关系模式R<U,F>的分解是指R为它的一组子集
ρ={R1<U1,F1>, R2<U2,F2>,…, Rk<Uk,Fk>}所代替的过程。
其中U=U1∪U2∪…∪k ,并且没有Ui≤Uj(表Ui包含于Uj,1≤i,j≤k),
Fi是F在Ui上的投影,即Fi={X→Y∈F+∧XY≤Ui}(表XY包含于Ui)。

描述:R被分解为 i个关系子集 Ri。Fi为每个子集的函数依赖投影。

计算函数依赖fi保持的方法就是:Fi∪Fj 推出 fi成立,其中Fi Fj的计算从自身属性和原来函数依赖推导得来。

模式分解是独立保持的条件就是,所有函数依赖Fi的投影的并集的闭包 = F的闭包

思考: 可否是Fi的闭包的并集 = F的闭包?

回答:不可以,因为每个子集的函数依赖Fi,可能产生跨子集的函数依赖,先求Fi的闭包会产生不完整的闭包关系。

BCNF分解

BCNF的要求:函数依赖要么平凡,函数依赖的左侧是超键

如果X→Y违反BCNF, 分解R 为R-Y 和XY。

第三范式分解

第三范式的条件:

  1. 平凡依赖
  2. x 属于超键
  3. A属于候选键

部分依赖

传递依赖

最小覆盖模型— 简化函数依赖集

补充知识点

自然连接

在连接运算当中,一种最常用的连接是自然连接。如果关系R与S具有相同的属性组B,且该属性组的值相等时的连接称为自然连接,结果关系的属性集合为R的属性并上S减去属性B的属性集合。

参考的文章

函数依赖集闭包、属性集闭包、超键、候选键和最小函数依赖集

四种范式的实例

函数依赖不懂看这里