在给定关系和 FD 的情况下找到一组属性的闭包

Posted

技术标签:

【中文标题】在给定关系和 FD 的情况下找到一组属性的闭包【英文标题】:Find the closures of a set of attributes given a relation and FDs 【发布时间】:2016-07-07 03:59:09 【问题描述】:

我有以下关系:

R = BCDEFGHI

以及以下 FD

C -> D
E -> D
EF -> G
EG -> F
FG -> E
FH -> C
H -> B

我被要求找到以下一组属性的闭包:

    BC

    BDEFG

    CEFG

    EFG

    EFGH

我的尝试

    BC+ = BC.

    使用 FD C -> D,我们有 DC+ = BCD,我们完成了。

    BDEFG+ = BDEFG.

    我们完成了。

    CEFG+ = CEFG.

    使用 FD C -> D,然后使用 CEFG+ = CEFGD,我们就完成了。

    EFG+ = EFG.

    使用 FD E -> D,然后使用 EFG+ = EFGD,我们就完成了。

    EFGH+ = EFGH.

    使用 FD E -> D,然后使用 EFGH+ = EFGHD

    使用 FD FH -> C,然后使用 EFGH+ = EFGHDC

    使用 FD H -> B,然后使用 EFGH+ = EFGHDCB,我们就完成了。

由于我对这些主题很陌生,我不确定我所做的是否正确。我会很感激你的一些反馈!谢谢!

【问题讨论】:

【参考方案1】:

看起来不错。 (假设您正确地执行了您未提及的步骤,即决定重新处理您未提及的 FD 并重新停止。)

(不要说闭包等于某物,而实际上它不是。为算法的累加器使用一些名称,例如“1. Let F = BC. Using ... then let F = BCE; Done so BC+ = F = BCE”。或写类似“1. 找到 BC+:使用 ... 然后 BC+ >= BCE;完成 BC+ = BCE”。)

【讨论】:

以上是关于在给定关系和 FD 的情况下找到一组属性的闭包的主要内容,如果未能解决你的问题,请参考以下文章

深入理解闭包中的委托

在不调用属性的情况下获取休眠惰性关系 n+1 - Kotlin

CoreData 在一对多关系中编辑一个属性

找出关系中的函数依赖

lumen 常用辅助函数

2NF具有传递依赖?