1. 常考的几个问题
1.1、找候选码:
记住候选码的含义:候选码可以决定关系模式中的所有属性,且候选码的任何一个真子集都不能单独决定全属性。
1.2、是否满足某一范式,或最高可达到第几范式:
将每一个范式的定义记牢,背熟:
(1)有非主属性对码的部分函数依赖的,不满足2NF
(2)有非主属性对码的传递函数依赖的,不满足3NF
(3)有主属性对码的部分和函数依赖的,不满足BCNF
(4)有多值依赖的,形如X→→Y,X和Y必在一个关系模式,且只有X和Y,不能有其它多余属性。如果有,不满足4NF。
1.3、分解关系模式:
(1)有部分函数依赖的情况:
R(A,B,C,D,E,F),F={A→(C,D,E),(A,B)→F} 分解成R1(A,C,D,E)和R2(A,B,F)
(2)有传递函数依赖的情况:
R(A,B,C,D,E,F),F={A→(B,C),B→(D,E,F)} 分解成R1(A,B,C)和R2(B,D,E,F)
(3)有多值依赖的情况:
R(A,B,C,D,E,F),F={A→→B,A→(C,D,E,F)} 分解成R1(A,B)和R2(A,C,D,E,F)
2. 总结
2.1、找候选码:
• 1)记住候选码的含义,看哪些属性或属性组合可以决定所有的属性。
• 2)有编号(ID)的,首要考虑。一般不把姓名,名称等作为候选码,但题目中没有其它更好选择的除外。
2.2、找函数依赖集。
首先根据题目的描述来判断,再结合现实生活中的实际。可以尝试着写一个该关系模式的范例来判断。
2.3、确定范式
根据找出的函数依赖集,确实是否有部分、传递函数依赖,再来判断属于第几范式。
2.4、分解关系模式
按函数依赖集来分解,即分解要保持函数依赖。