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