在学习关系数据库的过程中遇到的一个例子,让我开始纠结起了候选码和范式的问题

设关系模式R(ABC),函数依赖F=(A->B,B->A,A->C)满足3NF还是满足BCNF,为什么?
这个问题困扰我很久了,在这个关系模式中候选码有哪些呢?A是候选码,那B是不是候选码呢?希望各位前辈指导指导,最好能扩展一下关于范式之间判断的一些方法,和相关知识。

另外怎么追加悬赏啊....

A 是候选码 ,同时 B也是候选码 ,因为A,B都可以用一个法则推出关系ABC,这个法则相信你应该学过。名字叫什么忘了。
满足3NF 但不是BC范式。 范式之间的具体区分如下:
第一范式: 关系之间的属性必须是原子型。 最基本的数据库模式
第二范式: 消除了非主属性对主属性的部分函数依赖。
第三范式: 消除了非主属性对主属性的传递函数依赖。
BC范式: 消除了主属性对除主属性之外的候选码的函数依赖(包括部分函数依赖和传递依赖)。
还有第四范式:(你没有提到过): 这里是消除了属性之间的多值依赖。
此题中A,B 都是候选码 ,但是候选码之间存在依赖,所以不是BCNF 只是3NF。

准备增加重新发布一次,可能悬赏太低了= =大神们懒得搭理我

2楼说的很详细了。赞

A 是候选码 ,同时 B也是候选码 ,这点2楼说的已经很详细了,不过我可以再提供一下BC范式和3NF的定义
BCNF要求:在F依赖集的闭包F* 中形如a—>b的函数依赖,要么b属于a,要么a是超码
3NF要求:在F依赖集的闭包F* 中形如a—>b的函数依赖,要么b属于a,要么a是超码,要么就是b-a的每个属性A都包含在R的一个候选码中
满足了BCNF就一定满足了3NF,但是满足3NF不一定满足BCNF
不过我认为这道题是BCNF,因为满足BCNF的所有非主属性对每一个码都是完全函数依赖。因为可得A->C,B->C,C完全依赖于A和B
同时所有的主属性对每一个不包含它的码,也是完全依赖,本题中A<— —>B
第三没有任何属性完全依赖于非码的任何一组属性。既C不能推出A也不能推出B,综上我认为是BCNF,如果满意,请采纳。

第三范式:关系模式R
中不存在这样的码

X

,属性组

Y

及非主属性

Z

,使得X->Y,Y->Z成立,

Y

不能推出(这个符号恕我打不出来,

专业术语叫不函数依赖,

为了迎合大家的理解,

所以叫做不能推出)

X

,则R属于3NF。

我的解释:在满足2 NF的基础上,不存在传递函数依赖的关系就是第三范式。

什么叫做传递函数依赖呢?同样举个例子:

关系

R

(过去,现在,未来)

,过去决定现在,现在决定未来,这个就是传递函数依赖,

出现在了这个关系中,

说明该关系不属于第三范式,

只能退缩到第二范式。

https://wenku.baidu.com/view/9468f0fcf705cc17552709b9.html 这个网址对范式的表达生动有趣,希望可以帮到楼主。

2楼牛逼,我在这里也给个例子R(A,B,C) F={AB-->C,BC-->A},这里候选码时AB和BC,但AB和BC之间不存在依赖所以是BCNF