范式的判断:方法+例题
·
范式的判断
例1:R=(A,B,C),F={A→B,B→A,C→A},请问这是第几范式?
判断步骤:一图了解范式
一、首先判断候选键:
分别找出只在左边出现、左右都出现、右边出现的键。
(其实能找到只在左边出现的键后,求闭包,若能导出全部的集合,便可以省去求LR和R,如果左边的不能求出全集,就要和LR组合就闭包)
L:C
LR:A、B
R:
因此候选键为C,非主属性为A、B
二、接着,按照以下流程
牢牢记住三个关键点:部分依赖、传递依赖、左边都是候选键
适当简记忆三个步骤点:部分依赖、传递依赖、左边都是候选键
图片有点刷屏
重新放一下题目:R=(A,B,C),F={A→B,B→A,C→A}
1、判断是否为1NF
(一般来说,基本所有的范式都要满足1NF)
这里也分析一下,判断是否存在部分依赖:
只有一个候选键C,且就一个字母,所以不可能存在部分函数依赖
2、判断是否为2NF
这里需要特别注意满足传递依赖的两个条件,如:
C->A,A->B
A!->C
即这里C可以通过A传递推出B,但是容易忽略的一点,就是还要满足A!->C
,就是A不能直接导出C。
因此这里满足依赖传递。
如果这里A能直接推出C,那就是不满足传递依赖的。
因此为第二范式
以上即为解题过程,如果还没有理解,可以接着往下阅读!
例2:R=(A,B,C,D),F={B->D,D->B,AB->C},请问这是第几范式?
判断候选键:
L:A
LR:B,D
R:C
求得AB+=U,AD+=U(D->B,AB->C) ,因此候选键有(A,B) 和 (A,D),非主属性:C
接下来三个步骤点:部分依赖、传递依赖、左边都是候选键
1、存在部分依赖:AB->C非主属性C完全依赖于候选键AB,至少为2NF
2、传递依赖:不满足,至少为3NF
3、左边都是候选键:当候选键为(A,B)时,D->B,不满足,故为3NF
例3:R=(A,B,C),F={A->B,B->A,A->C},请问这是第几范式?
判断候选键:
L:
LR:A,B
R:
这里没找到L后,因此需要结合LR的元素
求A、B的闭包
A闭包={B,C}=U,B闭包={A,C}=U
发现二者的闭包都可以获得全集,因此候选键由A,B,非主属性:C
三个步骤点:部分依赖、传递依赖、左边都是候选键
1、存在部分依赖:候选键都是只有一个字母,所以不可能存在部分函数依赖,至少为2NF
2、传递依赖:B->A,A->C,并且A!->B,不满足,至少为3NF
3、左边都是候选键:A,B都是候选键,故为BCNF
1NF:属性原子不可分
2NF:非主属性都完全依赖于候选键
3NF:非主属性不传递依赖于候选键
BCNF:属性不传递依赖于候选键
最小依赖集,任意FD左边全是超键
更多推荐
已为社区贡献2条内容
所有评论(0)