梗概

  • [child::主码]
  • 第二范式,消除主码非主属性,则成为[[第三范式|child::传递函数依赖]
    • 实际生产中,往往达到第三范式即可
  • 第三范式,使每个决定因素都含有主码,则成为[child::BC范式]

适用范围

  • 范式越高,冗余性越低,数据一致性越强

消除方式

child::分解关系模式

实例

题目

设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),它用来存储某商店每个职工的日营业额、职工所在的部门以及部门的经理等信息。如果规定:每个职工每天只有一个营业额;每个职工只在一个部门工作;每个部门只有一个经理。试回答下列问题 (1)根据上述规定,写出关系模式R的基本丽数依赖和候选码。 (2)在函数依赖范畴内关系模式R最高属于第几范式?为什么? (3)如果R不属于3NF,请将R分解成3NF模式集。

(1)求候选码

基本的函数依赖有以下3个。 (职工编号,日期)→日营业额 职工编号→部门名 部门名→部门经理 按照求候选码,求得唯一的候选码:(职工编号,日期)。

(2)

因为R中存在非主属性“部门名”对候选码(职工编号,日期)的部分函数依赖,所以R不属于2NF,最高属于INF

(3)规范为第三范式

将R分解为: R1(职工编号日期,日营业额),候选码为(职工编号,日期) R2(职工编号,部门名,部门经理),候选码为职工编号

显然R1已属于3NF,而在R2中存在非主属性“部门经理”对候选码“职工编号”的传递函数依赖,R2不是3NF。

将R2进一步分解为: R21(职工编号,部门名),候选码为职工编号 R22(部门名,部门经理),候选码为部门名 显然 R21和R22都已属于3NF。 因此,关系模式R分解成的3NF模式集为R1,R21,R22)。