У меня проблема со второй нормальной формой (2NF), и я не смог ее решить с помощью Google. Это сводит меня с ума, потому что я учитель, и я не хочу преподавать неправильные вещи своим ученикам.
Давайте иметь таблицу с 5 полями.
Оценки = {StudentName, SubjectCode, SubjectName, #Exam, Grade}
Зависимости таковы:
StudentName, SubjectCode, #Exam -> Grade
SubjectCode -> SubjectName
SubjectName -> SubjectCode
Следовательно, ключ-кандидат 1 - {StudentName, SubjectCode, #Exam}, а ключ-кандидат 2 - {StudentName, SubjectName, #Exam} .
Основные атрибуты: {StudentName, SubjectCode, SubjectName, #Exam}, а непростые атрибуты - Grade
Согласно определению второй нормальной формы, непростой атрибут не может зависеть от части ключа-кандидата. Единственный непростой атрибут (Grade) не зависит от части ключа-кандидата, поэтому эта таблица отображается в 2NF.
Проблема в том, что я думаю, что что-то не так (и я могу ошибаться). Я думаю, что предметы должны иметь свой собственный стол.
Оценки = {StudentName, Subject Code, #Exam, Grade}
Subjects = {Subject Code, SubjectName}
Но 2NF не производит это. 3NF - это зависимости между непростыми атрибутами, поэтому он также не производит этого. Но мне кажется, что это правильный результат, потому что он не имеет избыточности.
Я предполагаю, что если бы не простой атрибут был определен как «атрибут, который не является ключом-кандидатом», 2NF привел бы к желаемому результату. Но я проверял это снова и снова, и непростой атрибут определяется как «атрибут, который НЕ ПОДЛЕЖИТ ключу-кандидату».
Что я делаю неправильно?