难以理解功能依赖符号的含义(A - > BC)

时间:2013-11-16 21:16:46

标签: database functional-dependencies

我很难确切地想象出A-> BC意味着什么,主要是BC究竟做了什么 例如,在表格“如果A - > B和B - > C,则A - > C”看起来像这样,并且该陈述将为真:

A  |  B  |  C 
1  |  2  |  3 
1  |  2  |  3 

A - > BC看起来像?

你会如何展示“如果AB - > C,那么A - > BC”是假的?

谢谢!

编辑:
我的猜测是AB - > C表示C依赖于A和B,因此表格如下所示:

A  |  B  |  C 
1  |  2  |  3 
1  |  2  |  3 

或者这(这可能是我上述问题的一个反例):

A  |  B  |  C 
1  |  2  |  4 
1  |  3  |  4 

两者都是真的。但这是错误的:

A  |  B  |  C 
1  |  2  |  4 
1  |  3  |  5

这是正确的想法吗?

1 个答案:

答案 0 :(得分:1)

如果您还没有阅读this,那么可以正常介绍功能依赖项。它说:

  

Union:如果X→Y和X→Z,则X→YZ

     

分解:如果X→YZ,则X→Y和X→Z

我发现将A -> B视为“A确定B”并将A -> BC读为“A确定B和C”会很有帮助。换句话说,给定A,您可以唯一地确定B和C的值,但是给定B和C不一定是真的,您可以唯一地确定A的值。

这是一个简单的例子:一个至少包含3列的表,其中A是主键,B和C是任何其他列:

 id | x | y
------------
 1  | 7 | 4
 2  | 9 | 4
 3  | 7 | 6

要表明If AB -> C, then A -> BC是假的,你只需要提出一个反例。这是一个:AB是主键的表(因此根据定义,它满足AB -> C):

 A | B | C
------------
 1 | 1 | 4
 1 | 2 | 5
 2 | 1 | 6
 2 | 2 | 4

但是,它不满足A -> B(因为对于A = 1,B = 1,2),因此,通过Union,它不满足A -> BC。 (奖励积分:它是否满足A -> C?这有关系吗?)