数据库原理:易错的函数依赖与求解范式的例题,进一步巩固。

考虑到前两节求函数依赖和求解范式的例题较为简单,因此总结了一些错误率较高的题目,也可以当作练手题熟练函数依赖与范式。其实在求解范式的过程中我们就已经需要求得一些函数依赖的关系。

一、题目

问:下面的关系模式属于第几范式?

  1. R(A,B,C,D),F={B→D,AB→C}

  1. R(A,B,C,D,E),F={AB→CE,E→AB,C→D}

  1. R(A,B,C,D),F={B→D,D→B,AB→C}

  1. R(A,B,C),F={A→B,B→A,A→C}

  1. R(A,B,C),F={A→B,B→A,C→A}

  1. R(A,B,C,D),F={A→C,D→B}

  1. R(A,B,C,D),F={A→C,CD→B}

二、求解步骤

  1. 先确定关系R的候选码,有时可能有几个。

  1. 找出其中的函数依赖,部分依赖、传递依赖等。

  1. 通过第2步中的函数依赖,再去看看是不是非主属性对候选码依赖(一定要是非主属性)。

  1. 通过范式的定义判断关系R是属于第几范式。

  • 范式的简单理解:

第一范式:所有属性不可再分。是关系模型的都属于第一范式。

第二范式:非主属性完全函数依赖于码。看清是非主属性。在第一范式的基础上加了一个条件。

第三范式:非主属性不传递依赖于码,也不部分依赖于码。在第一范式上加了两个条件,在第二范式的基础上加了一个条件。

BC范式:如果X→Y,且Y不属于X,则X中必含有码

三、解答

  1. R(A,B,C,D),F={B→D,AB→C}

  • 码:(A,B)

  • 非主属性:C,D

  • 函数依赖:

AB→B→D

AB→C

  • 部分依赖:AB--部分-->D

  • 传递依赖:AB--传递-->D

因为,D为非主属性,对候选码有部分依赖和传递依赖

所以,属于第一范式


  1. R(A,B,C,D,E),F={AB→CE,E→AB,C→D}

  • 码:(A,B)和E

  • 非主属性:C,D

  • 函数依赖:

AB→C→D

AB→E

E→AB→C→D

  • 部分依赖:无

  • 传递依赖:AB--传递-->D

因为,D为非主属性,对候选码没有部分依赖和但有传递依赖

所以,属于第二范式


  1. R(A,B,C,D),F={B→D,D→B,AB→C}

  • 码:(A,B)和(A,D)

  • 非主属性:C

  • 函数依赖:

AB→B→D

AB→C

AD→AB→C

ps:这里为什么不是AD--传递-->C呢?因为题中B→D,D→B,满足直接依赖的关系,而不满足传递依赖的定义,这里就是直接依赖和传递依赖的区别。

  • 部分依赖:无

  • 传递依赖:无

因为,C为非主属性,对候选码没有部分依赖和传递依赖

所以,属于第三范式


  1. R(A,B,C),F={A→B,B→A,A→C}

  • 码:A和B

  • 非主属性:C

  • 函数依赖:

A→B

A→C

B→A→C

ps:这里和上面解释的一样,因为A→B,B→A,所以是直接依赖:B--直接-->C

  • 部分依赖:无

  • 传递依赖:无

因为,C为非主属性,对候选码没有部分依赖和传递依赖

所以,属于第三范式


  1. R(A,B,C),F={A→B,B→A,C→A}

  • 码:C

  • 非主属性:A,B

  • 函数依赖:

C→A→B

B→A

  • 部分依赖:无

  • 传递依赖:C--传递-->B

因为,B为非主属性,对候选码没有部分依赖和但有传递依赖

所以,属于第二范式


  1. R(A,B,C,D),F={A→C,D→B}

  • 码:(A,D)

  • 非主属性:B,C

  • 函数依赖:

AD→A→C

AD→D→B

  • 部分依赖:AD--部分-->C,AD--部分-->B

  • 传递依赖:AD--传递-->C,AD--传递-->B

因为,B、C为非主属性,对候选码有部分依赖和传递依赖

所以,属于第一范式


  1. R(A,B,C,D),F={A→C,CD→B}

  • 码:(A,D)

  • 非主属性:B,C

  • 函数依赖:

AD→A→C

AD→D+C→B

ps:本来AD就能推出D,加上前面推出的C就能合成CD→B

  • 部分依赖:AD--部分-->C,AD--部分-->B

  • 传递依赖:AD--传递-->C,AD--传递-->B

因为,B、C为非主属性,对候选码有部分依赖和传递依赖

所以,属于第一范式


这里由于打字无法取得手写那样的效果,有些地方函数依赖关系反而让我写复杂了一点,大家就将就点看吧,有问题可以评论区讨论。由于我的才疏学浅,如有错误,欢迎批评指正!

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小许要加油啊~

是对我最大的鼓励以及肯定,谢谢

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

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

打赏作者

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

抵扣说明:

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

余额充值