求解候选码的算法:
例题:
第一步将属性分类
L类和N类一定在候选码中
LR类可能在候选码中
XZ不能包含之前求得的候选码
模式分解:
无损连接:分解后能够通过连接运算无损还原
原因:将有用的依赖给去掉了(账号 -> 存款)
Fi 为 F在Ui上的投影:F是全部的函数依赖,现在属性减少了,Ui上仍然保持的 函数依赖就是Fi
(1)将分解的关系模式连接起来 和原来的关系模式 比只多不少
无损连接性:如果将分解的关系模式连接起来 和原来的关系模式比不多不少
那么就是无损连接性
无损连接性的判定算法:
表格法:(充分必要条件)
每个属性对应一列
每个子模式对应一行
如果属性属于子模式就填a 下标列号
如果属性不属于子模式就填b 下标行列号
将该表做为R的关系实例
检查每个函数依赖在该关系实例上是否成立
任意两行x值相同,则y值相同 叫成立
存在两行x值相同,但是y值不相同,则不成立
如果不成立,则把不同的y值修改为相同的y值(如果一个是a一个是b,则把b修改成为a ,如果两个都是b,则把行号修改为两者中最小的行号)
如果 出现 :前后两次不改变 或 一行全为a 就退出循环
如果出现了全为a的行 就说明是无损连接
如果退出后没有出现全为a的行,则说明不是无损连接
方法二:(充分条件)
之前的定理均适用于 只有函数依赖的情况下
有多值依赖的情况下:(即既有函数依赖也有多值依赖)
要么差集多值依赖于交集,要么某个差集函数依赖于交集
保持函数依赖性:
子模式函数依赖的并集的闭包 = 原函数依赖的闭包