2014-05-03 14 views
1

在FD中,我不明白以下内容:X-> Y,只要Y是相同的,X怎么会不同?FD X-> Y,各种X无关紧要?

X Y 
-- -- 
1 10 
2 10 
3 10 

有人告诉我,这仍然是X-> Y,而且它只在Y改变时才起作用。我不明白这一点..

回答

0

当关系“是函数”时,函数依赖发生在关系中。在形式上,这意味着如果您有像X -> Y这样的FD,则每个X的值必须与Y的1个值完全相关。如果我们颠倒这种说法,我们得到了一个“测试”失败有一个FD:

If there exists a value `x` in `X` such that there are two values 
of `Y`, `y1` and `y2`, where both 

    (x, y1) and (x, y2) 

are in the relation, if `NOT (y1 == y2)` then `Y` is not 
functionally dependent on `X` 

带着几分以为很容易地看到,本次测试通行证你写下来的关系。


X -> Y更直观的概念来自直觉关于数学函数。一个函数可以被认为是一台机器,它消耗输入,并根据某个特定输入的输出总是相同的规则生成输出,无论您运行多少次机器。关系模型函数在具有函数依赖性时。函数依赖刚指出,在你们的关系中的元组可以有形式

(x, f(x)) 

一些数学函数f

在你们的关系的情况下,该功能f很简单:

f(x) = 10   "constant function" 

Examples: 
f(1) = 10 
f(2) = 10 
f(10) = 10 

FD的另一个概念来自 “画图”。要做到这一点,想到X所有值在该行正在铺设了旁边的Y

x1 y1 
x2 y2 
x3 y3 
x4 y4 
x5 y5 
... 

时,我们借鉴了X列线为Y列连接两个值,就会发生一个关系所有的值。每行对应于一个元组。

x1----y1  is the relation  { (x1, y1), (x2, y2) } 
x2----y2 

甲关系是功能X -> Y如果X每个值具有与之相关联0或1行。

x1----y1 is the relation { (x1, y1) 
x2----y2     , (x2, y2) 
x3--| y3     , (x3, y4) 
x4--+-y4     , (x4, y4) } 

如果是这样,我们可以把这些线变成“箭头”

x1---->y1 
x2---->y2 
x3--| y3 
x4--+->y4 

,并有在那里如果我们按照从基地箭头的属性点,我们始终有一个唯一的路径的情况下正向 - 我们不必“分手”。在非功能性关系中,我们“分裂”;举例来说,如果我们翻转的关系,看看是否Y是功能上X我们翻转箭头

x1<----y1 
x2<----y2 
x3<--| y3 
x4<--+-y4 

,现在看到我们离开y4行进离开我们不得不“拆分”跟随箭头到和x4。这意味着Y -> X确实不是持有。

0

你或许应该阅读维基百科页面关于functional dependencies:前三行很可能不足以澄清你的疑问:

在关系数据库理论,一个函数依赖是一种约束来自数据库的关系中的两组属性之间。 给定一个关系R,R中的一组属性X被认为在功能上确定另一组属性Y,同样在R中(写为X→Y),并且只有在每个X值恰好与一个Y值相关;那么R据说满足函数依赖X→Y。

然而,在你的榜样X必须有不同的值,因为它是关键,而Y可以是任何价值,它恰好是永远10.

相关问题