单选题 某销售公司数据库的零件P(零件号,零件名称,供应商,供应商所在地,库存量)关系如下表所示,其中同一种零件可南不同的供应商供应,一个供应商可以供应多种零件。零件关系的主键为{{U}} (63) {{/U}}。查询各种零件的平均单价、最高单价与最低单价之间差距的SQL语句为:
SELECT 零件号,{{U}} (64) {{/U}}
FROM P
{{U}} (65) {{/U}};

单选题 A.零件号,零件名称 B.零件号,供应商 C.零件号,供应商所在地 D.供应商,供应商所在地
【正确答案】 B
【答案解析】
单选题 A.零件名称,AVG(单价),MAX(单价)-MIN(单价)
B.供应商,AVG(单价),MAX(单价)-MIN(单价)
C.零件名称,AVG单价,MAX单价-MIN单价
D.供应商,AVG单价,MAX单价-MIN单价
【正确答案】 A
【答案解析】
单选题 A.ORDER BY供应商 B.ORDER BY零件号
C.GROUP BY供应商 D.GROUP BY零件号
【正确答案】 D
【答案解析】
单选题 该关系存在冗余以及插入异常和删除异常等问题。为了解决这一问题需要将零件关系分解为{{U}} {{/U}}。 A.P1(零件号,零件名称,单价)、P2(供应商,供应商所在地,库存量) B.P1(零件号,零件名称)、P2(供应商,供应商所在地,单价,库存量) C.P1(零件号,零件名称)、P2(零件号,供应商,单价,库存量)、P3(供应商,供应商所在地) D.P1(零件号,零件名称)、P2(零件号,单价,库存量)、P3(供应商,供应商所在地)、P4(供应商所在地,库存量)
【正确答案】 C
【答案解析】试题(53)的正确选项为B。根据题意,零件P关系的主键为(零件号,供应商)。
试题(54)的正确选项为A,试题(55)的正确选项为D。试题要求查询各种零件的平均单价、最高单价与最低单价之间差距,因此,首先需要在结果列中的空(54)填写“零件名称,AVG(单价),MAX(单价)-MIN(单价)”。其次必须用分组语句按零件号分组,故空(55)应填写“GROUP BY零件号”。完整的SQL语句为:
SELECT零件号,零件名称,AVG(单价),NAX(单价)-MIN(单价)
FROM P
GROUP BY零件号;
试题(56)的正确选项为C。为了解决关系P存在冗余以及插入异常和删除异常等问题,需要将零件关系P分解。选项A、选项B和选项D是有损连接的,且不保持函数依赖故分解是错误的,例如,分解为选项A、选项B和选项D后,用户无法查询某零件由哪些供应商供应,原因是分解是有损连接的,且不保持函数依赖。