1NF(第一范式)
属性值是不可分的原子值
2NF(第二范式)
R1NF,每个非主属性都完全函数依赖于R的候选键
3NF(第三范式)
R1NF,每个非主属性都不传递依赖于 R的候选键
BCNF(BC范式)
R1NF,每个属性都不传递依赖于 R的候选键(定义1)
R1NF,每个非平凡函数依赖的左侧都是超键(定义2)
4NF(第四范式)
R1NF,每个非平凡多值依赖的左侧都是超键
5NF(第五范式)
R1NF,每个连接依赖均由R的候选键蕴含
如果还是不理解可以看这里:http://t.csdn.cn/Dwh5c,这里就不细讲了,直接上例题吧!
例1:判断右边关系最高属于哪个范式(BCNF)
零件号 | 单价 |
P1 | 25 |
P2 | 8 |
P3 | 25 |
P4 | 9 |
任意的二元关系必为(BCNF)
例2:判断右边关系最高属于哪个范式(2NF)
材料号 | 材料名 | 生产厂 |
M1 | 线材 | 武汉 |
M2 | 型材 | 武汉 |
M3 | 板材 | 广东 |
M4 | 型材 | 武汉 |
材料号→材料名,材料名→生产厂
唯一候选键:材料号
R的候选键为单属性→R2NF
非主属性生产厂对候选键材料号传递依赖→R3NF
例3:关系W(工号,姓名工种定额)规范到3NF,最合适的
A.W1工号,姓名),W2(工种,定额)
B.W1(工号,工种,定额),W2(工号,姓名)
C.W1(工号,姓名,工种),W2(工种,定额)
D.以上都不对
分析:
F={工号→姓名,工号→工种,工种→定额}
唯一候选键:工号
A:W1 和 W2 没有公共属性
B:有传递依赖
例4:R(ABCD), F ={B→C,C →D,D → A}
判断R最高属于哪个范式
A.1NFB.2NFC.3NFD.BCNF
分析:
唯一候选键 B
B→C, C→D (CB, DC. C 不能推B)
非主属性 D 传递依赖于候选键 B,R3NF
所有函数依赖左边都是单属性,不存在部分依赖,R2NF
例5:R(STJ), F = {(S,J)→T,(S,T)→ J,T → J}}
判断R最高属于哪个范式
分析:
候选键 (S,J),(S,T)
所有属性都是主属性,R3NF
T →J左边不是超键,RBCNF