3NF题目一道.

fbmsyu 2008-10-31 03:37:08
某公司的部门(部门号,部门名,负责人,电话)、商品(商品号,商品名称,单价,库存量)和职工(职工号, 姓名, 住址)三个实体之间的关系如表1、表2和表3所示。假设每个部门有一位负责人和一部电话,但有若干名员工;每种商品只能由一个部门负责销售。


部门关系不属于第三范式的原因是 ( ) 。


  
A. 没有消除非主属性对码的部分函数依赖,如:部门名→负责人

  B. 没有消除非主属性对码的部分函数依赖,如:负责人→电话

  C. 只消除了非主属性对码的部分函数依赖,而未消除传递函数依赖

  D. 没有消除非主属性对码的部分函数依赖和传递函数依赖

---最好给分析一下.
...全文
783 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yushangyuan 2010-06-12
  • 打赏
  • 举报
回复
看到这题目和楼上各位的见解,学到了很多

听楼主说这个题目是2008年上半年的数据库系统工程师的考题36.

14号也要考这个证了!
clon 2008-11-12
  • 打赏
  • 举报
回复
怀疑一下楼主把题目抄完整没有
isoftstonesgg 2008-11-10
  • 打赏
  • 举报
回复
很显然是选C
传递依赖关系!
部门号->负责人题目说的很清楚的每个负责人只有一部电话
负责人->电话
属于2F
Herb2 2008-11-06
  • 打赏
  • 举报
回复
确实如孟兄所说,但其他的好像都没有问题,
唯一存在问题的就是没有实现:每种商品只能由一个部门负责销售。
这算什么呢,没有实现不能说不符合吧。
Herb2 2008-11-06
  • 打赏
  • 举报
回复
确实入梦兄所说,但其他的好像都没有问题,
唯一存在问题的就是没有实现:每种商品只能由一个部门负责销售。
这算什么呢,没有实现不能说不符合吧。
mengmou 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 Herb2 的回复:]
从题目来看,明显表4存在冗余,那就是姓名,至于属于什么(部分依赖还是传递依赖)很难说的清楚。
[/Quote]
有冗余不见得就不符和3NF,这道题里的冗余违反的是正交准则。
Herb2 2008-11-06
  • 打赏
  • 举报
回复
由于4各表都是单主键关系,所以不存在部分依赖。
Herb2 2008-11-06
  • 打赏
  • 举报
回复
从题目来看,明显表4存在冗余,那就是姓名,至于属于什么(部分依赖还是传递依赖)很难说的清楚。
mengmou 2008-11-06
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 Herb2 的回复:]

C. 只消除了非主属性对码的部分函数依赖,而未消除传递函数依赖


题目问的是部门关系,没问其他的,所以正确答案应该是C

应该说的关系是表4

码:职工号

非主属性对码依赖,可以推出 职工号—》姓名,姓名—》部门,职工号—》部门。
所以存在传递函数依赖。
[/Quote]
你的理由不对
如果姓名是唯一的,即姓名是候选码,则姓名->部门,那么这就不叫传递依赖于主码,是直接依赖
如果姓名不是唯一的,那么姓名->部门就不成立,传递依赖自然也不成立
Herb2 2008-11-06
  • 打赏
  • 举报
回复

C. 只消除了非主属性对码的部分函数依赖,而未消除传递函数依赖


题目问的是部门关系,没问其他的,所以正确答案应该是C

应该说的关系是表4

码:职工号

非主属性对码依赖,可以推出 职工号—》姓名,姓名—》部门,职工号—》部门。
所以存在传递函数依赖。

xt442058149 2008-11-06
  • 打赏
  • 举报
回复
首先简单说说范式的定义
1NF:每一列都是不可分割的简单项,即每列只有一个属性.
2NF:满足1NF的前提下如果关系中的每个非主属性都完全依赖于主属性就达到2NF.
3NF:满足2NF的前提下如果关系中的每个非主属性都不传递依赖于主属性就达到3NF
看准了是不传递依赖,所以选侧就要从这入手,去解决问题,从题目看他是满足2NF的,所以只有选侧C
nicole8511 2008-11-05
  • 打赏
  • 举报
回复
唉 第一感觉是选A
结果看了各位的回答后倒是糊涂了
学校学的忘得差不多了,失败
等不到来世 2008-11-04
  • 打赏
  • 举报
回复
我觉得这个题出得有问题。
每个表哪个是主键也不说清楚,
“部门关系”是指表1还是表4还是别的什么也不清楚,
大家在这越搅越混。
fbmsyu 2008-11-04
  • 打赏
  • 举报
回复
我越看越晕,我看你们说的好像都有道理.我先看课本再说.
mengmou 2008-11-04
  • 打赏
  • 举报
回复
楼上正解,如果“负责人可以推出电话”成立的话。但是这道该死的题目好像没有提到这一点,只说“每个部门有一位负责人和一部电话”,没说电话是“直接”属于部门的还是直接属于负责人的。不过出题人应该是这个意思的。
  • 打赏
  • 举报
回复
答案肯定是C,因为存在传递依赖的。

右部门号可以推出负责人,然后右负责人可以推出电话,典型的传递依赖。
另里面不存在部分依赖,因为部门表只要使用部门号做主键就可以了,所以不存在部分依赖。
mengmou 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 acupofnescafe 的回复:]
首先简单说说范式的定义
1NF:每一列都是不可分割的简单项,即每列只有一个属性.
2NF:满足1NF的前提下如果关系中的每个非主属性都完全依赖于主属性就达到2NF.
3NF:满足2NF的前提下如果关系中的每个非主属性都不传递依赖于主属性就达到3NF
楼主给出的4个选项中,
A由于存在部门号=>联系人,部门名=>联系人2个关系.可见部门表中的主键是部门号,但是
同时部门名也可以是主键,这样违背了2NF的定义,所以A不是2NF,更不是3NF.A正…
[/Quote]
若部门名是主键,并没有违背2nf的定义
mengmou 2008-11-04
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 lihuanmei 的回复:]
所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A.
在表1中有部门号→部门名,在表4中有部门名→职工号,所以有部门号→部门名→职工号,
所以职工号传递函数依赖于部门号
[/Quote]
部门名→职工号 是怎么来的?明显不成立嘛。
幸运的意外 2008-11-04
  • 打赏
  • 举报
回复
首先简单说说范式的定义
1NF:每一列都是不可分割的简单项,即每列只有一个属性.
2NF:满足1NF的前提下如果关系中的每个非主属性都完全依赖于主属性就达到2NF.
3NF:满足2NF的前提下如果关系中的每个非主属性都不传递依赖于主属性就达到3NF
楼主给出的4个选项中,
A由于存在部门号=>联系人,部门名=>联系人2个关系.可见部门表中的主键是部门号,但是
同时部门名也可以是主键,这样违背了2NF的定义,所以A不是2NF,更不是3NF.A正确,进而C错误.
B中负责人=>电话不存在依赖关系,所以B选项错误.
D中并没有传递依赖的存在.
部门表的一个无损连接分解为部门名(部门号,部门名),部门负责人(部门号,负责人),部门电话(部门号,电话)
如果部门表中一个部门只有一个负责人和电话的话.那么原表不分解也是可以的.
lihuanmei 2008-11-04
  • 打赏
  • 举报
回复
所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A.
在表1中有部门号→部门名,在表4中有部门名→职工号,所以有部门号→部门名→职工号,
所以职工号传递函数依赖于部门号
加载更多回复(24)

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧