一、函数依赖
R(U): U是一个属性集;
x,y为U的子集,对x的每一个值,y都有唯一确定的值与之对应,则称x决定y,或y函数依赖于x。记为:x→y。
1、完全函数依赖:
若x→y,且对于x的所有真子集x′,都没有x′→y,则称x完全决定y,或y完全函数依赖于x。
2、部分函数依赖:
若x→y,且存在x的一个真子集x′,满足x′→y,则称x部分决定y,或y部分函数依赖于x。
3、传递函数依赖:
若x→y,y→z,但 y 不能→x。
二、平凡函数依赖与非平凡函数依赖
设x→y,如果y是x的子集,则该依赖是平凡的。 如:Sno,sname→sno
如果y中至少有一个属性不在x中,则该依赖是非平凡的。如:Sno,sname→sname,sdept
如果y中没有一个属性在x中,则该依赖为完全非平凡的。
三、范式
① 什么叫范式?
指一个关系的非主属性函数依赖于主码的程度。
② 什么叫关系规范化?
指一个关系从低级范式向高级范式的转换过程。
5NF∈4NF∈BCNF∈3NF∈2NF∈1NF
1.第一范式(1NF)
① 定义:若关系R的所有属性不能再分,则R∈1NF
2.第二范式(2NF)
① 定义:若关系R∈1NF,且它的每个非主属性都完全依赖于主码,则称R∈2NF。
② 存在问题:
冗余大: R1必要冗余,R2冗余可以修改。
修改麻烦
插入异