我已经在SO上阅读了很多其他涉及BCNF的线程,但我仍然有点困惑,不知道如何编写函数来确定关系是否在BCNF中,给定关系和它的函数依赖列表。显然,如果FD的所有输入和输出的并集不等于关系,那么它就不在BCNF中,但这也是我需要检查的所有内容。So, say I'm given an input: A->BG->E
那么我
它不满足2-NF,因为存在-> b的部分依赖关系。上述函数依赖关系只依赖于b而不依赖于s,因此是部分依赖关系。它不满足3-NF,因为o -> r表示一个非素属性依赖于另一个非素属性。BCNF不满意,因为3-NF不满意。最后,如果我要修改该表,直到它在BCNF中,将关系R拆分为: R1(b, e, s, r, o, n) with b, s -> e, r, o, n 和 R2(b, t, g) with b ->t and b