【数据库】磨刀之范式判断

范式判断的步骤

第一步

求闭包(左边元素的一个组合)

第二步

候选码> 当闭包(左边的元素)能推出所有的关系中的元素,就称左边元素的组合就是候选码

主属性>组成候选码的属性,(候选码能推出主属性)

非主属性>关系中剩下的这些属性

第三步

根据1NF、2NF、3NF、BCNF的定义判断范式属于哪一个类型

1NF>每一个元素不可分割

2NF>消除非主属性候选码部分依赖:假设BC是候选码,现在有一个非主属性D,如果存在B–>D/C–>D就说明不满足第二范式

3NF>消除非主属性候选码传递依赖:假设AB–>C,C–>D,使AB–>D,说明不满足第三范式

BCNF>消除主属性候选码部分依赖传递依赖

范式判断的例子

(1)R(A,B,C) F={AB–>C},求满足的范式

解析:

技巧:关系中只存在一个依赖,两边是一个一对一的关系,我们可以推出来BCNF

  1. 首先满足1NF,两边不可分割

  2. 求候选码以闭包的形式

    AB->AB / AB->C ==>AB->ABC 当一个属性的组合能推出这个关系中的所有属性的时候,我们就说这个属性使候选码

    AB时候选码,候选码可以推出主属性,所有A、B使主属性C使非主属性

  3. 不存在非主属性对候选码的部分依赖,满足2NF;如果存在A–>C/B–>C,就不满足第2NF

  4. 不存在非主属性对候选码的传递依赖,满足3NF;如果再存在一个元素D,AB–>D,D–>C,就不满足3NF

  5. 不存在主属性对候选码的部份依赖和传递依赖,满足BCNF

(2)R(A,B,C) F={B–>C,AC–>B},求满足的范式

解析:

  1. 写出左边关系的闭包选择最少的属性能推出最多的关系

    B–>C,说明B的闭包是BC,我们发现是推不出A的,所以B不能成为这个关系的候选码

    由Armstrong公理系统的增广律可得AB–>ABC,所以可以得出AB是一个候选码

    AC–>B,说明AC–>ABC,所以AC也是一个候选码【候选码不唯一,主码唯一】

    A、B、C都是主属性不存在非主属性。所以到目前为止我们可以判断出它满足3NF。

  2. 因为存在B–>C,B是AB的一部分,AB是候选码,C是主属性,这存在主属性对候选码的部分依赖,所以不满足BCNF

(3)R(A,B,C) F={B–>C,B–>A,A–>BC},求满足的范式

解析:

  1. 写出左边关系的闭包选择最少的属性能推出最多的关系

    B–>B,B–>C,B–>A ==> B–>ABC,所以可以得出B是一个候选码

    A–>BC ==> A–>ABC,所以可以得出A是一个候选码A、B是主属性C是非主属性

    B–>C,B是主属性也是候选码,C是非主属性,C对B完全依赖,不是部分依赖于候选码

    只有当候选码是AB的情况下才是:非主属性对候选码的部份依赖。

  2. 不存在非主属性对候选码的传递依赖,所以满足3NF

  3. 不存在主属性对候选码的部份依赖和传递依赖,所以满足BCNF

(4)设有关系模式R(学号Sno,课程号Cno,成绩G,任课教师TN,教师专长TS),函数依赖F={(Sno,Cno)–>G,,Cno–>TN,TN–>TS},判断范式,试说明理由。

解析:
满足1NF

理由:

  1. 求左边关系的闭包,选择最少的属性推出最多的关系

    (Sno,Cno)–>(Sno,Cno,G,TN,TS)

    所以(Sno,Cno)是候选码,所以Sno,Cno是主属性G,TN,TS是非主属性

    Cno–>TN,Cno是主属性,TN是非主属性,存在非主属性对候选码的部份依赖,所以不满足2NF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小源同学r

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

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

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

打赏作者

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

抵扣说明:

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

余额充值