最高范式

Highest normal form

我的考试答案关键和我的答案(以及在线工具的答案)对于典型的“确定关系的最高范式”问题不同,我想知道为什么。

试题:对于给定的关系 R,模式 H = {A, B, C, D, E} 和函数依赖 F = {{B, C} - > {D, E}, {C, D} -> {B, E}, {D} -> {C}, {E} -> {B}}。确定R的最高范式。假设它在1NF中。

我的回答:

我已经有1NF了。接下来我检查 2NF。

为此,我需要候选键。 “A”不存在任何依赖关系,因此它必须在键中。我还可以添加“D”,从 {D} -> {C} 我有 {A, C, D}。然后从 {C, D} -> {B, E} 我有所有 {A, B, C, D, E},所以 {A, D} 确实是一个候选键。我可以对 {A, B, C} 和 {A, C, E} 做同样的事情,所以我有候选键:{A, D}, {A, B, C}, {A, C, E}。

2NF 要求“非主属性不能在功能上依赖于任何候选键的任何真子集;非主属性不是关系的任何候选键的一部分”。但是我有 {B, C} -> {D, E},所以 E(非素数属性)依赖于 {B, C}({A, B, C} 的真子集),所以它不在2NF。因此它仅在 1NF 中。

考试答案:

关系在 3NF 中。另外 this handy tool 检查正常形式的结果告诉我它是 3NF。

我的问题:

这是 1NF 还是 3NF?我唯一的疑问是 {B, C} -> {D, E} 依赖。正如我在上面所写的,E 是非素数,但 {D, E} 作为一个整体包含 1 个素数和 1 个非素数属性。我在这里犯了什么错误吗?

假设F是R的函数依赖的覆盖,假设候选键是ADABCACE,你是正确的。所以所有的属性都是质数,没有依赖关系可以违反 3NF,关系是 3NF,因此它也是 2NF。