问题 单项选择题

某公司销售数据库的商品、仓库关系模式及函数依赖集F1、F2如下:

商品(商品号,商品名称,生产商,单价),F1=商品号→商品名称,商品号→生产商,商品号→单价,商品关系的主键是(1)仓库(仓库号,地址,电话,商品号,库存量),F2=仓库号→(地址,电话),(仓库号,商品号)→库存量。仓库关系的主键是(2),外键是(3)

仓库关系模式(4),为了解决这一问题,需要将仓库关系分解为(5)

5()

A.仓库1(仓库号,地址)和仓库2(仓库号,电话,商品号,库存量)

B.仓库1(仓库号,地址,电话)和仓库2(商品号,库存量)

C.仓库1(仓库号,电话)和仓库2(仓库号,地址,商品号,库存量)

D.仓库1(仓库号,地址,电话)和仓库2(仓库号,商品号,库存量)

答案

参考答案:D

解析:

依题意,从“商品”关系的函数依赖集F1中可以导出“商品号”决定“商品”关系的全部属性,因此“商品号”是“商品”关系的主键。

从“仓库”关系的函数依赖集F2可以导出(仓库号,商品号)决定“仓库”关系的全部属性,因此“仓库”关系的主键是(仓库号,商品号)。因为“商品号”是“商品”关系的主键,所以“商品号”是“仓库”关系的外键。

根据第2范式(2NF)的要求:不存在非主属性对码的部分依赖。而“仓库”关系模式存在非主属性对码的部分依赖,因此该关系模式不属于2NF,会造成冗余、插入异常、删除异常和修改复杂(或修改异常)等问题。

为了解决“仓库”关系模式存在的问题,需要进行模式分解。根据第3范式(3NF)的要求:每一个非主属性既不部分依赖于码,也不传递依赖于码。因此,需要根据3NF的要求和“仓库”关系模式的函数依赖,对“仓库”关系模式进行如下分解以满足3NF的要求,从而解决冗余、插入异常、删除异常和修改复杂(或修改异常)等问题。

仓库1(仓库号,地址,电话)

仓库2(仓库号,商品号,库存量)

选项A分解存在的问题是:存在非主属性对码的部分函数依赖,即仓库号→电话,仓库2不属于3NF(仓库23NF)。选项B分解存在的问题是:分解有损连接,即分解的新关系模式仓库1和仓库2无法恢复到原关系。选项C分解存在的问题是:存在非主属性对码的部分函数依赖,即仓库号→地址,仓库23NF。选项D分解是既保持函数依赖,又无损连接。

单项选择题
单项选择题