【发布时间】:2019-01-06 08:19:38
【问题描述】:
我试图弄清楚如何查看分解是否保留了依赖关系。关系是:R(ABCDEF)并且有以下FD。 AB -> CE,C -> EB,E -> D,C -> D. 然后我们将关系拆分为: R1(BF)、R2(ACB) 和 R3(CDE)。这种依赖是否保留?
我的印象是,要计算这一点,您需要对 FD 的所有左侧进行闭包。这给了:
AB+ = ABCEBD 其中包括 AB -> CE
C+ = CEBD,包括 FD's
E+ = ED 其中包括 E->D
所以在我的世界里,这是依赖保留。然而,根据标记,答案是它不是。我做错了什么和/或误解了这个概念?
为了澄清,我确实理解某些依赖项并不存在于每个分解的关系中。例如 AB -> E 因为我们找不到包含这三个的关系。但是,我认为由于 AB 的关闭仍然包含 E,因此无论如何都将被视为保留依赖关系。这是我出错的地方吗?对此概念的解释(我的教科书非常简短)将不胜感激。
【问题讨论】:
-
您似乎不明白,当某些 FD 成立时,所有可通过 Armstrong 公理推导的 FD 都成立,并且要保留分解,它必须保留所有这些,而不仅仅是您的那些开始。此外,您需要知道 所有 持有的 FD 以说明它们是否都被保留,因此仅知道给定 FD 持有是不够的,它们必须形成一个掩护。等等 PS 你的教科书名称和版本是什么?除非您告诉我们您的整个过程,否则我们不知道“您哪里出错了”,所以请给它,不要要求我们重写教科书。
标签: database functional-dependencies