【问题标题】:Partial dependency部分依赖
【发布时间】:2017-12-09 03:11:13
【问题描述】:

假设我们有一个关系 R(A,B,C,D,E) 与候选键 {A,B} , {C,D} 并让 E 是一个非素数属性。

如果存在依赖 C->E 那么它是部分依赖,因为 E 依赖于候选键 {C,D} 的一部分

依赖BC->E是部分的吗?

【问题讨论】:

  • this answer 之后,C → E 不是部分依赖(而CD → E 是)。如果在关系中,除了C → E,还存在一个依赖BC → E,那么后者也是部分依赖,因为B可以从左侧部分中删除,而C → E依赖仍然成立。另一方面,如果C → E 不成立并且BC → E 成立(连同键所暗示的依赖关系),那么后者不是部分依赖关系(根据答案中引用的定义)。跨度>
  • CD -> E 不是部分依赖。 CD 是候选键,因此它可以唯一确定 E,即 CD->E ,现在 C->E 是部分的,因为非素数属性(E)取决于候选键的一部分。
  • “if”句与回答最后一个问题有关系吗?为什么会在那里?您是否想问如果 C->E 那么 BC->E 是否部分? (您是否意识到“部分”仅适用于持有的 FD,即只有持有的 FD 才能成为 partila?)在您的最后一句话中,您是想说,如果 BC->E 成立,它是部分的吗?因为你没有说那些话。
  • @Renzo 根据我的回答 1。只要 {} 不能确定 E 2,C → E 就不是部分的。如果 C → E 成立,那么 BC → E 必须成立并且是部分的。 3. 如果 C → E 不成立,那么只要 B → E & {} → E 不成立,BC → E 就不是偏的。该死的那些滑溜溜的ifs。但我当然会同意您评论的声音版本略有不同。

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


【解决方案1】:

如果存在依赖 C->E 那么它是部分依赖,因为 E 依赖于候选键 {C,D} 的一部分

那个“as”是不健全的。它不符合"partial functional dependency" 的定义。我们需要准确地记住和应用定义。 (您使用的是哪些已发表的学术参考资料?)

FD X → Y 是局部的,当它成立并且 X 的某个适当/较小的子集也确定 Y。如果所有 X 属性都在关系中,则当 X 的某个适当/较小的子集也确定 Y 时,FD X → Y 是局部的. (因为阿姆斯特朗的公理说子集 FD 隐含了 X FD。)

这里,当 {} → E 时,FD C → E 是部分的。(即,当所有行具有相同的 E 值时。)阿姆斯特朗的公理说某些其他 FD 也成立,因为 AB 和 CD 是键。持有的组合 FD 不能使 E 成为素数。但事实证明,我们仍然无法知道 {} → E 是否成立。所以如果 C → E 那么我们不能知道 C 是否部分决定了 E。

依赖BC->E是部分的吗?

当 BC 的某个适当/较小的子集确定 E 时,这里 FD BC → E 是部分的。即当 B → E、C → E 或 {} → E 时。事实证明,我们不知道这四个中是否有任何一个FD 持有。所以我们不能知道是否BC→E,更不用说是否偏了。虽然如果 B → E 或 C → E 则 FD BC → E 是部分的。 (因为 B 和 C 是 BC 的正确/较小的子集。)

(通常我们知道持有的 FD 的覆盖,它确定所有持有的 FD,它确定 CK 和非素数属性。然后因为我们知道所有持有的 FD,我们可以确定哪些是部分的. CK 与 FD 是否是部分无关。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2018-03-02
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多