2014-12-08 1 views
0

Я изучаю нормализацию в классе. И я нашел это упражнение в этом article hereНормализация таблицы 1NF до 3NF

Он просит нормализовать следующую таблицу до 3NF.
enter image description here

Вот как я это сделал. enter image description here

Я хотел бы знать, правильно ли я организовал таблицы.

+0

Нормализация не предполагает создания * новых * столбцов, таких как «bookId» и «tuteId». –

ответ

0

Я хотел бы знать, правильно ли я организовал таблицы, или нет.

Нет, это не так.

Во-первых, нормализация через BCNF основана на функциональных зависимостях. Вы не определили каких-либо функциональных зависимостей.

Во-вторых, нормализация никогда не вводит новые атрибуты, которые не были в том отношении, с которым вы начали. Вы ввели новые атрибуты «sFirstName», «sLastName», «dateOfBirth», «tuteId», «tutorName», «bookId» и «bookName».

Наконец, онлайн-упражнения, подобные тому, с которым вы связаны, не очень полезны. Автор явно ожидает, что вы получите все функциональные зависимости из предоставленной небольшой таблицы, но вы не можете сделать это надежно, если данные не являются репрезентативными. Например, вы можете определить путем осмотра Room-> Date, но в реальном мире это не имеет большого смысла.

Нормализация основывается на семантике - какие данные означает? Что означает «дата»? Данные поддерживают все эти интерпретации. (И еще.)

  • Единственная дата в комнате будет использоваться. (Room-> Date)
  • Первое место, где будет использоваться комната. (Room-> Дата)
  • дата была опубликована книга (Книга-> Дата)
  • Дата студент подписался на единицу (StudentId, UnitId-> Дата)

Основываясь исключительно на данные, вы можете утверждать, что Grade-> Date, но это не имеет смысла. Подобный вздор говорит вам, что данные не являются репрезентативными, и что вы можете нормализовать таблицу только с помощью информации , что автор не предоставил.