2016-06-26 42 views
0

考虑关系模式R =(A,B,C,d,E,F)和该组函数依赖的:如何选择给定关系模式R中的候选键?

A→B 

A→C 

BC→E 

BC→D 

E→F 

BC→F 

哪个是关系R的候选键?

A) A 

B) BC 

C) ABC 

D) ABCE 

给出的标准答案是C,我应该用ABC作为这种关系的候选键。

但自从:

A -> B,C 

B,C -> D,E,F 

所以我觉得一个可以识别所有其他属性

A -> B,C,D,E,F 

我误解的依赖关系?

为什么我不能简单地使用A作为候选键来标识所有其他属性?

+0

大概你的意思是“功能决定”而不是“可以识别”。你可以用什么*规则/公理*链来证明A - > B,C&BC - > D暗示ABC - > D? PS“依赖关系”是什么意思? – philipxy

回答

2

你是对的,在这种情况下(候选)键是A,而A B C是一个超级键。

鉴于候选键的正式定义是“一组确定关系的所有属性并通过消除某些属性而失去此属性的属性集合”,我们可以证明关闭A,0 A+决定所有属性都以这种方式:

A+ = A (to compute the closure, we start with the attribute) 
A+ = ABC (for transitivity with respect to A→B and A→C) 
A+ = ABCDEF (for transitivity with respect to BC→E and BC→D and BC→F) 

此外,很容易看出它是具有此属性的唯一属性集。实际上,A必须存在于任何(候选)键中,因为它不会出现在函数依赖的右侧,所以它不会由任何其他属性或属性组合确定。但由于它已经是一个(候选)键,所以包括它的任何属性都将是一个合适的超级键。