Запутался, как перейти от 2NF к 3NF - PullRequest
0 голосов
/ 21 февраля 2019

Как гласит заголовок.Я прочитал много статей, пытаясь обдумать это, но все еще не уверен, правильно ли я это делаю или нет.Я думаю, что понимаю это, но хотел бы получить еще несколько мнений на случай, если мне нужно исправить то, что я делаю.Пример ниже.Спасибо!

1NF Employee_ID, Фамилия, Имя, Улица, Город, Почтовый индекс, DOB, Возраст, Требуемая степень

2NF Employee_ID, Фамилия, Имя, DOB, Возраст, Полученные степениLocation_ID, улица, город, почтовый индекс

3NF Employee_ID, Фамилия, Имя, Возраст, Дата рождения, DOB Location_ID Улица Почтовый индекс, Город

1 Ответ

0 голосов
/ 21 февраля 2019

Суммировано: 2NF - это когда каждый неключевой атрибут зависит от всего первичного ключа.Итак, представьте компакт-диск.Компакт-диск имеет идентификационный номер, который является первичным ключом.Имя, художник и пол художника зависят от первичного ключа.Так что это правильно:

Table_CD:
CD_ID:    Name:    Artist:    Artist_Gender: 
1         CD1      Artist1    Male
2         CD2      Artist1    Male
3         CD3      Artist2    Female

Это верно для 2NF, потому что исполнитель зависит от ключа (CD_ID).Мы не проверяем транзитивную зависимость.

В 3NF вы просто говорите, что не может быть никаких зависимостей от того, что не является ключевым.Пол художника зависит от художника.Не на CD_ID, который является ключом.Следовательно, это не 3NF.

Чтобы сделать его 3NF, вы должны отделить транзитивную зависимость.Отсюда и пол художника.Таким образом:

Table_CD:
CD_ID:    Name:    Artist:
1         CD1      Artist1 
2         CD2      Artist1 
3         CD3      Artist2 

Table_Artist:
Name:          Gender:
Artist1        Male
Artist2        Female
...