六、范式(求候选键?判断范式?分解范式?判断无损连接和保持函数依赖?)
1.求候选键
求Fm -> 定型(是否都为LR)-> 选择求解方法(快速法、一般递推法) -> 求解候选码(可能不止一个)
2.判断范式?
求Fm -> 求出候选码(主属性、非主属性) -> 看码和非主属性的关系 -> 看码和其他主属性的关系
3.分解范式
1NF -> 2NF: 消除部分依赖
2NF -> 3NF: 消除传递依赖
3NF -> BCNF:消除码和主属性之间部分、传递依赖
a.转换为3NF的保持函数依赖的分解:求Fm -> 不在Fm出现的属性Uo放一起 -> 根据共同左部原则分组。
b.转换为3NF既有无损连接性又保持函数依赖的分解:在上一步骤的基础上,加入码,求解一个并集。
c.转换为BCNF的无损连接分解:
求Fm -> 检查是否符合BCNF,符合结束;如果不符合 -> 选择一个X决定A(A不属于X,X不是码)进行分解->判断.......循环
4.判断无损连接和函数依赖
判断无损连接:表格法
保持函数依赖:观察法
数据冗余的两个问题?
(1)难以实现数据共享 (2)数据更新异常和数据不一致性