【数据库学习笔记】2:有关函数依赖和属性集的一些概念

这几天数据库听的有点混乱,整理一下。

函数依赖(FD)

函数依赖 XY X → Y 表示当X的值确定时,Y的值也是确定的,表现在数据库上就是X和Y都是属性集的子集,也就可以看成投影出的两张表,如果X[i]=X[j]即X中某两行相等,那么Y[i]=Y[j]即相应的Y的这两行也一定相等。或者说,如果大表中的某两行在X上的值相等,那么在Y上的值也相等,也即Y的取值依赖于X的取值(但不表示知道X就知道Y,因为仅仅是说X相等时Y也一定相等)。

平凡和非平凡的FD

对于函数依赖 XY X → Y ,如果 YX Y ⊆ X ,那么称 XY X → Y 是一个平凡的函数依赖,否则称为非平凡的函数依赖。

FD集的逻辑蕴涵

蕴涵 PQ P ⇒ Q 在离散数学中就是当P的取值为真时,Q的取值也一定为真。放在函数依赖(FD)上,FD 的逻辑蕴涵指就是知道某函数依赖为真,可以推出某(不见得是”另一个”)函数依赖为真。

函数依赖集F逻辑蕴涵X->Y记为 FXY F ⊨ X → Y

FD集的闭包

函数依赖的闭包是被F所逻辑蕴涵的所有函数依赖组成的函数依赖集,函数依赖集F的闭包记为 F+={XY|FXY} F + = { X → Y | F ⊨ X → Y }

属性集在FD集上的闭包

属性集X在函数依赖集F上的闭包记作 X+F={A|XAF+} X F + = { A | X → A ∈ F + } ,是指从F能够直接或者间接推出的所有形如 XA X → A 的函数依赖中的属性A的集合。

XY X → Y 能用FD推理规则推出的充分必要条件是 YX+F Y ⊆ X F +

计算 X+F X F + 就是将初始只有X的集合 X(i) X ( i ) 每次不断并上 {A|YZFAZYX(i)} { A | Y → Z ∈ F ∧ A ⊆ Z ∧ Y ⊆ X ( i ) } ,作为新的 X(i) X ( i ) 直到它不再变化。

FD集的等价

如果两个FD集合的闭包相同即 F+=G+ F + = G + ,它们就是等价的。

FD集的最小依赖集

任何一个FD集都至少存在一个最小的等价FD集 Fmin F m i n ,即称为它的最小依赖集。要求 Fmin F m i n 里每个FD的左右都没有多余的属性,并且也没有多余(能被其它FD推出)的FD。

求最小依赖的过程:

①消除右端多余属性

直接将右端拆开成单属性(分解规则)。

②消除左端多余属性

使用伪传递性 XY,YWZ X → Y , Y W → Z XWZ X W → Z 的变形消除左边多余的那部分。

例如 BD B → D BDC B D → C 能将 BDC B D → C 消除多余的D而变成 BC B → C

③消除多余的FD

使用传递性,来自传递可得的FD直接被消除。

你可能感兴趣的:(数据库)