Database design 以下函数依赖项中是否存在可传递依赖项

Database design 以下函数依赖项中是否存在可传递依赖项,database-design,database-normalization,transitive-dependency,Database Design,Database Normalization,Transitive Dependency,假设我们有以下函数依赖关系: A->B, B->C, C->B, and A->C 其中函数依赖项A->C是显式的,也就是说,从A到C不需要经过B a和C之间是否存在可传递依赖关系?如果我想用它来建立我的关系,并使关系满足第三范式,我会把它分成两个关系吗 A* B B* C 其中*表示主键,每行是关系的标题 或者将其保留为: A* B C 还满意3NF吗 明确地说,我的问题给出了函数依赖关系:A->B,B->C,C->B和A->C A->C是可传递依赖项,为什么不?

假设我们有以下函数依赖关系:

A->B, B->C, C->B, and A->C
其中函数依赖项A->C是显式的,也就是说,从A到C不需要经过B

a和C之间是否存在可传递依赖关系?如果我想用它来建立我的关系,并使关系满足第三范式,我会把它分成两个关系吗

A* B
B* C
其中*表示主键,每行是关系的标题

或者将其保留为:

A* B C
还满意3NF吗

明确地说,我的问题给出了函数依赖关系:A->B,B->C,C->B和A->C
A->C是可传递依赖项,为什么不?

A->C不是可传递依赖项。 A->B->C是可传递的依赖项


术语transitive只是指依赖项有多个部分。请注意,关系可能满足3NF,但仍具有可传递依赖项。但是,在这种情况下,为了满足3NF,您需要将A、B、C分解为至少两个关系,其中A、B和C都是候选键。

如果这是一个完整的依赖项列表,则存在A->B->C,因为:

A->B 不是B->A B->C 如果这不是一个完整的依赖项列表,那么我们不知道是否有B->a,因此我们不知道这个可传递依赖项是否成立

还有一个可传递的依赖项a->C->B

A->C是可传递依赖项吗?为什么/为什么不

一个可传递的依赖关系在3个属性之间,所以不是

要规范化与3NF的关系,需要将其拆分为2个关系

A*B B*C* ……或者

A*C B*C*
…其中*表示一个关键的主要或备用项。

我认为3NF表示没有可传递依赖项。不幸的是,3NF经常被解释为可传递依赖项,这可能会使它比需要的更难理解。国际海事组织卡洛·扎尼奥洛(Carlo Zaniolo)对3NF的解释更清晰、更令人满意,尽管它完全等同于Codd。对于R的每个非平凡FD,关系R是3NF iff,X->A,A X是R的超键,或b A是R的键属性。A->C是可传递FD。A->B->C不是FD;所以说它是可传递的是没有意义的。依赖项有多个部分,但不清楚。我猜它是想说一些事情,比如A->B->C有A->B&B->C部分。当存在X->s&s->Y¬ s->X时,X->Y是可传递的。假设A,B和C是属性&假设给定的FDs形成一个覆盖,那么应用阿姆斯特朗的公理,我们没有B->A,我们有A->B和B->C和非B->A&{A},{B}&{C}是不同的,所以A->C是可传递的。