某公司销售数据库的商品、仓库关系模式及函数依赖集F1、F2如下: 商品(商品号,商品名称,生产商,单价),F1=商品号→商品名称,商品号→生产商,商品号→单价,商品关系的主键是___(1)___。仓库(仓库号,地址,电话,商品号,库存量),F2=仓库号→(地址,电话),(仓库号,商品号)→库存量。仓库关系的主键是___(2)___,外键是__(3)____。 仓库关系模式_(4)_____,为了解决这一问题,需要将仓库关系分解为__(5)____。
(1) 商品关系的主键是 ___商品号________
商品的函数依赖集 F1=商品号→商品名称,商品号→生产商,商品号→单价
从函数依赖集来看,商品号决定商品关系的全属性,所以商品号是商品关系的主键
(2) 仓库关系的主键是____仓库号,商品号_________
(3) 仓库关系的外键是______商品号________
仓库关系的函数依赖集 F2=仓库号→(地址,电话),(仓库号,商品号)→库存量
从函数依赖集来看,仓库号,商品号决定仓库关系的全属性,故仓库号,商品号
是仓库关系的主键,又由于商品号是商品关系的主键,故商品号是仓库关系的外键
(4) 仓库关系模式___A_____
A. 存在冗余,插入异常和删除异常,以及修改操作的不一致
B. 不存在冗余,但存在插入异常和删除异常
C. 不存在修改操作的不一致,但存在冗余和插入异常
D. 不存在冗余,插入异常,但存在删除异常和修改操作的不一致
仓库关系
仓库号 | 地址 | 电话 | 商品号 | 库存量 |
12 | 高新路6号 | 8601 | 100024 | 168 |
12 | 高新路6号 | 8601 | 100025 | 568 |
12 | 高新路6号 | 8601 | 230023 | 398 |
13 | 友谊路6号 | 8602 | 150004 | 2600 |
13 | 友谊路6号 | 8602 | 160005 | 1218 |
存在冗余,例如仓库号为12的商品有三种,其地址重复了三次
(5) 为了解决(4)中出现的问题,需要将仓库关系分解为___D____
A. 仓库1 (仓库号,地址) 和仓库2 (仓库号,电话,商品号,库存量)
B. 仓库1 (仓库号,地址,电话) 和仓库2 (商品号,库存量)
C. 仓库1 (仓库号,电话) 和仓库2 (仓库号,地址,商品号,库存量)
D. 仓库1 (仓库号,地址,电话) 和仓库2 (仓库号,商品号,库存量)
选项A存在的问题是仓库2不属于第三范式,即存在非主属性对码的部分函数依赖,
即仓库号—————>电话
第三范式:在第二范式基础之上,消除非主属性对键的传递依赖
选项 B存在的问题是该分解有损连接,即分解的新关系模式仓库1和仓库2无法恢复到原来的关系
选项C存在的问题与选项A存在的问题一样
选项D为本题的正确答案
仓库1
仓库号 | 地址 | 电话 |
12 | 高新路6号 | 8601 |
13 | 高新路6号 | 8602 |
仓库2
仓库号 | 商品号 | 库存量 |
12 | 100024 | 168 |
12 | 100025 | 568 |
12 | 230023 | 398 |
13 | 150004 | 2600 |
13 | 160005 | 1218 |