数据库原理-------求解候选码
求解候选码
求解步骤:
1.找出只出现在函数依赖左边的属性
2.找出只出现在函数依赖右边的属性
3.找出在函数依赖左右两边都出现的属性
4.找出未在函数依赖左右两边出现的属性
例题如下:
关系模式R<U,F>中,U={A,B,C,D,E,G,K},F={AB->C,B->DE,C->G,G->A},求模式R的所有候选码。
解:
L(左边): B
R(右边): D,E
LR(两边): A,C,G
NLR(未出现): K
候选码能决定所有属性。因此,候选码不会由只出现在右边的属性构成,而只出现在左边的属性一定构成候选码。所以,可以首先求只出现在左边的属性的闭包,若并未包含全集,则与出现在左右两边的属性依次组合再进行求闭包。具体如下:
(B)+ = BDE
(BA)+ = ABCDEG
(BC)+ = ABCDEG
(BG)+ = ABCDEG
注意:因为属性K在函数依赖集中并未出现,因此只要保证元素的闭包包含ABCDEG即可,最终构成的候选码只需要在BA,BC,BG的末尾加上K 即可
综上,关系模式R的所有候选码为ABK,BCK,BGK。