博伊斯·科德范式(BCNF)
BCNF是对第三范式(3NF)的扩展,比3NF稍强。
如果P->Q是琐碎的功能依赖性,并且P是R的超键,则关系R在BCNF中。
如果在BCNF中存在关系,则意味着基于功能依赖性的冗余已被删除,但仍有一些冗余。
让我们看一个例子-
<体育俱乐部>
以上关系在1NF,2NF,3NF中,但在BCNF中不存在。这是原因-
功能依赖性 {Package->Ground}
它的行列式属性Package依赖于Ground既不是候选关键字也不是候选关键字的超集。
<包装>
<明天预订>
现在上面的表格在BCNF中。
<Package>表的候选键为Package和Ground
<TomorrowBookings> 表的候选键为 {Ground,Begin_Time}和 {Ground,End_Time}
由于我们使用Package作为<Package>关系中的键,因此消除了异常。