我试图了解如何将关系规范化为 BCNF 形式。我知道 BCNF 的定义是什么,并且我知道为了使其正常化,我需要消除所有不属于关键候选的D -> X
地方。D
并创建 和 的新(D,X)
表(S,X)
。
我也读了这个线程:
但是我面临的问题是当 X 是超级密钥的一部分时如何使用该算法。我会解释:
假设我们有这个关系:
R = (a,b,c,d,e)
FD = { {a,b}->{c} , {a,b}->{d} , {a,b}->{e} , {d}->{b} }
显然,唯一的超级键是(a,b)
. 显然,d
不是关键候选人。
d->b
违反了 BCNF,但我们不能只是b
从表中取出,因为它是超级密钥的一部分。
所以我的问题是:在这种情况下,我们如何将这种关系规范化为 BCNF 形式?