【问题标题】:Synthesis-algorithm for 3NF3NF 的综合算法
【发布时间】:2015-08-21 16:07:55
【问题描述】:

我正在学习数据库,显然我必须处理范式。现在我想出了这个非常简单的例子;给定一个关系 R 与属性 {A, B, C} 和函数依赖关系 {A,B -> C , A -> C} .

这个关系的候选键 K 必须是 {A, B} (不讨论如何找到候选键)。该关系不在 2NF 中,因为非键属性 C 仅依赖于 A,它是 K 的真子集。 (我假设给出了 1NF,即使我不知道属性的域)。

现在要达到 3NF,我必须使用综合算法,所以我首先找到函数依赖项的规范集,即 {A -> C}(也不会到如何找到规范集)。现在为了获得 3NF 中的关系,我形成了新的关系 R1,其中包含属性 {A,C}。由于 K 不包含在 R1 我必须建立一个新的关系 R2 包含一个候选键(这里 K)。

这导致了 R1 (A,C)R2 (A,B) 这两个关系,我已经完成了,因为 R1R2 在 3NF 中。

我的工作正确吗?还有什么我需要注意的吗?非常感谢您的任何建议!

编辑:正如评论指出的那样,我的示例是错误的。不过,如果关系略有不同,那就是正确的,即 R (A,B,C,D) 与 FD 的 {A,B -> C, B -> D} .. 我不会再次检查其余部分,因为即使示例错误,我也认为我正确地执行了算法。

【问题讨论】:

  • 您的示例说明不正确。 C 要么依赖于 A 和 B,要么只依赖于 A。
  • 为什么?在找到规范集之前,很容易想出类似的东西。
  • 再想一想你是对的.. 但是我会看看 R(A,B,C,D) 与 FD 的关系 (A,B -> C, B - > D) - 非常感谢您的评论!!我会假设算法的其余部分执行正常。
  • @LorenzoGatti C 依赖于 A 和 B 并且它只依赖于 A。

标签: database database-normalization functional-dependencies 3nf


【解决方案1】:

给定一个具有属性 {A, B, C} 和函数依赖关系的关系 R {A,B -> C , A -> C}

明确说明您正在处理非平凡的 FD。 R also 有 FD A,B,C -> C,但它是微不足道的。始终明确说明您提供的 FD。例如,规范/最小封面或所有非平凡的 FD 或封面或只是您知道持有的一些 FD,尽管其他非平凡的也可能,无论是哪种情况。您可能永远不会做后者,因为通常您不会提供足够的信息来确定 CK 并进一步规范化。

该关系不在 2NF 中,因为非关键属性 C 仅依赖于作为 K 的真子集的 A。

去掉“唯一”。它使陈述不清楚,如果您的意思是 C 不依赖于 A,B 那么您就错了。

(我假设给出了 1NF,即使我不知道属性的域)。

域是不相关的。我想您担心域可能涉及“重复组”和/或“非原子值”。这是基于接受的非智慧。对更高范式的规范化与域无关。

根据定义,关系的元组属性具有来自域的 a 值。回复:“重复组”:它不能有任何,这是来自前关系数据库的东西。关于“非原子”:Codd 将关系定义为能够具有关系值域。他指出,在关系上下文中,一个值可以被认为(在日常意义上)非原子的唯一方法是关系值。即,他在关系上下文中将“原子”定义为不是关系。他将“规范化”定义为没有关系值(即非原子)属性。 (所有这些都在1970 中。)后来他将“1NF”定义为标准化。并开发了“2NF”和“3NF”。然后(在肯特和博伊斯之后)“BCNF”。所以他对这些术语的使用假设没有关系值域。

但是归一化理论是独立于域提出的。即,它被认为只是每个有问题的 JD 的分解。所以“1NF”也被用来作为一种关系。并且其他“NF”被使用而不考虑域。 (尽管如果存在关系值域,那么可能存在不同于但类似于 FD 和 JD 的约束,它们会导致不同但相似的异常,并且即使在根据所有有问题的 JD 分解之后也会导致组件中的约束和异常。)无论是否关系具有关系值域,无论“1NF”或“规范化”或“规范化”是什么意思,您为将有问题的 JD 从有问题的 FD 中删除到您所称的 3NF 所遵循的分解过程都与域无关.

正如评论指出我的例子是错误的。

那条评论:

您的示例说明不正确。要么 C 依赖于 A 和 B,要么它仅依赖于 A。 ——洛伦佐·加蒂

评论有误。 C 依赖于 A 和 B 并且 它仅依赖于 A。因为 A -> C 意味着 A,B -> C。

【讨论】:

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