【发布时间】: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) 这两个关系,我已经完成了,因为 R1和 R2 在 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