首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多值依赖冲突?

多值依赖冲突?
EN

Stack Overflow用户
提问于 2011-11-01 16:03:44
回答 3查看 945关注 0票数 1

我对mvd冲突感到困惑,只是我找不出任何违反mvd的东西,例如有A、B、C三列,每行是一个元组

A、B、C

a2 b2 c1

a1 b1 c2

a1 b1 c3

a2 b3 c1

B->>C和B->>A吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2011-11-04 22:25:51

MVD,就像FD一样,是一条规则。它是否适用于您的业务案例,您需要检查需求和/或规格才能知道。

你不能通过查看样本数据就知道它是否适用(这也适用于FD)。

查看样本数据只能告诉你,“如果规则适用,那么这个数据将是有效/无效的”,或者“如果这个数据必须是有效的,那么某些特定的MVD规则肯定不适用”。

现在,这样的MVD规则到底说明了什么?

首先,我们来看看FD到底说明了什么。FD规定,对于某一组属性s,值的某个特定组合不能与FD右侧的属性的不同值的一个以上的组合相关联。

A->B实际上意味着对于所有属性值对(a1,b1)和(a2,b2),它持有a1=a2 ===> b1=b2。

MVD是FD的推广,因为它不规定单个B值必须与A值相关联/由A值确定,而是规定B值的集合必须与A值相关联/由A值确定。

(警告:这里从A/B切换到B/C !)

在您的示例中,b2与集合{c1}“关联”,值b1与集合{c2,c3}“关联”。现在,如果MVD B->>C确实适用,那么应该不可能在您的表中出现行a4,b1,c2,除非行a4,b1,c3也同时出现。同样,如果您有这两个额外的行,并且您添加了a1、b1、c4,这将把c4“添加”到由值b1“多重确定”的值集合中,因此,除非您还添加了a4、b1、c4,否则您的MVD将被违反。

票数 4
EN

Stack Overflow用户

发布于 2011-11-04 11:19:20

如果您在b1的某一行上将a1的值更改为其他值,则会违反MVD。

A、B、C

a2 b2 c1

a1 b1 c2

a3 b1 c3

a2 b3 c1

如果B ->> A和B->> C,那么对于给定值B,行应该由A和C的不同值的叉积形成。换句话说,A和C的不同值的每个排列都将被表示。

如果您需要b1来确定a1/a3和c2/c3,那么您的表应该如下所示:

A、B、C

a2 b2 c1

a1 b1 c2

a1 b1 c3

a3 b1 c2

a3 b1 c3

a2 b3 c1

但我认为您的示例中没有足够的信息来表示B->>A和B->>C。也有可能A->>B和A->>C,或者C->>A和C->>B。

票数 2
EN

Stack Overflow用户

发布于 2011-11-10 20:45:59

这是关于mvd违规还是4NF违规?你查过http://en.wikipedia.org/wiki/Multivalued_dependency了吗

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7963832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档