1

我试图弄清楚 3NF 和 BCNF 之间的差异,我想我已经到了那里,但如果有人能提供帮助,那就太好了。

以下是第 3 范式中的一系列关系(从识别功能依赖关系中得到帮助,而这些关系又从 Connolly & Begg 的数据库系统中获取):

Client {clientNo(PK), clientName}
Owner {ownerNo(PK), ownerName}
Property {propertyNo (PK), propertyAddress, rent}
ClientRental {clientNo(PK), propertyNo(PK), rentStart, rentFinish, ownerNo(FK)}

每个房产只有一个所有者,客户可以租用这些房产。假设每个房产的租金是固定的。

所以我的问题是:这些也在 BCNF 中吗?

我的预感是 ClientRental 关系不是因为 PropertyNo->ownerNo。所以 PropertyNo 是函数依赖的决定因素,但它不是超键。

我在正确的球场附近吗?

4

1 回答 1

0

表达差异的简短、非正式的方式是,在 BCNF 中,每个函数依赖的每个“箭头”都是候选键中的一个“箭头”。对于在 3NF 中但不在 BCNF 中的关系,除了候选键之外,至少会有一个“箭头”。

3NF 表的维基百科条目不符合 BCNF

一个常见的误解是,您可以标准化为 2NF且不更高,然后标准化为 3NF且不更高,然后标准化为 BCNF且不更高。事实上,修复部分关键依赖关系以达到 2NF 通常会使您保留 5NF 中的所有关系。也就是说,您从 2NF 中的一个关系到 5NF 中的多个关系,而在其间没有停留在 BCNF。

于 2013-02-02T16:06:25.593 回答