证明无损或有损分解

问题描述 投票:0回答:1

我正在尝试解决有关证明给定分解是有损还是无损的问题

通过应用以下公式验证R(ABCDE)的以下分解中的哪一个是无损的或有损的测试无损连接属性。 F = {AB→C,C→E,B→D,E→A}是功能依赖项的集合在R上一世。 R(ABCDE)分解为R1(AB),R2(ADE)和R3(BCD)II。 R(ABCDE)分解为R1(BCD),R2(ACE)和R3(BD)

**

  • 我对解决方案的尝试:

**

仅当给定表之间具有公共属性并且公共属性是候选键/超级键时,分解才能是无损的。

在第一部分中,我们在R1中没有候选密钥,在R2中也没有候选密钥,因此我们可以将其称为有损分解吗?

[在第二部分中,C是R2的候选密钥,而B是R3的候选密钥,但是R1没有密钥,并且R2和R3没有共享公共属性,因此它也不是无损分解吗?

我的解释是否正确或还有其他标准?

normalization functional-dependencies database-relations lossless
1个回答
0
投票
来确定R(ABCDE)的以下分解中的哪一个是无损或有损的。

指示很明确,“通过对无损连接属性进行测试”。大概这就是一个重要的定理,它表示当/ iff ...时,二进制连接/分解是无损的。但是您不必提及它。看你的课本。 (请注意,Wikipedia的文章有问题。)您确实说过“如果没有则只能是无损的”,但这只是说有必要,这是一个方向上的“如果”,但是您还没有说什么也足够,那就是另一个方向上的“ if”(即您所需要的方向),因此您的推理不正确-除非您只是使用较差的语言并且您的意思是“ iff”。但是无论如何,您的语言尚不清楚,您需要说公共列构成至少一个表的超键。另外,还需要告诉您F是封面,然后告诉我们这是封面,否则您/我们找不到CK。另一个问题是“我们没有CK”(每个模式都有一个CK,因为所有列的集合都构成一个超键),并且总是有琐碎的FD。但是您不必知道,您只需要使用定义,定理和算法来查找CK。另外,您还需要找到给定的封盖闭合的所有FD,然后使用其中具有其所有属性的FD计算每个组件的新CK,然后将其保存。还有另一个定理说,闭包的FD恰好是组件中容纳的FD。可能存在给定FD所隐含的FD,并且即使给定FD没有其所有属性,它们也都包含在组件中。但是您不必知道,您只需要通过使用定义,定理和算法来证明您拥有FK,就可以证明您拥有CK。从FD,覆盖,闭合和CK的定理,算法和定义中可以很清楚地看出来,但是您需要准确地记住定义和定理,然后精确而乏味地应用它们。这就是我刚刚做的。

© www.soinside.com 2019 - 2024. All rights reserved.