数据库关系规范化理论
一:四个范式
1NF:属性不可再分
2NF:非主键属性全部依赖于主键属性(消除部分函数依赖)
3NF:非主键属性之间无依赖关系(消除传递函数依赖)(如果没有非主属性至少3NF)
BCNF:主键属性之间无依赖关系(如果只包含两个属性)
二:模式分解的几个事实
三:候选码的判断方法
必定包含在候选码中:
一定不是候选码中:
然后对必定包含在候选码中的属性进行组合,然后求组合的闭包,闭包为所有属性的集合即为候选码
四:闭包
由一个属性直接或间接推导出来的所有属性的集合
五:求最小覆盖
对依赖的右边属性进行单一化
但是对于左边有两个属性的:eg:AC→B,先计算A、C的闭包,看B是否属于A或C。若属于A,不属于C则将其替换为:A→B。若都不属于,那么这个就不改变。
去除多余的函数依赖关系
六:无损连接的判断
已知R<U,F>,U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},R的一个分解为R1(AD),R2(AB),R3(BE),R4(CDE),R5(AE),判断这个分解是否具有无损连接性。
① 构造一个初始的二维表,若“属性”属于“模式”中的属性,则填aj,否则填bij

② 根据A→C,对上表进行处理,由于属性列A上第1、2、5行相同均为a1,所以将属性列C上的b13、b23、b53改为同一个符号b13(取行号最小值)。

③ 根据B→C,对上表进行处理,由于属性列B上第2、3行相同均为a2,所以将属性列C上的b13、b33改为同一个符号b13(取行号最小值)。

④ 根据C→D,对上表进行处理,由于属性列C上第1、2、3、5行相同均为b13,所以将属性列D上的值均改为同一个符号a4。

⑤ 根据DE→C,对上表进行处理,由于属性列DE上第3、4、5行相同均为a4a5,所以将属性列C上的值均改为同一个符号a3。

⑥ 根据CE→A,对上表进行处理,由于属性列CE上第3、4、5行相同均为a3a5,所以将属性列A上的值均改为同一个符号a1。

⑦ 通过上述的修改,使第三行成为a1a2a3a4a5,则算法终止。且分解具有无损连接性。

七.如何判断函数依赖保持(龙哥总结~~超强理论)
