Database 函数依赖的候选键?
关系R=(A,B,C,D,E)和函数依赖项F如下所示: F={A->BC,CD->E,B->D,E->A} E、 BC和CD可以是候选密钥,但B不能Database 函数依赖的候选键?,database,database-design,relational-database,database-schema,functional-dependencies,Database,Database Design,Relational Database,Database Schema,Functional Dependencies,关系R=(A,B,C,D,E)和函数依赖项F如下所示: F={A->BC,CD->E,B->D,E->A} E、 BC和CD可以是候选密钥,但B不能 谁能告诉我这个事实是如何计算的?我在谷歌上搜索了它,但不能像我以前所知道的那样理解更多。通过计算一组给定属性的函数依赖关系的闭包,可以找到该属性的所有依赖属性。让我示范一下: A -> ABC -> ABCD -> ABCDE A决定了BC(给定)以及它本身(微不足道),因此A->ABC。添加B->D以获取ABC->ABCD。
谁能告诉我这个事实是如何计算的?我在谷歌上搜索了它,但不能像我以前所知道的那样理解更多。通过计算一组给定属性的函数依赖关系的闭包,可以找到该属性的所有依赖属性。让我示范一下:
A -> ABC -> ABCD -> ABCDE
A
决定了BC
(给定)以及它本身(微不足道),因此A->ABC
。添加B->D
以获取ABC->ABCD
。最后,添加CD->E
以获得ABCD->ABCDE
。我们停在这里是因为我们已经确定了整个关系,因此A
是一个候选键
您应该验证,从E
、BC
和CD
开始,您确实可以确定整个关系
从B
开始,我们得到:
B -> BD
就这样。关系的其余部分无法通过BD
确定,因此它不是候选键
更直观的方法是绘制函数依赖关系:
从任何一组属性开始,尝试按照箭头查找到每个其他属性的路径。只有从E
开始或同时访问C
和D
时,才能访问E
从
B
,您可以到达D
,但是如果没有C
,您就不能进入E
,这也排除了A
。所以B
不能作为候选键。那么它是如何从上面的图中计算出来的?请您在这里添加更多关于您建议的最短路径(即图)的信息?从给定的属性集开始,按照每个可用的箭头进行操作。如果你能到达所有其他节点,你就有了一个候选密钥。如果没有,那么就没有。它的意思是,如果你访问过C
和D
,你只能去E
。哦,我明白了,谢谢。我认为函数依赖项的第一段有一个输入错误,请检查!