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

У меня есть набор функциональных зависимостей F, R = {cid, cname, bid, name, rentdate, returndate, cost} в книжном магазине, там всего одна таблица.

customerid, bookid, bookname, арендная плата и дата возврата этой книги этим человеком.

Очевидно, это не BCNF

но как для этого определить F нетривиальных функциональных зависимостей?

я считаю:

cid -> cимя

ставка -> имя_б

ставка, дата аренды -> дата возврата, cid

это нормально? в последних функциональных зависимостях, я думаю, что каждый заказ, одна книга будет арендована в определенное время, будет иметь уникальную дату возврата и принадлежит только одному человеку

но меня также смущают эти функциональные зависимости, потому что в этой таблице дата аренды и дата возврата также могут быть равны нулю !!!

таким образом делает

ставка, дата аренды -> дата возврата, cid

правильный?


person Jie    schedule 19.11.2014    source источник
comment
Для даты аренды или даты возврата не имеет смысла обнуляться. Если кто-то берет книгу (или берет книгу напрокат, или заказывает книгу, что бы вы ни имели в виду), вы знаете, в какой день это произошло.   -  person Mike Sherrill 'Cat Recall'    schedule 19.11.2014
comment
@MikeSherrill'CatRecall' Оказывается, часто, если вы подмигиваете библиотекарям, они не нуждаются ни в чем вонючем даты возврата.   -  person philipxy    schedule 21.11.2014
comment
Чтобы найти FD, см. этот недавний ответ. Повторная ставка, дата аренды -> дата возврата, cid, в любое время, с учетом книги и даты аренды, есть ли только один клиент и только одна дата возврата? (В: Можно ли взять книгу напрокат дважды в день?)   -  person philipxy    schedule 21.11.2014


Ответы (1)


Кодд просто исключил бы кортежи с нулевыми значениями из применения функциональных зависимостей. Насколько я знаю, не существует самосогласованного способа справиться с функциональными зависимостями в чистом SQL, используя логику Кодда с тремя значениями.

Поэтому я ожидаю, что большинство людей скажут вам избегать нулей. Очевидно, что это не всегда воспринимается как практически полезная рекомендация.

Однако, если вам интересно, по этой теме была проведена академическая работа. У нас есть документ, посвященный этому конкретному вопросу:

Антония Бадиа и Даниэль Лемир, Функциональные зависимости с нулевыми маркерами, Computer Journal The Computer Journal (2015) 58 (5): 1160-1168. http://arxiv.org/abs/1404.4963

person Daniel Lemire    schedule 15.05.2015