查找主键并规范化具有函数依赖关系的关系

Finding the Primary Key and Normalising a Relation with Functional Dependencies

我正在为我的数据库考试而学习,我意识到我的教授没有教规范化讲义的一部分,而是掩盖了它们,所以我一直在自学,这个例子没有解决方案笔记,我想知道我是否做对了:

给定关系 R = {A,B,C,D,E,F,G,H,I,J}

和功能依赖:

A,B -> C
A -> D,E
B -> F
F -> G,H
D -> I,J
  1. 确定主键
  2. 将 R 分解为 2NF,然后将其显示为 3NF。

所以,我得到的主键是 (A, B, D, F)

然后我尝试将它转换为 2NF,我得到了关系:

(ABC), (DIJ), (ADE), (BF), (FGH)

老实说,我不知道这是否正确,也不知道如何将其放入 3NF 中……或者我是否刚刚跳过 2NF 并已经将其放入 3NF 中。有帮助吗?

在我看来,您已经跳过了 NF2 并将关系直接归一化为 3NF :)

根据推理规则(传递性,例如A->D,E和D->I, J 因此 A->I,J) 它决定了所有其他属性。从这一点开始我们有:

  • FD1:A、B -> C
  • FD2:A -> D,E(部分)
  • FD3:B -> F(部分)
  • FD4: F -> G,H
  • FD5: D -> I,J

2NF(不允许部分依赖)

现在我们可以将关系分解为三个关系,将部分 FD 移动到单独的关系,但保留可能依赖于这些部分 FD 的其他 FD,例如 FD2 和 FD5。这会给我们以下结果:

  • R1(A,D,E,I,J) -- FD2, FD5 (传递)
  • R2(B,F,G,H) -- FD3 FD4 (传递)
  • R3(A,B,C) -- FD1

接下来,要实现 3NF,必须以与 NF2 相同的方式将传递依赖项移除到单独的关系中。反过来,这将导致您已经导出的一组关系。

祝你考试顺利!