두 번째 정규 형식 (2NF)에 문제가 있으며 Google을 사용하여 문제를 해결할 수 없습니다. 나는 선생님이기 때문에 나를 미치게 만들고 있으며 학생들에게 잘못된 것을 가르치고 싶지 않습니다.
5 개의 필드가있는 테이블을 보자.
채점 = {학생 이름, 과목 코드, 과목 이름, # 시험, 학년}
종속성은 다음과 같습니다.
StudentName, SubjectCode, # 시험-> 학년
SubjectCode-> SubjectName
SubjectName-> SubjectCode
따라서 후보 키 1은 {StudentName, SubjectCode, #Exam} 이고 후보 키 2는 {StudentName, SubjectName, #Exam} 입니다.
프라임 속성은 {StudentName, SubjectCode, SubjectName, #Exam} 이고 비 프라임 속성은 Grade입니다.
제 2 정규형의 정의에 따르면, 비 프라임 속성은 후보 키의 일부에 의존 할 수 없다. 비 프라임 속성 (Grade)은 후보 키의 일부에 의존하지 않으므로이 테이블은 2NF로 보입니다.
문제는 무언가가 잘못되었다고 생각한다는 것입니다 (그리고 나는 틀릴 수 있습니다). 피험자들은 각자의 테이블을 가져야한다고 생각합니다.
채점 = {학생 이름, 과목 코드, # 시험, 학년}
과목 = {제목 코드, SubjectName}
그러나 2NF는 이것을 생산하지 않습니다. 3NF는 비 프라임 속성 간의 종속성에 관한 것이므로이 속성도 생성하지 않습니다. 그러나 중복성이 없기 때문에 이것이 올바른 결과 인 것 같습니다.
프라임이 아닌 속성이 "후보 키가 아닌 속성"으로 정의 된 경우 2NF가 원하는 결과를 생성합니다. 그러나 나는 이것을 반복해서 확인했으며 프라임이 아닌 속성은 "후보 키에 속하지 않는 속성"으로 정의됩니다.
내가 뭘 잘못하고 있죠?