1. Name -> Office
2. Name -> Floor
3. Name -> Phone
4. Office -> Phone
5. Office -> Floor (Is this the incorrect one? and why?
(1) Вы, автор и я согласны, что Имя->Офис.
(2) Вы и автор соглашаетесь, что Имя->Этаж. Хотя это верно только на основе выборочных данных, также верно и то, что Office->Floor. Я бы исследовал эту проблему, задав такой вопрос: «Если офис пуст, знаю ли я, на каком этаже находится этот офис?» (Да)
Эти вещи предполагают наличие транзитивной зависимости, Имя-> Офис и Офис-> Этаж. Так что я не соглашусь с вами и с автором в этом вопросе.
(3) Вы говорите Имя-> Телефон. Автор говорит Офис->Телефон. Автор также говорит, что «каждый офис имеет ровно один номер телефона». Таким образом, учитывая одно значение для Office, я знаю одно и только одно значение для телефона. И учитывая одно значение для имени, я знаю одно и только одно значение для телефона. Я бы исследовал этот вопрос, спросив: «Если я перееду в другой офис, будет ли мой номер телефона подписан на меня?» Если да, то Имя->Телефон. Если нет, то Офис->Телефон.
Здесь недостаточно информации, чтобы ответить на этот вопрос, и я работал в офисах, которые работали каждым из этих двух способов, поэтому реальный опыт нам тоже не очень помогает. В этом случае мне придется встать на сторону автора, хотя я думаю, что это не очень хорошо продумано для примера нормализации.
(4) На самом деле это просто расширение (3) выше.
(5) См. (2) выше. Это не имеет никакого отношения к схеме наименования, и не нужно предполагать, что офисы с номерами 5xx находятся на 5-м этаже. Единственный уместный вопрос заключается в следующем: если задано одно значение для Office, существует ли одно и только одно значение для Floor? (Да) Я мог бы изучить этот вопрос, спросив: «Может ли один офис располагаться более чем на одном этаже?» (В реальном мире это отдаленно возможно. Но примеры данных не поддерживают такую возможность.)
Некоторые дополнительные FD, основанные исключительно на выборочных данных.
Phone->Office
Phone->Floor
Office->Name
person
Mike Sherrill 'Cat Recall'
schedule
01.06.2011