五、综合题
1.某汽车运输公司数据库中有一个记录司机运输里程的关系模式:R(司机编号,汽车牌照,行驶公里,车队编号,车队主管)。 此处每个汽车牌照对应一辆汽车,“行驶公里”为某司机驾驶某辆汽车行驶的总公里数,如果规定每个司机属于一个车队,每个车队只有一个主管。 (1)试写出关系模式R的基本FD的关键码。
(2)说明R不是2NF模式的理由,并指出数据冗余之所在。试把R分解成2NF模式集。 (3)进而把R分解为3NF模式集,并说明理由。
解:(1)(司机编号,汽车牌照) →行驶公里 司机编号→车队编号 车队编号→车队主管。关系模式R的关键码为(司机编号,汽车牌照)。
(2)关系模式R中存在FD:(司机编号,汽车牌照)→(行驶公里,车队编号),其中非主属性“车队编号”局部依赖于候选键“司机编号”。所以R不是2NF。 分解为2NF:R1(司机编号,汽车牌照,行驶公里) R2(司机编号,车队编号,车队主管)
(3)因为关系模式R2中存在非主属性“车队主管”对候选键“司机编号”的传递依赖,所以R2不满足3NF。
分解为3NF:R1(司机编号,汽车牌照,行驶公里)
R2(司机编号,车队编号) R3(车队编号,车队主管)
2. 设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额,每个职工只在一个部门工作,每个部门只有一个经理。回答下列问题:
(1)、按上述规定,写出R的基本FD和侯选码。 (2)、说明R不是2NF的理由,并把R分解为2NF模式集。 (3)进而分解为3NF模式集。 解:(1)基本的FD有:
(职工编号,日期)→日营业额 职工编号→部门名 部门名→部门经理
侯选码:(职工编号,日期) (2)因为R中有这样的FD:
(职工编号,日期)→(部门名,部门经理) 职工编号→(部门名,部门经理),前
一个FD是局部依赖。
(3)R1(职工编号,日期,日营业额)、R2(职工编号,部门名)、R3(部门名,部门经理)
3.设某商业集团数据库中有一关系模式R如下:R(商店编号,商品编号,数量,部门编号,负责人)。如果规定:每个商店的每种商品只在一个部门销售;每个商店的每个部门只有一个负责人;每个商店的每种商品只有一个库存数量。回答下列问题:
(1)写出关系模式R的基本FD和侯选码。 (2)关系模式R最高达到第几范式?为什么? (3)如果R不属于3NF,请将R分解为3NF模式集。
解:(1)有三个函数依赖:(商店编号,商品编号)→部门编号 (商店编号,部门编号)→负责人 (商店编号,商品编号)→数量 R的侯选码是(商店编号,商品编号)。
(2)因为R中存在着非主属性“负责人”对候选码(商店编号、商品编号)的传递函数依赖,(因为(商店编号,商品编号)→部门编号,根据增广律,(商店编号,商品编号)→(商店编号,部门编号),又(商店编号,部门编号)→负责人,所以(商店编号,商品编号)→负责人(传递依赖))所以R属于2NF,R不属于3NF。 (3)将R分解成3NF为:R1(商店编号,商品编号,数量,部门编号) R2(商店编号,部门编号,负责人)