Конвертировать таблицу в 2NF - странную таблицу для конвертации?

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

Конвертировать таблицу в 2NF

У меня есть ответ на это, куда я пошел:

НАВЫКИ: сотрудник, навыки

РАСПОЛОЖЕНИЕ: сотрудник, текущее место работы

У меня есть ощущение, что я не прав с этим... выше... хотя.

Также кто-то может объяснить, в чем различия между 1NF, 2NF и 3NF. Я знаю, что 1 стоит на первом месте, и вам нужно разбить все это на более мелкие таблицы, но хотелось бы, чтобы действительно хорошее описание помогло мне лучше понять. Спасибо

2 ответа

Решение
Employee Table

EmployeeID  |   Name
1       |   Jones
2       |   Bravo
3       |   Ellis
4       |   Harrison


Skills Table

SkillId     |   Skill
1       |   Typing
2       |   Shorthand
3       |   Whittling
4       |   Light Cleaning
5       |   Alchemy
6       |   Juggling

Location Table

LocationId  |   Name
1       |   114 Main Street
2       |   73 Industrial Way

EmployeeSkill Table

EmployeeId  |   LocationId  |   SkillId |   SkillName
1       |   1       |   1   |   Typing
1       |   1       |   2   |   Shorthand
1       |   1       |   3   |   Whittling
2       |   2       |   4   |   Light Cleaning
3       |   2       |   5   |   Alchemy
3       |   2       |   6   |   Juggling
4       |   2       |   4   |   Light Cleaning

В таблице EmployeeSkill первичным ключом будет EmployeeId + LocationId, это дает вам навык, который они имеют в этом месте. Включение столбца SkillName нарушает 3NF в этом примере. Эта практика фактически используется иногда при проектировании базы данных (и называется "денормализация"), чтобы уменьшить количество соединений и повысить производительность чтения данных, которые обычно используются вместе.
Обычно это делается только в таблицах, используемых для отчетности.

Я новичок в изучении 2NF, но я решил ответ следующим образом. Дайте мне знать, если это правильно, чтобы я мог понять свою ошибку и больше практиковаться.

Всего две таблицы. Спасибо

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