单选题
某销售公司数据库的零件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) 。
【正确答案】
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后,用户无法查询某零件有哪些供应商供应,原因是分解时有损连接的,且不保持函数依赖。