查看更多
当前 - 选择题 - 数据库理论
简单
单选题
2014年5月第33题
#第二版教材
#必须掌握

某销售公司数据库中的关系零件为P(Pno, Pname, Sname, City, Qty),Pno表示零件号,Pname表示零件名称,Sname表示供应商,City表示所在地,Qty表示库存量。其函数依赖集F={Pno→Pname, (Pno,Sname)→Qty,Sname→City}。关系P为 (1NF),存在冗余度大、修改操作不一致、插入异常和删除异常的问题。若将P分解为(P1(Pno, Pname)、P2(Pno,Sname,Qty) 、P3(Sname,City)),则可以解决这一问题。

浓缩知识点

数据库范式是优化关系模式、解决数据冗余、插入与删除异常等问题的核心方法,需结合函数依赖与候选码展开分析:1NF是关系的最基础要求,规定所有属性不可再分;若关系的候选码为组合键,且存在非主属性仅依赖组合键的某一部分,也就是部分函数依赖,则该关系仅符合1NF,不满足2NF,会引发数据冗余、操作不一致等问题。2NF需在1NF的基础上消除非主属性对候选码的部分依赖,3NF则要在2NF的基础上消除非主属性对候选码的传递依赖。将仅满足1NF的关系拆分至3NF时,需依据函数依赖拆分关系:将单个属性决定非主属性的依赖对独立成关系,将依赖整个组合候选码的属性与组合码构成关系,将存在传递依赖的属性对单独拆分,确保每个子关系仅保留一组独立的函数依赖,最终让每个子关系都不存在部分依赖与传递依赖,彻底解决原有关系的各类异常问题。

正确答案
A

本题考察的是数据库范式(Normalization)与函数依赖分析
问题 1:关系模式 P 的函数依赖为:
Pno → Pname(一个零件号决定一个零件名称), (Pno, Sname) → Qty(零件与供应商的组合决定数量),Sname → City(供应商决定城市),由此可见,候选码是组合键 (Pno, Sname),而:
Pname 依赖于 Pno(对组合码的部分依赖),City 依赖于 Sname(同样是组合码的部分依赖)
这说明关系 P 属于第一范式(1NF),但不满足第二范式(2NF),因为存在非主属性对主码的部分函数依赖。因此,选项 A 正确。

问题 2:为了消除部分依赖和传递依赖,需要如下分解:
P1(Pno, Pname):保留 Pno → Pname 的依赖,P2(Pno, Sname, Qty):保留 (Pno, Sname) → Qty 的依赖,P3(Sname, City):保留 Sname → City 的依赖,这样就消除了所有部分依赖和传递依赖,达到第三范式(3NF),不再存在冗余、插入异常或删除异常。
因此,选项 C 正确。

联系我们
隐私协议
用户协议
微信公众号
知乎
小红书
浙ICP备2021029036号
@2022-2026
嘉兴市安芯网络科技有限公司 版权所有