我遇到了如何确定功能依赖性的问题。
我们说我们有一张桌子
A B C
1 2 2
1 3 2
1 4 2
2 5 2
如何确定该表外的功能依赖性?根据一些同学的结果应该是
A->C
CB->A
AB->C
AC->B
但遗憾的是我不知道如何解决这个问题。有人可以帮我一点吗?
答案 0 :(得分:0)
如何检查单一功能依赖
要检查给定数据的函数依赖 X1,X2,...,Xn→Y ,您应该:
让我们考虑你的例子并检查功能依赖 A→C 。删除重复行之前的第一个投影:
A C
1 2
1 2
1 2
2 2
实际首次投影:
A C
1 2
2 2
第二次投影:
A
1
2
投影中的行数相同,因此 A→C 适用于此数据。
让我们考虑另一个例子: CB→A 。第一个投影与原始表相同(没有删除列,也没有找到重复的行)。第二个预测是:
A B
1 2
1 3
1 4
2 5
它包含与第一行相同的行数,因此 CB→A 也成立。
最后一个例子: AC→B 。第一个投影与前面的例子相同。第二个是:
A C
1 2
2 2
糟糕,行数少于第一个投影,因此 AC→B 不适用于此数据。
如何查找所有功能依赖
查找包含给定数据的所有功能依赖项:
让我们考虑一下这个例子的部分表:
4 ABC
4 AB
2 AC
2 A
从这个部分表中我们可以看到 AB→C 和 A→C 都成立。
您需要完整的表来查找数据的所有功能依赖项。
<强>备注强>
您是否注意到针对给定数据立场的重复功能依赖性?样本数据可以证明功能依赖性是无效的。但是,从所有可能的数据集的角度来看,对于给定数据的功能依赖性仍然是无效的。