题目
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(部门名,部门经理)
解析
步骤 1:确定主关键字
根据题目中的规定,每个职工每天只有一个营业额,因此职工号和日期的组合可以唯一确定一个记录。所以,模式 R 的主关键字是(职工号,日期)。
步骤 2:分析 R 的范式
R 中存在职工号和日期的组合唯一确定日营业额,职工号唯一确定部门名,部门名唯一确定部门经理。因此,存在部门名对主关键字(职工号,日期)的部分函数依赖,没有达到2NF。同时,存在部门经理对职工号的传递函数依赖,没有达到3NF。所以,R 最高属于第一范式。
步骤 3:将 R 分解为 3NF
首先分解为 2NF:R1(职工号,部门名,部门经理),R2(职工号,日期,日营业额)。
因为 R1 存在部门经理对职工号的传递函数依赖,所以没有达到 3NF,再分解为 3NF:R1 分解为 R1(职工号,部门名)和 R3(部门名,部门经理)。
根据题目中的规定,每个职工每天只有一个营业额,因此职工号和日期的组合可以唯一确定一个记录。所以,模式 R 的主关键字是(职工号,日期)。
步骤 2:分析 R 的范式
R 中存在职工号和日期的组合唯一确定日营业额,职工号唯一确定部门名,部门名唯一确定部门经理。因此,存在部门名对主关键字(职工号,日期)的部分函数依赖,没有达到2NF。同时,存在部门经理对职工号的传递函数依赖,没有达到3NF。所以,R 最高属于第一范式。
步骤 3:将 R 分解为 3NF
首先分解为 2NF:R1(职工号,部门名,部门经理),R2(职工号,日期,日营业额)。
因为 R1 存在部门经理对职工号的传递函数依赖,所以没有达到 3NF,再分解为 3NF:R1 分解为 R1(职工号,部门名)和 R3(部门名,部门经理)。