У мене проблема з другою нормальною формою (2NF), і я не зміг її вирішити за допомогою Google. Мене це зводить з розуму, бо я вчитель, і я не хочу викладати студентам неправильні речі.
Давайте мати таблицю з 5 полями.
Оцінки = {StudentName, SubjectCode, SubjectName, #Exam, Grade}
Залежності такі:
StudentName, SubjectCode, #Exam -> Оцінка
SubjectCode -> SubjectName
SubjectName -> SubjectCode
Тому ключовим ключем 1 є {StudentName, SubjectCode, #Exam}, а ключовим ключем 2 є {StudentName, SubjectName, #Exam} .
Основними атрибутами є {StudentName, SubjectCode, SubjectName, #Exam}, а не-простими атрибутами є клас
Відповідно до визначення другої нормальної форми, атрибут non-прости не може залежати від частини ключа-кандидата. Єдиний непримітний атрибут (Оцінка) не залежить від частини ключа-кандидата, тому ця таблиця здається в 2NF.
Проблема в тому, що я думаю, що щось не так (і я можу помилитися). Я думаю, що предмети повинні мати власну таблицю.
Оцінки = {StudentName, код предмета, #Exam, клас}
Subjects = {Код теми, ім'я суб'єкта}
Але 2NF цього не виробляє. 3NF - це залежність між атрибутами, які не є простими, тому це також не створює. Але мені здається, що це правильний результат, оскільки він не має надмірності.
Я думаю, якщо атрибут, який не є простим, був визначений як "атрибут, який не є ключовим ключем", 2NF дасть бажаний результат. Але я перевіряв це ще раз і знову, і непримітний атрибут визначається як "атрибут, який не БІЛЬНІН до ключа-кандидата".
Що я роблю неправильно?