在FD中,我不明白以下内容:X-> Y,只要Y是相同的,X怎么会不同?FD X-> Y,各种X无关紧要?
X Y
-- --
1 10
2 10
3 10
有人告诉我,这仍然是X-> Y,而且它只在Y改变时才起作用。我不明白这一点..
在FD中,我不明白以下内容:X-> Y,只要Y是相同的,X怎么会不同?FD X-> Y,各种X无关紧要?
X Y
-- --
1 10
2 10
3 10
有人告诉我,这仍然是X-> Y,而且它只在Y改变时才起作用。我不明白这一点..
当关系“是函数”时,函数依赖发生在关系中。在形式上,这意味着如果您有像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
确实不是持有。
你或许应该阅读维基百科页面关于functional dependencies:前三行很可能不足以澄清你的疑问:
在关系数据库理论,一个函数依赖是一种约束来自数据库的关系中的两组属性之间。 给定一个关系R,R中的一组属性X被认为在功能上确定另一组属性Y,同样在R中(写为X→Y),并且只有在每个X值恰好与一个Y值相关;那么R据说满足函数依赖X→Y。
然而,在你的榜样X
必须有不同的值,因为它是关键,而Y
可以是任何价值,它恰好是永远10.