sql 范式

先了解以下几个概念:
       完全函数依赖:X->Y,并且对于X的任何一个真子集X`,都有X`不能推出Y
       部分函数依赖:X->Y,并且存在X的一个真子集X`,有X`->Y
       码:能够确定出其他属性 的 属性或者属性组合
       主属性:码中的属性
       非主属性:不存在于任何码中的属性

范式分为四种:

  1. 第一范式 (1NF)
  2. 第二范式 (2NF)
  3. 第三范式 (3NF)
  4. BCNF (通常认为是第三范式的修正)

范式判断:

  1. 第一范式
    如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。简单的说,就是每一个列(属性),不能再分割成多个列(属性)。
  2. 第二范式
    在满足第一范式的基础上,非主属性完全函数依赖于任何一个候选码,则为第二范式
    举例:有一个关系模式S-L-C(Sno,Dept,Sloc,Cno,Grade),其中Sno 是学号,Dept是学院,Sloc是住所,Cno是班级,Grade是成绩
    其中的函数依赖有
           (Sno,Cno)->Grade (此关系是完全函数依赖)
           Sno->Sdept,(Sno,Cno)->Sdept(此关系是部分函数依赖)
           Sno->Sloc,(Sno,Cno)->Sloc,
           Sdept->Sloc
    以上的函数依赖关系中,存在部分函数依赖,所以此关系模式不是第二范式
  3. 在满足第二范式的基础上,每一个非主属性既不传递依赖于码,也不部分依赖于码
    举例:有一个关系模式S-L(Sno,Sdept,Sloc)
    其中的函数依赖有:
           Sno->Sdept,
           Sdept->Sloc,
           Sno->Sloc,
    以上的函数依赖关系可以看出,Sdept完全依赖于Sno,Sloc完全依赖于Sdept,Sloc完全依赖于Sno,而Sno不依赖于Sdept,从而判断出Sno和Sloc存在传递依赖关系.所以此关系模式不是第三范式
  4. 在满足第三范式的基础上
           1.所有非主属性对每一个码都是完全函数依赖
           2.所有主属性对每一个不包含它的码也是完全函数依赖
           3.没有任何属性完全函数依赖于非码的任何一组属性

判断诀窍:
       第一步:根据关系模式,写出所有的函数依赖关系,码,主属性,非主属性
       第二步:在所有的函数依赖关系中,判断是否存在部分依赖和传递依赖
       第三部:所有主属性对每一个不包含它的码也是完全函数依赖
       第四步:没有任何属性完全函数依赖于非码的任何一组属性

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值