Нормализация 3НФ - PullRequest
2 голосов
/ 01 июня 2011

Я читаю некоторые примеры нормализации, однако мне попался один, который я не понимаю.

Веб-сайт, на котором приведен пример, приведен здесь: http://cisnet.baruch.cuny.edu/holowczak/classes/3400/normalization/#allinone

Часть, которую я не понимаю, - "Третья нормальная форма"

В голове я вижу переходные зависимости вEMPLOYEE_OFFICE_PHONE (Name, Office, Floor, Phone) как следующие Name->->Office|Floor и Name->->Office|Phone

Автор разбивает таблицу EMPLOYEE_OFFICE_PHONE (Name, Office, Floor, Phone) на EMPLOYEE_OFFICE (Name, Office, Floor) и EMPLOYEE_PHONE (Office, Phone)

По моему мнению в начале, я все ещесм. переходную зависимость в Name->->Office|Floor, поэтому я не понимаю, почему она в 3NF.Был ли я неправ, заявив, что в Name->->Office|Floor?

есть транзитивная зависимость. Обоснование транзитивности: Вот мой список функциональных зависимостей

  1. Имя -> Офис
  2. Имя -> Этаж
  3. Имя -> Телефон
  4. Офис -> Телефон
  5. Офис -> Этаж (Это неправильный номер и почему?

Спасибо всем за помощь!

Ответы [ 3 ]

1 голос
/ 01 июня 2011

5) вы предполагаете, что здесь должен быть обозначен именной формат ... офисы 4xx должны быть на 4 этаже ... 5xx должны быть на 5 этаже ... если такая схема существует, вы можете иметь свою зависимость ... какПока это не является частью спецификации ... нет.5 вне игры ...

0 голосов
/ 17 марта 2014

Прежде всего, позвольте мне четко определить 3NF: - Отношение находится в 3NF, если выполняются следующие условия: 1.) Отношение в 2NF 2.) Не первичный атрибут не является транзитивно зависимым от первичного ключа. Другими словами, отношение находится в 3NF, если для каждой функциональной зависимости X-> Y выполняется одно из следующих условий: - 1.) X это суперключ 2.) Y является основным атрибутом На Ваш вопрос, если присутствуют следующие FD: -

 Name -> Office
 Name -> Floor
 Name -> Phone
 Office -> Phone

Тогда мы ничего не можем сказать о Office и Floor. Вы можете убедиться в этом, применив и проверив любое из правил вывода Armstrong. Когда вы примените эти правила, вы обнаружите, что ничего не можете сказать о офисе и полу.

0 голосов
/ 01 июня 2011
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
...