Marlon Brando Asked: 2025-01-22 21:48:54 +0800 CST2025-01-22 21:48:54 +0800 CST 2025-01-22 21:48:54 +0800 CST 那个表是 BCNF 类型的吗? 772 在我目前正在阅读的书中,提到了该表作为示例,说明如果表满足 BCNF 但仍然有冗余,我们可以做什么。然后它提到解决方案是数组。但是该表是否符合 BCNF?语言 -> PersNr 和编程 -> PersNr 之间是否存在函数依赖关系。这两个属性都不是超键,因为它们不能唯一地标识行。所以在我看来,它们破坏了 BCNF。还是我误解了什么? database-design 1 个回答 Voted Best Answer Ergest Basha 2025-01-22T22:08:30+08:002025-01-22T22:08:30+08:00 由于函数依赖性Language → PersNr和,该表不属于 BCNF Programming → PersNr。 从表中可以看出,了解拉丁语或希腊语等语言决定了PersNr 3002,表明语言在功能上决定了PersNr。 类似地,了解Pascal或C等编程决定PersNr 3002表示编程在功能上决定PersNr。 如果对于每个非平凡函数依赖项 X→Y,X 必须是超键,则该表符合 BCNF。在这种情况下,语言和编程都不是超键,因为它们不能唯一地标识表中的行。 对Boyce-Codd 范式 (BCNF)的良好解释
由于函数依赖性
Language → PersNr
和,该表不属于 BCNFProgramming → PersNr
。从表中可以看出,了解拉丁语或希腊语等语言决定了PersNr 3002,表明语言在功能上决定了PersNr。
类似地,了解Pascal或C等编程决定PersNr 3002表示编程在功能上决定PersNr。
如果对于每个非平凡函数依赖项 X→Y,X 必须是超键,则该表符合 BCNF。在这种情况下,语言和编程都不是超键,因为它们不能唯一地标识表中的行。
对Boyce-Codd 范式 (BCNF)的良好解释