Database 如何在给定的关系模式R中选择候选键?
考虑关系模式R=(A,B,C,D,E,F)和函数依赖集:Database 如何在给定的关系模式R中选择候选键?,database,rdbms,functional-dependencies,Database,Rdbms,Functional Dependencies,考虑关系模式R=(A,B,C,D,E,F)和函数依赖集: 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可以将所有其他属性识别为 A -> B,C,D,E,F 我是否误解了依赖关系 为什么我不能简单地使用一个候选键来标识所有的rest属性 你
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可以将所有其他属性识别为
A -> B,C,D,E,F
我是否误解了依赖关系
为什么我不能简单地使用一个候选键来标识所有的rest属性 你说得对,在这种情况下,(候选)键是a
,而abc
是一个超级键
假定候选键的形式定义为“确定关系的所有属性并通过从中删除某些属性而丢失此属性的属性集”,我们可以显示a
,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
必须出现在任何(候选)键中,因为它从来不会出现在函数依赖项的右侧,因此它不由任何其他属性或属性组合决定。但是,由于它已经是(候选)键,因此包括它在内的任何一组属性都将是一个适当的超键。您是对的,在这种情况下,(候选)键是a
,而a B C
是一个超键
假定候选键的形式定义为“确定关系的所有属性并通过从中删除某些属性而丢失此属性的属性集”,我们可以显示a
,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
必须出现在任何(候选)键中,因为它从来不会出现在函数依赖项的右侧,因此它不由任何其他属性或属性组合决定。但由于它已经是一个(候选)键,任何一组属性(包括它)都将是一个合适的超级键。您的意思大概是“功能决定”而不是“可以识别”。你可以用什么规则/公理链来说明A->B,C&BC->D意味着ABC->D?PS“依赖关系”是什么意思?大概你的意思是“功能决定”而不是“可以识别”。你可以用什么规则/公理链来说明A->B,C&BC->D意味着ABC->D?PS“依赖关系”是什么意思?