单选题 某销售公司数据库的零件P(零件号,零件名称,供应商,供应商所在地,库存量)关系如下表所示,其中同一种零件可由不同的供应商供应,一个供应商可以供应多种零件。零件关系的主键为 (23)
零件号 零件名称 供应商 供应商所在地 单价(元) 库存量
010023 P2 S1 北京市海淀区58号 22.80 380
010024 P3 S1 北京市海淀区58号 280.00 1350
010022 P1 S2 陕西省西安市雁塔区2号 65.60 160
010023 P2 S2 陕西省西安市雁塔区2号 28.00 1280
010024 P3 S2 陕西省西安市雁塔区2号 260.00 3900
010022 P1 S3 北京市新城区65号 66.80 2860
……
  查询各种零件的平均单价、最高单价与最低单价之间差距的SQL语句为:
  SELECT零件号, (24)
  FROM P (25)
  该关系存在冗余以及插入异常和删除异常等问题。为了解决这一问题需要将零件关系分解为 (26)

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