七、设有关系模式R(职工名,项目名,工资,部门名,部门经理),如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
1.试写出关系模式R的基本函数依赖和所有的候选码。
2.说明R不是2NF模式的理由,并把R分解成2NF模式集。
3.进而把R分解成3NF模式集,并说明理由。
七、解:1.R的基本FD有三个:
(职工名,项目名)®工资
项目名®部门名
部门名®部门经理
候选码为(职工名,项目名)。
2.根据1),R中存在下列两个FD:
(职工名,项目名)®(部门名,部门经理)
项目名®(部门名,部门经理)
R应分解成两个模式: R1(项目名,部门名,部门经理)
R2(职工名,项目名,工资)
R1和R2都是2NF模式。
3.R2已是3NF模式。
在R1中,由于存在两个FD:
项目名®部门名
部门名®部门经理
即存在一个传递依赖。
对R1应分解成两个模式:R11(项目名,部门名),R12(部门名,部门经理)。因此,R分解成3NF模式集时,ρ={ R11,R12,R2 }。