2012-05-20 47 views
2

我正在学习数据库规范化和加入依赖关系以及5NF。我很难过。任何人都可以给我一些多值依赖规则的实际例子:MVD3的实际例子:(传递性)如果X↠Y和Y↠Z,那么X↠(Z-Y)

MVD3 :(传递性)如果X↠Y和Y↠Z,则X↠(Z - Y)。

+1

一个与MVD的困难往往是寻找合理的例子。 –

+0

查看这篇30岁的文章,通过示例解释正常形式:http://www.bkent.net/Doc/simple5.htm(*“关系数据库理论中五种范式的简单指南”*) – MicSim

回答

1

在所有数据属性(列/类型/ ...)在某种意义上都是“原子”的假设下,开发了功能依赖/归一化理论以及直至并包括BCNF的正常形式。这种“某种意义”到目前为止一直被废弃,但基本上归结为“表格中的单个单元格价值本身不具备多重价值”的概念。想一下,一个国际标准图书编号的文本CSV列表,一个表格出现在表格中的一个单元格中的值(真正的嵌套表格),...

现在想象一个课程,教授和学习书籍作为课程的例子材料。想象一下,所有这些模拟在一个单列的三列表中,其中说“教授(P)教课程(C)并使用书(B)作为课程材料。”如果任何给定的课程(Cn)可以有多于一本书(B),并且任何教授(Pn)可以有超过一门课程(C),并且可以有多于一位教授(P)教授任何给定的过程(Cn),那么这个表格显然是全部关键的(关键是全部属性{P,C,B})。

这意味着该表格满足BCNF。

但现在想象一下,有一条规则可以规定:“任何给定课程(Cn)所用书籍的集合必须相同,无论哪位教授教授它。”

在未来的日子,当标准化的开发是为了在它现在俗称的形式,这是不允许有表列(关系属性)是他们自己的表(关系)。 (因为这样的设计被认为违反了1NF,这个概念现在被认为是可疑的)。

想象一下,我们确实允许将关系属性建模为类型关系。然后,我们可以对我们的3列表(/关系)建模如下:“教授(P)教授课程(C)并使用课本集(SB)作为课程材料。”。属性SB将不再是一个ISBN编号,如同前面的和更明显的设计,但它将是一个(可能是一元的)保存整组ISBN号码。如果我们这样画我们的设计,然后我们考虑我们的规则,即“所有教授使用同一套课程的同一套书”,那么我们看到,现在这个规则可以表示为从(C)到(SB)的FD, !这意味着我们手中有一个更低的NF违规!

4和5 NF已经出现了这样的问题(其中单个属性值-courseID(C)的外观的 - 使得用于行众多(多(B的外观的要求)ISBN号)被公认比较早,但是不被认为是当前最好的(RVA的解决方案),被认为是一个有效的。因此,4和5 NF创建“新的和更正常的形式”,在当时存在2,3和BC NF的定义已经足以处理手头的情况,只要RVA被认为是一种有效的设计方法。

为了支持这一说法,让我们看看如何去除NF违反我们的{P,C,SB}设计通过FD C-> SB:

我们将表分割成两个单独的表{P,C}和{C,SB}连键{P,C}和{C} repsectively。两个表都满足BCNF。

但是我们仍然有这个SB属性,其中包含一个集合的ISBN编号。处理这个问题可以通过应用诸如“UNGROUPING”之类的技术来完成。将这个应用于我们的{C,SB}表将得到一个{C,B}表,其中B是ISBN书号(或者您喜欢在数据库中使用的任何标识符),并且表的关键字是{C ,B}。如果我们消除了4/5 NF违规,这与我们得到的设计完全相同!

你可能也想看看Multivalue Dependency violation?

相关问题