《数据库系统教程》—分解成无损且保持函数依赖的3NF【附题目讲解】
视频笔记R(ABCDEG),F={A->B,A->C,A->D,A->E,A->G,CDE->G,G->C,G->D}
①F中各个FD的右边都是单属性
②删除冗余的函数依赖
删A->B,则A+=ACDEG 保留
删A->C,则A+=ABEDGC=U,删A->C
∴F={A->B,A->D,A->E,A->G,CDE->G,G->C,G->D}
删A->D,则A+=U,删除A->D
∴F={A->B,A->E,A->G,CDE->G,G->C,G->D}
删A->E,则A+=ABGCD,保留
删A->G,则A+=ABE,保留
删CDE->G,则(CDE)+=CDE 保留
删G->C,则G+=DG 保留
删G->D,则G+=GC 保留
∴F={A->B,A->E,A->G,CDE->G,G->C,G->D}
③删除冗余的属性
对于CDE->G
删C,(DE)+=DE,C保留
删D,(CE)+=CE,D保留
删E,(CD)+=CD,E保留
∴F={A->B,A->E,A->G,CDE->G,G->C,G->D}
整理得
∴F={A->BEG,CDE->G,G->CD}
∵R的关键码是A
∴将R分解成R1(ABEG),R2(CDEG)
注意①求最小函数依赖集的方法使用的是王珊老师教材的方法,因为第三步没有修改依赖,所以不用再去进行计算第二步
②计算结果发现A在ABEG中,所以不用单独写一个关键码的分解
③因为CDG中CDEG中,所以不用写成3个R,写成R1R2即可



