Database design 依赖项保留:为什么分解依赖项保留?

Database design 依赖项保留:为什么分解依赖项保留?,database-design,functional-dependencies,decomposition,database-theory,Database Design,Functional Dependencies,Decomposition,Database Theory,在我们的数据库课程中,我们的讲师将此作为保持依赖关系分解的示例: R(A, B, C) with F = { A->B, B->C } decomposed into R1(A, B) and R2(A, C) 为了使分解保持依赖关系,数据库系统必须能够在一个分解关系中局部检查原始F的每个函数依赖关系,而不必执行任何连接 在这里,我的理解是,函数依赖项B->C丢失了,因为它不能在R1或R2中本地检查。但是我的导师声称它是由及物性保存的,因为A->C 有人能解释一下为什么会这样吗 为

在我们的数据库课程中,我们的讲师将此作为保持依赖关系分解的示例:

R(A, B, C) with F = { A->B, B->C } decomposed into R1(A, B) and R2(A, C)
为了使分解保持依赖关系,数据库系统必须能够在一个分解关系中局部检查原始F的每个函数依赖关系,而不必执行任何连接

在这里,我的理解是,函数依赖项B->C丢失了,因为它不能在R1或R2中本地检查。但是我的导师声称它是由及物性保存的,因为A->C

有人能解释一下为什么会这样吗

为了使分解保持依赖关系,数据库系统必须能够在一个分解关系中局部检查原始F的每个函数依赖关系,而不必执行任何连接

没有

根据定义,给定一个覆盖函数依赖项F的模式R,分解是保持依赖项的当且仅当依赖项F在分解关系上的投影的并集是F的覆盖项,其中,F在子模式上的投影由F+中的所有依赖项构成,而不是由F中的所有依赖项构成,这些依赖项的属性都包含在子模式中

例如,在一个覆盖函数依赖项F={a的模式RA,B,C中→ B、 B→ C、 C→ A} ,通过分解R1A,B和R2B,C,F在R1上的投影包含{A→ B、 B→ A} ,并且F在R2上的投影包含{B→ C、 C→ B} 。这是因为B→ A和C→ B可以从F的其他依赖项中导出。在这种情况下,当我们对投影进行并集时,我们得到一组依赖项,C也可以从中得到→ 可以导出一个函数,因此此分解保留了依赖关系

在你的例子中,F在R1上的投影给出{A→ B} ,而F在R2上的投影给出{A→ C} 。通过将两个集合并集,我们得到:

 {A → B, A → C}

从这个集合中我们不能导出B→ C、 因此,分解不会保留依赖项。

有一个完整的堆栈站点专门用于数据库问题。请查看:谢谢!但公平地说,我已经浏览了许多与DB相关的帖子;他们就这个问题进行了审议。不过,我想我可能会在DBA上获得更多点击率。我有这些FD是什么意思?这些都是持有的FD?-不可能。这些都是非平凡的FD吗?-不可能。这是一些持有的FD?-问题无法回答。了解什么是封面&应用特定定义/规则/算法的确切条件是什么。为了确定CKs和NFs,我们必须获得构成封面的FD。有时是最小/不可约覆盖。必须给出所有属性的集合。你说F是一组特定的FD。那套和这个问题有什么关系?反问的请看我的第一条评论&Renzo的回答。我也真的不知道你对我有这些FDs说了些什么。谁说的?当然不是我。我想我问题的意思非常清楚,不值得你吹毛求疵。