【问题标题】:Skipping steps in Normalization?在规范化中跳过步骤?
【发布时间】:2015-09-25 15:52:24
【问题描述】:

只是好奇:是否有某种原因无法进行所有必要的规范化 一步?归一化最终不是功能依赖(FD)图的重绘吗?我们从一个 FD 图/图开始,我们希望得到一个图(顶点是属性,如果 b 是 a 上的 FD,则属性 a,b 之间有一条边)表示(编辑)BCNF 中的关系?

编辑:我的意思是:我们从一个 FD 图开始,它是一个图配对属性 a,b 当且仅当 b 是 A 上的 FD,即,我们将 a 和 b 与一条边连接,当且仅当 b=f(a) . 从这个图中,我们想要得到一个具有某些特征的图 (FD)_2,这些特征相当于已经完全归一化,即 (FD)_2 在 5NF 或 6NF 中,使用图和给定之间的图论关系正常形式。如果是这样,我们基本上是将一个图映射到另一个图。我们可以直接使用这种方法--drawing (FD)_2,作为 FD 的函数,来跳过规范化步骤吗?

【问题讨论】:

  • @philipxy: FD 图不是从属性集到自身的映射,连接两个属性 a,b iff b=f(a) ,即如果 b 是 a 上的 FD 吗?跨度>

标签: database-normalization functional-dependencies


【解决方案1】:

是:规范化可以通过重新排列(超)图来表征。不必通过按某种顺序遍历范式来完成。 (这只是一个常见的误解。)

从 1NF 到 6NF 的连续统上的范式是那些处理有问题的 FD(功能依赖)和 JD(连接依赖)的范式。可以对它们进行排序,以便如果关系值或变量满足形式,则它满足之前的形式,但不一定满足之后的形式。目前:1NF、2NF、3NF、EKNF、BCNF、4NF、ETNF、RFNF、SKNF、5NF aka PJ/NF、Overstrong PJ/NF、6NF。这种排序本身与分解为更高范式的关系值或变量无关。不必通过一系列的形式来分解。

范式只是不同的条件,它们具有有用的属性。而且,正规形式只是那些已经被发现的形式;很可能还有其他有用的属性需要区分。我们不通过它们来规范化现在。 ETNF 是 2012 年!

至于您的图形特征:

FD 有一个 set 属性作为行列式。这决定了另一个set。但是,由于一个决定另一个当且仅当一个决定每个集合都恰好包含另一个成员的一个成员,非正式但明确地我们也讨论一组属性确定一个属性。 FD {...} -> a 成立当且仅当 a = f(...)。 (可以有零个或多个决定性属性。)BCNF 是有问题的 FD 的最高范式,但有问题的 JD 有更高的范式。具有给定组件的 JD 保持关系,如果它始终是它们的连接。即它的含义/谓词可以表示为组件的AND。所以一个 FD {...} -> A 成立当且仅当一个 JD 成立对应于一个意义/谓词与连词 A = F(...)!一个MVD(多值依赖)对应于某个二进制JD。 5NF 意味着每一个持有的 JD 都“被密钥暗示”(一个技术术语)。

有些算法从 FD 开始直接分解为 2NF、直接分解为 3NF 和直接分解为 BCNF(具有各种其他属性,例如保存 FD)。见the Alice book。一个人可以简单地分解到 6NF,直到没有非平凡的 JD,而不考虑 FD。

(参见 C.J. Date 的Database Design and Relational Theory: Normal Forms and All That Jazz。)

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多