我正在努力思考如何证明 3NF。我实际上有答案,但如果有人知道这一点足以让我理解它,我将非常感激。好的,就这样:
- 如果根据定义 2,R 在 3NF 中,根据定义 1,R 必须在 3NF 中。回想一下,如果根据定义 1,R 在 3NF 中,则必须满足以下两个条件。
i) 对于 R,我们在非键属性和通过其他非键属性的键之间没有任何传递函数依赖关系。
ii) 对于 R,我们在非键属性和键之间没有任何部分函数依赖关系。
假设 R 不满足 (i)。那么,我们必须有一个传递的FD:X→A,A→B,其中X是键,A和B是非键属性。但是根据定义 2,R 没有这种类型的 FD。(也就是说,A 必须是主属性或超级键。)矛盾。所以 R 必须满足 (i)。
假设 R 不满足 (ii)。那么,我们必须有一个键 X (S ⊂ X) 的子集 S,使得存在一个 S → A 的非键属性 A。但是,根据定义 2,S 必须是一个超键。矛盾。所以 R 必须满足 (ii)。因此,根据定义 1,R 在 3NF 中。
- 如果根据定义 1,R 在 3NF 中,根据定义 2,R 必须在 3NF 中。
 假设根据定义 2,R 不在 3NF 中。那么,我们必须有一个 FD:X → A 使得 X 不是超键且 A 不是素数属性。考虑 R 的一个键 X'。我们必须有 X'→X→A。它是非键属性A和键X'之间通过X的传递FD。如果X是非键属性,则根据定义1,R不在3NF中。矛盾。如果 X 出现在 X' 中,我们有一个部分 FD。所以 R 不在 2NF 中,这与定义 1 相矛盾。