问答题 [说明]
某公司的生产管理部门拟开发生产计划管理系统,该系统负责管理生产计划信息,记录生产安排和采购的情况。现有的表格信息如表8-8~表8-10所示。



根据上述需求设计的生产计划数据库的关系模式如图8-8所示。

关系模式的主要属性、含义及约束如表8-11所示。

【正确答案】(1)存在派生属性“总价格”。总价格可以根据数量和单价计算出来
(2) “采购”关系不满足第二范式,会造成插入异常、删除异常和修改复杂(或修改异常)
(3) 分解后的关系模式如下
采购1(采购单号,总价格,日期)
采购2(供应商,地址,电话)
采购3(供应商,材料编号,单价)
采购4(采购单号,供应商,材料编号,数量)
【答案解析】[解析]
这是一道要求读者掌握派生属性基本概念、第二范式和第三范式的综合分析题,本题的解答思路如下。
(1) 派生属性是指可以由其他属性经过计算获得的属性,这类属性在设计关系模式中通常不进行存储,会因为冗余而容易产生不一致性。
依题意,若“采购”关系中不考虑折扣情况,则该关系存在派生属性“总价格”。因为“总价格”可以根据“数量”和“单价”计算得出。
(2) 范式的判定可通过范式定义来实现。应从1NF入手,然后2NF、3NF等一步步判定。1NF的判定是分析属性类型,如含有组合属性则不属于1NF。再根据函数依赖集,确定关系的候选码和非主属性,考查函数依赖集,不存在非主属性对码的部分依赖为2NF,不存在非主属性对码的传递依赖为3NF,函数依赖的左部包含码为BCNF,只有平凡的多值依赖为4NF。
根据图8-8、表8-11、各属性间的函数依赖关系和题干相关描述信息,可得到如下各关系模式的主键。
生产计划(生产计划编号,生产计划名称,起始时间,截止时间,预算总金额,产品编号,产品名称,生产数量,生产小组编号,生产小组名称,安排人力)
产品用料(产品编,材料编号,材料名称,材料数量,单位)
采购(采购单号,供应商,地址,电话,材料编号,数量,单价,总价格,日期)
根据“采购”关系的函数依赖可知,“采购”的码为(采购单号,供应商,材料编号),而又存在部分函数依赖如下所示。
采购单号→(供应商,地址,电话,总价格,日期)
供应商→(地址,电话)
(供应商,材料编号)→单价
由于第二范式(2NF)要求:每个非主属性完全函数依赖于码,因此“采购”关系模式不满足第二范式(2NF),不满足BCNF的关系模式往往会造成插入异常、删除异常和修改复杂(或修改异常)等问题,这也是规范化的根本原因所在。
(3) 因为存在部分函数依赖,所以需要对“采购”进行分解,分解后的关系模式及其主键如下。
采购1(采购单号,总价格,日期)
采购2(供应商,地址,电话)
采购3(供应商,材料编号,单价)
采购4(采购单号,供应商,材料编号,数量)
其中,“采购1”关系的函数依赖为:
(采购单号)→(总价格,日期)
“采购2”关系的函数依赖为:
(供应商)→(地址,电话)
“采购3”关系的函数依赖为:
(供应商,材料编号)→单价
“采购4”关系的函数依赖为:
(采购单号,供应商,材料编号)→数量
这4个关系中的每一个非主属性既不部分依赖于码,也不传递依赖于码,因此满足第三范式的要求。
【正确答案】(1)“生产计划”关系模式,不满足第四范式
理由:(生产计划编号,产品编号)→(生产小组编号,安排人力)
(2) 分解后的关系模式如下
生产计划1(生产计划编号,生产计划名称,起始时间,截止时间,预算总金额)
生产计划2(生产计划编号,产品编号,生产数量)
生产计划3(生产计划编号,产品编号,生产小组编号,安排人力)
生产计划4(产品编号,产品名称)
生产计划5(生产小组编号,生产小组名称)
【答案解析】[解析]
这是一道要求对关系模式规范化理论的掌握的综合分析题,本题的解答思路如下。
(1) 根据“生产计划”关系模式的函数依赖,其码为:生产计划编号,产品编号,生产小组编号。
而又存在部分函数依赖为:
(生产计划编号,生产小组编号,产品编号)→安排人力
(生产计划编号,产品编号)→→(生产小组编号,安排人力)
因此“生产计划”关系模式不满足第二范式(2NF)。
同时,可以根据第四范式的要求:不允许有非平凡且非函数依赖的多值依赖。
而在“生产计划”关系模式存在的多值依赖为:
(生产计划编号,产品编号)→→(生产小组编号,安排人力)
因此“生产计划”关系模式不满足第四范式(4NF)。
(2) 关系模式的规范化过程是通过对关系模式的分解来实现的,把低一级的关系模式分解为若干个高一级的关系模式。分解的方法为:分析关系模式中的函数依赖,通过投影分解,消除不合理的函数依赖,即对于不满足范式要求的函数依赖,提取其所有属性构成新的关系模式,从原关系模式中去掉被决定属性,依次考查所有函数依赖即可。
对于“生产计划”关系模式,因为存在部分函数依赖和多值依赖,所以需要对其进行分解,分解后的关系模式及其主键如下。
生产计划1(生产计划编号,生产计划名称,起始时间,截止时间,预算总金额)
生产计划2(生产计划编号,产品编号,生产数量)
生产计划3(生产计划编号,产品编号,生产小组编号,安排人力)
生产计划4(产品编号,产品名称)
生产计划5(生产小组编号,生产小组名称)
其中,“生产计划1”关系的函数依赖为:
生产计划编号→(生产计划名称,起始时间,截止时间,预算总金额)
“生产计划2”关系的函数依赖为:
(生产计划编号,产品编号)→(生产数量)
“生产计划3”关系的函数依赖为:
(生产计划编号,产品编号,生产小组编号)→安排人力
“生产计划4”关系的函数依赖为:
产品编号→产品名称
“生产计划5”关系的函数依赖为:
生产小组编号→生产小组名称
这5个关系既不存在部分函数依赖和传递依赖,也不存在多值依赖,因此满足第四范式的要求。
【正确答案】无法统计,需在采购关系模式中,记录采购所对应的生产计划编号
【答案解析】[解析]
这是一道要求读者掌握数据库的逻辑结构设计的综合应用题,本题的解答思路如下。
在如图8-8所示的生产计划数据库中,由于“采购”关系模式中缺少记录采购所对应的“生产计划编号”,因此无法统计出某一个生产计划所采购的某个供应商的总金额。