简单的关系分解示例 - 信息不足?

时间:2018-03-13 14:23:39

标签: database relational-database database-normalization functional-dependencies

整个问题是:

  

关系R(A,B,C,D,E)与F = {A→B; A→C;考虑到函数依赖关系A→B,B,D→A}被分解。

     

这种分解无法保留的功能依赖是什么?

在我看来,我没有足够的数据来回答这个问题。首先,不知道哪些FD无法保存取决于我们使用的正常形式?其次,分解尚未完成;保存取决于我们使用哪种分解?

1 个答案:

答案 0 :(得分:0)

问题肯定是措辞不当。目前尚不清楚“从一开始就考虑功能依赖A→B的分解”是什么意思。我们可以合理地说“考虑FD的分解”引入了具有其属性的组件。我怀疑他们试图说,如果你将二进制分解为组件AB加上另一个,那么FD“无法通过这样的分解来保存”?

当我们无损分解时,我们真的意味着我们需要分解所有组件都小于原始组件的分解。没有组件是另一个组件的子集。因此AB以外的组件来自投影ACDE& BCDE。

看看剩余的FD:A→C; B,d→A。在每一个预测中,如果它可能是一个无损可连接的组成部分,那么其中一些FD将持有它,加上那些跟随阿姆斯特朗公理的那些。但是这两个FD中有一个在两个预测中都不能容纳,而问题告诉我们只有一个答案,因此FD必须是它。

(或者:有一个定理,如果公共属性是两个组件的超级密钥,则二进制分解是无损的。您应该能够使用它来显示哪些投影可以是AB的无损连接组件。然后,如果那么什么FD并没有被保留。)

  

首先,不知道哪个FD无法保存取决于我们正在使用的正常形式?

他们似乎试图询问某种性质的分解,因此产生的NF并不重要。

  

其次,分解未完成;保存取决于我们使用哪种分解?

他们告诉你某个FD“不能通过这样的分解来保存”。所以我们可以预期,只要我们有“这样的分解”,答案就不会“进一步依赖于我们使用的分解”。

(请注意,分解为2NF或3NF可能无法保留FD。但总有一种分解不会失败。)