Может ли один атрибут в функциональной зависимости быть нулевым?
У меня есть набор функциональных зависимостей F, R = {cid, cname, bid, name, rentdate, returndate, cost} в книжном магазине, там только одна таблица.
customerid, bookid, bookname, дата аренды и возврата этой книги этим человеком.
Очевидно, это не BCNF
но как определить F нетривальных функциональных зависимостей для этого?
по-моему:
cid -> cname
ставка -> имя
Ставка, Аренда -> Возврат, Сид
это нормально? в последних функциональных зависимостях, я думаю, что каждый заказ, одна книга будет арендована в определенное время, будет иметь уникальную дату возврата и принадлежит только одному человеку
но меня также смущают эти функциональные зависимости, потому что в этой таблице rentdate и returndate также могут быть равны нулю!!!
таким образом, делает
Ставка, Аренда -> Возврат, Сид
правильный?
1 ответ
Кодд просто исключил бы кортежи с нулями из приложения функциональных зависимостей. Насколько я знаю, не существует самосогласованного способа справиться с функциональными зависимостями в чистом SQL, используя 3-значную логику Кодда.
Поэтому я ожидаю, что большинство людей скажет вам избегать нулей. Очевидно, что это не всегда воспринимается как практически полезная рекомендация.
Тем не менее, была академическая работа по этой теме, если вам интересно. У нас есть документ, посвященный этой проблеме:
Антония Бадия и Даниэль Лемир, Функциональные зависимости с нулевыми маркерами, Computer Journal The Computer Journal (2015) 58 (5): 1160-1168. http://arxiv.org/abs/1404.4963