求范式

废话不多说,直接上方法

先找候选关键字,再求闭包,得到码,进而知道了主属性、非主属性,最后根据各个范式的规则定义,进行判断。

下面给出各个范式的定义。

1NF:基本上让你求范式,至少是1NF。

2NF:先满足1NF,且每一个非主属性完全函数依赖于任何一个候选码,则属于2NF。如果有一个非主属性部分依赖于任何一个候选码,就不是2NF。

3NF:先满足2NF,且每一个非主属性不传递依赖于码,则属于3NF。如果有非主属性传递依赖于码,就不是3NF,主要就看这个。

BCNF:先满足3NF,再看F,所有左边的元素都包含候选码,就属于BCNF。(全码是BCNF)

例1:U=(A,B,C,D,E,P)   F={A->B,C->P,E->A,CE->D}

解:

第一步:L:C,E      R:B,D,P     N:none     LR:A

 

第二步:求(CE)+ =U,所以候选键唯一。

候选键:CE

主属性:C,E   非主属性:A,B,D,P

因为C->P,所以(C,E)->P,存在非主属性部分依赖于主属性,所以是1NF。

 

例2:U=(A,B,C,D)   F={B->C,C->D,D->A}

解:

第一步:L:B     R:A     N:none     LR:C,D

第二步:求(B)+ =U,所以候选键唯一。

候选键:B

主属性:B    非主属性:A,C,D

因为主属性只有一个元素,经验证,不存在部分依赖,所以属于2NF。

因为B->C,C->D,所以B->D,存在非主属性传递依赖于码,所以不是3NF,是2NF。

 

 

例3:U=(A,B,C)   F={AB->C,C->A}

解:

第一步:L:B     R:none     N:none     LR:A,C

第二步:求(B)+ =B,继续求闭包。(AB)+ =U,(AC)+ =AC,(BC)+ =U。

候选键:AB,AC

主属性:A,B,C    非主属性:none

因为所有属性都是主属性,不存在部分依赖,也不存在传递依赖,所以属于3NF。

因为F中,第二个函数依赖的左边,C不包含码,所以不是BCNF,所以是3NF。(怎么突然感觉是BCNF???希望大佬们告知)

 

 

例4:U=(A,B,C,D,E)   F={AB->C,B->D,C->E,EC->B,AC->B}

解:

第一步:L:A     R:D     N:none     LR:B,C,E

第二步:求(A)+ =A,继续求闭包。(AB)+ =U,(AC)+ =U,(AE)+ =AE。

候选键:AB,AC

主属性:A,B,C    非主属性:D,E

因为B->D,所以AB->D,所以存在部分依赖,不属于2NF,属于1NF。

 

例5:U=(A,B,C,D)   F={AB->CD,C->A,D->B}

解:

第一步:L:none     R:none     N:none     LR:A,B,C,D

第二步:求(AB)+ =U,(AD)+ =U,(BC)+ =U,(CD)+ =U。

候选键:AB,AD,BC,CD

主属性:A,B,C,D    非主属性:none

经验证,发现属于3NF,又因为F中左边不全包含候选码,所以不属于BCNF(感谢评论区提醒)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 15
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wonz

创作不易,一块就行。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值