数据库——判断范式的方法及转换

数据库——判断范式的方法及转换

给定关系模式和FD集,判断关系模式所属范式的解题步骤:

1.求候选码(请看上一章内容),确定主属性和非主属性(包含在候选码中的属性是主属性,不包含其中的属性是非主属性);
2.看是否有非平凡的FD(即函数依赖),其左部不含候选码;
3.若不存在,则是BCNF(BC范式);
4.否则:若这些FD的右部都是主属性,则是3NF;
5.否则:若任何候选码的任何真子集都不确定非主属性,则是2NF;
6.否则:为1NF。

相关概念:
函数依赖:由X可以推出Y,即X->Y,称Y函数依赖于X
非平凡函数依赖:X->Y,Y不是X的子集
平凡函数依赖:X->Y,Y是X的子集(即箭头的右边属性是箭头左边属性的子集)
部分函数依赖:如果X->Y,并且X的子集X*->Y,则称X->Y为部分函数依赖
完全函数依赖:如果X->Y,但是X的任何子集都不能确定Y,则称X->Y为完全函数依赖
注:允许X->Y平凡,可以得出:部分依赖一定是传递依赖的结论,从而得出3NF一定是2NF的合理结论。

FD的公理系统:
1.自反律:如果Y->X,那么X->Y。平凡函数依赖。
2.增广律:如果U包含Z,且X->Y,那么XZ->YZ。
3.传递律:如果X->Y并且Y->Z,那么X->Z。
并规则:如果X->Y并且X->Z,那么X->YZ。
伪传递规则:如果X->Y并且WY->Z,那么WX->Z.

1NF:表中的每行只有一个值
2NF:若R是1NF,且每一个非主属性都完全依赖于R的候选码
3NF:若R是1NF,且每一个非主属性都不传递依赖于R的候选码
BCNF:若R是1NF,且每一个属性都不传递依赖于R的候选码

例1:
R(BCDEGH),F={BCD->EGH,E->D,G->C}
可求出其候选码为:BCD、BCE、BDG、BEG。
主属性:B、C、D、E、G
非主属性:H
E->D,G->C的左边不含候选码,所以R不是BCNF。E->D,G->C的右边是主属性,所以R是3NF。

例2:
R(ABCD),F={AB->C,C->D}
候选码:AB
主属性:A、B
非主属性:C、D
C->D的左边不是候选码,所以R不是BCNF。C->D的右边不是主属性(即非主属性),所以R不是3NF。候选码的任何真子集都不确定非主属性,即A!->C,A!->D,B!->C,B!->D,所以R是2NF

例3:
R(ABCD),F={AB->C,A->D}
候选码:AB
主属性:A、B
非主属性:C、D
A->D的左边不是候选码,所以R不是BCNF。A->D的右边不是主属性(即非主属性),所以R不是3NF。A->D:候选码的真子集确定非主属性,所以R不是2NF。因此,R是1NF。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

weixin_43978029

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值