我在书店里有一套功能依赖关系F,R = {cid,cname,bid,name,rentdate,returndate,cost},只有一个表。
此人的本书,bookid,bookname,租借和返还日期。
很明显,这不是BCNF
但是如何识别这个非trival功能依赖的F?
在我看来:
cid - > CNAME
出价 - > BNAME
bid,rentdate - >返回,cid
那好吗?在最后的功能依赖中,我认为每个订单,一本书在特定时间租用,将具有唯一的返回日期,并且只属于一个人
但我也对这个功能依赖项感到困惑,因为在这个表中,rentdate和returndate也可以设置为null !!!
以这种方式,
bid,rentdate - >返回,cid
正确?
答案 0 :(得分:0)
Codd只会从函数依赖项的应用程序中排除带有null的元组。据我所知,使用Codd的3值逻辑,没有自我一致的方法来处理纯SQL中的函数依赖。
因此,我希望大多数人告诉你避免空值。显然,这并不总是作为一个实用的建议被接受。
如果您有兴趣,有关于该主题的学术工作。我们有一篇文章介绍了这个问题:
Antonia Badia和Daniel Lemire,功能依赖与null 计算机杂志The Computer Journal(2015)58(5):1160-1168。 http://arxiv.org/abs/1404.4963