Нормализация таблицы 1NF к 3NF

Я изучаю нормализацию в классе. И я нашел это упражнение в этой здесь

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

Вот как я это сделал.введите здесь описание изображения

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


person clarkson    schedule 08.12.2014    source источник
comment
Нормализация не требует создания новых столбцов, таких как bookId и tuteId.   -  person Mike Sherrill 'Cat Recall'    schedule 08.12.2014


Ответы (1)


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

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

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

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

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

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

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

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

person Mike Sherrill 'Cat Recall'    schedule 15.02.2015