函数依赖项中的一个属性可以为null吗?

时间:2014-11-19 01:30:40

标签: database-design database-schema functional-dependencies bcnf

我在书店里有一套功能依赖关系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

正确?

1 个答案:

答案 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