判断范式,只需要按照如下流程图进行判断即可:
第一步,就是求出关系模式中的候选码:
eg:关系模式R(A,B,C,D),其依赖集为F={B-->D,D-->B,AB-->C}
先把依赖项左边的属性和右边的属性分离出来:
依赖项左边的属性:{B,D,A,B}
依赖项右边的属性:{D,B,C}
相同的属性去除,左边剩下{A,},右边剩下{C}
此时,A肯定是候选码,C肯定不是候选码(只在左边出现的一定是候选码,只在右边出现的一定不是候选码。 )
由题:AB-->C,A-->A,B-->B,所以A-->u(所有),所以AB也是候选码
同样的,D-->B,AD-->u(所有),所以AD也是候选码。
第二步,判断范式:
AB,AD候选码,在关系模式中只有C不在候选码中,所以C是非键属性
在依赖集中,只有AB-->C,所以C完全依赖于候选键AB,满足第二范式。
继续往下看,AB-->C已经是直接推出了,所以不存在传递依赖,满足第三范式。
依赖项左边的B,D都不是候选键,所以不满足BC范式。
则该关系模式最高达到了第三范式。