笔记:
候选关键字即为候选码。
题目:
一、
设有关系模式 R(职工名,项目名,工资,部门名,部门经理)
如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。
(1)试写出关系模式R的基本函数依赖和关键码。
(2)说明R不是2NF模式的理由,并把R分解成2NF模式集。
(3)进而把R分解成3NF模式集,并说明理由。
二、指出下列关系模式是第几范式。
(1) R(X,Y,Z), F={XY->Z}
(2) R(X,Y,Z), F={Y->Z,XZ->Y}
(3) R(X,Y,Z), F={Y->Z,Y->X,X->YZ}
(4) R(X,Y,Z), F={X->Y,X->Z}
(5) R(W,X,Y,Z), F={X->Z,WX->Y}
解答:
(1)根据题意可知有如下的函数依赖关系
(职工名,项目名)→工资
项目名→部门名
部门名→部门经理
原因:
(2)根据(1),由于部门名,部门经理只是部分依赖
于主键,所以该关系模式不是2NF应该做如下分
解
R1项目名部门名部门经理
R2(职工名,项目名,工资)
以上两个关系模式都是2NF模式
(3)R2已经是3NF,但R1不是,因为部门经理传递
依赖于项目名.
故应该做如下分解
R11(项目名部门名)
R12(部门名部门经理)
分解后形成的三个关系模式R11,R12,R2均是
3NF模式
二.
(1) R(X,Y,Z), F={XY->Z}
(2) R(X,Y,Z), F={Y->Z,XZ->Y}
(3) R(X,Y,Z), F={Y->Z,Y->X,X->YZ}
(4) R(X,Y,Z), F={X->Y,X->Z}
(5) R(W,X,Y,Z), F={X->Z,WX->Y}
答:
(1)R是BCNF。R候选关键字为XY,F中只有一个函数依赖,而该函数依赖的左部包含了R的候选关键字XY。
(2)R是3NF。R候选关键字为XY和XZ,R中所有属性都是主属性,不存在非主属性对的候选关键字的传递依赖。
(3)R是BCNF。R候选关键字为X和Y,∵X→YZ,∴X→Y,X→Z,由于F中有Y→Z,Y→X,因此Z是直接函数依赖于X,而不是传递依赖于X。又∵F的每一函数依赖的左部都包含了任一候选关键字,∴R是BCNF。
(4)R是BCNF。R的候选关键字为X,而且F中每一个函数依赖的左部都包含了候选关键字X。
(5)R是1NF。R的候选关键字为WX,则Y,Z为非主属性,又由于X→Z,因此F中存在非主属性对候选关键字的部分函数依赖。