【问题标题】:Fourth Normal Form第四范式
【发布时间】:2011-09-02 10:19:12
【问题描述】:

第四范式描述了一种在 BCNF 中但也不包含非平凡多值依赖关系的关系。

我正在努力理解什么是微不足道的多值依赖和非微不足道的多值依赖以及它们之间的区别。如何识别后者以执行 4NF?

编辑:

我主要是想知道平凡依赖和非平凡依赖的区别是什么?

【问题讨论】:

  • “第四范式描述了一种在 BCNF 中的关系,但它也不包含非平凡的多值依赖关系。”不,它没有。

标签: normalization database-normalization


【解决方案1】:

维基百科上有一个很好的例子:Fourth normal form。有什么具体的部分你不明白吗?

您可能还想查看Multivalued dependency

更新: 那么琐碎依赖和非琐碎依赖有什么区别?

这取决于我们是在谈论函数依赖还是多值依赖。

一个微不足道的函数依赖 X -> Y 是其中 YX 的子集。因为X -> Y 的意思是“Y 可以从X 中确定”,所以对于任何XY 都是如此,其中YX 的属性组成;显然,如果我们知道X,我们可以确定Y 是否只包含来自X 的内容!

一个简单的多值依赖X ->-> Y 是其中Y 包含X 之外的所有属性。请注意,它还可以包含 X 中的属性。这种多值依赖也适用于所有XY,因此是微不足道的。这来自多值依赖的定义:

用 (x,y,z) 表示具有 XYR − X − Y 的值 共同等于 x, y, z, 相应地,那么每当 元组 (a,b,c) 和 (a,d,e) 存在于 r 中, 元组 (a,b,e) 和 (a,d,c) 应该 也存在于r中。

在一个平凡的多值依赖中,集合 z = R - X - Y 是空的,所以要求减少到(0 是空集):

元组 (a,b,0) 和 (a,d,0) 存在于 r 中, 元组 (a,b,0) 和 (a,d,0) 应该 也存在于r中。

这显然是正确的。

【讨论】:

  • BCNF是否意味着表中的每个属性都可以唯一标识一个元组?
  • @user559142: BCNF(实际上是 2NF 和更高)要求表中没有非素数属性,非素数意味着属性 part of a候选键,但不一定是单独的候选键。所以不,不是每个属性都可以唯一标识一个元组,但是它必须是一个子集的一部分
  • 啊太棒了!我现在明白了!那么琐碎依赖和非琐碎依赖有什么区别呢?
  • @veredesmarald:非主属性是不属于任何候选键的属性。您似乎在说每个具有非主要属性的表都在 1NF 中,但不在 2NF 中。你说的是真的吗?
  • @Catcall:对不起,你是对的。它应该是“要求没有非主要属性在功能上不依赖于每个候选键”。我不知道最后一个(重要的!)位发生了什么。我不确定当我写那条评论时我在想什么,这没什么意义。 :\
【解决方案2】:

X->Y 是 Trival 当且仅当右手边是左手边的子集。 如果 Y 不包含在 X 中,则 X->Y 是非平凡的。

【讨论】:

    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 2015-04-22
    • 2013-12-13
    • 1970-01-01
    • 2017-11-23
    • 2021-11-21
    • 2012-11-18
    • 2012-02-25
    相关资源
    最近更新 更多