【发布时间】:2015-01-16 09:55:38
【问题描述】:
我在书店有一组函数依赖 F, R = {cid, cname, bid, name,rentdate, returndate, cost},只有一张表。
此人的客户 ID、bookid、书名、租借和归还日期。
显然,这不是 BCNF
但是如何为此识别非平凡函数依赖的 F 呢?
在我看来:
cid -> cname
出价 -> bname
出价,租用日期 -> 归还日期,cid
这样好吗?在最后一个函数依赖中,我认为每个订单,在特定时间租一本书,将具有唯一的归还日期,并且只属于一个人
但我也对这个函数依赖感到困惑,因为在这个表中,rentdate和returndate也可以设置为null!!!
这样,
出价,租用日期 -> 归还日期,cid
正确吗?
【问题讨论】:
-
“rentdate”或“returndate”可以为空没有任何意义。如果有人借书(或租书,或订购书,不管你是什么意思),那么你就知道发生在哪一天。
-
@MikeSherrill'CatRecall' 事实证明,如果你对图书馆员眨眼,他们don't need no stinkin' 会返回日期。
-
重新查找 FD 参见 this recent answer。重新“出价,出租日期->返回日期,cid”,在任何时候,给定一本书和一个出租日期,是否只有一个客户和一个返回日期? (问:一天可以租两次书吗?)
标签: database-design database-schema functional-dependencies bcnf