Tengo un problema con la segunda forma normal (2NF) y no he podido resolverlo usando Google. Me está volviendo loco porque soy maestra y no quiero enseñar cosas equivocadas a mis alumnos.
Tengamos una tabla con 5 campos.
Graduaciones = {StudentName, SubjectCode, SubjectName, #Exam, Grade}
Las dependencias son de esta manera:
StudentName, SubjectCode, #Exam -> Grade
SubjectCode -> SubjectName
SubjectName -> SubjectCode
Por lo tanto, la clave candidata 1 es {StudentName, SubjectCode, #Exam} y la clave candidata 2 es {StudentName, SubjectName, #Exam} .
Los atributos principales son {StudentName, SubjectCode, SubjectName, #Exam} y los atributos no principales son Grade
Según la definición de la segunda forma normal, un atributo no primo no puede depender de una parte de una clave candidata. El único atributo no principal (Grado) no depende de una parte de una clave candidata, por lo que esta tabla aparece en 2NF.
El problema es que creo que algo anda mal (y podría estar equivocado). Creo que los sujetos deberían tener su propia mesa.
Graduaciones = {StudentName, Código de materia, #Exam, Grado}
Sujetos = {Código del sujeto, Nombre del sujeto}
Pero 2NF no produce esto. 3NF se trata de dependencias entre atributos no primos, por lo que tampoco produce esto. Pero me parece que este es el resultado correcto, porque no tiene redundancia.
Supongo que si el atributo no primo se definiera como "atributo que no es una clave candidata", 2NF produciría el resultado deseado. Pero lo he comprobado una y otra vez y el atributo no principal se define como "atributo que no PERTENECE a una clave candidata".
¿Qué estoy haciendo mal?