0

我在书店里有一组函数依赖 F, R = {cid, cname, bid, name,rentdate, returndate, cost},只有一张表。

customerid、bookid、bookname、此人租借和归还这本书的日期。

很明显,这不是 BCNF

但是如何为此识别非平凡函数依赖的 F 呢?

在我看来:

cid -> cname

出价 -> bname

出价,出租日期 -> 归还日期,cid

那样行吗?在最后一个函数依赖中,我认为每个订单,在特定时间租一本书,都会有唯一的归还日期,并且只属于一个人

但是我也对这个函数依赖感到困惑,因为在这个表中,rentdate 和 returndate 也可以设置为空!!!

这样,是否

出价,出租日期 -> 归还日期,cid

正确的?

4

1 回答 1

0

Codd 会简单地从函数依赖的应用程序中排除具有空值的元组。据我所知,使用 Codd 的 3 值逻辑,在纯 SQL 中没有自洽的方式来处理函数依赖关系。

因此,我希望大多数人会告诉您避免使用空值。显然,这并不总是作为一个实际有用的建议而被接受。

但是,如果您有兴趣,已经有关于该主题的学术工作。我们有一篇论文专门讨论了这个问题:

Antonia Badia 和 Daniel Lemire,具有空标记的功能依赖关系,Computer Journal The Computer Journal (2015) 58 (5): 1160-1168。http://arxiv.org/abs/1404.4963

于 2015-05-15T00:21:06.110 回答