【发布时间】:2011-08-12 00:09:08
【问题描述】:
我有以下第一范式 (1NF) 的模式 - 即所有单元格都包含原子值:
ClientRental (clientNo, propertyNo, clientName, propertyAddress, rent,
rentStart, rentFinish, ownerNo, ownerName)
一般来说,客户可以从出租代理处租用许多房产。每个财产都有一个所有者。对于熟悉本书的读者,这是从 Connolly & Begg 的 Database Systems 中摘录的一个示例。
我正在尝试识别功能依赖 -> 候选键、部分依赖和传递依赖等
我正在关注一本教科书,但其中的建议解释得不太清楚。有人可以向我解释我的建议是否正确:
FD1 -> clientNo -> clientName
FD2 -> propertyNo -> propertyAddress, rent, ownerNo, ownerName
FD3 -> ownerNo -> ownerName
我确实错过了更多的功能依赖项,但我缺乏经验使我无法识别它们。显然我无法确定部分依赖关系,因为我还没有为上述关系/模式分配主键。
有人可以帮我识别其他功能依赖...我也不清楚是什么决定了传递依赖...
如果有任何需要进一步说明的地方,请告诉我。
编辑 3NF:
我的 3NF 关系:
Client {clientNo(PK), clientName}
Owner {ownerNo(PK), ownerName}
Property {propertyNo (PK), propertyAddress, rent}
ClientRental {clientNo(PK), propertyNo(PK), rentStart, rentFinish, ownerNo(FK)}
【问题讨论】:
-
1NF 中的关系仍然必须有一个键。 ClientRental 的关键是什么?
-
关键是clientNo & propertyNo
-
将 ownerNo 作为 ClientRental 的一个属性实际上没有任何意义。该表的键是 {clientNo, propertyNo}。非正式地,这意味着所有者是谁部分取决于租用这个地方的人。这当然不是真的。不管是谁租的,主人都是一样的。我希望 ownerNo 成为 Property 的一个属性。
标签: database database-design schema normalization