加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

传递依赖、部分依赖与范式

(2013-03-18 23:27:35)
标签:

it

范式建立在函数依赖的基础之上,对传递依赖、部分依赖的准确理解直接影响范式的判定。那么什么是传递依赖?什么是部分依赖?下面以例题来说明。

●设有一个关系模式R(A,B,C,D),函数依赖集F={A→B,B→C,C→D,D→A},那么R共有(1)个侯选码。R的每个属性都不可分,其可达到的最高范式是(2) 。

供选择的答案:

(1)A. 1               B. 2            C. 3        D. 4

(2)A. 2NF             B. 3NF          C. BCNF     D. 1NF

试题分析:

    只要能推导出整个属性组U={A,B,C,D},况且没有多余元素就是候选码。在这个关系模式中,单个的A、B、C、D都能推导出U,况且只有自身一个元素无多余元素,所以都是候选码。

    传递依赖的完整定义:设有关系模式R(U),X、Y、Z是属性或属性组,如果有X→Y,Y→Z,而且Y→X不成立、Z不是Y的子集、Z不是X的子集。注意,而且后面的三个条件必须都成立,才能称之为传递依赖。

很多人可能误认为R中存在传递依赖如,由A→B、B→C尽管可以得出A→C,但是C并不传递依赖A,因为由C→D、D→A可知C→A,不满足传递依赖定义中的条件“Y→X不成立”。但是,A→C是成立的,因为它可根据Armstrong推理系统中的传递律(注意,不是传递依赖,不要把两者搞混了),只是不符合传递依赖的定义罢了。

    根据BCNF的定义可知,满足BCNF定义的关系模式中的每一个函数依赖的左部都含有候选码,显然,R满足BCNF的要求。

试题答案:

    (1)D          (2)C

 

第(2)空,很多人会选择2NF。下面再看一个例题:

 

●已知关系R(A,B,C,D,E)和函数依赖集F为{AB→D,BC→E,D→C},R的每个属性均不可分,则R能满足的最高范式是(3) 。

供选择的答案:

(3)A. 1NF         B. 2NF          C. 3NF          D. BCNF

试题分析:

    根据函数依赖集能推导出全部属性,而且没有多余属性的属性或者属性组就是候选码。由AB→D、D→C可得AB→C,根据Armstrong推理系统中的自反律、合并规则可得AB→BC,又BC→E,所以AB→E,因此AB能推出所有属性,而且不含多余属性,所以它是候选码。R只有AB这一个候选码。显然,非主属性C、E都是传递依赖于AB,所以R不是3NF。

    那么非主属性E是否部分函数依赖于码AB呢?首先来看部分函数依赖的定义:

在关系模式R(U)中,对于属性组X、Y,如果有X→Y,并且对于X的任何一个真子集X’都不能得出X’ →Y,则称Y对X完全函数依赖。而如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。可见部分函数依赖是在完全函数依赖的基础上定义的,也就是说不满足完全函数依赖就是部分函数依赖。

该题中,根据Armstrong推理系统可得AB→E,属性组AB的真子集有A、B、空集φ,但由单个的A不能得出A→E,由单个的B也不能得出B→E,空集φ显然也不能得出φ→E,所以E是完全函数依赖AB。很多人在确定候选码为AB后,一看到函数依赖集中有BC→E,就误认为存在部分函数依赖,这是一个常见的误区,须仔细揣摩,理解须准确到位。

同理,可以得出其它非主属性C、D都是完全函数依赖码AB,所以R∈2NF。

试题答案:

    (3)B 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有