Может ли один атрибут в функциональной зависимости быть нулевым?

У меня есть набор функциональных зависимостей 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

Другие вопросы по тегам