范式判断"/>
【数据库】磨刀之范式判断
文章目录
- 范式判断的步骤
- 第一步
- 第二步
- 第三步
- 范式判断的例子
范式判断的步骤
第一步
求闭包
(左边元素的一个组合)
第二步
候选码
> 当闭包(左边的元素)能推出所有的关系中的元素,就称左边元素的组合就是候选码
主属性
>组成候选码的属性,(候选码能推出主属性)
非主属性
>关系中剩下的这些属性
第三步
根据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
首先满足1NF,两边不可分割
求候选码
以闭包的形式
AB->AB / AB->C ==>AB->ABC
当一个属性的组合能推出这个关系中的所有属性的时候,我们就说这个属性使候选码
AB时候选码
,候选码可以推出主属性,所有A、B使主属性
,C使非主属性
不存在非主属性对候选码的部分依赖,满足2NF;如果存在A–>C/B–>C,就不满足第2NF
不存在非主属性对候选码的传递依赖,满足3NF;如果再存在一个元素D,AB–>D,D–>C,就不满足3NF
不存在主属性对候选码的部份依赖和传递依赖,满足BCNF
(2)R(A,B,C) F={B–>C,AC–>B},求满足的范式
解析:
写出左边关系的闭包
选择最少的属性能推出最多的关系
B–>C,说明
B的闭包是BC
,我们发现是推不出A的,所以B不能成为这个关系的候选码由Armstrong公理系统的
增广律
可得AB–>ABC,所以可以得出AB是一个候选码
AC–>B,说明AC–>ABC,所以
AC也是一个候选码
【候选码不唯一,主码唯一】
A、B、C都是主属性
不存在非主属性。所以到目前为止我们可以判断出它满足3NF。因为存在B–>C,B是AB的一部分,AB是候选码,C是主属性,这存在主属性对候选码的部分依赖,所以不满足BCNF
(3)R(A,B,C) F={B–>C,B–>A,A–>BC},求满足的范式
解析:
写出左边关系的闭包
选择最少的属性能推出最多的关系
B–>B,B–>C,B–>A
==>
B–>ABC,所以可以得出B是一个候选码
A–>BC
==>
A–>ABC,所以可以得出A是一个候选码
,A、B是主属性
,C是非主属性
B–>C,B是主属性也是候选码,C是非主属性,C对B完全依赖,不是部分依赖于候选码
只有当候选码是AB的情况下才是:非主属性对候选码的部份依赖。
不存在非主属性对候选码的传递依赖,所以满足3NF
不存在主属性对候选码的部份依赖和传递依赖,所以满足BCNF
(4)设有关系模式R(学号Sno,课程号Cno,成绩G,任课教师TN,教师专长TS),函数依赖F={(Sno,Cno)–>G,,Cno–>TN,TN–>TS},判断范式,试说明理由。
解析:
满足1NF理由:
求左边关系的闭包,
选择最少的属性推出最多的关系
(Sno,Cno)–>(Sno,Cno,G,TN,TS)
所以
(Sno,Cno)是候选码
,所以Sno,Cno是主属性
,G,TN,TS是非主属性
Cno–>TN,Cno是主属性,TN是非主属性,存在非主属性对候选码的部份依赖,所以不满足2NF
更多推荐
【数据库】磨刀之范式判断
发布评论