我正在学习数据库,显然我必须处理范式。现在我想出了这个非常简单的例子;给定具有属性{A, B, C}和函数依赖关系的关系R {A,B -> C , A -> C}。
此关系的候选键K必须是{A, B}(不讨论如何找到候选键)。该关系不在 2NF 中,因为非关键属性C仅取决于A,它是K的真子集。(我假设给出了 1NF,即使我不知道属性的域)。
现在要达到 3NF,我将不得不使用综合算法,所以我首先找到函数依赖项的规范集,即{A -> C}(也不涉及如何找到规范集)。现在为了获得 3NF 中的关系,我形成了包含属性{A,C}的新关系R1。由于K不包含在R1中,我必须创建一个新的关系R2,其中包含一个候选键(此处为K)。
这导致了两个关系R1 (A,C)和R2 (A,B),我完成了,因为R1和R2都在 3NF 中。
我的工作正确吗?还有什么我需要注意的吗?非常感谢您的任何建议!
编辑:正如评论指出的那样,我的例子是错误的。稍微不同的关系是正确的,即R (A,B,C,D)与 FD 的 {A,B -> C, B -> D} .. 我不会再经历其余的,因为我即使示例是错误的,我也认为我正确地执行了算法。