【发布时间】:2013-01-12 14:08:56
【问题描述】:
我试图弄清楚 3NF 和 BCNF 之间的区别,我想我已经到了那里,但如果有人能提供帮助,那就太好了。
以下是第 3 范式中的一系列关系(从Identifying Functional Dependencies 窃取,而后者又从 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 是函数依赖的决定因素,但它不是超键。
我在正确的球场附近吗?
【问题讨论】:
-
ClientRental 不在 3NF 中,因为存在传递依赖。如果你正确地解决了这个问题,我想你会在 6NF 中有两个表,在 5NF 中有两个。
-
哦,是的,当然,因为 ownerNo 通过 propertyNo 传递依赖于密钥。对?非常感谢。虽然现在我仍然没有一个不在 BCNF 中的 3NF 表的好例子。
标签: database database-normalization functional-dependencies 3nf bcnf