题目
关系模式R(员工编号,日期,零件数,部门名称,部门经理),表示某个工厂里每个员工的日生产零件数以及员工所在的部门和经理信息。每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理,那么: 1)模式R的基本函数依赖是( , , ) 2) 模式R的码是 ,模式R是第 范式 3) 若将R分解成3NF,可以分解为 , , 三个关系模式。
关系模式R(员工编号,日期,零件数,部门名称,部门经理),表示某个工厂里每个员工的日生产零件数以及员工所在的部门和经理信息。每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理,那么: 1)模式R的基本函数依赖是{ , , } 2) 模式R的码是 ,模式R是第 范式 3) 若将R分解成3NF,可以分解为 , , 三个关系模式。
题目解答
答案
1){(员工编号,日期)→零件数,员工编号→部门名称,部门名称→部门经理 } 2)(员工编号,日期),第1NF。 3)R1(员工编号,日期,零件数) R2(员工编号,部门名称) R3(部门名称,部门经理)
解析
步骤 1:确定基本函数依赖
根据题目描述,每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理。因此,可以确定以下基本函数依赖:
- (员工编号,日期)→ 零件数
- 员工编号 → 部门名称
- 部门名称 → 部门经理
步骤 2:确定模式R的码
模式R的码是能够唯一确定关系中每个元组的最小属性集。根据基本函数依赖,(员工编号,日期)可以唯一确定零件数,而员工编号可以唯一确定部门名称,部门名称可以唯一确定部门经理。因此,模式R的码是(员工编号,日期)。
步骤 3:确定模式R的范式
模式R中存在非主属性对码的部分函数依赖和传递函数依赖,因此模式R是第1范式。
步骤 4:将模式R分解成3NF
为了消除非主属性对码的部分函数依赖和传递函数依赖,可以将模式R分解成以下三个关系模式:
- R1(员工编号,日期,零件数)
- R2(员工编号,部门名称)
- R3(部门名称,部门经理)
根据题目描述,每个员工每天只有一个日生产零件数,每个员工只在一个部门工作,每个部门只有一个经理。因此,可以确定以下基本函数依赖:
- (员工编号,日期)→ 零件数
- 员工编号 → 部门名称
- 部门名称 → 部门经理
步骤 2:确定模式R的码
模式R的码是能够唯一确定关系中每个元组的最小属性集。根据基本函数依赖,(员工编号,日期)可以唯一确定零件数,而员工编号可以唯一确定部门名称,部门名称可以唯一确定部门经理。因此,模式R的码是(员工编号,日期)。
步骤 3:确定模式R的范式
模式R中存在非主属性对码的部分函数依赖和传递函数依赖,因此模式R是第1范式。
步骤 4:将模式R分解成3NF
为了消除非主属性对码的部分函数依赖和传递函数依赖,可以将模式R分解成以下三个关系模式:
- R1(员工编号,日期,零件数)
- R2(员工编号,部门名称)
- R3(部门名称,部门经理)