题目
11.设有关系模式[1]:R(职工号,日期,日营业额,部门名,部门经理)如果规定:每个职工每天只有一个营业额,每个职工只在一个部门工作,每个部门只有一个经理。(1)根据上述规定,写出模式 R 主关键字。(2)分析 R 最高属于第几范式,说明理由。(3)若 R 不是 3NF,将其分解为 3NF。
11.设有关系模式[1]:R(职工号,日期,日营业额,部门名,部门经理)如果规定:每个职工每天只有一个营业额,每个职工只在一个部门工作,每个部门只有一个经理。(1)根据上述规定,写出模式 R 主关键字。(2)分析 R 最高属于第几范式,说明理由。(3)若 R 不是 3NF,将其分解为 3NF。
题目解答
答案
答:(1)关系模式 R 的主关键字是(职工号,日期)。(2)R 最高属于第一范式[2]。因为存在着部门名对主关键字(职工号,日期)的部分函数依赖[3],没有达到2NF。(3)首先分解为 2NF:R1(职工号,部门名,部门经理),R2(职工号,日期,日7营业额)因为 R1 存在部门经理对职工号的传递函数依赖[4],所以没有达到 3NF,再分解为3NF:R1 分解为 R1(职工号,部门名)和 R3(部门名,部门经理)
解析
考查要点:本题主要考查关系模式的主键确定、范式判断及规范化分解。
解题思路:
- 主键确定:根据题目中的约束条件,找到能唯一标识元组的最小属性组合。
- 范式判断:依次判断是否满足1NF、2NF、3NF,关键在于分析属性之间的依赖关系(部分依赖、传递依赖)。
- 规范化分解:通过消除部分依赖和传递依赖,将关系分解为满足3NF的模式。
破题关键:
- 主键:职工号和日期的组合唯一确定元组。
- 范式级别:部门名对主键的部分依赖导致不满足2NF。
- 分解策略:先消除部分依赖(分解为2NF),再消除传递依赖(分解为3NF)。
第(1)题
主键确定:
- 职工号和日期的组合能唯一确定日营业额(每个职工每天只有一个营业额)。
- 职工号唯一确定部门名(每个职工只在一个部门工作)。
- 部门名唯一确定部门经理(每个部门只有一个经理)。
因此,主键为(职工号,日期)。
第(2)题
范式判断:
- 1NF:所有属性均为原子值,满足。
- 2NF:存在部门名对主键(职工号,日期)的部分依赖(部门名仅依赖于职工号),不满足2NF。
因此,最高属于第一范式。
第(3)题
分解为3NF:
- 分解为2NF:
- R1(职工号,部门名,部门经理):部门名和部门经理依赖于职工号。
- R2(职工号,日期,日营业额):属性间无部分依赖。
- 进一步分解为3NF:
- R1中存在传递依赖(部门经理依赖于部门名,部门名依赖于职工号)。
- 分解R1为:
- R1(职工号,部门名):直接依赖关系。
- R3(部门名,部门经理):消除传递依赖。
最终分解结果:
- R1(职工号,部门名)
- R2(职工号,日期,日营业额)
- R3(部门名,部门经理)