1

我有一个关于根据函数依赖关系确定关系是否处于第三范式的问题。

R = {A,B,C,D,E}
A -> B
BC -> E ED -> A

由此,我确定候选键为: {ACD},{BCD},{CDE}
维基百科说,如果对于每个函数依赖 X->Y,它满足以下要求中的至少一个,则关系是第 3 范式: 1. Y 是 X 的子集2. X 是一个超键 Y 是某个键 K 的 K 的子集

我的工作:A -> B因为 key满足 3,因为{BCD}满足3 ,因为.满足 3 。BC->E{CDE}CD -> A{ACD}

这是解释这些规则的正确方法吗?

4

1 回答 1

2

A -> B表示函数依赖。但是这些

R 1 = { A ,B}
R 2 = { B,C ,E}
R 3 = { E,D ,A}

表达关系。(我假设您的意思是我们将这些作为您从分解 R 中获得的关系。)

范式适用于关系;它们不适用于功能依赖。A -> B说“在 3NF 中”或“A 确定 B 在 3NF 中”没有任何意义。

所以 R 1 = { A ,B} 是一个关系。它不“因为键 {B,C,D} 而满足规则 3”。它不能,因为 {B,C,D} 不在 R 1中。

这些规则与分解 R 产生的关系的候选键有关,而不是与 R 本身的候选键有关。

之后 。. . 我看到我做了一个错误的假设。您正在尝试评估R,而不是分解它。在那种情况下,您的推理是正确的,并且 R 在 3NF 中。您还可以得出结论,R 属于 3NF,因为没有非质数属性。由于没有非主属性,每个 FD 的右侧必须是候选键的一部分。

但是 R 不在 BCNF 中。(或 4NF 或 5NF。)你能解决这个问题吗?

于 2011-03-14T03:12:21.227 回答