数据库系统概论葵花宝典
一些定义和规则
候选码的定义:
如果关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码;
主码的定义:
如果一个关系有多个候选码,则选定其中一个为主码;
主属性定义:
所有候选码的属性集合称为主属性;
非主属性定义:
不包含在任何候选码中的属性称为非主属性;
函数最小依赖集求法
①根据推理规则的分解性,右部最小化(右切)
②消除左边的冗余属性(除本求包)
③消除冗余的依赖(左部最小化)
已知关系模式R(U,F),U={A,B,C,D,E,F,G},F={BCD→A,BC→E,A→F,F→G,C→D,A→G},求F的最小函数依赖集
①右切(右切,使每个函数依赖的右部仅有一个属性)
在这道题中其实右切是不需要做的,因为每个函数依赖的右边的属性只有一个,如果是AB->CD,那么CD就要被拆开成
AB->C,AB->D
②除本求包(除本求包(对每个函数依赖的左部做除本求包,求包的结果如果不包含本函数依赖的右部,本函数依赖保留;求包的结果如果包含了本函数依赖的右部,删除本函数依赖))
对于第一个BCD→A来说,除本求包的意识就是在F={BCD→A,BC→E,A→F,F→G,C→D,A→G}中去掉BCD→A
这样的话还剩下F={BC→E,A→F,F→G,C→D,A→G},然后求{BCD}+的闭包,如果存在A则删除该依赖,如果不存在则保留该依赖。
③左部最小化
经过右部最小化和消除冗余依赖后F={BCD→A,BC→E,A→F,F→G,C→D}
针对BCD→A
- 去B? 则({CD}+ = CD,无A,保留
- 去C? 则{BD}+ = BD,无A,保留
- 去D? 则{BC}+ = BCDAEFG,有A,则D冗余,可以去掉。
所以F={BC→A,BC→E,A→F,F→G,C→D}
针对BC→E
- 去B 则{CF}+ = CD,保留
- 去C 则{BF}+ = B,保留
所以F={BC→A,BC→E,A→F,F→G,C→D}