以下是第三范式的一系列关系(来自Connolly & Begg's Database Systems):
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 是函数依赖关系中的决定因素,但它不是超级键?
表达差异的简短、非正式的方式是,在 BCNF 中,每个函数依赖项的每个“箭头”都是候选键外的“箭头”。 对于 3NF 中但不在 BCNF 中的关系,除了候选键之外,至少还会有一个“箭头”。
一个常见的误解是,您可以标准化为 2NF 且不更高,然后标准化为 3NF 且不更高,然后标准化为 BCNF 且不更高。事实上,修复部分关键依赖关系以达到 2NF 通常会让您得到 5NF 中的所有关系。也就是说,您从 2NF 中的一种关系转变为 5NF 中的多种关系,而中间没有停留在 BCNF 处。