Конвертировать таблицу в 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, но я решил ответ следующим образом. Дайте мне знать, если это правильно, чтобы я мог понять свою ошибку и больше практиковаться.
Всего две таблицы. Спасибо