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

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

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

Вот как я это сделал.

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

1 ответ

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

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

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

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

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

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

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

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

Другие вопросы по тегам